diff --git a/scm/etc/CENTOS_docker_setup.sh b/scm/etc/CENTOS_docker_setup.sh index 27e821d28..1a519050b 100755 --- a/scm/etc/CENTOS_docker_setup.sh +++ b/scm/etc/CENTOS_docker_setup.sh @@ -2,6 +2,8 @@ echo "Setting environment variables for SCM-CCPP on CENTOS with gcc/gfortran" +export SCM_ROOT=$PWD + export CC=/opt/rh/devtoolset-9/root/usr/bin/gcc export CXX=/opt/rh/devtoolset-9/root/usr/bin/g++ export F77=/opt/rh/devtoolset-9/root/usr/bin/gfortran diff --git a/scm/etc/Cheyenne_setup_gnu.csh b/scm/etc/Cheyenne_setup_gnu.csh index e08b58203..013709868 100755 --- a/scm/etc/Cheyenne_setup_gnu.csh +++ b/scm/etc/Cheyenne_setup_gnu.csh @@ -2,6 +2,8 @@ echo "Setting environment variables for CCPP-SCM on Cheyenne with gcc/gfortran" +setenv SCM_ROOT $PWD + #start with a "clean" environment; activate and deactivate ncar_pylib in order to successfully deactivate previously activated environment without errors module load ncarenv/1.3 ncar_pylib diff --git a/scm/etc/Cheyenne_setup_gnu.sh b/scm/etc/Cheyenne_setup_gnu.sh index d06c11e33..09fc32c44 100755 --- a/scm/etc/Cheyenne_setup_gnu.sh +++ b/scm/etc/Cheyenne_setup_gnu.sh @@ -2,6 +2,8 @@ echo "Setting environment variables for CCPP-SCM on Cheyenne with gcc/gfortran" +export SCM_ROOT=$PWD + #start with a "clean" environment; activate and deactivate ncar_pylib in order to successfully deactivate previously activated environment without errors module load ncarenv/1.3 ncar_pylib diff --git a/scm/etc/Cheyenne_setup_intel.csh b/scm/etc/Cheyenne_setup_intel.csh index a1a015b40..9254e0c4e 100755 --- a/scm/etc/Cheyenne_setup_intel.csh +++ b/scm/etc/Cheyenne_setup_intel.csh @@ -2,6 +2,8 @@ echo "Setting environment variables for CCPP-SCM on Cheyenne with icc/ifort" +setenv SCM_ROOT $PWD + #start with a "clean" environment; activate and deactivate ncar_pylib in order to successfully deactivate previously activated environment without errors module load ncarenv/1.3 ncar_pylib diff --git a/scm/etc/Cheyenne_setup_intel.sh b/scm/etc/Cheyenne_setup_intel.sh index b2dbbba04..c29d3e4fc 100755 --- a/scm/etc/Cheyenne_setup_intel.sh +++ b/scm/etc/Cheyenne_setup_intel.sh @@ -2,6 +2,8 @@ echo "Setting environment variables for CCPP-SCM on Cheyenne with icc/ifort" +export SCM_ROOT=$PWD + #start with a "clean" environment; activate and deactivate ncar_pylib in order to successfully deactivate previously activated environment without errors module load ncarenv/1.3 ncar_pylib @@ -53,4 +55,3 @@ if [ $? -ne 0 ]; then else echo "f90nml is installed" fi - diff --git a/scm/etc/Desktop_setup_gfortran.csh b/scm/etc/Desktop_setup_gfortran.csh index aa6839107..9d39d0d28 100755 --- a/scm/etc/Desktop_setup_gfortran.csh +++ b/scm/etc/Desktop_setup_gfortran.csh @@ -2,6 +2,8 @@ echo "Setting environment variables for CCPP-SCM on Desktop (MacOS) with gcc/gfortran" +setenv SCM_ROOT $PWD + echo "Setting CC/CXX/FC environment variables" setenv CC /opt/local/bin/gcc-mp-10 setenv CXX /opt/local/bin/g++-mp-10 diff --git a/scm/etc/Desktop_setup_gfortran.sh b/scm/etc/Desktop_setup_gfortran.sh index ccb4db42c..b178772fd 100755 --- a/scm/etc/Desktop_setup_gfortran.sh +++ b/scm/etc/Desktop_setup_gfortran.sh @@ -2,6 +2,8 @@ echo "Setting environment variables for CCPP-SCM on Desktop (MacOS) with gcc/gfortran" +export SCM_ROOT=$PWD + echo "Setting CC/CXX/FC environment variables" export CC=/opt/local/bin/gcc-mp-10 export CXX=/opt/local/bin/g++-mp-10 diff --git a/scm/etc/Hera_setup_intel.csh b/scm/etc/Hera_setup_intel.csh index 2c32de8ba..fa2276619 100755 --- a/scm/etc/Hera_setup_intel.csh +++ b/scm/etc/Hera_setup_intel.csh @@ -2,6 +2,8 @@ echo "Setting environment variables for CCPP-SCM on Hera with icc/ifort" +setenv SCM_ROOT $PWD + #load the modules in order to compile the CCPP SCM echo "Loading intel and netcdf modules..." module purge diff --git a/scm/etc/Hera_setup_intel.sh b/scm/etc/Hera_setup_intel.sh index 57560b50e..49ac72346 100755 --- a/scm/etc/Hera_setup_intel.sh +++ b/scm/etc/Hera_setup_intel.sh @@ -2,6 +2,8 @@ echo "Setting environment variables for CCPP-SCM on Hera with icc/ifort" +export SCM_ROOT=$PWD + #load the modules in order to compile the CCPP SCM echo "Loading intel and netcdf modules..." module purge diff --git a/scm/etc/case_config/AMMA_REF.nml b/scm/etc/case_config/AMMA_REF.nml index 96c4506bb..5921d4103 100644 --- a/scm/etc/case_config/AMMA_REF.nml +++ b/scm/etc/case_config/AMMA_REF.nml @@ -1,20 +1,9 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'AMMA_REF', input_type = 1 -dt = 600.0, -time_scheme = 1, -n_itt_out = 1, -n_itt_diag = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/DEPHY-SCM/AMMA/REF', -vert_coord_data_dir = '../data/vert_coord_data', lsm_ics = .false., do_spinup = .false., spinup_timesteps = 0, reference_profile_choice = 2, -reference_profile_dir = '../data/processed_case_input' column_area = 1.45E8, $end diff --git a/scm/etc/case_config/ARMCU_E3SM.nml b/scm/etc/case_config/ARMCU_E3SM.nml index e5f525cdc..fceb583d8 100644 --- a/scm/etc/case_config/ARMCU_E3SM.nml +++ b/scm/etc/case_config/ARMCU_E3SM.nml @@ -1,16 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'ARMCU_E3SM', input_type = 1 -dt = 600.0, -time_scheme = 1, -n_itt_out = 1, -n_itt_diag = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/DEPHY-SCM/ARMCU/E3SM', -vert_coord_data_dir = '../data/vert_coord_data', lsm_ics = .false., do_spinup = .false., spinup_timesteps = 0, diff --git a/scm/etc/case_config/ARMCU_MESONH.nml b/scm/etc/case_config/ARMCU_MESONH.nml index fd9ce263b..c75452ade 100644 --- a/scm/etc/case_config/ARMCU_MESONH.nml +++ b/scm/etc/case_config/ARMCU_MESONH.nml @@ -1,16 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'ARMCU_MESONH', input_type = 1 -dt = 600.0, -time_scheme = 1, -n_itt_out = 1, -n_itt_diag = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/DEPHY-SCM/ARMCU/MESONH', -vert_coord_data_dir = '../data/vert_coord_data', lsm_ics = .false., do_spinup = .false., spinup_timesteps = 0, diff --git a/scm/etc/case_config/ARMCU_REF.nml b/scm/etc/case_config/ARMCU_REF.nml index 3001ce36a..ec84d1e2b 100644 --- a/scm/etc/case_config/ARMCU_REF.nml +++ b/scm/etc/case_config/ARMCU_REF.nml @@ -1,20 +1,9 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'ARMCU_REF', input_type = 1 -dt = 600.0, -time_scheme = 1, -n_itt_out = 1, -n_itt_diag = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/DEPHY-SCM/ARMCU/REF', -vert_coord_data_dir = '../data/vert_coord_data', lsm_ics = .false., do_spinup = .false., spinup_timesteps = 0, reference_profile_choice = 2, -reference_profile_dir = '../data/processed_case_input' column_area = 1.45E8, $end diff --git a/scm/etc/case_config/AYOTTE_00SC.nml b/scm/etc/case_config/AYOTTE_00SC.nml index 49c1d008c..de24578b7 100644 --- a/scm/etc/case_config/AYOTTE_00SC.nml +++ b/scm/etc/case_config/AYOTTE_00SC.nml @@ -1,16 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'AYOTTE_00SC', input_type = 1 -dt = 600.0, -time_scheme = 1, -n_itt_out = 1, -n_itt_diag = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/DEPHY-SCM/AYOTTE/00SC', -vert_coord_data_dir = '../data/vert_coord_data', lsm_ics = .false., do_spinup = .false., spinup_timesteps = 0, diff --git a/scm/etc/case_config/BOMEX_REF.nml b/scm/etc/case_config/BOMEX_REF.nml index ac5b59846..a684bc380 100644 --- a/scm/etc/case_config/BOMEX_REF.nml +++ b/scm/etc/case_config/BOMEX_REF.nml @@ -1,16 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'BOMEX_REF', input_type = 1 -dt = 600.0, -time_scheme = 1, -n_itt_out = 1, -n_itt_diag = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/DEPHY-SCM/BOMEX/REF', -vert_coord_data_dir = '../data/vert_coord_data', lsm_ics = .false., do_spinup = .false., spinup_timesteps = 0, diff --git a/scm/etc/case_config/DYNAMO_NSA3a.nml b/scm/etc/case_config/DYNAMO_NSA3a.nml index a81845868..c10cc953a 100644 --- a/scm/etc/case_config/DYNAMO_NSA3a.nml +++ b/scm/etc/case_config/DYNAMO_NSA3a.nml @@ -1,16 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'DYNAMO_NSA3a', input_type = 1 -dt = 600.0, -time_scheme = 1, -n_itt_out = 1, -n_itt_diag = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/DEPHY-SCM/DYNAMO/NSA3a', -vert_coord_data_dir = '../data/vert_coord_data', lsm_ics = .false., do_spinup = .false., spinup_timesteps = 0, diff --git a/scm/etc/case_config/DYNAMO_NSA3a_D1.nml b/scm/etc/case_config/DYNAMO_NSA3a_D1.nml index 4b2cbc9ee..c9ea73f29 100644 --- a/scm/etc/case_config/DYNAMO_NSA3a_D1.nml +++ b/scm/etc/case_config/DYNAMO_NSA3a_D1.nml @@ -1,16 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'DYNAMO_NSA3a_D1', input_type = 1 -dt = 600.0, -time_scheme = 1, -n_itt_out = 1, -n_itt_diag = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/DEPHY-SCM/DYNAMO/NSA3a_D1', -vert_coord_data_dir = '../data/vert_coord_data', lsm_ics = .false., do_spinup = .false., spinup_timesteps = 0, diff --git a/scm/etc/case_config/GABLS1_REF.nml b/scm/etc/case_config/GABLS1_REF.nml index 6acf4b4b6..ab50b2a44 100644 --- a/scm/etc/case_config/GABLS1_REF.nml +++ b/scm/etc/case_config/GABLS1_REF.nml @@ -1,16 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'GABLS1_REF', input_type = 1 -dt = 600.0, -time_scheme = 1, -n_itt_out = 1, -n_itt_diag = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/DEPHY-SCM/GABLS1/REF', -vert_coord_data_dir = '../data/vert_coord_data', lsm_ics = .false., do_spinup = .false., spinup_timesteps = 0, diff --git a/scm/etc/case_config/IHOP_REF.nml b/scm/etc/case_config/IHOP_REF.nml index 92fbf0af9..9ae918161 100644 --- a/scm/etc/case_config/IHOP_REF.nml +++ b/scm/etc/case_config/IHOP_REF.nml @@ -1,16 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'IHOP_REF', input_type = 1 -dt = 600.0, -time_scheme = 1, -n_itt_out = 1, -n_itt_diag = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/DEPHY-SCM/IHOP/REF', -vert_coord_data_dir = '../data/vert_coord_data', lsm_ics = .false., do_spinup = .false., spinup_timesteps = 0, diff --git a/scm/etc/case_config/LASSO_2016051812.nml b/scm/etc/case_config/LASSO_2016051812.nml index bba6da995..75eff16b8 100644 --- a/scm/etc/case_config/LASSO_2016051812.nml +++ b/scm/etc/case_config/LASSO_2016051812.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'LASSO_2016051812', -dt = 600.0, -time_scheme = 1, runtime = 54000, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/LASSO_2016051812_MSDA.nml b/scm/etc/case_config/LASSO_2016051812_MSDA.nml index 3388311d0..900c70b9e 100644 --- a/scm/etc/case_config/LASSO_2016051812_MSDA.nml +++ b/scm/etc/case_config/LASSO_2016051812_MSDA.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'LASSO_2016051812_MSDA', -dt = 600.0, -time_scheme = 1, runtime = 54000, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/LASSO_2016051812_VARA.nml b/scm/etc/case_config/LASSO_2016051812_VARA.nml index 197f049fc..2f0374372 100644 --- a/scm/etc/case_config/LASSO_2016051812_VARA.nml +++ b/scm/etc/case_config/LASSO_2016051812_VARA.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'LASSO_2016051812_VARA', -dt = 600.0, -time_scheme = 1, runtime = 54000, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/LASSO_20180514_s02.nml b/scm/etc/case_config/LASSO_20180514_s02.nml index 96187ebc6..432c77ed1 100644 --- a/scm/etc/case_config/LASSO_20180514_s02.nml +++ b/scm/etc/case_config/LASSO_20180514_s02.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'LASSO_20180514_s02', -dt = 600.0, -time_scheme = 1, runtime = 54000, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/LASSO_20180522_s02.nml b/scm/etc/case_config/LASSO_20180522_s02.nml index 3853bdd9f..4f69ef9b1 100644 --- a/scm/etc/case_config/LASSO_20180522_s02.nml +++ b/scm/etc/case_config/LASSO_20180522_s02.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'LASSO_20180522_s02', -dt = 600.0, -time_scheme = 1, runtime = 54000, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/LASSO_20180606_s02.nml b/scm/etc/case_config/LASSO_20180606_s02.nml index 7e9746ccf..feeadc334 100644 --- a/scm/etc/case_config/LASSO_20180606_s02.nml +++ b/scm/etc/case_config/LASSO_20180606_s02.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'LASSO_20180606_s02', -dt = 600.0, -time_scheme = 1, runtime = 54000, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/LASSO_20180618_s02.nml b/scm/etc/case_config/LASSO_20180618_s02.nml index 76f99c2dc..a5b261a3c 100644 --- a/scm/etc/case_config/LASSO_20180618_s02.nml +++ b/scm/etc/case_config/LASSO_20180618_s02.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'LASSO_20180618_s02', -dt = 600.0, -time_scheme = 1, runtime = 54000, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/LASSO_20180619_s02.nml b/scm/etc/case_config/LASSO_20180619_s02.nml index 1ffce01f6..e32bc294d 100644 --- a/scm/etc/case_config/LASSO_20180619_s02.nml +++ b/scm/etc/case_config/LASSO_20180619_s02.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'LASSO_20180619_s02', -dt = 600.0, -time_scheme = 1, runtime = 54000, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/LASSO_20180705_s02.nml b/scm/etc/case_config/LASSO_20180705_s02.nml index e1f95d61c..5648360e8 100644 --- a/scm/etc/case_config/LASSO_20180705_s02.nml +++ b/scm/etc/case_config/LASSO_20180705_s02.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'LASSO_20180705_s02', -dt = 600.0, -time_scheme = 1, runtime = 54000, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/LASSO_20180707_s02.nml b/scm/etc/case_config/LASSO_20180707_s02.nml index 4b930b7a2..af73e1d62 100644 --- a/scm/etc/case_config/LASSO_20180707_s02.nml +++ b/scm/etc/case_config/LASSO_20180707_s02.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'LASSO_20180707_s02', -dt = 600.0, -time_scheme = 1, runtime = 54000, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/LASSO_20180709_s02.nml b/scm/etc/case_config/LASSO_20180709_s02.nml index 6ae76cb6f..ac68594cd 100644 --- a/scm/etc/case_config/LASSO_20180709_s02.nml +++ b/scm/etc/case_config/LASSO_20180709_s02.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'LASSO_20180709_s02', -dt = 600.0, -time_scheme = 1, runtime = 54000, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/LASSO_20180712_s02.nml b/scm/etc/case_config/LASSO_20180712_s02.nml index c8591cc42..6917a1851 100644 --- a/scm/etc/case_config/LASSO_20180712_s02.nml +++ b/scm/etc/case_config/LASSO_20180712_s02.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'LASSO_20180712_s02', -dt = 600.0, -time_scheme = 1, runtime = 54000, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/LASSO_20180731_s02.nml b/scm/etc/case_config/LASSO_20180731_s02.nml index 05029c5b5..6ac93bbad 100644 --- a/scm/etc/case_config/LASSO_20180731_s02.nml +++ b/scm/etc/case_config/LASSO_20180731_s02.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'LASSO_20180731_s02', -dt = 600.0, -time_scheme = 1, runtime = 54000, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/LASSO_20180911_s02.nml b/scm/etc/case_config/LASSO_20180911_s02.nml index 4138e027e..e4fc92955 100644 --- a/scm/etc/case_config/LASSO_20180911_s02.nml +++ b/scm/etc/case_config/LASSO_20180911_s02.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'LASSO_20180911_s02', -dt = 600.0, -time_scheme = 1, runtime = 54000, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/LASSO_20180914_s02.nml b/scm/etc/case_config/LASSO_20180914_s02.nml index fdaf44952..66d28362d 100644 --- a/scm/etc/case_config/LASSO_20180914_s02.nml +++ b/scm/etc/case_config/LASSO_20180914_s02.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'LASSO_20180914_s02', -dt = 600.0, -time_scheme = 1, runtime = 54000, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/LASSO_20180916_s02.nml b/scm/etc/case_config/LASSO_20180916_s02.nml index d8461ecf3..6197652b8 100644 --- a/scm/etc/case_config/LASSO_20180916_s02.nml +++ b/scm/etc/case_config/LASSO_20180916_s02.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'LASSO_20180916_s02', -dt = 600.0, -time_scheme = 1, runtime = 54000, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/LASSO_20180917_s02.nml b/scm/etc/case_config/LASSO_20180917_s02.nml index b1d7103fc..896a32225 100644 --- a/scm/etc/case_config/LASSO_20180917_s02.nml +++ b/scm/etc/case_config/LASSO_20180917_s02.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'LASSO_20180917_s02', -dt = 600.0, -time_scheme = 1, runtime = 54000, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/LASSO_20180918_s02.nml b/scm/etc/case_config/LASSO_20180918_s02.nml index 1dad0c91e..09deb06aa 100644 --- a/scm/etc/case_config/LASSO_20180918_s02.nml +++ b/scm/etc/case_config/LASSO_20180918_s02.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'LASSO_20180918_s02', -dt = 600.0, -time_scheme = 1, runtime = 54000, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/LASSO_20181002_s02.nml b/scm/etc/case_config/LASSO_20181002_s02.nml index 8114ae804..b63d206de 100644 --- a/scm/etc/case_config/LASSO_20181002_s02.nml +++ b/scm/etc/case_config/LASSO_20181002_s02.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'LASSO_20181002_s02', -dt = 600.0, -time_scheme = 1, runtime = 54000, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/MPACE_REF.nml b/scm/etc/case_config/MPACE_REF.nml index d00da2ded..a67fad9f9 100644 --- a/scm/etc/case_config/MPACE_REF.nml +++ b/scm/etc/case_config/MPACE_REF.nml @@ -1,16 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'MPACE_REF', input_type = 1 -dt = 600.0, -time_scheme = 1, -n_itt_out = 1, -n_itt_diag = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/DEPHY-SCM/MPACE/REF', -vert_coord_data_dir = '../data/vert_coord_data', lsm_ics = .false., do_spinup = .false., spinup_timesteps = 0, diff --git a/scm/etc/case_config/RICO_MESONH.nml b/scm/etc/case_config/RICO_MESONH.nml index 1defff18b..4e8ca78ba 100644 --- a/scm/etc/case_config/RICO_MESONH.nml +++ b/scm/etc/case_config/RICO_MESONH.nml @@ -1,16 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'RICO_MESONH', input_type = 1 -dt = 600.0, -time_scheme = 1, -n_itt_out = 1, -n_itt_diag = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/DEPHY-SCM/RICO/MESONH', -vert_coord_data_dir = '../data/vert_coord_data', lsm_ics = .false., do_spinup = .false., spinup_timesteps = 0, diff --git a/scm/etc/case_config/SANDU_FAST.nml b/scm/etc/case_config/SANDU_FAST.nml index 4afa44328..51aae1115 100644 --- a/scm/etc/case_config/SANDU_FAST.nml +++ b/scm/etc/case_config/SANDU_FAST.nml @@ -1,16 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'SANDU_FAST', input_type = 1 -dt = 600.0, -time_scheme = 1, -n_itt_out = 1, -n_itt_diag = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/DEPHY-SCM/SANDU/FAST', -vert_coord_data_dir = '../data/vert_coord_data', lsm_ics = .false., do_spinup = .false., spinup_timesteps = 0, diff --git a/scm/etc/case_config/SANDU_REF.nml b/scm/etc/case_config/SANDU_REF.nml index 2a6221859..61c1a5e06 100644 --- a/scm/etc/case_config/SANDU_REF.nml +++ b/scm/etc/case_config/SANDU_REF.nml @@ -1,16 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'SANDU_REF', input_type = 1 -dt = 600.0, -time_scheme = 1, -n_itt_out = 1, -n_itt_diag = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/DEPHY-SCM/SANDU/REF', -vert_coord_data_dir = '../data/vert_coord_data', lsm_ics = .false., do_spinup = .false., spinup_timesteps = 0, diff --git a/scm/etc/case_config/SANDU_SLOW.nml b/scm/etc/case_config/SANDU_SLOW.nml index 2ce008174..14de37c9b 100644 --- a/scm/etc/case_config/SANDU_SLOW.nml +++ b/scm/etc/case_config/SANDU_SLOW.nml @@ -1,16 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'SANDU_SLOW', input_type = 1 -dt = 600.0, -time_scheme = 1, -n_itt_out = 1, -n_itt_diag = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/DEPHY-SCM/SANDU/SLOW', -vert_coord_data_dir = '../data/vert_coord_data', lsm_ics = .false., do_spinup = .false., spinup_timesteps = 0, diff --git a/scm/etc/case_config/SCMS_REF.nml b/scm/etc/case_config/SCMS_REF.nml index 5c3a3a99d..14ec8926d 100644 --- a/scm/etc/case_config/SCMS_REF.nml +++ b/scm/etc/case_config/SCMS_REF.nml @@ -1,16 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'SCMS_REF', input_type = 1 -dt = 600.0, -time_scheme = 1, -n_itt_out = 1, -n_itt_diag = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/DEPHY-SCM/SCMS/REF', -vert_coord_data_dir = '../data/vert_coord_data', lsm_ics = .false., do_spinup = .false., spinup_timesteps = 0, diff --git a/scm/etc/case_config/arm_sgp_summer_1997_A.nml b/scm/etc/case_config/arm_sgp_summer_1997_A.nml index d1efaabbb..375d0c4cb 100644 --- a/scm/etc/case_config/arm_sgp_summer_1997_A.nml +++ b/scm/etc/case_config/arm_sgp_summer_1997_A.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'arm_sgp_summer_1997_A', -dt = 600.0, -time_scheme = 1, runtime = 345600, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 1, mom_forcing_type = 3, relax_time = 7200.0, @@ -22,4 +13,4 @@ month = 6, day = 26, hour = 23, column_area = 2.0E9, -$end \ No newline at end of file +$end diff --git a/scm/etc/case_config/arm_sgp_summer_1997_B.nml b/scm/etc/case_config/arm_sgp_summer_1997_B.nml index 348baa573..0ac151cc4 100644 --- a/scm/etc/case_config/arm_sgp_summer_1997_B.nml +++ b/scm/etc/case_config/arm_sgp_summer_1997_B.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'arm_sgp_summer_1997_B', -dt = 600.0, -time_scheme = 1, runtime = 432000, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 1, mom_forcing_type = 3, relax_time = 7200.0, @@ -22,4 +13,4 @@ month = 7, day = 7, hour = 23, column_area = 2.0E9, -$end \ No newline at end of file +$end diff --git a/scm/etc/case_config/arm_sgp_summer_1997_C.nml b/scm/etc/case_config/arm_sgp_summer_1997_C.nml index 79b4e49ed..ace0b4dd2 100644 --- a/scm/etc/case_config/arm_sgp_summer_1997_C.nml +++ b/scm/etc/case_config/arm_sgp_summer_1997_C.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'arm_sgp_summer_1997_C', -dt = 600.0, -time_scheme = 1, runtime = 432000, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 1, mom_forcing_type = 3, relax_time = 7200.0, @@ -22,4 +13,4 @@ month = 7, day = 12, hour = 23, column_area = 2.0E9, -$end \ No newline at end of file +$end diff --git a/scm/etc/case_config/arm_sgp_summer_1997_R.nml b/scm/etc/case_config/arm_sgp_summer_1997_R.nml index 9948335ad..c3da579ce 100644 --- a/scm/etc/case_config/arm_sgp_summer_1997_R.nml +++ b/scm/etc/case_config/arm_sgp_summer_1997_R.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'arm_sgp_summer_1997_R', -dt = 600.0, -time_scheme = 1, runtime = 345600, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 1, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/arm_sgp_summer_1997_S.nml b/scm/etc/case_config/arm_sgp_summer_1997_S.nml index f62b1ea24..ba26818be 100644 --- a/scm/etc/case_config/arm_sgp_summer_1997_S.nml +++ b/scm/etc/case_config/arm_sgp_summer_1997_S.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'arm_sgp_summer_1997_S', -dt = 600.0, -time_scheme = 1, runtime = 345600, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 1, mom_forcing_type = 3, relax_time = 7200.0, @@ -22,4 +13,4 @@ month = 6, day = 22, hour = 23, column_area = 2.0E9, -$end \ No newline at end of file +$end diff --git a/scm/etc/case_config/arm_sgp_summer_1997_T.nml b/scm/etc/case_config/arm_sgp_summer_1997_T.nml index 203047539..d68aaa82a 100644 --- a/scm/etc/case_config/arm_sgp_summer_1997_T.nml +++ b/scm/etc/case_config/arm_sgp_summer_1997_T.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'arm_sgp_summer_1997_T', -dt = 600.0, -time_scheme = 1, runtime = 259200, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 1, mom_forcing_type = 3, relax_time = 7200.0, @@ -22,4 +13,4 @@ month = 6, day = 30, hour = 23, column_area = 2.0E9, -$end \ No newline at end of file +$end diff --git a/scm/etc/case_config/arm_sgp_summer_1997_U.nml b/scm/etc/case_config/arm_sgp_summer_1997_U.nml index aabed0b2e..2d599f4f8 100644 --- a/scm/etc/case_config/arm_sgp_summer_1997_U.nml +++ b/scm/etc/case_config/arm_sgp_summer_1997_U.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'arm_sgp_summer_1997_U', -dt = 600.0, -time_scheme = 1, runtime = 345600, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 1, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/arm_sgp_summer_1997_X.nml b/scm/etc/case_config/arm_sgp_summer_1997_X.nml index 205f1a0e8..cc90d4b91 100644 --- a/scm/etc/case_config/arm_sgp_summer_1997_X.nml +++ b/scm/etc/case_config/arm_sgp_summer_1997_X.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'arm_sgp_summer_1997_X', -dt = 600.0, -time_scheme = 1, runtime = 2505600, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 1, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/astex.nml b/scm/etc/case_config/astex.nml index 028297625..3a9e99a3b 100644 --- a/scm/etc/case_config/astex.nml +++ b/scm/etc/case_config/astex.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'astex', -dt = 600.0, -time_scheme = 1, runtime = 144000, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 2, relax_time = 7200.0, diff --git a/scm/etc/case_config/bomex.nml b/scm/etc/case_config/bomex.nml index c486ad6e6..093c31353 100644 --- a/scm/etc/case_config/bomex.nml +++ b/scm/etc/case_config/bomex.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'bomex', -dt = 600.0, -time_scheme = 1, runtime = 21600, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/default.nml b/scm/etc/case_config/default.nml index 27b5cfe49..49f433f56 100644 --- a/scm/etc/case_config/default.nml +++ b/scm/etc/case_config/default.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'twpice', -dt = 600.0, -time_scheme = 1, runtime = 2138400, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 3, relax_time = 7200.0, diff --git a/scm/etc/case_config/fv3_model_point_noah.nml b/scm/etc/case_config/fv3_model_point_noah.nml index ca393f79f..b4761cc2f 100644 --- a/scm/etc/case_config/fv3_model_point_noah.nml +++ b/scm/etc/case_config/fv3_model_point_noah.nml @@ -1,15 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'fv3_model_point_noah', -dt = 900.0, -time_scheme = 1, runtime = 86400, -n_itt_out = 1, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 0, model_ics=.true., mom_forcing_type = 0, @@ -23,4 +14,3 @@ month = 10, day = 3, hour = 0, $end - diff --git a/scm/etc/case_config/gabls3.nml b/scm/etc/case_config/gabls3.nml index c57c7b59d..727b9eced 100644 --- a/scm/etc/case_config/gabls3.nml +++ b/scm/etc/case_config/gabls3.nml @@ -1,16 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'gabls3', -dt = 600.0, -time_scheme = 1, runtime = 86400, -n_itt_out = 1, -n_itt_diag = 6, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 2, relax_time = 7200.0, diff --git a/scm/etc/case_config/gabls3_noahmp.nml b/scm/etc/case_config/gabls3_noahmp.nml index 86efa2efd..5775d65f5 100644 --- a/scm/etc/case_config/gabls3_noahmp.nml +++ b/scm/etc/case_config/gabls3_noahmp.nml @@ -1,16 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'gabls3_noahmp', -dt = 600.0, -time_scheme = 1, runtime = 86400, -n_itt_out = 1 -n_itt_diag = 6 -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 2, relax_time = 7200.0, diff --git a/scm/etc/case_config/gabls3_ruc.nml b/scm/etc/case_config/gabls3_ruc.nml index b3c0c1835..a13a4dcf0 100644 --- a/scm/etc/case_config/gabls3_ruc.nml +++ b/scm/etc/case_config/gabls3_ruc.nml @@ -1,16 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'gabls3_ruc', -dt = 600.0, -time_scheme = 1, runtime = 86400, -n_itt_out = 1, -n_itt_diag = 6, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 2, relax_time = 7200.0, diff --git a/scm/etc/case_config/twpice.nml b/scm/etc/case_config/twpice.nml index 35bf17559..23a5ceea0 100644 --- a/scm/etc/case_config/twpice.nml +++ b/scm/etc/case_config/twpice.nml @@ -1,16 +1,6 @@ $case_config -model_name = 'FV3', -n_columns = 1, case_name = 'twpice', -dt = 600.0, -time_scheme = 1, runtime = 2138400, -n_itt_out = 1, -n_itt_diag = 6, -n_levels = 64, -output_file = 'output', -case_data_dir = '../data/processed_case_input', -vert_coord_data_dir = '../data/vert_coord_data', thermo_forcing_type = 2, mom_forcing_type = 3, relax_time = 7200.0, @@ -23,4 +13,4 @@ month = 1, day = 19, hour = 3, column_area = 2.0E9, -$end \ No newline at end of file +$end diff --git a/scm/src/CMakeLists.txt b/scm/src/CMakeLists.txt index 3847ec798..45188fb32 100644 --- a/scm/src/CMakeLists.txt +++ b/scm/src/CMakeLists.txt @@ -155,8 +155,7 @@ ADD_DEFINITIONS(-DSCM) #------------------------------------------------------------------------------ # Add model-specific flags for C/C++/Fortran preprocessor -#ADD_DEFINITIONS(-DMOIST_CAPPA -DUSE_COND -DNEMS_GSM) -ADD_DEFINITIONS(-DMOIST_CAPPA -DUSE_COND -DNEMS_GSM -DGFSL64) # add GFSL64 to use correct GFS ak and bks +ADD_DEFINITIONS(-DMOIST_CAPPA -DUSE_COND -DNEMS_GSM) #ADD_DEFINITIONS(-DINTERNAL_FILE_NML) #------------------------------------------------------------------------------ diff --git a/scm/src/default_namelists.py b/scm/src/default_namelists.py deleted file mode 100644 index d380a3835..000000000 --- a/scm/src/default_namelists.py +++ /dev/null @@ -1,20 +0,0 @@ -default_physics_namelists = {"SCM_csawmg":"input_csawmg.nml", - "SCM_GSD_v1":"input_GSD_v1.nml", - "SCM_GSD_v1nssl":"input_GSD_v1nssl.nml", - "SCM_GFS_v15p2":"input_GFS_v15p2.nml", - "SCM_GFS_v16":"input_GFS_v16.nml", - "SCM_GFS_v15p2_no_nsst":"input_GFS_v15p2.nml", - "SCM_GFS_v16_no_nsst":"input_GFS_v16.nml", - "SCM_GFS_v15p2_RRTMGP":"input_GFS_v15p2_RRTMGP.nml", - "SCM_GFS_v16_RRTMGP":"input_GFS_v16_RRTMGP.nml", - "SCM_GFS_v15p2_noahmp":"input_GFS_v15p2_noahmp.nml", - "SCM_GFS_v15p2_MYJ":"input_GFS_v15p2_MYJ.nml", - "SCM_GFS_v15p2_FA":"input_GFS_v15p2_FA.nml", - "SCM_GFS_v15p2_YSU":"input_GFS_v15p2_YSU.nml", - "SCM_GFS_v15p2_saYSU":"input_GFS_v15p2_saYSU.nml", - "SCM_GFS_v15p2_ACM":"input_GFS_v15p2_ACM.nml", - "HAFS_v0_hwrf":"input_HAFS_v0_hwrf.nml", - "HAFS_v0_hwrf_thompson":"input_HAFS_v0_hwrf_thompson.nml", - "SCM_RRFS_v1alpha":"input_RRFS_v1alpha.nml", - "SCM_RRFS_v1nssl":"input_RRFS_v1nssl_nohailnoccn.nml" - } diff --git a/scm/src/default_tracers.py b/scm/src/default_tracers.py deleted file mode 100644 index 147e254b0..000000000 --- a/scm/src/default_tracers.py +++ /dev/null @@ -1,19 +0,0 @@ -default_tracers = {"SCM_GFS_v15p2":"tracers_GFS_v15p2.txt", - "SCM_GFS_v16":"tracers_GFS_v16.txt", - "SCM_GFS_v15p2_RRTMGP":"tracers_GFS_v15p2.txt", - "SCM_GFS_v16_RRTMGP":"tracers_GFS_v16.txt", - "SCM_csawmg":"tracers_csawmg.txt", - "SCM_GFS_v15p2_no_nsst":"tracers_GFS_v15p2.txt", - "SCM_GFS_v16_no_nsst":"tracers_GFS_v16.txt", - "SCM_GFS_v15p2_noahmp":"tracers_GFS_v15p2.txt", - "SCM_GFS_v15p2_MYJ":"tracers_GFS_v15p2.txt", - "SCM_GSD_v1":"tracers_gsd.txt", - "SCM_GSD_v1nssl":"tracers_gsd_nssl.txt", - "SCM_GFS_v15p2_YSU":"tracers_GFS_v15p2.txt", - "SCM_GFS_v15p2_saYSU":"tracers_GFS_v15p2.txt", - "SCM_GFS_v15p2_ACM":"tracers_GFS_v15p2.txt", - "HAFS_v0_hwrf":"tracers_HAFS_v0_hwrf.txt", - "HAFS_v0_hwrf_thompson":"tracers_HAFS_v0_hwrf_thompson.txt", - "SCM_RRFS_v1alpha":"tracers_RRFS_v1alpha.txt", - "SCM_RRFS_v1nssl":"tracers_RRFS_v1nssl_nohail_noccn.txt" - } diff --git a/scm/src/fv_eta.h b/scm/src/fv_eta.h new file mode 100644 index 000000000..7df22b11b --- /dev/null +++ b/scm/src/fv_eta.h @@ -0,0 +1,984 @@ +!*********************************************************************** +!* GNU Lesser General Public License +!* +!* This file is part of the FV3 dynamical core. +!* +!* The FV3 dynamical core is free software: you can redistribute it +!* and/or modify it under the terms of the +!* GNU Lesser General Public License as published by the +!* Free Software Foundation, either version 3 of the License, or +!* (at your option) any later version. +!* +!* The FV3 dynamical core is distributed in the hope that it will be +!* useful, but WITHOUT ANYWARRANTY; without even the implied warranty +!* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +!* See the GNU General Public License for more details. +!* +!* You should have received a copy of the GNU Lesser General Public +!* License along with the FV3 dynamical core. +!* If not, see . +!*********************************************************************** +#ifndef _FV_ETA_ +#define _FV_ETA__ + +! -*-f90-*-* + +! local + real a24(25),b24(25) ! GFDL AM2L24 + real a26(27),b26(27) ! Jablonowski & Williamson 26-level + real a32old(33),b32old(33) + real a32(33),b32(33) + real a32w(33),b32w(33) + real a33(34),b33(34) ! miz: grid with enhanced surface-layer resolution + real a47(48),b47(48) + real a48(49),b48(49) + real a50(51),b50(51) ! kyc: HRRRv3 grid + real a52(53),b52(53) + real a54(55),b54(55) + real a56(57),b56(57) + real a60(61),b60(61) + real a60gfs(61),b60gfs(61) + real a63(64),b63(64) + real a63meso(64),b63meso(64) + real a64(65),b64(65) + real a64gfs(65),b64gfs(65) + real a68(69),b68(69) ! cjg: grid with enhanced PBL resolution + real a96(97),b96(97) ! cjg: grid with enhanced PBL resolution + real a100(101),b100(101) + real a104(105),b104(105) + real a125(126),b125(126) + +!----------------------------------------------- +! GFDL AM2-L24: modified by SJL at the model top +!----------------------------------------------- +! data a24 / 100.0000, 1050.0000, 3474.7942, 7505.5556, 12787.2428, & + data a24 / 100.0000, 903.4465, 3474.7942, 7505.5556, 12787.2428, & + 19111.3683, 21854.9274, 22884.1866, 22776.3058, 21716.1604, & + 20073.2963, 18110.5123, 16004.7832, 13877.6253, 11812.5452, & + 9865.8840, 8073.9726, 6458.0834, 5027.9899, 3784.6085, & + 2722.0086, 1828.9752, 1090.2396, 487.4595, 0.0000 / + + data b24 / 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, & + 0.0000000, 0.0435679, 0.1102275, 0.1922249, 0.2817656, & + 0.3694997, 0.4532348, 0.5316253, 0.6038733, 0.6695556, & + 0.7285176, 0.7808017, 0.8265992, 0.8662148, 0.9000406, & + 0.9285364, 0.9522140, 0.9716252, 0.9873523, 1.0000000 / + +! Jablonowski & Williamson 26-level setup + data a26 / 219.4067, 489.5209, 988.2418, 1805.2010, 2983.7240, 4462.3340, & + 6160.5870, 7851.2430, 7731.2710, 7590.1310, 7424.0860, & + 7228.7440, 6998.9330, 6728.5740, 6410.5090, 6036.3220, & + 5596.1110, 5078.2250, 4468.9600, 3752.1910, 2908.9490, & + 2084.739, 1334.443, 708.499, 252.1360, 0.0, 0.0 / + + data b26 / 0.0, 0.0, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000,& + 0.0000000, 0.01505309, 0.03276228, 0.05359622, 0.07810627, & + 0.1069411, 0.1408637, 0.1807720, 0.2277220, 0.2829562, & + 0.3479364, 0.4243822, 0.5143168, 0.6201202, 0.7235355, & + 0.8176768, 0.8962153, 0.9534761, 0.9851122, 1.0000000 / + + +! High-resolution troposphere setup +! Revised Apr 14, 2004: PINT = 245.027 mb + data a32old/100.00000, 400.00000, 818.60211, & + 1378.88653, 2091.79519, 2983.64084, & + 4121.78960, 5579.22148, 7419.79300, & + 9704.82578, 12496.33710, 15855.26306, & + 19839.62499, 24502.73262, 28177.10152, & + 29525.28447, 29016.34358, 27131.32792, & + 24406.11225, 21326.04907, 18221.18357, & + 15275.14642, 12581.67796, 10181.42843, & + 8081.89816, 6270.86956, 4725.35001, & + 3417.39199, 2317.75459, 1398.09473, & + 632.49506, 0.00000, 0.00000 / + + data b32old/0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.01711, & + 0.06479, 0.13730, 0.22693, & + 0.32416, 0.42058, 0.51105, & + 0.59325, 0.66628, 0.73011, & + 0.78516, 0.83217, 0.87197, & + 0.90546, 0.93349, 0.95685, & + 0.97624, 0.99223, 1.00000 / + +! SJL June 26, 2012 +! pint= 55.7922 + data a32/100.00000, 400.00000, 818.60211, & + 1378.88653, 2091.79519, 2983.64084, & + 4121.78960, 5579.22148, 6907.19063, & + 7735.78639, 8197.66476, 8377.95525, & + 8331.69594, 8094.72213, 7690.85756, & + 7139.01788, 6464.80251, 5712.35727, & + 4940.05347, 4198.60465, 3516.63294, & + 2905.19863, 2366.73733, 1899.19455, & + 1497.78137, 1156.25252, 867.79199, & + 625.59324, 423.21322, 254.76613, & + 115.06646, 0.00000, 0.00000 / + + data b32/0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00513, & + 0.01969, 0.04299, 0.07477, & + 0.11508, 0.16408, 0.22198, & + 0.28865, 0.36281, 0.44112, & + 0.51882, 0.59185, 0.65810, & + 0.71694, 0.76843, 0.81293, & + 0.85100, 0.88331, 0.91055, & + 0.93338, 0.95244, 0.96828, & + 0.98142, 0.99223, 1.00000 / + +!--------------------- +! Wilson's 32L settings: +!--------------------- +! Top changed to 0.01 mb + data a32w/ 1.00, 26.6378, 84.5529, 228.8592, & + 539.9597, 1131.7087, 2141.8082, 3712.0454, & + 5963.5317, 8974.1873, 12764.5388, 17294.5911, & + 20857.7007, 22221.8651, 22892.7202, 22891.1641, & + 22286.0724, 21176.0846, 19673.0671, 17889.0989, & + 15927.5060, 13877.6239, 11812.5474, 9865.8830, & + 8073.9717, 6458.0824, 5027.9893, 3784.6104, & + 2722.0093, 1828.9741, 1090.2397, 487.4575, & + 0.0000 / + + data b32w/ 0.0000, 0.0000, 0.0000, 0.0000, & + 0.0000, 0.0000, 0.0000, 0.0000, & + 0.0000, 0.0000, 0.0000, 0.0000, & + 0.0159, 0.0586, 0.1117, 0.1734, & + 0.2415, 0.3137, 0.3878, 0.4619, & + 0.5344, 0.6039, 0.6696, 0.7285, & + 0.7808, 0.8266, 0.8662, 0.9000, & + 0.9285, 0.9522, 0.9716, 0.9874, & + 1.0000 / + +!miz + data a33/100.00000, 400.00000, 818.60211, & + 1378.88653, 2091.79519, 2983.64084, & + 4121.78960, 5579.22148, 6907.19063, & + 7735.78639, 8197.66476, 8377.95525, & + 8331.69594, 8094.72213, 7690.85756, & + 7139.01788, 6464.80251, 5712.35727, & + 4940.05347, 4198.60465, 3516.63294, & + 2905.19863, 2366.73733, 1899.19455, & + 1497.78137, 1156.25252, 867.79199, & + 625.59324, 426.21322, 264.76613, & + 145.06646, 60.00000, 15.00000, & + 0.00000 / + + data b33/0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00513, & + 0.01969, 0.04299, 0.07477, & + 0.11508, 0.16408, 0.22198, & + 0.28865, 0.36281, 0.44112, & + 0.51882, 0.59185, 0.65810, & + 0.71694, 0.76843, 0.81293, & + 0.85100, 0.88331, 0.91055, & + 0.93331, 0.95214, 0.96750, & + 0.97968, 0.98908, 0.99575, & + 1.00000 / +!miz +#ifdef OLD_L47 +! QBO setting with ptop = 0.1 mb and p_full=0.17 mb; pint ~ 100 mb + data a47/ 10.00000, 24.45365, 48.76776, & + 85.39458, 133.41983, 191.01402, & + 257.94919, 336.63306, 431.52741, & + 548.18995, 692.78825, 872.16512, & + 1094.18467, 1368.11917, 1704.99489, & + 2117.91945, 2622.42986, 3236.88281, & + 3982.89623, 4885.84733, 5975.43260, & + 7286.29500, 8858.72424, 10739.43477, & + 12982.41110, 15649.68745, 18811.37629, & + 22542.71275, 25724.93857, 27314.36781, & + 27498.59474, 26501.79312, 24605.92991, & + 22130.51655, 19381.30274, 16601.56419, & + 13952.53231, 11522.93244, 9350.82303, & + 7443.47723, 5790.77434, 4373.32696, & + 3167.47008, 2148.51663, 1293.15510, & + 581.62429, 0.00000, 0.00000 / + + data b47/ 0.0000, 0.0000, 0.0000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.01188, 0.04650, & + 0.10170, 0.17401, 0.25832, & + 0.34850, 0.43872, 0.52448, & + 0.60307, 0.67328, 0.73492, & + 0.78834, 0.83418, 0.87320, & + 0.90622, 0.93399, 0.95723, & + 0.97650, 0.99223, 1.00000 / +#else +! Oct 23, 2012 +! QBO setting with ptop = 0.1 mb, pint ~ 60 mb + data a47/ 10.00000, 24.45365, 48.76776, & + 85.39458, 133.41983, 191.01402, & + 257.94919, 336.63306, 431.52741, & + 548.18995, 692.78825, 872.16512, & + 1094.18467, 1368.11917, 1704.99489, & + 2117.91945, 2622.42986, 3236.88281, & + 3982.89623, 4885.84733, 5975.43260, & + 7019.26669, 7796.15848, 8346.60209, & + 8700.31838, 8878.27554, 8894.27179, & + 8756.46404, 8469.60171, 8038.92687, & + 7475.89006, 6803.68067, 6058.68992, & + 5285.28859, 4526.01565, 3813.00206, & + 3164.95553, 2589.26318, 2085.96929, & + 1651.11596, 1278.81205, 962.38875, & + 695.07046, 470.40784, 282.61654, & + 126.92745, 0.00000, 0.00000 / + data b47/ 0.0000, 0.0000, 0.0000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00267, 0.01063, 0.02393, & + 0.04282, 0.06771, 0.09917, & + 0.13786, 0.18444, 0.23925, & + 0.30193, 0.37100, 0.44379, & + 0.51695, 0.58727, 0.65236, & + 0.71094, 0.76262, 0.80757, & + 0.84626, 0.87930, 0.90731, & + 0.93094, 0.95077, 0.96733, & + 0.98105, 0.99223, 1.00000 / +#endif + + data a48/ & + 1.00000, 2.69722, 5.17136, & + 8.89455, 14.24790, 22.07157, & + 33.61283, 50.48096, 74.79993, & + 109.40055, 158.00460, 225.44108, & + 317.89560, 443.19350, 611.11558, & + 833.74392, 1125.83405, 1505.20759, & + 1993.15829, 2614.86254, 3399.78420, & + 4382.06240, 5600.87014, 7100.73115, & + 8931.78242, 11149.97021, 13817.16841, & + 17001.20930, 20775.81856, 23967.33875, & + 25527.64563, 25671.22552, 24609.29622, & + 22640.51220, 20147.13482, 17477.63530, & + 14859.86462, 12414.92533, 10201.44191, & + 8241.50255, 6534.43202, 5066.17865, & + 3815.60705, 2758.60264, 1870.64631, & + 1128.33931, 510.47983, 0.00000, & + 0.00000 / + + data b48/ & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.01253, & + 0.04887, 0.10724, 0.18455, & + 0.27461, 0.36914, 0.46103, & + 0.54623, 0.62305, 0.69099, & + 0.75016, 0.80110, 0.84453, & + 0.88127, 0.91217, 0.93803, & + 0.95958, 0.97747, 0.99223, & + 1.00000 / + +! KYC: HRRRv3 vertical coordinate + + data a50/ 2.00000000e+03, 2.46060000e+03, 2.95060000e+03, & + 3.47980000e+03, 4.04820000e+03, 4.65580000e+03, & + 5.30260000e+03, 6.00820000e+03, 6.76280000e+03, & + 7.56640000e+03, 8.43860000e+03, 9.62440000e+03, & + 1.10062000e+04, 1.23880000e+04, 1.37698000e+04, & + 1.51516000e+04, 1.65334000e+04, 1.79152000e+04, & + 1.92970000e+04, 2.06788000e+04, 2.20530309e+04, & + 2.33224623e+04, 2.44604680e+04, 2.56437194e+04, & + 2.66933976e+04, 2.76478977e+04, 2.84633440e+04, & + 2.90796820e+04, 2.94284494e+04, 2.94337456e+04, & + 2.90084684e+04, 2.80761591e+04, 2.65243296e+04, & + 2.42850206e+04, 2.13118800e+04, 1.81350000e+04, & + 1.50098730e+04, 1.20805273e+04, 9.44285062e+03, & + 7.15256437e+03, 5.23262695e+03, 3.68006836e+03, & + 2.47225500e+03, 1.57258500e+03, 8.82770078e+02, & + 4.33565391e+02, 1.83056641e+02, 6.24538281e+01, & + 1.98243750e+01, 4.87312500e+00, 0.00000000e+00 / + + data b50/ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, & + 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, & + 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, & + 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, & + 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, & + 0.00000000e+00, 0.00000000e+00, 0.00000000e+00, & + 0.00000000e+00, 0.00000000e+00, 7.56910398e-05, & + 1.19937655e-03, 3.63732042e-03, 8.17080640e-03, & + 1.47260242e-02, 2.40950227e-02, 3.70105596e-02, & + 5.42691797e-02, 7.67515062e-02, 1.05608544e-01, & + 1.42005316e-01, 1.86608409e-01, 2.41816704e-01, & + 3.08309794e-01, 3.87041200e-01, 4.65850000e-01, & + 5.41201270e-01, 6.11654727e-01, 6.76251494e-01, & + 7.34434356e-01, 7.85973730e-01, 8.30899316e-01, & + 8.69437450e-01, 9.01954150e-01, 9.31392299e-01, & + 9.55484346e-01, 9.73669434e-01, 9.86635462e-01, & + 9.93921756e-01, 9.97991269e-01, 1.00000000e+00 / + +! High PBL resolution with top at 1 mb +! SJL modified May 7, 2013 to ptop ~ 100 mb + data a54/100.00000, 254.83931, 729.54278, & + 1602.41121, 2797.50667, 4100.18977, & + 5334.87140, 6455.24153, 7511.80944, & + 8580.26355, 9714.44293, 10938.62253, & + 12080.36051, 12987.13921, 13692.75084, & + 14224.92180, 14606.55444, 14856.69953, & + 14991.32121, 15023.90075, 14965.91493, & + 14827.21612, 14616.33505, 14340.72252, & + 14006.94280, 13620.82849, 13187.60470, & + 12711.98873, 12198.27003, 11650.37451, & + 11071.91608, 10466.23819, 9836.44706, & + 9185.43852, 8515.96231, 7831.01080, & + 7135.14301, 6436.71659, 5749.00215, & + 5087.67188, 4465.67510, 3889.86419, & + 3361.63433, 2879.51065, 2441.02496, & + 2043.41345, 1683.80513, 1359.31122, & + 1067.09135, 804.40101, 568.62625, & + 357.32525, 168.33263, 0.00000, & + 0.00000 / + + data b54/0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00180, 0.00694, 0.01510, & + 0.02601, 0.03942, 0.05515, & + 0.07302, 0.09288, 0.11459, & + 0.13803, 0.16307, 0.18960, & + 0.21753, 0.24675, 0.27716, & + 0.30866, 0.34115, 0.37456, & + 0.40879, 0.44375, 0.47935, & + 0.51551, 0.55215, 0.58916, & + 0.62636, 0.66334, 0.69946, & + 0.73395, 0.76622, 0.79594, & + 0.82309, 0.84780, 0.87020, & + 0.89047, 0.90876, 0.92524, & + 0.94006, 0.95336, 0.96529, & + 0.97596, 0.98551, 0.99400, & + 1.00000 / + + +! The 56-L setup + data a56/ 10.00000, 24.97818, 58.01160, & + 115.21466, 199.29210, 309.39897, & + 445.31785, 610.54747, 812.28518, & + 1059.80882, 1363.07092, 1732.09335, & + 2176.91502, 2707.68972, 3334.70962, & + 4068.31964, 4918.76594, 5896.01890, & + 7009.59166, 8268.36324, 9680.41211, & + 11252.86491, 12991.76409, 14901.95764, & + 16987.01313, 19249.15733, 21689.24182, & + 23845.11055, 25330.63353, 26243.52467, & + 26663.84998, 26657.94696, 26281.61371, & + 25583.05256, 24606.03265, 23393.39510, & + 21990.28845, 20445.82122, 18811.93894, & + 17139.59660, 15473.90350, 13850.50167, & + 12294.49060, 10821.62655, 9440.57746, & + 8155.11214, 6965.72496, 5870.70511, & + 4866.83822, 3949.90019, 3115.03562, & + 2357.07879, 1670.87329, 1051.65120, & + 495.51399, 0.00000, 0.00000 / + + data b56 /0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00462, 0.01769, 0.03821, & + 0.06534, 0.09834, 0.13659, & + 0.17947, 0.22637, 0.27660, & + 0.32929, 0.38343, 0.43791, & + 0.49162, 0.54361, 0.59319, & + 0.63989, 0.68348, 0.72391, & + 0.76121, 0.79545, 0.82679, & + 0.85537, 0.88135, 0.90493, & + 0.92626, 0.94552, 0.96286, & + 0.97840, 0.99223, 1.00000 / + + data a60gfs/300.0000, 430.00000, 558.00000, & + 700.00000, 863.05803, 1051.07995, & + 1265.75194, 1510.71101, 1790.05098, & + 2108.36604, 2470.78817, 2883.03811, & + 3351.46002, 3883.05187, 4485.49315, & + 5167.14603, 5937.04991, 6804.87379, & + 7780.84698, 8875.64338, 10100.20534, & + 11264.35673, 12190.64366, 12905.42546, & + 13430.87867, 13785.88765, 13986.77987, & + 14047.96335, 13982.46770, 13802.40331, & + 13519.33841, 13144.59486, 12689.45608, & + 12165.28766, 11583.57006, 10955.84778, & + 10293.60402, 9608.08306, 8910.07678, & + 8209.70131, 7516.18560, 6837.69250, & + 6181.19473, 5552.39653, 4955.72632, & + 4394.37629, 3870.38682, 3384.76586, & + 2937.63489, 2528.37666, 2155.78385, & + 1818.20722, 1513.68173, 1240.03585, & + 994.99144, 776.23591, 581.48797, & + 408.53400, 255.26520, 119.70243, 0. / + + data b60gfs/0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00201, 0.00792, 0.01755, & + 0.03079, 0.04751, 0.06761, & + 0.09097, 0.11746, 0.14690, & + 0.17911, 0.21382, 0.25076, & + 0.28960, 0.32994, 0.37140, & + 0.41353, 0.45589, 0.49806, & + 0.53961, 0.58015, 0.61935, & + 0.65692, 0.69261, 0.72625, & + 0.75773, 0.78698, 0.81398, & + 0.83876, 0.86138, 0.88192, & + 0.90050, 0.91722, 0.93223, & + 0.94565, 0.95762, 0.96827, & + 0.97771, 0.98608, 0.99347, 1./ + +! NAM levels + data a60/200., 1311.4934, 2424.6044, 3541.7594,& + 4662.9584, 5790.2234, 6932.6534, 8095.3034,& + 9278.1734, 10501.4834, 11755.1234, 13049.2034,& + 14403.9434, 15809.2334, 17315.6234, 18953.4434,& + 20783.3534, 22815.4634, 25059.8834, 27567.1634,& + 30148.42896047, 32193.91776039, 33237.35176644, 33332.15200668,& + 32747.34688095, 31710.06232008, 30381.0344269, 28858.71577772,& + 27218.00439794, 25500.31691133, 23734.52294749, 21947.3406187,& + 20167.06984021, 18396.08144096, 16688.20978135, 15067.73749198,& + 13564.49530178, 12183.34512952, 10928.24869364, 9815.02787644,& + 8821.38325756, 7943.05793658, 7181.90985128, 6500.94645341,& + 5932.84856135, 5420.87683616, 4959.15585353, 4522.15047657,& + 4103.63596619, 3703.72540955, 3322.52525084, 2953.65688391,& + 2597.18532669, 2253.10764634, 1915.10585833, 1583.14516612,& + 1257.18953818, 937.3977544 , 623.60136981, 311.11085215,& + 0. / + data b60/0., 0., 0., 0., 0.,& + 0. , 0. , 0. , 0. , 0. ,& + 0. , 0. , 0. , 0. , 0. ,& + 0. , 0. , 0. , 0. , 0. ,& + 0.0014653 , 0.01021565, 0.0301554 , 0.06025816, 0.09756877,& + 0.13994493, 0.18550048, 0.23318371, 0.2819159 , 0.33120838,& + 0.38067633, 0.42985641, 0.47816985, 0.52569303, 0.57109611,& + 0.61383996, 0.6532309 , 0.68922093, 0.72177094, 0.75052515,& + 0.77610288, 0.79864598, 0.81813309, 0.83553022, 0.85001773,& + 0.86305395, 0.8747947 , 0.88589325, 0.89650986, 0.9066434 ,& + 0.91629284, 0.92562094, 0.93462705, 0.94331221, 0.95183659,& + 0.96020153, 0.96840839, 0.97645359, 0.98434181, 0.99219119, 1. / + + +! This is activated by USE_GFSL63 +! Thfollowing L63 setting is the same as NCEP GFS's L64 except the top +! 3 layers + data a63/64.247, 137.790, 221.958, & + 318.266, 428.434, 554.424, & + 698.457, 863.05803, 1051.07995, & + 1265.75194, 1510.71101, 1790.05098, & + 2108.36604, 2470.78817, 2883.03811, & + 3351.46002, 3883.05187, 4485.49315, & + 5167.14603, 5937.04991, 6804.87379, & + 7780.84698, 8875.64338, 10100.20534, & + 11264.35673, 12190.64366, 12905.42546, & + 13430.87867, 13785.88765, 13986.77987, & + 14047.96335, 13982.46770, 13802.40331, & + 13519.33841, 13144.59486, 12689.45608, & + 12165.28766, 11583.57006, 10955.84778, & + 10293.60402, 9608.08306, 8910.07678, & + 8209.70131, 7516.18560, 6837.69250, & + 6181.19473, 5552.39653, 4955.72632, & + 4394.37629, 3870.38682, 3384.76586, & + 2937.63489, 2528.37666, 2155.78385, & + 1818.20722, 1513.68173, 1240.03585, & + 994.99144, 776.23591, 581.48797, & + 408.53400, 255.26520, 119.70243, 0. / + + data b63/0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00201, 0.00792, 0.01755, & + 0.03079, 0.04751, 0.06761, & + 0.09097, 0.11746, 0.14690, & + 0.17911, 0.21382, 0.25076, & + 0.28960, 0.32994, 0.37140, & + 0.41353, 0.45589, 0.49806, & + 0.53961, 0.58015, 0.61935, & + 0.65692, 0.69261, 0.72625, & + 0.75773, 0.78698, 0.81398, & + 0.83876, 0.86138, 0.88192, & + 0.90050, 0.91722, 0.93223, & + 0.94565, 0.95762, 0.96827, & + 0.97771, 0.98608, 0.99347, 1./ + + data a63meso/ 64.247, 234.14925, 444.32075, & + 719.10698, 1077.83197, 1545.21700, & + 2152.6203, 2939.37353, 3954.07197, & + 5255.55443, 6913.13424, 8955.12932, & + 10898.75012, 12137.76737, 12858.09331, & + 13388.26761, 13747.35846, 13951.85268, & + 14016.29356, 13953.82551, 13776.65318, & + 13496.41874, 13124.49605, 12672.19867, & + 12150.90036, 11572.06889, 10947.21741, & + 10287.78472, 9604.96173, 8909.48448, & + 8211.41625, 7519.94125, 6843.19133, & + 6188.11962, 5560.42852, 4964.55636, & + 4403.71643, 3879.97894, 3394.38835, & + 2996.77033, 2730.02573, 2530.11329, & + 2339.36720, 2157.57530, 1984.53745, & + 1820.00086, 1663.72705, 1515.43668, & + 1374.86622, 1241.72259, 1115.72934, & + 996.58895, 884.02079, 777.73138, & + 677.44387, 582.87349, 493.75161, & + 409.80694, 330.78356, 256.42688, & + 186.49670, 120.75560, 58.97959, 0. / + + data b63meso/ 0. , 0. , 0. , & + 0. , 0. , 0. , & + 0. , 0. , 0. , & + 0. , 0. , 0.0005 , & + 0.00298, 0.00885, 0.01845, & + 0.03166, 0.04836, 0.06842, & + 0.09175, 0.1182 , 0.14759, & + 0.17974, 0.21438, 0.25123, & + 0.28997, 0.33022, 0.37157, & + 0.41359, 0.45584, 0.49791, & + 0.53936, 0.57981, 0.61894, & + 0.65645, 0.6921 , 0.72571, & + 0.75717, 0.78642, 0.81343, & + 0.83547, 0.85023, 0.86128, & + 0.8718 , 0.88182, 0.89135, & + 0.9004 , 0.90898, 0.91712, & + 0.92483, 0.93213, 0.93904, & + 0.94556, 0.95172, 0.95754, & + 0.96302, 0.96819, 0.97306, & + 0.97764, 0.98196, 0.98601, & + 0.98983, 0.99341, 0.99678, 1. / + + data a64gfs/20.00000, 68.00000, 137.79000, & + 221.95800, 318.26600, 428.43400, & + 554.42400, 698.45700, 863.05803, & + 1051.07995, 1265.75194, 1510.71101, & + 1790.05098, 2108.36604, 2470.78817, & + 2883.03811, 3351.46002, 3883.05187, & + 4485.49315, 5167.14603, 5937.04991, & + 6804.87379, 7780.84698, 8875.64338, & + 9921.40745, 10760.99844, 11417.88354, & + 11911.61193, 12258.61668, 12472.89642, & + 12566.58298, 12550.43517, 12434.26075, & + 12227.27484, 11938.39468, 11576.46910, & + 11150.43640, 10669.41063, 10142.69482, & + 9579.72458, 8989.94947, 8382.67090, & + 7766.85063, 7150.91171, 6542.55077, & + 5948.57894, 5374.81094, 4825.99383, & + 4305.79754, 3816.84622, 3360.78848, & + 2938.39801, 2549.69756, 2194.08449, & + 1870.45732, 1577.34218, 1313.00028, & + 1075.52114, 862.90778, 673.13815, & + 504.22118, 354.22752, 221.32110, & + 103.78014, 0./ + data b64gfs/0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00179, 0.00705, 0.01564, & + 0.02749, 0.04251, 0.06064, & + 0.08182, 0.10595, 0.13294, & + 0.16266, 0.19492, 0.22950, & + 0.26615, 0.30455, 0.34435, & + 0.38516, 0.42656, 0.46815, & + 0.50949, 0.55020, 0.58989, & + 0.62825, 0.66498, 0.69987, & + 0.73275, 0.76351, 0.79208, & + 0.81845, 0.84264, 0.86472, & + 0.88478, 0.90290, 0.91923, & + 0.93388, 0.94697, 0.95865, & + 0.96904, 0.97826, 0.98642, & + 0.99363, 1./ + + data a64/1.00000, 3.90000, 8.70000, & + 15.42000, 24.00000, 34.50000, & + 47.00000, 61.50000, 78.60000, & + 99.13500, 124.12789, 154.63770, & + 191.69700, 236.49300, 290.38000, & + 354.91000, 431.82303, 523.09300, & + 630.92800, 757.79000, 906.45000, & + 1079.85000, 1281.00000, 1515.00000, & + 1788.00000, 2105.00000, 2470.00000, & + 2889.00000, 3362.00000, 3890.00000, & + 4475.00000, 5120.00000, 5830.00000, & + 6608.00000, 7461.00000, 8395.00000, & + 9424.46289, 10574.46880, 11864.80270, & + 13312.58890, 14937.03710, 16759.70700, & + 18804.78710, 21099.41210, 23674.03710, & + 26562.82810, 29804.11720, 32627.31640, & + 34245.89840, 34722.28910, 34155.19920, & + 32636.50390, 30241.08200, 27101.44920, & + 23362.20700, 19317.05270, 15446.17090, & + 12197.45210, 9496.39941, 7205.66992, & + 5144.64307, 3240.79346, 1518.62134, & + 0.00000, 0.00000 / + + data b64/0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00813, & + 0.03224, 0.07128, 0.12445, & + 0.19063, 0.26929, 0.35799, & + 0.45438, 0.55263, 0.64304, & + 0.71703, 0.77754, 0.82827, & + 0.87352, 0.91502, 0.95235, & + 0.98511, 1.00000 / + +!-->cjg + data a68/1.00000, 2.68881, 5.15524, & + 8.86683, 14.20349, 22.00278, & + 33.50807, 50.32362, 74.56680, & + 109.05958, 157.51214, 224.73844, & + 316.90481, 441.81219, 609.21090, & + 831.14537, 1122.32514, 1500.51628, & + 1986.94617, 2606.71274, 3389.18802, & + 4368.40473, 5583.41379, 7078.60015, & + 8903.94455, 11115.21886, 13774.60566, & + 16936.82070, 20340.47045, 23193.71492, & + 24870.36141, 25444.59363, 25252.57081, & + 24544.26211, 23474.29096, 22230.65331, & + 20918.50731, 19589.96280, 18296.26682, & + 17038.02866, 15866.85655, 14763.18943, & + 13736.83624, 12794.11850, 11930.72442, & + 11137.17217, 10404.78946, 9720.03954, & + 9075.54055, 8466.72650, 7887.12346, & + 7333.90490, 6805.43028, 6297.33773, & + 5805.78227, 5327.94995, 4859.88765, & + 4398.63854, 3942.81761, 3491.08449, & + 3043.04531, 2598.71608, 2157.94527, & + 1720.87444, 1287.52805, 858.02944, & + 432.71276, 8.10905, 0.00000 / + + data b68/0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00283, 0.01590, & + 0.04412, 0.08487, 0.13284, & + 0.18470, 0.23828, 0.29120, & + 0.34211, 0.39029, 0.43518, & + 0.47677, 0.51536, 0.55091, & + 0.58331, 0.61263, 0.63917, & + 0.66333, 0.68552, 0.70617, & + 0.72555, 0.74383, 0.76117, & + 0.77765, 0.79335, 0.80838, & + 0.82287, 0.83693, 0.85069, & + 0.86423, 0.87760, 0.89082, & + 0.90392, 0.91689, 0.92973, & + 0.94244, 0.95502, 0.96747, & + 0.97979, 0.99200, 1.00000 / + + data a96/1.00000, 2.35408, 4.51347, & + 7.76300, 12.43530, 19.26365, & + 29.33665, 44.05883, 65.28397, & + 95.48274, 137.90344, 196.76073, & + 277.45330, 386.81095, 533.37018, & + 727.67600, 982.60677, 1313.71685, & + 1739.59104, 2282.20281, 2967.26766, & + 3824.58158, 4888.33404, 6197.38450, & + 7795.49158, 9731.48414, 11969.71024, & + 14502.88894, 17304.52434, 20134.76139, & + 22536.63814, 24252.54459, 25230.65591, & + 25585.72044, 25539.91412, 25178.87141, & + 24644.84493, 23978.98781, 23245.49366, & + 22492.11600, 21709.93990, 20949.64473, & + 20225.94258, 19513.31158, 18829.32485, & + 18192.62250, 17589.39396, 17003.45386, & + 16439.01774, 15903.91204, 15396.39758, & + 14908.02140, 14430.65897, 13967.88643, & + 13524.16667, 13098.30227, 12687.56457, & + 12287.08757, 11894.41553, 11511.54106, & + 11139.22483, 10776.01912, 10419.75711, & + 10067.11881, 9716.63489, 9369.61967, & + 9026.69066, 8687.29884, 8350.04978, & + 8013.20925, 7677.12187, 7343.12994, & + 7011.62844, 6681.98102, 6353.09764, & + 6025.10535, 5699.10089, 5375.54503, & + 5053.63074, 4732.62740, 4413.38037, & + 4096.62775, 3781.79777, 3468.45371, & + 3157.19882, 2848.25306, 2541.19150, & + 2236.21942, 1933.50628, 1632.83741, & + 1334.35954, 1038.16655, 744.22318, & + 452.71094, 194.91899, 0.00000, & + 0.00000 / + + data b96/0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00193, & + 0.00974, 0.02538, 0.04876, & + 0.07817, 0.11081, 0.14514, & + 0.18007, 0.21486, 0.24866, & + 0.28088, 0.31158, 0.34030, & + 0.36701, 0.39210, 0.41554, & + 0.43733, 0.45774, 0.47707, & + 0.49540, 0.51275, 0.52922, & + 0.54495, 0.56007, 0.57459, & + 0.58850, 0.60186, 0.61471, & + 0.62715, 0.63922, 0.65095, & + 0.66235, 0.67348, 0.68438, & + 0.69510, 0.70570, 0.71616, & + 0.72651, 0.73675, 0.74691, & + 0.75700, 0.76704, 0.77701, & + 0.78690, 0.79672, 0.80649, & + 0.81620, 0.82585, 0.83542, & + 0.84492, 0.85437, 0.86375, & + 0.87305, 0.88229, 0.89146, & + 0.90056, 0.90958, 0.91854, & + 0.92742, 0.93623, 0.94497, & + 0.95364, 0.96223, 0.97074, & + 0.97918, 0.98723, 0.99460, & + 1.00000 / +!<--cjg +! +! Ultra high troposphere resolution + data a100/100.00000, 300.00000, 800.00000, & + 1762.35235, 3106.43596, 4225.71874, & + 4946.40525, 5388.77387, 5708.35540, & + 5993.33124, 6277.73673, 6571.49996, & + 6877.05339, 7195.14327, 7526.24920, & + 7870.82981, 8229.35361, 8602.30193, & + 8990.16936, 9393.46399, 9812.70768, & + 10248.43625, 10701.19980, 11171.56286, & + 11660.10476, 12167.41975, 12694.11735, & + 13240.82253, 13808.17600, 14396.83442, & + 15007.47066, 15640.77407, 16297.45067, & + 16978.22343, 17683.83253, 18415.03554, & + 19172.60771, 19957.34218, 20770.05022, & + 21559.14829, 22274.03147, 22916.87519, & + 23489.70456, 23994.40187, 24432.71365, & + 24806.25734, 25116.52754, 25364.90190, & + 25552.64670, 25680.92203, 25750.78675, & + 25763.20311, 25719.04113, 25619.08274, & + 25464.02630, 25254.49482, 24991.06137, & + 24674.32737, 24305.11235, 23884.79781, & + 23415.77059, 22901.76510, 22347.84738, & + 21759.93950, 21144.07284, 20505.73136, & + 19849.54271, 19179.31412, 18498.23400, & + 17809.06809, 17114.28232, 16416.10343, & + 15716.54833, 15017.44246, 14320.43478, & + 13627.01116, 12938.50682, 12256.11762, & + 11580.91062, 10913.83385, 10255.72526, & + 9607.32122, 8969.26427, 8342.11044, & + 7726.33606, 7122.34405, 6530.46991, & + 5950.98721, 5384.11279, 4830.01153, & + 4288.80090, 3760.55514, 3245.30920, & + 2743.06250, 2253.78294, 1777.41285, & + 1313.88054, 863.12371, 425.13088, & + 0.00000, 0.00000 / + + + data b100/0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00000, 0.00000, 0.00000, & + 0.00052, 0.00209, 0.00468, & + 0.00828, 0.01288, 0.01849, & + 0.02508, 0.03266, 0.04121, & + 0.05075, 0.06126, 0.07275, & + 0.08521, 0.09866, 0.11308, & + 0.12850, 0.14490, 0.16230, & + 0.18070, 0.20009, 0.22042, & + 0.24164, 0.26362, 0.28622, & + 0.30926, 0.33258, 0.35605, & + 0.37958, 0.40308, 0.42651, & + 0.44981, 0.47296, 0.49591, & + 0.51862, 0.54109, 0.56327, & + 0.58514, 0.60668, 0.62789, & + 0.64872, 0.66919, 0.68927, & + 0.70895, 0.72822, 0.74709, & + 0.76554, 0.78357, 0.80117, & + 0.81835, 0.83511, 0.85145, & + 0.86736, 0.88286, 0.89794, & + 0.91261, 0.92687, 0.94073, & + 0.95419, 0.96726, 0.97994, & + 0.99223, 1.00000 / + + data a104/ & + 1.8827062944e-01, 7.7977549145e-01, 2.1950593583e+00, & + 4.9874566624e+00, 9.8041418997e+00, 1.7019717163e+01, & + 2.7216579591e+01, 4.0518628401e+01, 5.6749646818e+01, & + 7.5513868331e+01, 9.6315093333e+01, 1.1866706195e+02, & + 1.4216835396e+02, 1.6653733709e+02, 1.9161605772e+02, & + 2.1735580129e+02, 2.4379516604e+02, 2.7103771847e+02, & + 2.9923284173e+02, 3.2856100952e+02, 3.5922338766e+02, & + 3.9143507908e+02, 4.2542117983e+02, 4.6141487902e+02, & + 4.9965698106e+02, 5.4039638379e+02, 5.8389118154e+02, & + 6.3041016829e+02, 6.8023459505e+02, 7.3366009144e+02, & + 7.9099869949e+02, 8.5258099392e+02, 9.1875827946e+02, & + 9.8990486716e+02, 1.0664204381e+03, 1.1487325074e+03, & + 1.2372990044e+03, 1.3326109855e+03, 1.4351954993e+03, & + 1.5456186222e+03, 1.6644886848e+03, 1.7924597105e+03, & + 1.9302350870e+03, 2.0785714934e+03, 2.2382831070e+03, & + 2.4102461133e+03, 2.5954035462e+03, 2.7947704856e+03, & + 3.0094396408e+03, 3.2405873512e+03, 3.4894800360e+03, & + 3.7574811281e+03, 4.0460585279e+03, 4.3567926151e+03, & + 4.6913848588e+03, 5.0516670674e+03, 5.4396113207e+03, & + 5.8573406270e+03, 6.3071403487e+03, 6.7914704368e+03, & + 7.3129785102e+03, 7.8745138115e+03, 8.4791420557e+03, & + 9.1301611750e+03, 9.8311179338e+03, 1.0585825354e+04, & + 1.1398380836e+04, 1.2273184781e+04, 1.3214959424e+04, & + 1.4228767429e+04, 1.5320029596e+04, 1.6494540743e+04, & + 1.7758482452e+04, 1.9118430825e+04, 2.0422798801e+04, & + 2.1520147587e+04, 2.2416813461e+04, 2.3118184510e+04, & + 2.3628790785e+04, 2.3952411814e+04, 2.4092209011e+04, & + 2.4050892106e+04, 2.3830930156e+04, 2.3434818358e+04, & + 2.2865410898e+04, 2.2126326004e+04, 2.1222420323e+04, & + 2.0160313690e+04, 1.8948920926e+04, 1.7599915822e+04, & + 1.6128019809e+04, 1.4550987232e+04, 1.2889169132e+04, & + 1.1164595563e+04, 9.4227665517e+03, 7.7259097899e+03, & + 6.1538244381e+03, 4.7808126007e+03, 3.5967415552e+03, & + 2.5886394104e+03, 1.7415964865e+03, 1.0393721271e+03, & + 4.6478852032e+02, 7.0308342481e-13, 0.0000000000e+00 / + + + data b104/ & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & + 0.0000000000e+00, 0.0000000000e+00, 1.5648447298e-03, & + 6.2617046389e-03, 1.4104157933e-02, 2.5118187415e-02, & + 3.9340510972e-02, 5.6816335609e-02, 7.7596328431e-02, & + 1.0173255472e-01, 1.2927309709e-01, 1.6025505622e-01, & + 1.9469566981e-01, 2.3258141217e-01, 2.7385520518e-01, & + 3.1840233814e-01, 3.6603639170e-01, 4.1648734767e-01, & + 4.6939496013e-01, 5.2431098738e-01, 5.8071350676e-01, & + 6.3803478105e-01, 6.9495048840e-01, 7.4963750338e-01, & + 7.9975208897e-01, 8.4315257576e-01, 8.8034012292e-01, & + 9.1184389721e-01, 9.3821231526e-01, 9.6000677644e-01, & + 9.7779792223e-01, 9.9216315122e-01, 1.0000000000e+00 / + +! IFS-like L125(top 12 levels removed from IFSL137) + data a125/ 64., & + 86.895882, 107.415741, 131.425507, 159.279404, 191.338562, & + 227.968948, 269.539581, 316.420746, 368.982361, 427.592499, 492.616028, & + 564.413452, 643.339905, 729.744141, 823.967834, 926.344910, 1037.201172, & + 1156.853638, 1285.610352, 1423.770142, 1571.622925, 1729.448975, 1897.519287, & + 2076.095947, 2265.431641, 2465.770508, 2677.348145, 2900.391357, 3135.119385, & + 3381.743652, 3640.468262, 3911.490479, 4194.930664, 4490.817383, 4799.149414, & + 5119.895020, 5452.990723, 5798.344727, 6156.074219, 6526.946777, 6911.870605, & + 7311.869141, 7727.412109, 8159.354004, 8608.525391, 9076.400391, 9562.682617, & + 10065.978516, 10584.631836, 11116.662109, 11660.067383, 12211.547852, 12766.873047, & + 13324.668945, 13881.331055, 14432.139648, 14975.615234, 15508.256836, 16026.115234, & + 16527.322266, 17008.789063, 17467.613281, 17901.621094, 18308.433594, 18685.718750, & + 19031.289063, 19343.511719, 19620.042969, 19859.390625, 20059.931641, 20219.664063, & + 20337.863281, 20412.308594, 20442.078125, 20425.718750, 20361.816406, 20249.511719, & + 20087.085938, 19874.025391, 19608.572266, 19290.226563, 18917.460938, 18489.707031, & + 18006.925781, 17471.839844, 16888.687500, 16262.046875, 15596.695313, 14898.453125, & + 14173.324219, 13427.769531, 12668.257813, 11901.339844, 11133.304688, 10370.175781, & + 9617.515625, 8880.453125, 8163.375000, 7470.343750, 6804.421875, 6168.531250, & + 5564.382813, 4993.796875, 4457.375000, 3955.960938, 3489.234375, 3057.265625, & + 2659.140625, 2294.242188, 1961.500000, 1659.476563, 1387.546875, 1143.250000, & + 926.507813, 734.992188, 568.062500, 424.414063, 302.476563, 202.484375, & + 122.101563, 62.781250, 22.835938, 3.757813, 0.000000, 0.000000 / + + data b125/ 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, & + 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, & + 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, & + 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, & + 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, & + 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, & + 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, & + 0.000000, 0.000007, 0.000024, 0.000059, 0.000112, 0.000199, & + 0.000340, 0.000562, 0.000890, 0.001353, 0.001992, 0.002857, & + 0.003971, 0.005378, 0.007133, 0.009261, 0.011806, 0.014816, & + 0.018318, 0.022355, 0.026964, 0.032176, 0.038026, 0.044548, & + 0.051773, 0.059728, 0.068448, 0.077958, 0.088286, 0.099462, & + 0.111505, 0.124448, 0.138313, 0.153125, 0.168910, 0.185689, & + 0.203491, 0.222333, 0.242244, 0.263242, 0.285354, 0.308598, & + 0.332939, 0.358254, 0.384363, 0.411125, 0.438391, 0.466003, & + 0.493800, 0.521619, 0.549301, 0.576692, 0.603648, 0.630036, & + 0.655736, 0.680643, 0.704669, 0.727739, 0.749797, 0.770798, & + 0.790717, 0.809536, 0.827256, 0.843881, 0.859432, 0.873929, & + 0.887408, 0.899900, 0.911448, 0.922096, 0.931881, 0.940860, & + 0.949064, 0.956550, 0.963352, 0.969513, 0.975078, 0.980072, & + 0.984542, 0.988500, 0.991984, 0.995003, 0.997630, 1.000000 / + + + +#endif _FV_ETA_ diff --git a/scm/src/multi_run_scm.py b/scm/src/multi_run_scm.py index ee7ab7528..59df6921d 100755 --- a/scm/src/multi_run_scm.py +++ b/scm/src/multi_run_scm.py @@ -6,13 +6,17 @@ import os import logging import subprocess -from supported_suites import suites +from suite_info import suite, suite_list from supported_cases import cases import timeit, functools # Name of the python runscript executable to run, including path (relative to run dir) RUN_SCRIPT = './run_scm.py' +# which suites in suite_info to use when running through suites +SUITE_CHOICE = 'supported' +#SUITE_CHOIE = 'all' + # number of realizations to time if timer is used timer_iterations = 1 @@ -29,6 +33,15 @@ parser.add_argument('-t', '--timer', help='set to time each subprocess', action='store_true', default=False) parser.add_argument('-d', '--docker', help='include if scm is being run in a docker container to mount volumes', action='store_true', default=False) parser.add_argument('--runtime', help='set the runtime in the namelists', action='store', required=False) +parser.add_argument('--runtime_mult', help='multiply the existing runtime in the namelist by some factor', action='store', required=False) +parser.add_argument('-l', '--levels', help='number of vertical levels', required=False) +parser.add_argument('--npz_type', help='type of FV3 vertical grid to produce (see scm_vgrid.F90 for valid values)', required=False) +parser.add_argument('--run_dir', help='path for the run directory', required=False) +parser.add_argument('--vert_coord_file', help='filename with coefficients to produce a vertical grid', required=False) +parser.add_argument('--case_data_dir', help='directory containing the case input data netCDF file', required=False) +parser.add_argument('--n_itt_out', help='period of instantaneous output (number of timesteps)', required=False, type=int) +parser.add_argument('--n_itt_diag', help='period of diagnostic output (number of timesteps)', required=False, type=int) +parser.add_argument('-dt', '--timestep', help='timestep (s)', required=False, type=float) # Results are recorded in this global list (to avoid complications with getting return values from the partial functions used below) RESULTS = [] @@ -87,32 +100,67 @@ def main(): args = parser.parse_args() setup_logging(args.verbose) - + + passthrough_args = '' + if args.levels: + passthrough_args += ' -l ' + args.levels + if args.npz_type: + if args.npz_type == 'input': + if args.vert_coord_file: + passthrough_args += ' --npz_type ' + args.npz_type + ' --vert_coord_file ' + args.vert_coord_file + else: + message = 'The npz_type was set to \'input\' but no file was specified via --vert_coord_file. Please specify the name of the file via --vert_coord_file name_of_file' + logging.critical(message) + raise Exception(message) + else: + passthrough_args += ' --npz_type ' + args.npz_type + if args.case_data_dir: + passthrough_args += ' --case_data_dir ' + args.case_data_dir + if args.docker: + passthrough_args += ' -d' + if args.runtime: + passthrough_args += ' --runtime ' + args.runtime + if args.runtime_mult: + passthrough_args += ' --runtime_mult ' + args.runtime_mult + if args.run_dir: + passthrough_args += ' --run_dir ' + args.run_dir + if args.n_itt_out: + passthrough_args += ' --n_itt_out ' + args.n_itt_out + if args.n_itt_diag: + passthrough_args += ' --n_itt_diag ' + args.n_itt_diag + if args.timestep: + passthrough_args += ' -dt ' + args.timestep + # if the case argument is specified, run through all supported suites with the specified case - if args.case: - logging.info('Running all supported suites with case {0}'.format(args.case)) - for i, suite in enumerate(suites,1): - command = RUN_SCRIPT + ' -c ' + args.case + ' -s ' + suite - if args.docker: - command = command + ' -d' - # If modifying the runtime, pass the -runtime argument to the RUN_SCRIPT - if args.runtime: - command = command + ' --runtime ' + args.runtime - logging.info('Executing process {0} of {1} ({2})'.format(i, len(suites), command)) - elapsed_time = spawn_subprocess(command, args.timer) - if args.timer: - logging.info('elapsed time: {0} s for case: {1} suite: {2}'\ - .format(elapsed_time/timer_iterations, args.case, suite)) + if args.case: + n_suites = 0 + if SUITE_CHOICE == 'supported': + logging.info('Running all supported suites in suite_info list with case {0}'.format(args.case)) + for s in suite_list: + if s._supported: + n_suites += 1 + else: + logging.info('Running all suites in suite_info list with case {0}'.format(args.case)) + n_suites = len(suite_list) + + if passthrough_args != '': + logging.info('Using passthrough args: {}'.format(passthrough_args)) + for i, s in enumerate(suite_list,1): + if SUITE_CHOICE == 'all' or (SUITE_CHOICE == 'supported' and s._supported): + command = RUN_SCRIPT + ' -c ' + args.case + ' -s ' + s._name + passthrough_args + logging.info('Executing process {0} of {1} ({2})'.format(i, n_suites, command)) + elapsed_time = spawn_subprocess(command, args.timer) + if args.timer: + logging.info('elapsed time: {0} s for case: {1} suite: {2}'\ + .format(elapsed_time/timer_iterations, args.case, s._name)) # if the suite argument is specified, run through all supported cases with the specified suite if args.suite: logging.info('Running all supported cases with suite {0}'.format(args.suite)) + if passthrough_args != '': + logging.info('Using passthrough args: {}'.format(passthrough_args)) for i, case in enumerate(cases,1): - command = RUN_SCRIPT + ' -c ' + case + ' -s ' + args.suite - if args.docker: - command = command + ' -d' - if args.runtime: - command = command + ' --runtime ' + args.runtime + command = RUN_SCRIPT + ' -c ' + case + ' -s ' + args.suite + passthrough_args logging.info('Executing process {0} of {1} ({2})'.format(i, len(cases), command)) elapsed_time = spawn_subprocess(command, args.timer) if args.timer: @@ -155,12 +203,10 @@ def main(): if scm_runs.cases and not scm_runs.suites and not scm_runs.namelists: logging.info( 'Only cases were specified in {0}, so running all cases with the default suite'.format(args.file)) + if passthrough_args != '': + logging.info('Using passthrough args: {}'.format(passthrough_args)) for i, case in enumerate(scm_runs.cases,1): - command = RUN_SCRIPT + ' -c ' + case - if args.docker: - command = command + ' -d' - if args.runtime: - command = command + ' --runtime ' + args.runtime + command = RUN_SCRIPT + ' -c ' + case + passthrough_args logging.info('Executing process {0} of {1} ({2})'.format(i, len(scm_runs.cases), command)) elapsed_time = spawn_subprocess(command, args.timer) if args.timer: @@ -172,13 +218,11 @@ def main(): if len(scm_runs.suites) == 1: logging.info('Cases and namelists were specified with 1 suite in {0}, so running all cases with '\ 'the suite {1} for all specified namelists'.format(args.file, scm_runs.suites[0])) + if passthrough_args != '': + logging.info('Using passthrough args: {}'.format(passthrough_args)) for i, case in enumerate(scm_runs.cases): for j, namelist in enumerate(scm_runs.namelists,1): - command = RUN_SCRIPT + ' -c ' + case + ' -s ' + scm_runs.suites[0] + ' -n ' + namelist - if args.docker: - command = command + ' -d' - if args.runtime: - command = command + ' --runtime ' + args.runtime + command = RUN_SCRIPT + ' -c ' + case + ' -s ' + scm_runs.suites[0] + ' -n ' + namelist + passthrough_args logging.info('Executing process {0} of {1} ({2})'.format( len(scm_runs.namelists)*i+j, len(scm_runs.cases)*len(scm_runs.namelists), command)) elapsed_time = spawn_subprocess(command, args.timer) @@ -188,13 +232,11 @@ def main(): elif len(scm_runs.suites) == len(scm_runs.namelists): logging.info('Cases, suites, and namelists were specified in {0}, so running all cases with all '\ 'suites, matched with namelists by order'.format(args.file)) + if passthrough_args != '': + logging.info('Using passthrough args: {}'.format(passthrough_args)) for i, case in enumerate(scm_runs.cases): for j, suite in enumerate(scm_runs.suites,1): - command = RUN_SCRIPT + ' -c ' + case + ' -s ' + suite + ' -n ' + scm_runs.namelists[j-1] - if args.docker: - command = command + ' -d' - if args.runtime: - command = command + ' --runtime ' + args.runtime + command = RUN_SCRIPT + ' -c ' + case + ' -s ' + suite + ' -n ' + scm_runs.namelists[j-1] + passthrough_args logging.info('Executing process {0} of {1} ({2})'.format( len(scm_runs.suites)*i+j, len(scm_runs.cases)*len(scm_runs.suites), command)) elapsed_time = spawn_subprocess(command, args.timer) @@ -210,13 +252,11 @@ def main(): else: logging.info('Cases and suites specified in {0}, so running all cases with all suites using default '\ 'namelists for each suite'.format(args.file)) + if passthrough_args != '': + logging.info('Using passthrough args: {}'.format(passthrough_args)) for i, case in enumerate(scm_runs.cases): for j, suite in enumerate(scm_runs.suites,1): - command = RUN_SCRIPT + ' -c ' + case + ' -s ' + suite - if args.docker: - command = command + ' -d' - if args.runtime: - command = command + ' --runtime ' + args.runtime + command = RUN_SCRIPT + ' -c ' + case + ' -s ' + suite + passthrough_args logging.info('Executing process {0} of {1} ({2})'.format( len(scm_runs.suites)*i+j, len(scm_runs.cases)*len(scm_runs.suites), command)) elapsed_time = spawn_subprocess(command, args.timer) @@ -227,13 +267,11 @@ def main(): if scm_runs.cases and not scm_runs.suites and scm_runs.namelists: logging.info('Cases and namelists were specified in {0}, so running all cases with the default suite '\ 'using the list of namelists'.format(args.file)) + if passthrough_args != '': + logging.info('Using passthrough args: {}'.format(passthrough_args)) for i, case in enumerate(scm_runs.cases): for j, namelist in enumerate(scm_runs.namelists,1): - command = RUN_SCRIPT + ' -c ' + case + ' -n ' + namelist - if args.docker: - command = command + ' -d' - if args.runtime: - command = command + ' --runtime ' + args.runtime + command = RUN_SCRIPT + ' -c ' + case + ' -n ' + namelist + passthrough_args logging.info('Executing process {0} of {1} ({2})'.format( len(scm_runs.namelists)*i+j, len(scm_runs.cases)*len(scm_runs.namelists), command)) elapsed_time = spawn_subprocess(command, args.timer) @@ -243,21 +281,30 @@ def main(): # If running the script with no arguments, run all supported (case,suite) permutations. if not args.case and not args.suite and not args.file: - logging.info('Since no arguments were specified, running through all permuatations of supported cases and '\ - 'suites') + n_suites = 0 + if SUITE_CHOICE == 'supported': + logging.info('Since no arguments were specified, running through all permuatations of supported cases and '\ + 'supported suites in suite_info.') + if passthrough_args != '': + logging.info('Using passthrough args: {}'.format(passthrough_args)) + for s in suite_list: + if s._supported: + n_suites += 1 + else: + logging.info('Since no arguments were specified, running through all permuatations of supported cases and '\ + 'all suites in suite_info') + n_suites = len(suite_list) + for i, case in enumerate(cases): - for j, suite in enumerate(suites,1): - command = RUN_SCRIPT + ' -c ' + case + ' -s ' + suite - if args.docker: - command = command + ' -d' - if args.runtime: - command = command + ' --runtime ' + args.runtime - logging.info('Executing process {0} of {1} ({2})'.format( - len(suites)*i+j, len(cases)*len(suites), command)) - elapsed_time = spawn_subprocess(command, args.timer) - if args.timer: - logging.info('elapsed time: {0} s for case: {1} suite: {2}'\ - .format(elapsed_time/timer_iterations, case, suite)) + for j, s in enumerate(suite_list,1): + if SUITE_CHOICE == 'all' or (SUITE_CHOICE == 'supported' and s._supported): + command = RUN_SCRIPT + ' -c ' + case + ' -s ' + s._name + passthrough_args + logging.info('Executing process {0} of {1} ({2})'.format( + n_suites*i+j, len(cases)*n_suites, command)) + elapsed_time = spawn_subprocess(command, args.timer) + if args.timer: + logging.info('elapsed time: {0} s for case: {1} suite: {2}'\ + .format(elapsed_time/timer_iterations, case, s._name)) # Generate report at the end of the log file when verbose flag is set if args.verbose > 0: diff --git a/scm/src/run_scm.py b/scm/src/run_scm.py index b3ed25354..6e67ca056 100755 --- a/scm/src/run_scm.py +++ b/scm/src/run_scm.py @@ -9,44 +9,73 @@ import subprocess import sys import time -from default_namelists import default_physics_namelists -from default_tracers import default_tracers +from suite_info import suite, suite_list from netCDF4 import Dataset ############################################################################### # Global settings # ############################################################################### -# Name of the Fortran executable to run, including path (relative to run dir) -EXECUTABLE = './scm' +SCM_ROOT = '' +SCM_RUN = '' +SCM_BIN = '' +EXECUTABLE = '' -# Path to the directory containing experiment namelists (relative to run dir) -CASE_NAMELIST_DIR = '../etc/case_config' +# Name of the Fortran executable to run, including path +EXECUTABLE_NAME = 'scm' -# Path to the directory containing tracer configurations (relative to run dir) -TRACERS_DIR = '../etc/tracer_config' +# Path to default run directory (relative to scm_root) +DEFAULT_RUN_DIR = 'scm/run' + +# Path to default bin directory (relative to scm_root) +DEFAULT_BIN_DIR = 'scm/bin' + +# Copy executable to run directory if true (otherwise it will be linked) +COPY_EXECUTABLE = False + +# Default output periods +DEFAULT_OUTPUT_PERIOD = 1 +DEFAULT_DIAG_PERIOD = 6 + +# Path to the directory containing experiment namelists (relative to scm_root) +CASE_NAMELIST_DIR = 'scm/etc/case_config' + +# Path to the directory containing case input data files (relative to scm_root) +DEFAULT_CASE_DATA_DIR = 'scm/data/processed_case_input' + +# Path to the directory containing vertical coordinate files (relative to scm_root) +VERT_COORD_DATA_DIR = 'scm/data/vert_coord_data' + +# Path to reference profiles +REFERENCE_PROFILE_DIR = DEFAULT_CASE_DATA_DIR + +# Reference profile file list +REFERENCE_PROFILE_FILE_LIST = ['McCProfiles.dat','mid_lat_summer_std.nc'] + +# Path to the directory containing tracer configurations (relative to scm_root) +TRACERS_DIR = 'scm/etc/tracer_config' TRACERS_LINK = 'tracers.txt' # Standard name of experiment namelist in run directory, must match value in scm_input.f90 STANDARD_EXPERIMENT_NAMELIST = 'input_experiment.nml' -# Path to the directory containing physics namelists (relative to run dir) -PHYSICS_NAMELIST_DIR = '../../ccpp/physics_namelists' +# Path to the directory containing physics namelists (relative to scm_root) +PHYSICS_NAMELIST_DIR = 'ccpp/physics_namelists' -# Path to the directory containing physics namelists (relative to run dir) -PHYSICS_SUITE_DIR = '../../ccpp/suites' +# Path to the directory containing physics namelists (relative to scm_root) +PHYSICS_SUITE_DIR = 'ccpp/suites' # Default suite to use if none is specified DEFAULT_SUITE = 'SCM_GFS_v15p2' -# Path to physics data files -PHYSICS_DATA_DIR = '../data/physics_input_data' +# Path to physics data files (relative to scm_root) +PHYSICS_DATA_DIR = 'scm/data/physics_input_data' -# Path to analysis script -SCM_ANALYSIS_SCRIPT_DIR = '../etc/scripts' +# Path to analysis script (relative to scm_root) +SCM_ANALYSIS_SCRIPT_DIR = 'scm/etc/scripts' -# Path to analysis script configuration files -SCM_ANALYSIS_CONFIG_DIR = '../etc/scripts/plot_configs' +# Path to analysis script configuration files (relative to scm_root) +SCM_ANALYSIS_CONFIG_DIR = 'scm/etc/scripts/plot_configs' # Default settings and filenames of input data for ozone physics; # these must match the default settings in GFS_typedefs.F90. @@ -76,7 +105,16 @@ parser.add_argument('-n', '--namelist', help='physics namelist to use') parser.add_argument('-t', '--tracers', help='tracer configuration to use') parser.add_argument('--runtime', help='set the runtime in the namelists', action='store', type=int, required=False) +parser.add_argument('--runtime_mult', help='multiply the existing runtime in the namelist by some factor', action='store', type=float, required=False) parser.add_argument('-d', '--docker', help='include if scm is being run in a docker container to mount volumes', action='store_true', default=False) +parser.add_argument('-l', '--levels', help='number of vertical levels', required=False, type=int) +parser.add_argument('--npz_type', help='type of FV3 vertical grid to produce (see scm_vgrid.F90 for valid values)', required=False) +parser.add_argument('--vert_coord_file', help='filename with coefficients to produce a vertical grid', required=False) +parser.add_argument('--run_dir', help='path for the run directory', required=False) +parser.add_argument('--case_data_dir', help='directory containing the case input data netCDF file', required=False) +parser.add_argument('--n_itt_out', help='period of instantaneous output (number of timesteps)', required=False, type=int) +parser.add_argument('--n_itt_diag', help='period of diagnostic output (number of timesteps)', required=False, type=int) +parser.add_argument('-dt', '--timestep', help='timestep (s)', required=False, type=float) ############################################################################### # Functions and subroutines # @@ -116,7 +154,17 @@ def parse_arguments(): docker = args.docker tracers = args.tracers runtime = args.runtime - return (case, gdb, suite, namelist, docker, tracers, runtime) + runtime_mult = args.runtime_mult + levels = args.levels + npz_type = args.npz_type + vert_coord_file = args.vert_coord_file + case_data_dir = args.case_data_dir + n_itt_out = args.n_itt_out + n_itt_diag = args.n_itt_diag + run_dir = args.run_dir + timestep = args.timestep + + return (case, gdb, suite, namelist, docker, tracers, runtime, runtime_mult, levels, npz_type, vert_coord_file, case_data_dir, n_itt_out, n_itt_diag, run_dir, timestep) def find_gdb(): """Detect gdb, abort if not found""" @@ -133,53 +181,34 @@ def find_gdb(): class Experiment(object): - def __init__(self, case, suite, physics_namelist, tracers, runtime): + def __init__(self, case, suite, runtime, runtime_mult, levels, npz_type, vert_coord_file, case_data_dir, n_itt_out, n_itt_diag): """Initialize experiment. This routine does most of the work, including setting and checking the experiment configuration (namelist).""" self._case = case - self._suite = suite - self._name = case + '_' + suite - - #if a physics namelist is specified (entire filename), it will be used; - #otherwise, a default physics namelist for the given suite is used from default_namelists.py - if physics_namelist: - self._physics_namelist = physics_namelist - else: - if self._suite in default_physics_namelists: - self._physics_namelist = default_physics_namelists.get(self._suite) - else: - message = 'A default physics namelist for suite {0} is not found in default_namelists.py'.format(self._suite) - logging.critical(message) - raise Exception(message) + self._suite_obj = suite + self._suite = suite._name + self._name = case + '_' + suite._name + self._physics_namelist = suite.namelist + #check to see that the physics namelists exists in the right dir - if not os.path.isfile(os.path.join(PHYSICS_NAMELIST_DIR, self._physics_namelist)): - message = 'The physics namelist {0} was not found'.format(os.path.join(PHYSICS_NAMELIST_DIR, self._physics_namelist)) + if not os.path.isfile(os.path.join(SCM_ROOT, PHYSICS_NAMELIST_DIR, self._physics_namelist)): + message = 'The physics namelist {0} was not found'.format(os.path.join(SCM_ROOT, PHYSICS_NAMELIST_DIR, self._physics_namelist)) logging.critical(message) raise Exception(message) - #if a tracer configuration is specified (entire filename), it will be used; - #otherwise, a default tracer configuration for the given suite is used from default_tracers.py - if tracers: - self._tracers = tracers - else: - if self._suite in default_tracers: - self._tracers = default_tracers.get(self._suite) - else: - message = 'A default tracer configuration for suite {0} is not found in default_tracers.py'.format(self._suite) - logging.critical(message) - raise Exception(message) + self._tracers = suite.tracers - #check to see that the physics namelists exists in the right dir - if not os.path.isfile(os.path.join(TRACERS_DIR, self._tracers)): + #check to see that the tracers exists in the right dir + if not os.path.isfile(os.path.join(SCM_ROOT, TRACERS_DIR, self._tracers)): message = 'The tracer configuration {0} was not found'.format(os.path.join(TRACERS_DIR, self._tracers)) logging.critical(message) raise Exception(message) #check to see if the case namelists exists in the right dir - self._namelist = os.path.join(CASE_NAMELIST_DIR, self._case + '.nml') + self._namelist = os.path.join(SCM_ROOT, CASE_NAMELIST_DIR, self._case + '.nml') if not os.path.isfile(self._namelist): message = 'Experiment {0} with namelist {1} not found'.format(self._name, self._namelist) logging.critical(message) @@ -193,7 +222,72 @@ def __init__(self, case, suite, physics_namelist, tracers, runtime): self._runtime = None message = 'Namelist runtime adjustment {0} IS NOT applied'.format(self._runtime) logging.info(message) - + + if runtime_mult: + self._runtime_mult = runtime_mult + message = 'Existing case namelist runtime multiplied by {0}'.format(self._runtime_mult) + logging.info(message) + else: + self._runtime_mult = None + + if levels: + self._levels = levels + message = 'The number of vertical levels is set to {0}'.format(self._levels) + logging.info(message) + else: + self._levels = None + message = 'The number of vertical levels contained in the case configuration file is used if present, otherwise the default value in scm_input.F90 is used.' + logging.info(message) + + if npz_type: + self._npz_type = npz_type + message = 'The npz_type of vertical levels is set to {0}'.format(self._npz_type) + logging.info(message) + if npz_type == 'input': + if vert_coord_file: + self._vert_coord_file = vert_coord_file + #check to see that the vert coords file exists in the right dir + if not os.path.isfile(os.path.join(SCM_ROOT, VERT_COORD_DATA_DIR, self._vert_coord_file)): + message = 'The vertical coordinate file {0} was not found'.format(os.path.join(SCM_ROOT, VERT_COORD_DATA_DIR, self._vert_coord_file)) + logging.critical(message) + raise Exception(message) + else: + message = 'The npz_type was set to \'input\' but no file was specified via --vert_coord_file. Please specify the name of the file via --vert_coord_file name_of_file' + logging.critical(message) + raise Exception(message) + else: + self._vert_coord_file = None + else: + self._npz_type = None + self._vert_coord_file = None + message = 'The npz_type contained in the case configuration file is used if present, otherwise the default value in scm_input.F90 is used.' + logging.info(message) + + if case_data_dir: + self._case_data_dir = case_data_dir + else: + self._case_data_dir = DEFAULT_CASE_DATA_DIR + #check to see that the provided case data directory exists + if not os.path.isdir(os.path.join(SCM_ROOT, self._case_data_dir)): + message = 'The case data directory {0} was not found'.format(self._case_data_dir) + logging.critical(message) + raise Exception(message) + + if n_itt_out: + self._n_itt_out = n_itt_out + else: + self._n_itt_out = DEFAULT_OUTPUT_PERIOD + + if n_itt_diag: + self._n_itt_diag = n_itt_diag + else: + self._n_itt_diag = DEFAULT_DIAG_PERIOD + + if suite.timestep is not None: + self._timestep = suite.timestep + else: + self._timestep = None + @property def name(self): """Get the name of the experiment.""" @@ -243,7 +337,77 @@ def physics_namelist(self): def physics_namelist(self, value): """Set the physics namelist of the experiment.""" self._physics_namelist = value - + + @property + def tracers(self): + """Get the tracer file for the experiment.""" + return self._tracers + + @tracers.setter + def tracers(self, value): + """Set the tracer file for the experiment.""" + self._tracers = value + + @property + def levels(self): + """Get the number of vertical levels for the experiment.""" + return self._levels + + @levels.setter + def levels(self, value): + """Set the number of vertical levels for the experiment.""" + self._levels = value + + @property + def npz_type(self): + """Get the vertical level type for the experiment.""" + return self._npz_type + + @npz_type.setter + def npz_type(self, value): + """Set the vertical level type for the experiment.""" + self._npz_type = value + + @property + def vert_coord_file(self): + """Get the file containing vertical levels for the experiment.""" + return self._vert_coord_file + + @vert_coord_file.setter + def vert_coord_file(self, value): + """Set the file containing vertical levels for the experiment.""" + self._vert_coord_file = value + + @property + def case_data_dir(self): + """Get the case data directory for the experiment.""" + return self._case_data_dir + + @case_data_dir.setter + def case_data_dir(self, value): + """Set the case data directory for the experiment.""" + self._case_data_dir = value + + @property + def n_itt_out(self): + """Get the output period (in timesteps) for the experiment.""" + return self._n_itt_out + + @n_itt_out.setter + def n_itt_out(self, value): + """Set the output period (in timesteps) for the experiment.""" + self._n_itt_out = value + + @property + def n_itt_diag(self): + """Get the diagnostic period (in timesteps) for the experiment.""" + return self._n_itt_diag + + @n_itt_diag.setter + def n_itt_diag(self, value): + """Set the diagnostic period (in timesteps) for the experiment.""" + self._n_itt_diag = value + def setup_rundir(self): """Set up run directory for this experiment.""" @@ -254,7 +418,31 @@ def setup_rundir(self): case_nml = f90nml.read(self._namelist) # If running the regression test, reduce the runtime if self._runtime: - case_nml['case_config']['runtime'] = self._runtime + case_nml['case_config']['runtime'] = self._runtime + if self._runtime_mult: + if self._runtime_mult < 0.0: + message = 'The --runtime_mult argument must be greater than 0 ({0} was entered)'.format(self._runtime_mult) + logging.critical(message) + raise Exception(message) + try: + old_runtime = case_nml['case_config']['runtime'] + case_nml['case_config']['runtime'] = old_runtime*self._runtime_mult + except KeyError: + logging.info('The runtime multiplier argument was set, but the runtime is not set in {0} '.format(self._namelist)) + # If the number of levels is specified, set the namelist value + if self._levels: + case_nml['case_config']['n_levels'] = self._levels + # If the npz_type is specified, set the namelist value + if self._npz_type: + case_nml['case_config']['npz_type'] = self._npz_type + if self._vert_coord_file: + case_nml['case_config']['vert_coord_file'] = self._vert_coord_file + if self._n_itt_out: + case_nml['case_config']['n_itt_out'] = self._n_itt_out + if self._n_itt_diag: + case_nml['case_config']['n_itt_diag'] = self._n_itt_diag + if self._timestep: + case_nml['case_config']['dt'] = self._timestep # look for the output_dir variable in the case configuration namelist and use it if it does; # if it doesn't exist, create a default output directory name (from the case and suite names) and create a namelist patch try: @@ -262,7 +450,7 @@ def setup_rundir(self): custom_output_dir = True except KeyError: # If using the default namelist, no need to include it in the output directory name; if not, need to use write custom namelist in output dir name in case running multiple experiments with the same case and suite but different namelists - if self._physics_namelist == default_physics_namelists.get(self._suite): + if self._physics_namelist == self._suite_obj._default_namelist: output_dir = 'output_' + self._case + '_' + self._suite else: output_dir = 'output_' + self._case + '_' + self._suite + '_' + os.path.splitext(self._physics_namelist)[0] @@ -275,7 +463,7 @@ def setup_rundir(self): if input_type == 1: #open the case data file and read the surfaceForcing global attribute case_data_dir = case_nml['case_config']['case_data_dir'] - nc_fid = Dataset(case_data_dir + '/' + self._case + '_SCM_driver.nc' , 'r') + nc_fid = Dataset(os.path.join(SCM_ROOT, case_data_dir) + '/' + self._case + '_SCM_driver.nc' , 'r') surfaceForcing = nc_fid.getncattr('surfaceForcing') nc_fid.close() if (surfaceForcing.lower() == 'flux' or surfaceForcing.lower() == 'surfaceflux'): @@ -301,73 +489,113 @@ def setup_rundir(self): # Create STANDARD_EXPERIMENT_NAMELIST in the run directory with the case configuration and physics configuration namelists logging.info('Creating experiment configuration namelist {0} in the run directory from {1} using {2} and {3} '.format(STANDARD_EXPERIMENT_NAMELIST,self._namelist,self._suite,self._physics_namelist)) - with open(STANDARD_EXPERIMENT_NAMELIST, "w+") as nml_file: + with open(os.path.join(SCM_RUN, STANDARD_EXPERIMENT_NAMELIST), "w+") as nml_file: case_nml.write(nml_file) - with open(STANDARD_EXPERIMENT_NAMELIST, "a") as nml_file: + with open(os.path.join(SCM_RUN, STANDARD_EXPERIMENT_NAMELIST), "a") as nml_file: physics_config_nml.write(nml_file) # if using the default output dir name created in this script, patch the experiment namelist with the new output_dir variable if(not custom_output_dir): # GJF TODO: this implementation is clunky; newer versions of f90nml can handle this better, but this works with v0.19 so no need to require newer version - f90nml.patch(STANDARD_EXPERIMENT_NAMELIST, output_dir_patch_nml, 'temp.nml') - cmd = "mv {0} {1}".format('temp.nml', STANDARD_EXPERIMENT_NAMELIST) + f90nml.patch(os.path.join(SCM_RUN, STANDARD_EXPERIMENT_NAMELIST), output_dir_patch_nml, 'temp.nml') + cmd = "mv {0} {1}".format('temp.nml', os.path.join(SCM_RUN, STANDARD_EXPERIMENT_NAMELIST)) execute(cmd) # Link physics namelist to run directory with its original name logging.info('Linking physics namelist {0} to run directory'.format(self._physics_namelist)) - if os.path.isfile(self._physics_namelist): - os.remove(self._physics_namelist) - if not os.path.isfile(os.path.join(PHYSICS_NAMELIST_DIR, self._physics_namelist)): - message = 'Physics namelist {0} not found in directory {1}'.format(self._physics_namelist, PHYSICS_NAMELIST_DIR) + if os.path.isfile(os.path.join(SCM_RUN, self._physics_namelist)): + os.remove(os.path.join(SCM_RUN,self._physics_namelist)) + if not os.path.isfile(os.path.join(SCM_ROOT, PHYSICS_NAMELIST_DIR, self._physics_namelist)): + message = 'Physics namelist {0} not found in directory {1}'.format(os.path.join(SCM_ROOT, self._physics_namelist), PHYSICS_NAMELIST_DIR) logging.critical(message) raise Exception(message) - cmd = "ln -sf {0} {1}".format(os.path.join(PHYSICS_NAMELIST_DIR, self._physics_namelist), self._physics_namelist) + cmd = "ln -sf {0} {1}".format(os.path.join(SCM_ROOT, PHYSICS_NAMELIST_DIR, self._physics_namelist), os.path.join(SCM_RUN, self._physics_namelist)) if surface_flux_spec: #check for optional prescribed-surface-specific physics namelist and link it instead (if present) - opt_ps_nml_filename = os.path.splitext(os.path.join(PHYSICS_NAMELIST_DIR,self._physics_namelist))[0] + '_ps.nml' + opt_ps_nml_filename = os.path.splitext(os.path.join(SCM_ROOT, PHYSICS_NAMELIST_DIR,self._physics_namelist))[0] + '_ps.nml' if os.path.isfile(opt_ps_nml_filename): logging.info('Found optional prescribed surface physics namelist {0}; linking it to run directory'.format(opt_ps_nml_filename)) - cmd = "ln -sf {0} {1}".format(opt_ps_nml_filename, self._physics_namelist) + cmd = "ln -sf {0} {1}".format(opt_ps_nml_filename, os.path.join(SCM_RUN, self._physics_namelist)) execute(cmd) - # Link tracer configuration to run directory with its original name + # Link tracer configuration to run directory with standard name logging.info('Linking tracer configuration {0} to run directory'.format(self._tracers)) - if os.path.isfile(self._tracers): - os.remove(self._tracers) - if not os.path.isfile(os.path.join(TRACERS_DIR, self._tracers)): - message = 'Tracer configuration {0} not found in directory {1}'.format(self._tracers, TRACERS_DIR) + if os.path.isfile(os.path.join(SCM_RUN, self._tracers)): + os.remove(os.path.join(SCM_RUN, self._tracers)) + if not os.path.isfile(os.path.join(SCM_ROOT, TRACERS_DIR, self._tracers)): + message = 'Tracer configuration {0} not found in directory {1}'.format(self._tracers, os.path.join(SCM_ROOT, TRACERS_DIR)) logging.critical(message) raise Exception(message) - cmd = "ln -sf {0} {1}".format(os.path.join(TRACERS_DIR, self._tracers), TRACERS_LINK) + cmd = "ln -sf {0} {1}".format(os.path.join(SCM_ROOT, TRACERS_DIR, self._tracers), os.path.join(SCM_RUN, TRACERS_LINK)) execute(cmd) + # Link case data file to run directory with original name + try: + input_type = case_nml['case_config']['input_type'] + if input_type == 1: + case_data_netcdf_file = self._case + '_SCM_driver.nc' + else: + case_data_netcdf_file = self._case + '.nc' + except KeyError: + case_data_netcdf_file = self._case + '.nc' + logging.info('Linking case input data file {0} to run directory'.format(case_data_netcdf_file)) + if os.path.isfile(os.path.join(SCM_RUN, case_data_netcdf_file)): + os.remove(os.path.join(SCM_RUN, case_data_netcdf_file)) + if not os.path.isfile(os.path.join(SCM_ROOT, self._case_data_dir, case_data_netcdf_file)): + message = 'Case input data file {0} not found in directory {1}'.format(case_data_netcdf_file, os.path.join(SCM_ROOT, self._case_data_dir)) + logging.critical(message) + raise Exception(message) + cmd = "ln -sf {0} {1}".format(os.path.join(SCM_ROOT, self._case_data_dir, case_data_netcdf_file), os.path.join(SCM_RUN, case_data_netcdf_file)) + execute(cmd) + + # Link vertical coordinate file to run directory with its original name + if (self._npz_type == 'input'): + logging.info('Linking vertical coordinate file {0} to run directory'.format(self._vert_coord_file)) + if os.path.isfile(os.path.join(SCM_RUN, self._vert_coord_file)): + os.remove(os.path.join(SCM_RUN, self._vert_coord_file)) + if not os.path.isfile(os.path.join(SCM_ROOT, VERT_COORD_DATA_DIR, self._vert_coord_file)): + message = 'Vertical coordinate file {0} not found in directory {1}'.format(self._vert_coord_file, os.path.join(SCM_ROOT, VERT_COORD_DATA_DIR)) + logging.critical(message) + raise Exception(message) + cmd = "ln -sf {0} {1}".format(os.path.join(SCM_ROOT, VERT_COORD_DATA_DIR, self._vert_coord_file), os.path.join(SCM_RUN, self._vert_coord_file)) + execute(cmd) + # Link physics SDF to run directory physics_suite = 'suite_' + self._suite + '.xml' logging.info('Linking physics suite {0} to run directory'.format(physics_suite)) - if os.path.isfile(physics_suite): - os.remove(physics_suite) - if not os.path.isfile(os.path.join(PHYSICS_SUITE_DIR, physics_suite)): - message = 'Physics suite {0} not found in directory {1}'.format(physics_suite, PHYSICS_SUITE_DIR) + if os.path.isfile(os.path.join(SCM_RUN, physics_suite)): + os.remove(os.path.join(SCM_RUN, physics_suite)) + if not os.path.isfile(os.path.join(SCM_ROOT, PHYSICS_SUITE_DIR, physics_suite)): + message = 'Physics suite {0} not found in directory {1}'.format(physics_suite, os.path.join(SCM_ROOT, PHYSICS_SUITE_DIR)) logging.critical(message) raise Exception(message) - cmd = "ln -sf {0} {1}".format(os.path.join(PHYSICS_SUITE_DIR, physics_suite), physics_suite) + cmd = "ln -sf {0} {1}".format(os.path.join(SCM_ROOT, PHYSICS_SUITE_DIR, physics_suite), os.path.join(SCM_RUN, physics_suite)) execute(cmd) # Link physics data needed for schemes to run directory - logging.info('Linking physics input data from {0} into run directory'.format(PHYSICS_DATA_DIR)) - for entry in os.listdir(PHYSICS_DATA_DIR): - if os.path.isfile(os.path.join(PHYSICS_DATA_DIR, entry)): + logging.info('Linking physics input data from {0} into run directory'.format(os.path.join(SCM_ROOT, PHYSICS_DATA_DIR))) + for entry in os.listdir(os.path.join(SCM_ROOT, PHYSICS_DATA_DIR)): + if os.path.isfile(os.path.join(SCM_ROOT, PHYSICS_DATA_DIR, entry)): if not os.path.exists(entry): logging.debug('Linking file {0}'.format(entry)) - cmd = 'ln -sf {0} {1}'.format(os.path.join(PHYSICS_DATA_DIR, entry), entry) + cmd = 'ln -sf {0} {1}'.format(os.path.join(SCM_ROOT, PHYSICS_DATA_DIR, entry), os.path.join(SCM_RUN, entry)) + execute(cmd) + + # Link reference profile data to run directory + logging.info('Linking reference profile data from {0} into run directory'.format(os.path.join(SCM_ROOT, REFERENCE_PROFILE_DIR))) + for entry in REFERENCE_PROFILE_FILE_LIST: + if os.path.isfile(os.path.join(SCM_ROOT, REFERENCE_PROFILE_DIR, entry)): + if not os.path.exists(entry): + logging.debug('Linking file {0}'.format(entry)) + cmd = 'ln -sf {0} {1}'.format(os.path.join(SCM_ROOT, REFERENCE_PROFILE_DIR, entry), os.path.join(SCM_RUN, entry)) execute(cmd) # Parse physics namelist and extract # - oz_phys # - oz_phys_2015 - logging.info('Parsing physics namelist {0}'.format(self._physics_namelist)) - nml = f90nml.read(self._physics_namelist) + logging.info('Parsing physics namelist {0}'.format(os.path.join(SCM_RUN, self._physics_namelist))) + nml = f90nml.read(os.path.join(SCM_RUN, self._physics_namelist)) # oz_phys try: oz_phys = nml['gfs_physics_nml']['oz_phys'] @@ -385,15 +613,15 @@ def setup_rundir(self): raise Exception(message) # Link input data for oz_phys or oz_phys_2015 - if os.path.exists(OZ_PHYS_LINK): - os.remove(OZ_PHYS_LINK) + if os.path.exists(os.path.join(SCM_RUN, OZ_PHYS_LINK)): + os.remove(os.path.join(SCM_RUN, OZ_PHYS_LINK)) if oz_phys: logging.info('Linking input data for oz_phys') - cmd = 'ln -sf {0} {1}'.format(OZ_PHYS_TARGET, OZ_PHYS_LINK) + cmd = 'ln -sf {0} {1}'.format(os.path.join(SCM_RUN, OZ_PHYS_TARGET), os.path.join(SCM_RUN, OZ_PHYS_LINK)) execute(cmd) elif oz_phys_2015: logging.info('Linking input data for oz_phys_2015') - cmd = 'ln -sf {0} {1}'.format(OZ_PHYS_2015_TARGET, OZ_PHYS_LINK) + cmd = 'ln -sf {0} {1}'.format(os.path.join(SCM_RUN, OZ_PHYS_2015_TARGET), os.path.join(SCM_RUN, OZ_PHYS_LINK)) execute(cmd) # Look for do_ugwp_v1 @@ -404,50 +632,60 @@ def setup_rundir(self): # Link the tau file if do_ugwp_v1 if do_ugwp_v1: - if os.path.exists(TAU_LINK): - os.remove(TAU_LINK) + if os.path.exists(os.path.join(SCM_RUN, TAU_LINK)): + os.remove(os.path.join(SCM_RUN, TAU_LINK)) logging.info('Linking input data for UGWP_v1') - cmd = 'ln -sf {0} {1}'.format(TAU_TARGET, TAU_LINK) + cmd = 'ln -sf {0} {1}'.format(os.path.join(SCM_RUN, TAU_TARGET), os.path.join(SCM_RUN, TAU_LINK)) execute(cmd) # Link scripts needed to run SCM analysis - logging.info('Linking analysis scripts from {0} into run directory'.format(SCM_ANALYSIS_SCRIPT_DIR)) + logging.info('Linking analysis scripts from {0} into run directory'.format(os.path.join(SCM_ROOT, SCM_ANALYSIS_SCRIPT_DIR))) analysis_script_files = ['scm_analysis.py','configspec.ini'] for entry in analysis_script_files: - if os.path.isfile(os.path.join(SCM_ANALYSIS_SCRIPT_DIR, entry)): + if os.path.isfile(os.path.join(SCM_ROOT, SCM_ANALYSIS_SCRIPT_DIR, entry)): if not os.path.exists(entry): logging.debug('Linking file {0}'.format(entry)) - cmd = 'ln -sf {0} {1}'.format(os.path.join(SCM_ANALYSIS_SCRIPT_DIR, entry), entry) + cmd = 'ln -sf {0} {1}'.format(os.path.join(SCM_ROOT, SCM_ANALYSIS_SCRIPT_DIR, entry), os.path.join(SCM_RUN, entry)) execute(cmd) # Link plot configuration files needed to run SCM analysis - logging.info('Linking plot configuration files from {0} into run directory'.format(SCM_ANALYSIS_CONFIG_DIR)) - for entry in os.listdir(SCM_ANALYSIS_CONFIG_DIR): - if os.path.isfile(os.path.join(SCM_ANALYSIS_CONFIG_DIR, entry)): + logging.info('Linking plot configuration files from {0} into run directory'.format(os.path.join(SCM_ROOT, SCM_ANALYSIS_CONFIG_DIR))) + for entry in os.listdir(os.path.join(SCM_ROOT, SCM_ANALYSIS_CONFIG_DIR)): + if os.path.isfile(os.path.join(SCM_ROOT, SCM_ANALYSIS_CONFIG_DIR, entry)): if not os.path.exists(entry): logging.debug('Linking file {0}'.format(entry)) - cmd = 'ln -sf {0} {1}'.format(os.path.join(SCM_ANALYSIS_CONFIG_DIR, entry), entry) + cmd = 'ln -sf {0} {1}'.format(os.path.join(SCM_ROOT, SCM_ANALYSIS_CONFIG_DIR, entry), os.path.join(SCM_RUN, entry)) execute(cmd) # Create output directory (delete existing directory) logging.info('Creating output directory {0} in run directory'.format(output_dir)) - if os.path.isdir(output_dir): - shutil.rmtree(output_dir) - os.makedirs(output_dir) + if os.path.isdir(os.path.join(SCM_RUN, output_dir)): + shutil.rmtree(os.path.join(SCM_RUN, output_dir)) + os.makedirs(os.path.join(SCM_RUN, output_dir)) # Write experiment configuration file to output directory logging.info('Writing experiment configuration {0}.nml to output directory'.format(self._name)) - cmd = 'cp {0} {1}'.format(STANDARD_EXPERIMENT_NAMELIST, os.path.join(output_dir,self._name + '.nml')) + cmd = 'cp {0} {1}'.format(os.path.join(SCM_RUN, STANDARD_EXPERIMENT_NAMELIST), os.path.join(SCM_RUN, output_dir,self._name + '.nml')) execute(cmd) + # Move executable to run dir + if COPY_EXECUTABLE: + logging.info('Copying executable to run directory') + cmd = 'cp {0} {1}'.format(os.path.join(SCM_ROOT, SCM_BIN, EXECUTABLE_NAME), os.path.join(SCM_RUN, EXECUTABLE_NAME)) + execute(cmd) + else: + logging.info('Linking executable to run directory') + cmd = 'ln -s {0} {1}'.format(os.path.join(SCM_ROOT, SCM_BIN, EXECUTABLE_NAME), os.path.join(SCM_RUN, EXECUTABLE_NAME)) + execute(cmd) + return output_dir def launch_executable(use_gdb, gdb): """Configure model run command and pass control to shell/gdb""" if use_gdb: - cmd = '{gdb} {executable}'.format(gdb=gdb, executable=EXECUTABLE) + cmd = '(cd {scm_run} && exec {gdb} {executable})'.format(scm_run=SCM_RUN, gdb=gdb, executable=EXECUTABLE) else: - cmd = '{executable}'.format(executable=EXECUTABLE) + cmd = '(cd {scm_run} && exec {executable})'.format(scm_run=SCM_RUN, executable=EXECUTABLE) logging.info('Passing control to "{0}"'.format(cmd)) time.sleep(2) failure = os.system(cmd) @@ -463,22 +701,68 @@ def copy_outdir(exp_dir): shutil.copytree(exp_dir, home_output_dir) def main(): - (case, use_gdb, suite, namelist, docker, tracers, runtime) = parse_arguments() + (case, use_gdb, suite_name, namelist, docker, tracers, runtime, runtime_mult, levels, npz_type, vert_coord_file, case_data_dir, n_itt_out, n_itt_diag, run_dir, timestep) = parse_arguments() + + global SCM_ROOT + SCM_ROOT = os.getenv('SCM_ROOT') + if SCM_ROOT is None: + message = 'The SCM_ROOT environment variable is not set. Please set the SCM_ROOT environment variable to the top-level path where the model was cloned.' + logging.critical(message) + raise Exception(message) + + global SCM_BIN + SCM_BIN = os.path.join(SCM_ROOT, DEFAULT_BIN_DIR) + + global SCM_RUN + if run_dir: + SCM_RUN = run_dir + else: + SCM_RUN = os.path.join(SCM_ROOT, DEFAULT_RUN_DIR) + if not os.path.isdir(SCM_RUN): + os.makedirs(SCM_RUN) + + global EXECUTABLE + EXECUTABLE = os.path.join(SCM_RUN, EXECUTABLE_NAME) setup_logging() #Experiment if namelist: if tracers: - logging.info('Setting up experiment {0} with suite {1} using namelist {2} and tracers {3}'.format(case,suite,namelist,tracers)) + logging.info('Setting up experiment {0} with suite {1} using namelist {2} and tracers {3}'.format(case,suite_name,namelist,tracers)) else: - logging.info('Setting up experiment {0} with suite {1} using namelist {2} using default tracers for the suite'.format(case,suite,namelist)) + logging.info('Setting up experiment {0} with suite {1} using namelist {2} using default tracers for the suite'.format(case,suite_name,namelist)) else: if tracers: - logging.info('Setting up experiment {0} with suite {1} using the default namelist for the suite and tracers {2}'.format(case,suite,tracers)) + logging.info('Setting up experiment {0} with suite {1} using the default namelist for the suite and tracers {2}'.format(case,suite_name,tracers)) + else: + logging.info('Setting up experiment {0} with suite {1} using the default namelist and tracers for the suite'.format(case,suite_name)) + + active_suite = None + for s in suite_list: + if suite_name == s._name: + active_suite = s + break + + if (active_suite is None): + if (namelist and tracers): + if timestep: + active_suite = suite(suite_name, tracers, namelist, timestep, -1, False) + else: + active_sutie = suite(suite_name, tracers, namelist, -1, -1, False) else: - logging.info('Setting up experiment {0} with suite {1} using the default namelist and tracers for the suite'.format(case,suite)) - exp = Experiment(case, suite, namelist, tracers, runtime) + message = 'The given suite ({0}), does not have defaults set in suite_info.py and either the tracers file or physics namelist file (or both) were not provided.'.format(suite_name) + logging.critical(message) + raise Exception(message) + else: + if namelist: + active_suite.namelist = namelist + if tracers: + active_suite.tracers = tracers + if timestep: + active_suite.timestep = timestep + + exp = Experiment(case, active_suite, runtime, runtime_mult, levels, npz_type, vert_coord_file, case_data_dir, n_itt_out, n_itt_diag) exp_dir = exp.setup_rundir() # Debugger if use_gdb: diff --git a/scm/src/scm.F90 b/scm/src/scm.F90 index dbd7c4eba..ba152f1c1 100644 --- a/scm/src/scm.F90 +++ b/scm/src/scm.F90 @@ -30,7 +30,7 @@ subroutine scm_main_sub() type(scm_input_type), target :: scm_input_instance type(scm_reference_type), target :: scm_reference - integer :: i, j, grid_error, kdt_rad, idtend, itrac + integer :: i, j, kdt_rad, idtend, itrac real(kind=8) :: rinc(5) !(DAYS, HOURS, MINUTES, SECONDS, MILLISECONDS) integer :: jdat(1:8) @@ -53,25 +53,7 @@ subroutine scm_main_sub() call get_reference_profile(scm_state, scm_reference) - select case(trim(adjustl(scm_state%model_name))) - case("GFS") - !> - Call get_GFS_grid in \ref vgrid to read in the necessary coefficients and calculate the pressure-related variables on the grid. - call get_GFS_vgrid(scm_input_instance, scm_state, grid_error) - !> - Exit if an unsupported number of levels is specified or the file with grid coefficients cannot be opened. - if (grid_error == 1) then - write(*,*) 'When using the GFS host model, only 28, 42, 60, 64, and 91 levels are currently supported. Exiting...' - stop - end if - if (grid_error == 2) then - write(*,*) 'The grid coefficient file could not be opened. Exiting...' - stop - end if - case("FV3") - call get_FV3_vgrid(scm_input_instance, scm_state) - case default - write(*,*) 'Only the GFS (GSM) and FV3 vertical coordinates are currently supported. Exiting...' - stop - end select + call get_FV3_vgrid(scm_input_instance, scm_state) !allocate(cdata_cols(scm_state%n_cols)) diff --git a/scm/src/scm_input.F90 b/scm/src/scm_input.F90 index 648ba0243..2c089b64b 100644 --- a/scm/src/scm_input.F90 +++ b/scm/src/scm_input.F90 @@ -34,7 +34,8 @@ subroutine get_config_nml(scm_state) type(scm_state_type), target, intent(inout) :: scm_state character(len=character_length) :: experiment_name !< name of the experiment configuration file (usually case name) - character(len=character_length) :: model_name !< name of the host model (currently only GFS supported) + character(len=character_length) :: npz_type !< used for generating different FV3 vertical grids + character(len=character_length) :: vert_coord_file !< file containing FV3 vertical grid coefficients character(len=character_length) :: case_name !< name of case initialization and forcing dataset real(kind=dp) :: dt !< time step in seconds real(kind=dp) :: runtime !< total runtime in seconds @@ -48,9 +49,6 @@ subroutine get_config_nml(scm_state) integer :: time_scheme !< 1 => forward Euler, 2 => filtered leapfrog character(len=character_length) :: output_dir !< name of the output directory character(len=character_length) :: output_file !< name of the output file (without the file extension) - character(len=character_length) :: case_data_dir !< path to the directory containing case initialization and forcing data - character(len=character_length) :: vert_coord_data_dir !< path to the directory containing vertical coordinate data - character(len=character_length) :: reference_profile_dir !< path to the directory containing the reference profile integer :: thermo_forcing_type !< 1: "revealed forcing", 2: "horizontal advective forcing", 3: "relaxation forcing" integer :: mom_forcing_type !< 1: "revealed forcing", 2: "horizontal advective forcing", 3: "relaxation forcing" integer :: C_RES !< reference "C" resoltiion of FV3 grid (needed for GWD and mountain blocking) @@ -77,10 +75,10 @@ subroutine get_config_nml(scm_state) CHARACTER(LEN=*), parameter :: experiment_namelist = 'input_experiment.nml' - NAMELIST /case_config/ model_name, n_columns, case_name, dt, time_scheme, runtime, n_itt_out, n_itt_diag, & - n_levels, output_dir, output_file, case_data_dir, vert_coord_data_dir, thermo_forcing_type, model_ics, & + NAMELIST /case_config/ npz_type, vert_coord_file, case_name, dt, runtime, n_itt_out, n_itt_diag, & + n_levels, output_dir, thermo_forcing_type, model_ics, & lsm_ics, do_spinup, C_RES, spinup_timesteps, mom_forcing_type, relax_time, sfc_type, sfc_flux_spec, & - sfc_roughness_length_cm, reference_profile_choice, reference_profile_dir, year, month, day, hour, min, & + sfc_roughness_length_cm, reference_profile_choice, year, month, day, hour, min, & column_area, input_type NAMELIST /physics_config/ physics_suite, physics_nml @@ -89,21 +87,20 @@ subroutine get_config_nml(scm_state) !! @{ !> Define default values for experiment configuration (to be overridden by external namelist file or command line arguments) - model_name = 'GFS' + npz_type = '' + vert_coord_file = '' n_columns = 1 case_name = 'twpice' dt = 600.0 - time_scheme = 2 + time_scheme = 1 runtime = 2138400.0 n_itt_out = 1 n_itt_diag = -999 - n_levels = 64 + n_levels = 127 n_soil = 4 n_snow = 3 output_dir = 'output' output_file = 'output' - case_data_dir = '../data/processed_case_input' - vert_coord_data_dir = '../data/vert_coord_data' thermo_forcing_type = 2 mom_forcing_type = 3 C_RES = 384 @@ -116,7 +113,6 @@ subroutine get_config_nml(scm_state) lsm_ics = .false. do_spinup = .false. reference_profile_choice = 1 - reference_profile_dir = case_data_dir year = 2006 month = 1 day = 19 @@ -166,11 +162,9 @@ subroutine get_config_nml(scm_state) call scm_state%create(n_columns, n_levels, n_soil, n_snow, n_time_levels, tracer_names, tracer_types) scm_state%experiment_name = experiment_name - scm_state%model_name = model_name + scm_state%npz_type = npz_type + scm_state%vert_coord_file = vert_coord_file scm_state%output_dir = output_dir - scm_state%case_data_dir = case_data_dir - scm_state%vert_coord_data_dir = vert_coord_data_dir - scm_state%reference_profile_dir = reference_profile_dir scm_state%output_file = output_file scm_state%case_name = case_name scm_state%physics_suite_name = physics_suite @@ -429,7 +423,7 @@ subroutine get_case_init(scm_state, scm_input) !! @{ !> - Open the case input file found in the processed_case_input dir corresponding to the experiment name. - call check(NF90_OPEN(trim(adjustl(scm_state%case_data_dir))//'/'//trim(adjustl(scm_state%case_name))//'.nc',nf90_nowrite,ncid)) + call check(NF90_OPEN(trim(adjustl(scm_state%case_name))//'.nc',nf90_nowrite,ncid)) !> - Read in missing value from file (replace module variable if present) ierr = NF90_GET_ATT(ncid, NF90_GLOBAL, 'missing_value', nc_missing_value) @@ -1018,7 +1012,7 @@ subroutine get_case_init_DEPHY(scm_state, scm_input) missing_value_eps = missing_value + 0.01 !> - Open the case input file found in the processed_case_input dir corresponding to the experiment name. - call check(NF90_OPEN(trim(adjustl(scm_state%case_data_dir))//'/'//trim(adjustl(scm_state%case_name))//'_SCM_driver.nc',nf90_nowrite,ncid)) + call check(NF90_OPEN(trim(adjustl(scm_state%case_name))//'_SCM_driver.nc',nf90_nowrite,ncid)) !> - Get the dimensions. @@ -2050,7 +2044,7 @@ subroutine get_reference_profile(scm_state, scm_reference) select case (scm_state%reference_profile_choice) case (1) - open(unit=1, file=trim(adjustl(scm_state%reference_profile_dir))//'/'//'McCProfiles.dat', status='old', action='read', iostat=ioerror) + open(unit=1, file='McCProfiles.dat', status='old', action='read', iostat=ioerror) if(ioerror /= 0) then write(*,*) 'There was an error opening the file McCprofiles.dat in the processed_case_input directory. & Error code = ',ioerror @@ -2075,7 +2069,7 @@ subroutine get_reference_profile(scm_state, scm_reference) END DO close(1) case (2) - call check(NF90_OPEN(trim(adjustl(scm_state%reference_profile_dir))//'/'//'mid_lat_summer_std.nc',nf90_nowrite,ncid)) + call check(NF90_OPEN('mid_lat_summer_std.nc',nf90_nowrite,ncid)) call check(NF90_INQ_DIMID(ncid,"height",varID)) call check(NF90_INQUIRE_DIMENSION(ncid, varID, tmpName, nlev)) diff --git a/scm/src/scm_type_defs.F90 b/scm/src/scm_type_defs.F90 index 5e16038fa..2e9ece523 100644 --- a/scm/src/scm_type_defs.F90 +++ b/scm/src/scm_type_defs.F90 @@ -38,18 +38,16 @@ module scm_type_defs type scm_state_type character(len=character_length) :: experiment_name !> name of model configuration file - character(len=character_length) :: model_name !< name of "host" model (must be "GFS" for prototype) + character(len=character_length) :: npz_type !< used to define different FV3 vertical grids + character(len=character_length) :: vert_coord_file !< name of vertical coordinate file character(len=character_length) :: output_dir !< name of output directory to place netCDF file - character(len=character_length) :: case_data_dir !< location of the case initialization and forcing data files (relative to the executable path) - character(len=character_length) :: vert_coord_data_dir !< location of the vertical coordinate data files (relative to the executable path) - character(len=character_length) :: reference_profile_dir !< location of the reference profile data files (relative to the executable path) character(len=character_length) :: output_file !< name of output file (without the file extension) character(len=character_length) :: case_name !< name of case initialization and forcing to use (different than experiment name, which names the model run (as a control, experiment_1, etc.)) character(len=character_length) :: physics_suite_name !< name of physics suite (must be "GFS_operational" for prototype) character(len=character_length) :: physics_nml - integer :: n_levels !< number of model levels (must be 64 for prototype) - integer :: n_soil !< number of model levels (must be 4 for prototype) + integer :: n_levels !< number of model levels + integer :: n_soil !< number of model levels integer :: itt !< current model iteration integer :: itt_out !< output iteration counter integer :: itt_swrad !< sw radiation iteration counter @@ -443,11 +441,9 @@ subroutine scm_state_create(scm_state, n_columns, n_levels, n_soil, n_snow, n_ti integer :: i scm_state%experiment_name = clear_char - scm_state%model_name = clear_char + scm_state%npz_type = clear_char + scm_state%vert_coord_file = clear_char scm_state%output_dir = clear_char - scm_state%case_data_dir = clear_char - scm_state%vert_coord_data_dir = clear_char - scm_state%reference_profile_dir = clear_char scm_state%output_file = clear_char scm_state%case_name = clear_char diff --git a/scm/src/scm_vgrid.F90 b/scm/src/scm_vgrid.F90 index 30a22b194..bde37775d 100644 --- a/scm/src/scm_vgrid.F90 +++ b/scm/src/scm_vgrid.F90 @@ -9,7 +9,7 @@ module scm_vgrid implicit none private -public get_GFS_vgrid, get_FV3_vgrid, calc_pres_exner_geopotential, calc_geopotential +public get_FV3_vgrid, calc_pres_exner_geopotential, calc_geopotential logical :: verbose = .true. @@ -21,1195 +21,397 @@ module scm_vgrid !! @{ !! Contains the vertical grid setup routines. -!> Subroutine for setting up the GFS hybrid coordinate vertical grid. Files with precalculated coefficients (A_k and B_k) from the -!! "fix" directory in Patrick Tripp's V2 code are used; their filenames start with "global_hyblev". There are only files for 28, 42, -!! 60, 64, and 91 levels. If a different number of levels are specified, an error is returned. Using the A_k and B_k coefficients, the -!! model level pressures, sigma values, and exner function (at interfaces and layer centers) are calculated and returned to the calling -!! procedure. -subroutine get_GFS_vgrid(scm_input, scm_state, error) - use scm_type_defs, only: scm_input_type, scm_state_type - - type(scm_input_type), intent(in) :: scm_input - type(scm_state_type), intent(inout) :: scm_state - - !create GFS hybrid coordinate vertical grid - integer, intent(out) :: error !< error code - - integer :: i, ierr - - real(kind=dp) :: pres_sfc_inv, p0 - character(len=37) :: filename - character(len=80) :: line - character(len=16) :: file_format - - !> \section get_GFS_vgrid_alg Algorithm - !! @{ - - error = 0 - - !file format for all but the 91 level file is the same - file_format = '(1F12.3, 1F12.8)' - - - !> - Check to see if the desired number of grid levels is available. If not, return an error code. - select case (scm_state%n_levels) - case(28) - filename = trim(adjustl(scm_state%vert_coord_data_dir))//"/global_hyblev.l28.txt" - case(42) - filename = trim(adjustl(scm_state%vert_coord_data_dir))//"/global_hyblev.l42.txt" - case(60) - filename = trim(adjustl(scm_state%vert_coord_data_dir))//"/global_hyblev.l60.txt" - case(64) - filename = trim(adjustl(scm_state%vert_coord_data_dir))//"/global_hyblev.l64.txt" - case(91) - filename = trim(adjustl(scm_state%vert_coord_data_dir))//"/global_hyblev.l91.txt" - !file format for the 91-level file is different - file_format = '(1F14.6, 1F10.6)' - case default - error = 1 - return - end select - - !> - Open the appropriate file. - open(unit=1, file=filename, status='old', action='read', iostat=ierr) - if(ierr /= 0) then - write(*,*) 'There was an error opening the file ', filename, ' in the model_config directory. & - Error code = ',ierr - error = 2 - endif - - !> - The first line contains the number of coefficients and number of levels (these should already by known; discard this info) - read(1,'(a)',iostat=ierr) line - !> - Read in the coefficient data. - do i=1, scm_state%n_levels+1 - read(1,file_format) scm_state%a_k(i), scm_state%b_k(i) - end do - close(1) - - !> - Calculate interface pressures, sigma, and exner function. - - p0 = scm_input%input_pres_surf(1) - pres_sfc_inv = 1.0/p0 - do i=1, scm_state%n_levels+1 - scm_state%pres_i(:,i) = scm_state%a_k(i) + scm_state%b_k(i)*p0 - scm_state%si(:,i) = scm_state%a_k(i)*pres_sfc_inv + scm_state%b_k(i) - scm_state%exner_i(:,i) = (scm_state%pres_i(:,i)/1.0E5)**con_rocp - end do - - !> - Calculate layer center pressures, sigma, and exner function. - do i=1, scm_state%n_levels - scm_state%pres_l(:,i) = ((1.0/(con_rocp+1.0))*& - (scm_state%pres_i(:,i)**(con_rocp+1.0) - scm_state%pres_i(:,i+1)**(con_rocp+1.0))/ & - (scm_state%pres_i(:,i) - scm_state%pres_i(:,i+1)))**(1.0/con_rocp) - scm_state%sl(:,i) = 0.5*(scm_state%si(:,i) + scm_state%si(:,i+1)) - - scm_state%exner_l(:,i) = (scm_state%pres_l(:,i)/1.0E5)**con_rocp - - end do - !> @} -end subroutine get_GFS_vgrid - -!most of this was obtained from FV3/atmos_cubed_sphere/tools/fv_eta.F90 from FV3 v0 release +!GJF: most of this was obtained from FV3/atmos_cubed_sphere/tools/fv_eta.F90 from FV3 +!GJF: current as of March 2022 +!GJF: assuming proprocessor variable USE_VAR_ETA is NOT set subroutine get_FV3_vgrid(scm_input, scm_state) use scm_type_defs, only: scm_input_type, scm_state_type type(scm_input_type), intent(in) :: scm_input type(scm_state_type), intent(inout) :: scm_state - integer :: km ! vertical dimension + integer :: km ! vertical dimension integer :: ks ! number of pure p layers real(kind=dp) :: ptop ! model top (Pa) - ! local real(kind=dp) :: pres_sfc_inv, p_ref, ak_tmp, bk_tmp - - real a24(25),b24(25) ! GFDL AM2L24 - real a26(27),b26(27) ! Jablonowski & Williamson 26-level - real a32(33),b32(33) - !real a32w(33),b32w(33) - real a47(48),b47(48) - real a48(49),b48(49) - real a52(53),b52(53) - real a54(55),b54(55) - real a56(57),b56(57) - real a60(61),b60(61) - !real a63(64),b63(64) - real a64(65),b64(65) - real a68(69),b68(69) ! cjg: grid with enhanced PBL resolution - real a96(97),b96(97) ! cjg: grid with enhanced PBL resolution - real a100(101),b100(101) - real a104(105),b104(105) - real a125(126),b125(126) - + real:: p0=1000.E2 real:: pc=200.E2 - - real pt, pint, lnpe, dlnp - real press(scm_state%n_levels+1) - integer k, last_index, mid_index - + + real :: pint = 100.E2 + real :: stretch_fac = 1.03 + integer :: auto_routine = 0 + + integer k, last_index, mid_index, ierr, dummy, n_levels_file + + character(len=80) :: line + character(len=16) :: file_format + +#include "fv_eta.h" + km = scm_state%n_levels - + ptop = 1. ! Definition: press(i,j,k) = ak(k) + bk(k) * ps(i,j) - -!----------------------------------------------- -! GFDL AM2-L24: modified by SJL at the model top -!----------------------------------------------- -! data a24 / 100.0000, 1050.0000, 3474.7942, 7505.5556, 12787.2428, & - data a24 / 100.0000, 903.4465, 3474.7942, 7505.5556, 12787.2428, & - 19111.3683, 21854.9274, 22884.1866, 22776.3058, 21716.1604, & - 20073.2963, 18110.5123, 16004.7832, 13877.6253, 11812.5452, & - 9865.8840, 8073.9726, 6458.0834, 5027.9899, 3784.6085, & - 2722.0086, 1828.9752, 1090.2396, 487.4595, 0.0000 / - - data b24 / 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000, & - 0.0000000, 0.0435679, 0.1102275, 0.1922249, 0.2817656, & - 0.3694997, 0.4532348, 0.5316253, 0.6038733, 0.6695556, & - 0.7285176, 0.7808017, 0.8265992, 0.8662148, 0.9000406, & - 0.9285364, 0.9522140, 0.9716252, 0.9873523, 1.0000000 / - -! Jablonowski & Williamson 26-level setup - data a26 / 219.4067, 489.5209, 988.2418, 1805.2010, 2983.7240, 4462.3340, & - 6160.5870, 7851.2430, 7731.2710, 7590.1310, 7424.0860, & - 7228.7440, 6998.9330, 6728.5740, 6410.5090, 6036.3220, & - 5596.1110, 5078.2250, 4468.9600, 3752.1910, 2908.9490, & - 2084.739, 1334.443, 708.499, 252.1360, 0.0, 0.0 / - - data b26 / 0.0, 0.0, 0.0000000, 0.0000000, 0.0000000, 0.0000000, 0.0000000,& - 0.0000000, 0.01505309, 0.03276228, 0.05359622, 0.07810627, & - 0.1069411, 0.1408637, 0.1807720, 0.2277220, 0.2829562, & - 0.3479364, 0.4243822, 0.5143168, 0.6201202, 0.7235355, & - 0.8176768, 0.8962153, 0.9534761, 0.9851122, 1.0000000 / - - -! High-resolution troposphere setup -#ifdef OLD_32 -! Revised Apr 14, 2004: PINT = 245.027 mb - data a32/100.00000, 400.00000, 818.60211, & - 1378.88653, 2091.79519, 2983.64084, & - 4121.78960, 5579.22148, 7419.79300, & - 9704.82578, 12496.33710, 15855.26306, & - 19839.62499, 24502.73262, 28177.10152, & - 29525.28447, 29016.34358, 27131.32792, & - 24406.11225, 21326.04907, 18221.18357, & - 15275.14642, 12581.67796, 10181.42843, & - 8081.89816, 6270.86956, 4725.35001, & - 3417.39199, 2317.75459, 1398.09473, & - 632.49506, 0.00000, 0.00000 / - - data b32/0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.01711, & - 0.06479, 0.13730, 0.22693, & - 0.32416, 0.42058, 0.51105, & - 0.59325, 0.66628, 0.73011, & - 0.78516, 0.83217, 0.87197, & - 0.90546, 0.93349, 0.95685, & - 0.97624, 0.99223, 1.00000 / -#else -! SJL June 26, 2012 -! pint= 55.7922 - data a32/100.00000, 400.00000, 818.60211, & - 1378.88653, 2091.79519, 2983.64084, & - 4121.78960, 5579.22148, 6907.19063, & - 7735.78639, 8197.66476, 8377.95525, & - 8331.69594, 8094.72213, 7690.85756, & - 7139.01788, 6464.80251, 5712.35727, & - 4940.05347, 4198.60465, 3516.63294, & - 2905.19863, 2366.73733, 1899.19455, & - 1497.78137, 1156.25252, 867.79199, & - 625.59324, 423.21322, 254.76613, & - 115.06646, 0.00000, 0.00000 / - - data b32/0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00513, & - 0.01969, 0.04299, 0.07477, & - 0.11508, 0.16408, 0.22198, & - 0.28865, 0.36281, 0.44112, & - 0.51882, 0.59185, 0.65810, & - 0.71694, 0.76843, 0.81293, & - 0.85100, 0.88331, 0.91055, & - 0.93338, 0.95244, 0.96828, & - 0.98142, 0.99223, 1.00000 / -#endif - -!!--------------------- -!! Wilson's 32L settings: -!!--------------------- -!! Top changed to 0.01 mb -! data a32w/ 1.00, 26.6378, 84.5529, 228.8592, & -! 539.9597, 1131.7087, 2141.8082, 3712.0454, & -! 5963.5317, 8974.1873, 12764.5388, 17294.5911, & -! 20857.7007, 22221.8651, 22892.7202, 22891.1641, & -! 22286.0724, 21176.0846, 19673.0671, 17889.0989, & -! 15927.5060, 13877.6239, 11812.5474, 9865.8830, & -! 8073.9717, 6458.0824, 5027.9893, 3784.6104, & -! 2722.0093, 1828.9741, 1090.2397, 487.4575, & -! 0.0000 / -! -! data b32w/ 0.0000, 0.0000, 0.0000, 0.0000, & -! 0.0000, 0.0000, 0.0000, 0.0000, & -! 0.0000, 0.0000, 0.0000, 0.0000, & -! 0.0159, 0.0586, 0.1117, 0.1734, & -! 0.2415, 0.3137, 0.3878, 0.4619, & -! 0.5344, 0.6039, 0.6696, 0.7285, & -! 0.7808, 0.8266, 0.8662, 0.9000, & -! 0.9285, 0.9522, 0.9716, 0.9874, & -! 1.0000 / - - -#ifdef OLD_L47 -! QBO setting with ptop = 0.1 mb and p_full=0.17 mb; pint ~ 100 mb - data a47/ 10.00000, 24.45365, 48.76776, & - 85.39458, 133.41983, 191.01402, & - 257.94919, 336.63306, 431.52741, & - 548.18995, 692.78825, 872.16512, & - 1094.18467, 1368.11917, 1704.99489, & - 2117.91945, 2622.42986, 3236.88281, & - 3982.89623, 4885.84733, 5975.43260, & - 7286.29500, 8858.72424, 10739.43477, & - 12982.41110, 15649.68745, 18811.37629, & - 22542.71275, 25724.93857, 27314.36781, & - 27498.59474, 26501.79312, 24605.92991, & - 22130.51655, 19381.30274, 16601.56419, & - 13952.53231, 11522.93244, 9350.82303, & - 7443.47723, 5790.77434, 4373.32696, & - 3167.47008, 2148.51663, 1293.15510, & - 581.62429, 0.00000, 0.00000 / - - data b47/ 0.0000, 0.0000, 0.0000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.01188, 0.04650, & - 0.10170, 0.17401, 0.25832, & - 0.34850, 0.43872, 0.52448, & - 0.60307, 0.67328, 0.73492, & - 0.78834, 0.83418, 0.87320, & - 0.90622, 0.93399, 0.95723, & - 0.97650, 0.99223, 1.00000 / -#else -! Oct 23, 2012 -! QBO setting with ptop = 0.1 mb, pint ~ 60 mb - data a47/ 10.00000, 24.45365, 48.76776, & - 85.39458, 133.41983, 191.01402, & - 257.94919, 336.63306, 431.52741, & - 548.18995, 692.78825, 872.16512, & - 1094.18467, 1368.11917, 1704.99489, & - 2117.91945, 2622.42986, 3236.88281, & - 3982.89623, 4885.84733, 5975.43260, & - 7019.26669, 7796.15848, 8346.60209, & - 8700.31838, 8878.27554, 8894.27179, & - 8756.46404, 8469.60171, 8038.92687, & - 7475.89006, 6803.68067, 6058.68992, & - 5285.28859, 4526.01565, 3813.00206, & - 3164.95553, 2589.26318, 2085.96929, & - 1651.11596, 1278.81205, 962.38875, & - 695.07046, 470.40784, 282.61654, & - 126.92745, 0.00000, 0.00000 / - data b47/ 0.0000, 0.0000, 0.0000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00267, 0.01063, 0.02393, & - 0.04282, 0.06771, 0.09917, & - 0.13786, 0.18444, 0.23925, & - 0.30193, 0.37100, 0.44379, & - 0.51695, 0.58727, 0.65236, & - 0.71094, 0.76262, 0.80757, & - 0.84626, 0.87930, 0.90731, & - 0.93094, 0.95077, 0.96733, & - 0.98105, 0.99223, 1.00000 / -#endif - - data a48/ & - 1.00000, 2.69722, 5.17136, & - 8.89455, 14.24790, 22.07157, & - 33.61283, 50.48096, 74.79993, & - 109.40055, 158.00460, 225.44108, & - 317.89560, 443.19350, 611.11558, & - 833.74392, 1125.83405, 1505.20759, & - 1993.15829, 2614.86254, 3399.78420, & - 4382.06240, 5600.87014, 7100.73115, & - 8931.78242, 11149.97021, 13817.16841, & - 17001.20930, 20775.81856, 23967.33875, & - 25527.64563, 25671.22552, 24609.29622, & - 22640.51220, 20147.13482, 17477.63530, & - 14859.86462, 12414.92533, 10201.44191, & - 8241.50255, 6534.43202, 5066.17865, & - 3815.60705, 2758.60264, 1870.64631, & - 1128.33931, 510.47983, 0.00000, & - 0.00000 / - - data b48/ & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.01253, & - 0.04887, 0.10724, 0.18455, & - 0.27461, 0.36914, 0.46103, & - 0.54623, 0.62305, 0.69099, & - 0.75016, 0.80110, 0.84453, & - 0.88127, 0.91217, 0.93803, & - 0.95958, 0.97747, 0.99223, & - 1.00000 / - -! High PBL resolution with top at 1 mb -! SJL modified May 7, 2013 to ptop ~ 100 mb - data a54/100.00000, 254.83931, 729.54278, & - 1602.41121, 2797.50667, 4100.18977, & - 5334.87140, 6455.24153, 7511.80944, & - 8580.26355, 9714.44293, 10938.62253, & - 12080.36051, 12987.13921, 13692.75084, & - 14224.92180, 14606.55444, 14856.69953, & - 14991.32121, 15023.90075, 14965.91493, & - 14827.21612, 14616.33505, 14340.72252, & - 14006.94280, 13620.82849, 13187.60470, & - 12711.98873, 12198.27003, 11650.37451, & - 11071.91608, 10466.23819, 9836.44706, & - 9185.43852, 8515.96231, 7831.01080, & - 7135.14301, 6436.71659, 5749.00215, & - 5087.67188, 4465.67510, 3889.86419, & - 3361.63433, 2879.51065, 2441.02496, & - 2043.41345, 1683.80513, 1359.31122, & - 1067.09135, 804.40101, 568.62625, & - 357.32525, 168.33263, 0.00000, & - 0.00000 / - - data b54/0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00180, 0.00694, 0.01510, & - 0.02601, 0.03942, 0.05515, & - 0.07302, 0.09288, 0.11459, & - 0.13803, 0.16307, 0.18960, & - 0.21753, 0.24675, 0.27716, & - 0.30866, 0.34115, 0.37456, & - 0.40879, 0.44375, 0.47935, & - 0.51551, 0.55215, 0.58916, & - 0.62636, 0.66334, 0.69946, & - 0.73395, 0.76622, 0.79594, & - 0.82309, 0.84780, 0.87020, & - 0.89047, 0.90876, 0.92524, & - 0.94006, 0.95336, 0.96529, & - 0.97596, 0.98551, 0.99400, & - 1.00000 / - - -! The 56-L setup - data a56/ 10.00000, 24.97818, 58.01160, & - 115.21466, 199.29210, 309.39897, & - 445.31785, 610.54747, 812.28518, & - 1059.80882, 1363.07092, 1732.09335, & - 2176.91502, 2707.68972, 3334.70962, & - 4068.31964, 4918.76594, 5896.01890, & - 7009.59166, 8268.36324, 9680.41211, & - 11252.86491, 12991.76409, 14901.95764, & - 16987.01313, 19249.15733, 21689.24182, & - 23845.11055, 25330.63353, 26243.52467, & - 26663.84998, 26657.94696, 26281.61371, & - 25583.05256, 24606.03265, 23393.39510, & - 21990.28845, 20445.82122, 18811.93894, & - 17139.59660, 15473.90350, 13850.50167, & - 12294.49060, 10821.62655, 9440.57746, & - 8155.11214, 6965.72496, 5870.70511, & - 4866.83822, 3949.90019, 3115.03562, & - 2357.07879, 1670.87329, 1051.65120, & - 495.51399, 0.00000, 0.00000 / - - data b56 /0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00462, 0.01769, 0.03821, & - 0.06534, 0.09834, 0.13659, & - 0.17947, 0.22637, 0.27660, & - 0.32929, 0.38343, 0.43791, & - 0.49162, 0.54361, 0.59319, & - 0.63989, 0.68348, 0.72391, & - 0.76121, 0.79545, 0.82679, & - 0.85537, 0.88135, 0.90493, & - 0.92626, 0.94552, 0.96286, & - 0.97840, 0.99223, 1.00000 / - - data a60/ 1.7861000000e-01, 1.0805100000e+00, 3.9647100000e+00, & - 9.7516000000e+00, 1.9816580000e+01, 3.6695950000e+01, & - 6.2550570000e+01, 9.9199620000e+01, 1.4792505000e+02, & - 2.0947487000e+02, 2.8422571000e+02, 3.7241721000e+02, & - 4.7437835000e+02, 5.9070236000e+02, 7.2236063000e+02, & - 8.7076746000e+02, 1.0378138800e+03, 1.2258877300e+03, & - 1.4378924600e+03, 1.6772726600e+03, 1.9480506400e+03, & - 2.2548762700e+03, 2.6030909400e+03, 2.9988059200e+03, & - 3.4489952300e+03, 3.9616028900e+03, 4.5456641600e+03, & - 5.2114401700e+03, 5.9705644000e+03, 6.8361981800e+03, & - 7.8231906000e+03, 8.9482351000e+03, 1.0230010660e+04, & - 1.1689289750e+04, 1.3348986860e+04, 1.5234111060e+04, & - 1.7371573230e+04, 1.9789784580e+04, 2.2005564550e+04, & - 2.3550115120e+04, 2.4468583320e+04, 2.4800548800e+04, & - 2.4582445070e+04, 2.3849999620e+04, 2.2640519740e+04, & - 2.0994737150e+04, 1.8957848730e+04, 1.6579413230e+04, & - 1.4080071030e+04, 1.1753630920e+04, 9.6516996300e+03, & - 7.7938009300e+03, 6.1769062800e+03, 4.7874276000e+03, & - 3.6050497500e+03, 2.6059860700e+03, 1.7668328200e+03, & - 1.0656131200e+03, 4.8226201000e+02, 0.0000000000e+00, & - 0.0000000000e+00 / - - - data b60/ 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 5.0600000000e-03, & - 2.0080000000e-02, 4.4900000000e-02, 7.9360000000e-02, & - 1.2326000000e-01, 1.7634000000e-01, 2.3820000000e-01, & - 3.0827000000e-01, 3.8581000000e-01, 4.6989000000e-01, & - 5.5393000000e-01, 6.2958000000e-01, 6.9642000000e-01, & - 7.5458000000e-01, 8.0463000000e-01, 8.4728000000e-01, & - 8.8335000000e-01, 9.1368000000e-01, 9.3905000000e-01, & - 9.6020000000e-01, 9.7775000000e-01, 9.9223000000e-01, & - 1.0000000000e+00 / - -!! This is activated by USE_GFSL63 -!! Thfollowing L63 setting is the same as NCEP GFS's L64 except the top -!! 3 layers -! data a63/64.247, 137.790, 221.958, & -! 318.266, 428.434, 554.424, & -! 698.457, 863.05803, 1051.07995, & -! 1265.75194, 1510.71101, 1790.05098, & -! 2108.36604, 2470.78817, 2883.03811, & -! 3351.46002, 3883.05187, 4485.49315, & -! 5167.14603, 5937.04991, 6804.87379, & -! 7780.84698, 8875.64338, 10100.20534, & -! 11264.35673, 12190.64366, 12905.42546, & -! 13430.87867, 13785.88765, 13986.77987, & -! 14047.96335, 13982.46770, 13802.40331, & -! 13519.33841, 13144.59486, 12689.45608, & -! 12165.28766, 11583.57006, 10955.84778, & -! 10293.60402, 9608.08306, 8910.07678, & -! 8209.70131, 7516.18560, 6837.69250, & -! 6181.19473, 5552.39653, 4955.72632, & -! 4394.37629, 3870.38682, 3384.76586, & -! 2937.63489, 2528.37666, 2155.78385, & -! 1818.20722, 1513.68173, 1240.03585, & -! 994.99144, 776.23591, 581.48797, & -! 408.53400, 255.26520, 119.70243, 0. / -! -! data b63/0.00000, 0.00000, 0.00000, & -! 0.00000, 0.00000, 0.00000, & -! 0.00000, 0.00000, 0.00000, & -! 0.00000, 0.00000, 0.00000, & -! 0.00000, 0.00000, 0.00000, & -! 0.00000, 0.00000, 0.00000, & -! 0.00000, 0.00000, 0.00000, & -! 0.00000, 0.00000, 0.00000, & -! 0.00201, 0.00792, 0.01755, & -! 0.03079, 0.04751, 0.06761, & -! 0.09097, 0.11746, 0.14690, & -! 0.17911, 0.21382, 0.25076, & -! 0.28960, 0.32994, 0.37140, & -! 0.41353, 0.45589, 0.49806, & -! 0.53961, 0.58015, 0.61935, & -! 0.65692, 0.69261, 0.72625, & -! 0.75773, 0.78698, 0.81398, & -! 0.83876, 0.86138, 0.88192, & -! 0.90050, 0.91722, 0.93223, & -! 0.94565, 0.95762, 0.96827, & -! 0.97771, 0.98608, 0.99347, 1./ -#ifdef GFSL64 -! data a64/20.00000, 68.00000, 137.79000, & -! 221.95800, 318.26600, 428.43400, & -! 554.42400, 698.45700, 863.05803, & -! 1051.07995, 1265.75194, 1510.71101, & -! 1790.05098, 2108.36604, 2470.78817, & -! 2883.03811, 3351.46002, 3883.05187, & -! 4485.49315, 5167.14603, 5937.04991, & -! 6804.87379, 7780.84698, 8875.64338, & -! 9921.40745, 10760.99844, 11417.88354, & -! 11911.61193, 12258.61668, 12472.89642, & -! 12566.58298, 12550.43517, 12434.26075, & -! 12227.27484, 11938.39468, 11576.46910, & -! 11150.43640, 10669.41063, 10142.69482, & -! 9579.72458, 8989.94947, 8382.67090, & -! 7766.85063, 7150.91171, 6542.55077, & -! 5948.57894, 5374.81094, 4825.99383, & -! 4305.79754, 3816.84622, 3360.78848, & -! 2938.39801, 2549.69756, 2194.08449, & -! 1870.45732, 1577.34218, 1313.00028, & -! 1075.52114, 862.90778, 673.13815, & -! 504.22118, 354.22752, 221.32110, & -! 103.78014, 0./ -! data b64/0.00000, 0.00000, 0.00000, & -! 0.00000, 0.00000, 0.00000, & -! 0.00000, 0.00000, 0.00000, & -! 0.00000, 0.00000, 0.00000, & -! 0.00000, 0.00000, 0.00000, & -! 0.00000, 0.00000, 0.00000, & -! 0.00000, 0.00000, 0.00000, & -! 0.00000, 0.00000, 0.00000, & -! 0.00179, 0.00705, 0.01564, & -! 0.02749, 0.04251, 0.06064, & -! 0.08182, 0.10595, 0.13294, & -! 0.16266, 0.19492, 0.22950, & -! 0.26615, 0.30455, 0.34435, & -! 0.38516, 0.42656, 0.46815, & -! 0.50949, 0.55020, 0.58989, & -! 0.62825, 0.66498, 0.69987, & -! 0.73275, 0.76351, 0.79208, & -! 0.81845, 0.84264, 0.86472, & -! 0.88478, 0.90290, 0.91923, & -! 0.93388, 0.94697, 0.95865, & -! 0.96904, 0.97826, 0.98642, & -! 0.99363, 1./ - data a64/20.00000, 64.24700, 137.79000, & - 221.95800, 318.26600, 428.43400, & - 554.42400, 698.45700, 863.05800, & - 1051.08000, 1265.75200, 1510.71100, & - 1790.05100, 2108.36600, 2470.78800, & - 2883.03800, 3351.46000, 3883.05200, & - 4485.49300, 5167.14600, 5937.05000, & - 6804.87400, 7777.15000, 8832.53700, & - 9936.61400, 11054.85300, 12152.93700, & - 13197.06500, 14154.31600, 14993.07400, & - 15683.48900, 16197.96700, 16511.73000, & - 16611.60300, 16503.14400, 16197.31500, & - 15708.89300, 15056.34200, 14261.43500, & - 13348.67100, 12344.49000, 11276.34800, & - 10171.71200, 9057.05100, 7956.90800, & - 6893.11700, 5884.20600, 4945.02900, & - 4086.61400, 3316.21700, 2637.55300, & - 2051.15000, 1554.78900, 1143.98800, & - 812.489000, 552.72000, 356.22300, & - 214.015000, 116.89900, 55.71200, & - 21.516000, 5.74100, 0.57500, & - 0.000000, 0./ - data b64/0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 3.697e-05, 0.00043106, & - 0.00163591, 0.00410671, 0.00829402, & - 0.01463712, 0.02355588, 0.03544162, & - 0.05064684, 0.06947458, 0.09216691, & - 0.11881219, 0.14926877, 0.18329624, & - 0.22057019, 0.26068545, 0.30316412, & - 0.34746849, 0.39301826, 0.43921080, & - 0.48544331, 0.53113482, 0.57574665, & - 0.61879962, 0.65988704, 0.69868292, & - 0.73494523, 0.76851468, 0.79930974, & - 0.82731884, 0.85259067, 0.87522360, & - 0.89535499, 0.91315100, 0.92879731, & - 0.94249106, 0.95443411, 0.96482757, & - 0.9738676, 0.98174229, 0.98862660, & - 0.99467119, 1./ - -#else - data a64/1.00000, 3.90000, 8.70000, & - 15.42000, 24.00000, 34.50000, & - 47.00000, 61.50000, 78.60000, & - 99.13500, 124.12789, 154.63770, & - 191.69700, 236.49300, 290.38000, & - 354.91000, 431.82303, 523.09300, & - 630.92800, 757.79000, 906.45000, & - 1079.85000, 1281.00000, 1515.00000, & - 1788.00000, 2105.00000, 2470.00000, & - 2889.00000, 3362.00000, 3890.00000, & - 4475.00000, 5120.00000, 5830.00000, & - 6608.00000, 7461.00000, 8395.00000, & - 9424.46289, 10574.46880, 11864.80270, & - 13312.58890, 14937.03710, 16759.70700, & - 18804.78710, 21099.41210, 23674.03710, & - 26562.82810, 29804.11720, 32627.31640, & - 34245.89840, 34722.28910, 34155.19920, & - 32636.50390, 30241.08200, 27101.44920, & - 23362.20700, 19317.05270, 15446.17090, & - 12197.45210, 9496.39941, 7205.66992, & - 5144.64307, 3240.79346, 1518.62134, & - 0.00000, 0.00000 / - - data b64/0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00813, & - 0.03224, 0.07128, 0.12445, & - 0.19063, 0.26929, 0.35799, & - 0.45438, 0.55263, 0.64304, & - 0.71703, 0.77754, 0.82827, & - 0.87352, 0.91502, 0.95235, & - 0.98511, 1.00000 / -#endif -!-->cjg - data a68/1.00000, 2.68881, 5.15524, & - 8.86683, 14.20349, 22.00278, & - 33.50807, 50.32362, 74.56680, & - 109.05958, 157.51214, 224.73844, & - 316.90481, 441.81219, 609.21090, & - 831.14537, 1122.32514, 1500.51628, & - 1986.94617, 2606.71274, 3389.18802, & - 4368.40473, 5583.41379, 7078.60015, & - 8903.94455, 11115.21886, 13774.60566, & - 16936.82070, 20340.47045, 23193.71492, & - 24870.36141, 25444.59363, 25252.57081, & - 24544.26211, 23474.29096, 22230.65331, & - 20918.50731, 19589.96280, 18296.26682, & - 17038.02866, 15866.85655, 14763.18943, & - 13736.83624, 12794.11850, 11930.72442, & - 11137.17217, 10404.78946, 9720.03954, & - 9075.54055, 8466.72650, 7887.12346, & - 7333.90490, 6805.43028, 6297.33773, & - 5805.78227, 5327.94995, 4859.88765, & - 4398.63854, 3942.81761, 3491.08449, & - 3043.04531, 2598.71608, 2157.94527, & - 1720.87444, 1287.52805, 858.02944, & - 432.71276, 8.10905, 0.00000 / - - data b68/0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00283, 0.01590, & - 0.04412, 0.08487, 0.13284, & - 0.18470, 0.23828, 0.29120, & - 0.34211, 0.39029, 0.43518, & - 0.47677, 0.51536, 0.55091, & - 0.58331, 0.61263, 0.63917, & - 0.66333, 0.68552, 0.70617, & - 0.72555, 0.74383, 0.76117, & - 0.77765, 0.79335, 0.80838, & - 0.82287, 0.83693, 0.85069, & - 0.86423, 0.87760, 0.89082, & - 0.90392, 0.91689, 0.92973, & - 0.94244, 0.95502, 0.96747, & - 0.97979, 0.99200, 1.00000 / - - data a96/1.00000, 2.35408, 4.51347, & - 7.76300, 12.43530, 19.26365, & - 29.33665, 44.05883, 65.28397, & - 95.48274, 137.90344, 196.76073, & - 277.45330, 386.81095, 533.37018, & - 727.67600, 982.60677, 1313.71685, & - 1739.59104, 2282.20281, 2967.26766, & - 3824.58158, 4888.33404, 6197.38450, & - 7795.49158, 9731.48414, 11969.71024, & - 14502.88894, 17304.52434, 20134.76139, & - 22536.63814, 24252.54459, 25230.65591, & - 25585.72044, 25539.91412, 25178.87141, & - 24644.84493, 23978.98781, 23245.49366, & - 22492.11600, 21709.93990, 20949.64473, & - 20225.94258, 19513.31158, 18829.32485, & - 18192.62250, 17589.39396, 17003.45386, & - 16439.01774, 15903.91204, 15396.39758, & - 14908.02140, 14430.65897, 13967.88643, & - 13524.16667, 13098.30227, 12687.56457, & - 12287.08757, 11894.41553, 11511.54106, & - 11139.22483, 10776.01912, 10419.75711, & - 10067.11881, 9716.63489, 9369.61967, & - 9026.69066, 8687.29884, 8350.04978, & - 8013.20925, 7677.12187, 7343.12994, & - 7011.62844, 6681.98102, 6353.09764, & - 6025.10535, 5699.10089, 5375.54503, & - 5053.63074, 4732.62740, 4413.38037, & - 4096.62775, 3781.79777, 3468.45371, & - 3157.19882, 2848.25306, 2541.19150, & - 2236.21942, 1933.50628, 1632.83741, & - 1334.35954, 1038.16655, 744.22318, & - 452.71094, 194.91899, 0.00000, & - 0.00000 / - - data b96/0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00193, & - 0.00974, 0.02538, 0.04876, & - 0.07817, 0.11081, 0.14514, & - 0.18007, 0.21486, 0.24866, & - 0.28088, 0.31158, 0.34030, & - 0.36701, 0.39210, 0.41554, & - 0.43733, 0.45774, 0.47707, & - 0.49540, 0.51275, 0.52922, & - 0.54495, 0.56007, 0.57459, & - 0.58850, 0.60186, 0.61471, & - 0.62715, 0.63922, 0.65095, & - 0.66235, 0.67348, 0.68438, & - 0.69510, 0.70570, 0.71616, & - 0.72651, 0.73675, 0.74691, & - 0.75700, 0.76704, 0.77701, & - 0.78690, 0.79672, 0.80649, & - 0.81620, 0.82585, 0.83542, & - 0.84492, 0.85437, 0.86375, & - 0.87305, 0.88229, 0.89146, & - 0.90056, 0.90958, 0.91854, & - 0.92742, 0.93623, 0.94497, & - 0.95364, 0.96223, 0.97074, & - 0.97918, 0.98723, 0.99460, & - 1.00000 / -!<--cjg -! -! Ultra high troposphere resolution - data a100/100.00000, 300.00000, 800.00000, & - 1762.35235, 3106.43596, 4225.71874, & - 4946.40525, 5388.77387, 5708.35540, & - 5993.33124, 6277.73673, 6571.49996, & - 6877.05339, 7195.14327, 7526.24920, & - 7870.82981, 8229.35361, 8602.30193, & - 8990.16936, 9393.46399, 9812.70768, & - 10248.43625, 10701.19980, 11171.56286, & - 11660.10476, 12167.41975, 12694.11735, & - 13240.82253, 13808.17600, 14396.83442, & - 15007.47066, 15640.77407, 16297.45067, & - 16978.22343, 17683.83253, 18415.03554, & - 19172.60771, 19957.34218, 20770.05022, & - 21559.14829, 22274.03147, 22916.87519, & - 23489.70456, 23994.40187, 24432.71365, & - 24806.25734, 25116.52754, 25364.90190, & - 25552.64670, 25680.92203, 25750.78675, & - 25763.20311, 25719.04113, 25619.08274, & - 25464.02630, 25254.49482, 24991.06137, & - 24674.32737, 24305.11235, 23884.79781, & - 23415.77059, 22901.76510, 22347.84738, & - 21759.93950, 21144.07284, 20505.73136, & - 19849.54271, 19179.31412, 18498.23400, & - 17809.06809, 17114.28232, 16416.10343, & - 15716.54833, 15017.44246, 14320.43478, & - 13627.01116, 12938.50682, 12256.11762, & - 11580.91062, 10913.83385, 10255.72526, & - 9607.32122, 8969.26427, 8342.11044, & - 7726.33606, 7122.34405, 6530.46991, & - 5950.98721, 5384.11279, 4830.01153, & - 4288.80090, 3760.55514, 3245.30920, & - 2743.06250, 2253.78294, 1777.41285, & - 1313.88054, 863.12371, 425.13088, & - 0.00000, 0.00000 / - - - data b100/0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00000, 0.00000, 0.00000, & - 0.00052, 0.00209, 0.00468, & - 0.00828, 0.01288, 0.01849, & - 0.02508, 0.03266, 0.04121, & - 0.05075, 0.06126, 0.07275, & - 0.08521, 0.09866, 0.11308, & - 0.12850, 0.14490, 0.16230, & - 0.18070, 0.20009, 0.22042, & - 0.24164, 0.26362, 0.28622, & - 0.30926, 0.33258, 0.35605, & - 0.37958, 0.40308, 0.42651, & - 0.44981, 0.47296, 0.49591, & - 0.51862, 0.54109, 0.56327, & - 0.58514, 0.60668, 0.62789, & - 0.64872, 0.66919, 0.68927, & - 0.70895, 0.72822, 0.74709, & - 0.76554, 0.78357, 0.80117, & - 0.81835, 0.83511, 0.85145, & - 0.86736, 0.88286, 0.89794, & - 0.91261, 0.92687, 0.94073, & - 0.95419, 0.96726, 0.97994, & - 0.99223, 1.00000 / - - data a104/ & - 1.8827062944e-01, 7.7977549145e-01, 2.1950593583e+00, & - 4.9874566624e+00, 9.8041418997e+00, 1.7019717163e+01, & - 2.7216579591e+01, 4.0518628401e+01, 5.6749646818e+01, & - 7.5513868331e+01, 9.6315093333e+01, 1.1866706195e+02, & - 1.4216835396e+02, 1.6653733709e+02, 1.9161605772e+02, & - 2.1735580129e+02, 2.4379516604e+02, 2.7103771847e+02, & - 2.9923284173e+02, 3.2856100952e+02, 3.5922338766e+02, & - 3.9143507908e+02, 4.2542117983e+02, 4.6141487902e+02, & - 4.9965698106e+02, 5.4039638379e+02, 5.8389118154e+02, & - 6.3041016829e+02, 6.8023459505e+02, 7.3366009144e+02, & - 7.9099869949e+02, 8.5258099392e+02, 9.1875827946e+02, & - 9.8990486716e+02, 1.0664204381e+03, 1.1487325074e+03, & - 1.2372990044e+03, 1.3326109855e+03, 1.4351954993e+03, & - 1.5456186222e+03, 1.6644886848e+03, 1.7924597105e+03, & - 1.9302350870e+03, 2.0785714934e+03, 2.2382831070e+03, & - 2.4102461133e+03, 2.5954035462e+03, 2.7947704856e+03, & - 3.0094396408e+03, 3.2405873512e+03, 3.4894800360e+03, & - 3.7574811281e+03, 4.0460585279e+03, 4.3567926151e+03, & - 4.6913848588e+03, 5.0516670674e+03, 5.4396113207e+03, & - 5.8573406270e+03, 6.3071403487e+03, 6.7914704368e+03, & - 7.3129785102e+03, 7.8745138115e+03, 8.4791420557e+03, & - 9.1301611750e+03, 9.8311179338e+03, 1.0585825354e+04, & - 1.1398380836e+04, 1.2273184781e+04, 1.3214959424e+04, & - 1.4228767429e+04, 1.5320029596e+04, 1.6494540743e+04, & - 1.7758482452e+04, 1.9118430825e+04, 2.0422798801e+04, & - 2.1520147587e+04, 2.2416813461e+04, 2.3118184510e+04, & - 2.3628790785e+04, 2.3952411814e+04, 2.4092209011e+04, & - 2.4050892106e+04, 2.3830930156e+04, 2.3434818358e+04, & - 2.2865410898e+04, 2.2126326004e+04, 2.1222420323e+04, & - 2.0160313690e+04, 1.8948920926e+04, 1.7599915822e+04, & - 1.6128019809e+04, 1.4550987232e+04, 1.2889169132e+04, & - 1.1164595563e+04, 9.4227665517e+03, 7.7259097899e+03, & - 6.1538244381e+03, 4.7808126007e+03, 3.5967415552e+03, & - 2.5886394104e+03, 1.7415964865e+03, 1.0393721271e+03, & - 4.6478852032e+02, 7.0308342481e-13, 0.0000000000e+00 / - - - data b104/ & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 0.0000000000e+00, & - 0.0000000000e+00, 0.0000000000e+00, 1.5648447298e-03, & - 6.2617046389e-03, 1.4104157933e-02, 2.5118187415e-02, & - 3.9340510972e-02, 5.6816335609e-02, 7.7596328431e-02, & - 1.0173255472e-01, 1.2927309709e-01, 1.6025505622e-01, & - 1.9469566981e-01, 2.3258141217e-01, 2.7385520518e-01, & - 3.1840233814e-01, 3.6603639170e-01, 4.1648734767e-01, & - 4.6939496013e-01, 5.2431098738e-01, 5.8071350676e-01, & - 6.3803478105e-01, 6.9495048840e-01, 7.4963750338e-01, & - 7.9975208897e-01, 8.4315257576e-01, 8.8034012292e-01, & - 9.1184389721e-01, 9.3821231526e-01, 9.6000677644e-01, & - 9.7779792223e-01, 9.9216315122e-01, 1.0000000000e+00 / - -! IFS-like L125(top 12 levels removed from IFSL137) - data a125/ 64., & - 86.895882, 107.415741, 131.425507, 159.279404, 191.338562, & - 227.968948, 269.539581, 316.420746, 368.982361, 427.592499, 492.616028, & - 564.413452, 643.339905, 729.744141, 823.967834, 926.344910, 1037.201172, & - 1156.853638, 1285.610352, 1423.770142, 1571.622925, 1729.448975, 1897.519287, & - 2076.095947, 2265.431641, 2465.770508, 2677.348145, 2900.391357, 3135.119385, & - 3381.743652, 3640.468262, 3911.490479, 4194.930664, 4490.817383, 4799.149414, & - 5119.895020, 5452.990723, 5798.344727, 6156.074219, 6526.946777, 6911.870605, & - 7311.869141, 7727.412109, 8159.354004, 8608.525391, 9076.400391, 9562.682617, & - 10065.978516, 10584.631836, 11116.662109, 11660.067383, 12211.547852, 12766.873047, & - 13324.668945, 13881.331055, 14432.139648, 14975.615234, 15508.256836, 16026.115234, & - 16527.322266, 17008.789063, 17467.613281, 17901.621094, 18308.433594, 18685.718750, & - 19031.289063, 19343.511719, 19620.042969, 19859.390625, 20059.931641, 20219.664063, & - 20337.863281, 20412.308594, 20442.078125, 20425.718750, 20361.816406, 20249.511719, & - 20087.085938, 19874.025391, 19608.572266, 19290.226563, 18917.460938, 18489.707031, & - 18006.925781, 17471.839844, 16888.687500, 16262.046875, 15596.695313, 14898.453125, & - 14173.324219, 13427.769531, 12668.257813, 11901.339844, 11133.304688, 10370.175781, & - 9617.515625, 8880.453125, 8163.375000, 7470.343750, 6804.421875, 6168.531250, & - 5564.382813, 4993.796875, 4457.375000, 3955.960938, 3489.234375, 3057.265625, & - 2659.140625, 2294.242188, 1961.500000, 1659.476563, 1387.546875, 1143.250000, & - 926.507813, 734.992188, 568.062500, 424.414063, 302.476563, 202.484375, & - 122.101563, 62.781250, 22.835938, 3.757813, 0.000000, 0.000000 / - - data b125/ 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, & - 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, & - 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, & - 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, & - 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, & - 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, & - 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, & - 0.000000, 0.000007, 0.000024, 0.000059, 0.000112, 0.000199, & - 0.000340, 0.000562, 0.000890, 0.001353, 0.001992, 0.002857, & - 0.003971, 0.005378, 0.007133, 0.009261, 0.011806, 0.014816, & - 0.018318, 0.022355, 0.026964, 0.032176, 0.038026, 0.044548, & - 0.051773, 0.059728, 0.068448, 0.077958, 0.088286, 0.099462, & - 0.111505, 0.124448, 0.138313, 0.153125, 0.168910, 0.185689, & - 0.203491, 0.222333, 0.242244, 0.263242, 0.285354, 0.308598, & - 0.332939, 0.358254, 0.384363, 0.411125, 0.438391, 0.466003, & - 0.493800, 0.521619, 0.549301, 0.576692, 0.603648, 0.630036, & - 0.655736, 0.680643, 0.704669, 0.727739, 0.749797, 0.770798, & - 0.790717, 0.809536, 0.827256, 0.843881, 0.859432, 0.873929, & - 0.887408, 0.899900, 0.911448, 0.922096, 0.931881, 0.940860, & - 0.949064, 0.956550, 0.963352, 0.969513, 0.975078, 0.980072, & - 0.984542, 0.988500, 0.991984, 0.995003, 0.997630, 1.000000 / - - select case (km) - - case (24) - + + if (trim(scm_state%npz_type) == 'superC' .or. trim(scm_state%npz_type) == 'superK') then + auto_routine = 1 + select case (km) + case (20) + ptop = 56.e2 + pint = ptop + stretch_fac = 1.03 + case (24) + ptop = 56.e2 + pint = ptop + stretch_fac = 1.03 + case (30) + ptop = 56.e2 + pint = ptop + stretch_fac = 1.03 + case (40) + ptop = 56.e2 + pint = ptop + stretch_fac = 1.03 + case (50) + ptop = 56.e2 + pint = ptop + stretch_fac = 1.03 + case (60) + ptop = 56.e2 + pint = ptop + stretch_fac = 1.03 + case (80) + ptop = 56.e2 + pint = ptop + stretch_fac = 1.03 + case (90) ! super-duper cell + ptop = 40.e2 + stretch_fac = 1.025 + auto_routine = 2 + end select + else if (trim(scm_state%npz_type) == 'input') then + + !> - Open the appropriate file. + open(unit=1, file=scm_state%vert_coord_file, status='old', action='read', iostat=ierr) + if(ierr /= 0) then + write(*,*) 'There was an error opening the file ', scm_state%vert_coord_file, ' in the run directory. & + Error code = ',ierr + stop + endif + + !> The file being read in must have the following format: + !! include a single line description: number of coefficients, number of layers + !! ak/bk pairs, with each pair occupying a single line + !! the pairs must be ordered from surface to TOA + !! the pairs define the interfaces of the grid to create levels-1 layer + + !> - The first line contains the number of coefficients and number of levels + read(1,*) dummy, n_levels_file + if (n_levels_file /= scm_state%n_levels) then + write(*,*) 'There is a mismatch in the number of levels expected and the number of coefficients supplied in the file ',scm_state%vert_coord_file + stop + end if + !> - Read in the coefficient data. + do k=1, km+1 + read(1,*) scm_state%a_k(k), scm_state%b_k(k) + end do + close(1) + + ! flip scm_state%a_k, scm_state%b_k in vertical (a_k and b_k are expected to be TOA-to-surface at this point) + mid_index = (km+1)/2 + last_index = km+1 + do k = 1, mid_index + ak_tmp = scm_state%a_k(k) + bk_tmp = scm_state%b_k(k) + scm_state%a_k(k) = scm_state%a_k(last_index) + scm_state%b_k(k) = scm_state%b_k(last_index) + scm_state%a_k(last_index) = ak_tmp + scm_state%b_k(last_index) = bk_tmp + last_index = last_index - 1 + end do + + else + select case (km) + case (5,10) ! does this work???? + ! Equivalent Shallow Water: for modon test + ptop = 500.e2 + ks = 0 + do k=1,km+1 + scm_state%b_k(k) = real(k-1) / real (km) + scm_state%a_k(k) = ptop*(1.-scm_state%b_k(k)) + enddo + case (24) ks = 5 do k=1,km+1 scm_state%a_k(k) = a24(k) scm_state%b_k(k) = b24(k) enddo - - case (26) - + case (26) ks = 7 do k=1,km+1 scm_state%a_k(k) = a26(k) scm_state%b_k(k) = b26(k) enddo - + case (30) ! For Baroclinic Instability Test + ptop = 2.26e2 + pint = 250.E2 + stretch_fac = 1.03 + auto_routine = 1 + case (31) ! N = 4, M=2 + if (trim(scm_state%npz_type) == 'lowtop') then + ptop = 300. + pint = 100.E2 + stretch_fac = 1.035 + auto_routine = 5 + else + ptop = 100. + stretch_fac = 1.035 + auto_routine = 1 + endif case (32) -#ifdef OLD_32 - ks = 13 ! high-res trop_32 setup -#else + if (trim(scm_state%npz_type) == 'old32') then + ks = 13 ! high-res trop_32 setup + do k=1,km+1 + scm_state%a_k(k) = a32old(k) + scm_state%b_k(k) = b32old(k) + enddo + elseif (trim(scm_state%npz_type) == 'lowtop') then + ptop = 100. + stretch_fac = 1.035 + auto_routine = 1 + else + ks = 7 + do k=1,km+1 + scm_state%a_k(k) = a32(k) + scm_state%b_k(k) = b32(k) + enddo + endif + !miz + case (33) ks = 7 -#endif do k=1,km+1 - scm_state%a_k(k) = a32(k) - scm_state%b_k(k) = b32(k) + scm_state%a_k(k) = a33(k) + scm_state%b_k(k) = b33(k) enddo - - case (47) - ! ks = 27 ! high-res trop-strat - ks = 20 ! Oct 23, 2012 - do k=1,km+1 - scm_state%a_k(k) = a47(k) - scm_state%b_k(k) = b47(k) - enddo - + !miz + case (39) ! N = 5 + ptop = 100. + stretch_fac = 1.035 + auto_routine = 1 + case (40) + ptop = 50.e2 ! For super cell test + pint = 300.E2 + stretch_fac = 1.03 + auto_routine = 1 + case (41) + ptop = 100. + pint = 100.E2 + stretch_fac = 1.035 + auto_routine = 1 + case (47) + if (trim(scm_state%npz_type) == 'lowtop') then + ptop = 100. + stretch_fac = 1.035 + auto_routine = 1 + else + ! ks = 27 ! high-res trop-strat + ks = 20 ! Oct 23, 2012 + do k=1,km+1 + scm_state%a_k(k) = a47(k) + scm_state%b_k(k) = b47(k) + enddo + endif case (48) ks = 28 do k=1,km+1 scm_state%a_k(k) = a48(k) scm_state%b_k(k) = b48(k) enddo - - case (52) - ks = 35 ! pint = 223 + case (50) + ! ! *Very-low top: for idealized super-cell simulation: + ! ptop = 50.e2 + ! pint = 250.E2 + ! stretch_fac = 1.03 + ! auto_routine = 1 + ks = 19 do k=1,km+1 - scm_state%a_k(k) = a52(k) - scm_state%b_k(k) = b52(k) + scm_state%a_k(k) = a50(k) + scm_state%b_k(k) = b50(k) enddo - + case (51) + if (trim(scm_state%npz_type) == 'lowtop') then + ptop = 100. + stretch_fac = 1.03 + auto_routine = 1 + elseif (trim(scm_state%npz_type) == 'meso') then + ptop = 20.E2 + pint = 100.E2 + stretch_fac = 1.05 + auto_routine = 1 + elseif (trim(scm_state%npz_type) == 'meso2') then + ptop = 1.E2 + pint = 100.E2 + stretch_fac = 1.05 + auto_routine = 6 + else + ptop = 100. + pint = 100.E2 + stretch_fac = 1.035 + auto_routine = 1 + endif + case (52) + if (trim(scm_state%npz_type) == 'rce') then + ptop = 30.e2 ! for special DPM RCE experiments + stretch_fac = 1.03 + auto_routine = 1 + else + ks = 35 ! pint = 223 + do k=1,km+1 + scm_state%a_k(k) = a52(k) + scm_state%b_k(k) = b52(k) + enddo + endif case (54) ks = 11 ! pint = 109.4 do k=1,km+1 scm_state%a_k(k) = a54(k) scm_state%b_k(k) = b54(k) enddo - + case (55) ! Mid-top: ! N = 7 + ptop = 10. + pint = 100.E2 + stretch_fac = 1.035 + auto_routine = 1 case (56) ks = 26 do k=1,km+1 scm_state%a_k(k) = a56(k) scm_state%b_k(k) = b56(k) enddo - case (60) - ks = 37 - do k=1,km+1 - scm_state%a_k(k) = a60(k) - scm_state%b_k(k) = b60(k) - enddo - - + if (trim(scm_state%npz_type) == 'gfs') then + ks = 20 + do k=1,km+1 + scm_state%a_k(k) = a60gfs(k) + scm_state%b_k(k) = b60gfs(k) + enddo + else if (trim(scm_state%npz_type) == 'BCwave') then + ptop = 3.e2 + ! pint = 250.E2 + pint = 300.E2 ! revised for Moist test + stretch_fac = 1.03 + auto_routine = 1 + else if (trim(scm_state%npz_type) == 'meso') then + ptop = 40.e2 + pint = 250.E2 + stretch_fac = 1.03 + auto_routine = 1 + else + ks = 19 + do k=1,km+1 + scm_state%a_k(k) = a60(k) + scm_state%b_k(k) = b60(k) + enddo + endif + case (63) + if (trim(scm_state%npz_type) == 'meso') then + ks = 11 + do k=1,km+1 + scm_state%a_k(k) = a63meso(k) + scm_state%b_k(k) = b63meso(k) + enddo + elseif (trim(scm_state%npz_type) == 'hitop') then + ptop = 1. ! high top + pint = 100.E2 + stretch_fac = 1.035 + auto_routine = 1 + else!if (trim(scm_state%npz_type) == 'gfs') then + !Used for SHiELD + ! GFS L64 equivalent setting + ks = 23 + do k=1,km+1 + scm_state%a_k(k) = a63(k) + scm_state%b_k(k) = b63(k) + enddo + endif case (64) -#ifdef GFSL64 - ks = 23 -#else - ks = 46 -#endif - do k=1,km+1 - scm_state%a_k(k) = a64(k) - scm_state%b_k(k) = b64(k) - enddo - !-->cjg + if (trim(scm_state%npz_type) == 'gfs') then + ks = 23 + do k=1,km+1 + scm_state%a_k(k) = a64gfs(k) + scm_state%b_k(k) = b64gfs(k) + enddo + else + ks = 46 + do k=1,km+1 + scm_state%a_k(k) = a64(k) + scm_state%b_k(k) = b64(k) + enddo + endif + !-->cjg case (68) ks = 27 do k=1,km+1 scm_state%a_k(k) = a68(k) scm_state%b_k(k) = b68(k) enddo - + case (71) ! N = 9 + ptop = 1. + stretch_fac = 1.03 + auto_routine = 1 + case (75) ! HS-SGO test configuration + pint = 100.E2 + ptop = 10.E2 + stretch_fac = 1.035 + auto_routine = 6 + case (79) ! N = 10, M=5 + if (trim(scm_state%npz_type) == 'gcrm') then + pint = 100.E2 + ptop = 3.E2 + stretch_fac = 1.035 + auto_routine = 6 + else + ptop = 1. + stretch_fac = 1.03 + auto_routine = 1 + endif + case (90) ! super-duper cell + ptop = 40.e2 + stretch_fac = 1.025 + auto_routine = 2 + case (91) ! NGGPS_GFS + pint = 100.E2 + ptop = 40. + stretch_fac = 1.029 + auto_routine = 6 + case (95) + ! Mid-top settings: + pint = 100.E2 + ptop = 20. + stretch_fac = 1.029 + auto_routine = 6 case (96) ks = 27 do k=1,km+1 scm_state%a_k(k) = a96(k) scm_state%b_k(k) = b96(k) enddo - !<--cjg - + !<--cjg case (100) ks = 38 do k=1,km+1 scm_state%a_k(k) = a100(k) scm_state%b_k(k) = b100(k) enddo - case (104) ks = 73 do k=1,km+1 scm_state%a_k(k) = a104(k) scm_state%b_k(k) = b104(k) enddo - -#ifndef TEST_GWAVES - case (10) - !-------------------------------------------------- - ! Pure sigma-coordinate with uniform spacing in "z" - !-------------------------------------------------- - ! - pt = 2000. ! model top pressure (pascal) - ! pt = 100. ! 1 mb - press(1) = pt - press(km+1) = p0 - dlnp = (log(p0) - log(pt)) / real(km) - - lnpe = log(press(km+1)) - do k=km,2,-1 - lnpe = lnpe - dlnp - press(k) = exp(lnpe) - enddo - - ! Search KS - ks = 0 - do k=1,km - if(press(k) >= pc) then - ks = k-1 - goto 123 - endif - enddo -123 continue - - if(ks /= 0) then - do k=1,ks - scm_state%a_k(k) = press(k) - scm_state%b_k(k) = 0. - enddo - endif - - pint = press(ks+1) - do k=ks+1,km - scm_state%a_k(k) = pint*(press(km)-press(k))/(press(km)-pint) - scm_state%b_k(k) = (press(k) - scm_state%a_k(k)) / press(km+1) - enddo - scm_state%a_k(km+1) = 0. - scm_state%b_k(km+1) = 1. - - ! do k=2,km - ! scm_state%b_k(k) = real(k-1) / real(km) - ! scm_state%a_k(k) = pt * ( 1. - scm_state%b_k(k) ) - ! enddo -#endif - -! The following 4 selections are better for non-hydrostatic -! Low top: - case (31) - ptop = 300. - pint = 100.E2 - call var_dz(km, scm_state%a_k, scm_state%b_k, ptop, ks, pint, 1.035) -#ifndef TEST_GWAVES - case (41) - ptop = 100. - pint = 100.E2 - call var_hi(km, scm_state%a_k, scm_state%b_k, ptop, ks, pint, 1.035) -#endif - case (51) - ptop = 100. - pint = 100.E2 - call var_hi(km, scm_state%a_k, scm_state%b_k, ptop, ks, pint, 1.035) - ! Mid-top: - case (55) - ptop = 10. - pint = 100.E2 - ! call var_dz(km, scm_state%a_k, scm_state%b_k, ptop, ks, pint, 1.035) - call var_hi(km, scm_state%a_k, scm_state%b_k, ptop, ks, pint, 1.035) -#ifdef USE_GFSL63 -! GFS L64 equivalent setting - case (63) - ks = 23 - ptop = a63(1) - pint = a63(ks+1) - do k=1,km+1 - scm_state%a_k(k) = a63(k) - scm_state%b_k(k) = b63(k) - enddo -#else - case (63) - ptop = 1. ! high top - pint = 100.E2 - call var_hi(km, scm_state%a_k, scm_state%b_k, ptop, ks, pint, 1.035) -#endif -! NGGPS_GFS - case (91) - pint = 100.E2 - ptop = 40. - call var_gfs(km, scm_state%a_k, scm_state%b_k, ptop, ks, pint, 1.029) - case (95) - ! Mid-top settings: - pint = 100.E2 - ptop = 20. - call var_gfs(km, scm_state%a_k, scm_state%b_k, ptop, ks, pint, 1.028) - case (127) - ptop = 1. - pint = 75.E2 - call var_gfs(km, scm_state%a_k, scm_state%b_k, ptop, ks, pint, 1.028) - ! IFS-like L125 + ! IFS-like L125 case (125) ks = 33 ptop = a125(1) @@ -1218,43 +420,73 @@ subroutine get_FV3_vgrid(scm_input, scm_state) scm_state%a_k(k) = a125(k) scm_state%b_k(k) = b125(k) enddo + case (127) ! N = 10, M=5 + if (trim(scm_state%npz_type) == 'hitop') then + ptop = 1. + stretch_fac = 1.03 + auto_routine = 2 + else + ptop = 1. + pint = 75.E2 + stretch_fac = 1.028 + auto_routine = 6 + endif + case (151) + !LES applications + ptop = 75.e2 + pint = 500.E2 + stretch_fac = 1.01 + auto_routine = 3 case default + if(trim(scm_state%npz_type) == 'hitop') then + ptop = 1. + pint = 100.E2 + elseif(trim(scm_state%npz_type) == 'midtop') then + ptop = 10. + pint = 100.E2 + elseif(trim(scm_state%npz_type) == 'lowtop') then + ptop = 1.E2 + pint = 100.E2 + endif -#ifdef TEST_GWAVES -!-------------------------------------------------- -! Pure sigma-coordinate with uniform spacing in "z" -!-------------------------------------------------- - call gw_1d(km, 1000.E2, scm_state%a_k, scm_state%b_k, ptop, 10.E3, pt1) - ks = 0 - pint = scm_state%a_k(1) -#else - -!---------------------------------------------------------------- -! Sigma-coordinate with uniform spacing in sigma and ptop = 1 mb -!---------------------------------------------------------------- - pt = 100. - ! One pressure layer - ks = 1 - ! pint = pt + 0.5*1.E5/real(km) ! SJL: 20120327 - pint = pt + 1.E5/real(km) - - scm_state%a_k(1) = pt - scm_state%b_k(1) = 0. - scm_state%a_k(2) = pint - scm_state%b_k(2) = 0. - - do k=3,km+1 - scm_state%b_k(k) = real(k-2) / real(km-1) - scm_state%a_k(k) = pint - scm_state%b_k(k)*pint - enddo - scm_state%a_k(km+1) = 0. - scm_state%b_k(km+1) = 1. -#endif + if (trim(scm_state%npz_type) == 'gfs') then + auto_routine = 6 + elseif(trim(scm_state%npz_type) == 'les') then + auto_routine = 3 + elseif(trim(scm_state%npz_type) == 'mountain_wave') then + auto_routine = 4 + elseif (km > 79) then + auto_routine = 2 + else + auto_routine = 1 + endif + end select + endif ! superC/superK + + select case (auto_routine) + case (1) + call var_hi(km, scm_state%a_k, scm_state%b_k, ptop, ks, pint, stretch_fac) + case (2) + call var_hi2(km, scm_state%a_k, scm_state%b_k, ptop, ks, pint, stretch_fac) + case (3) + call var_les(km, scm_state%a_k, scm_state%b_k, ptop, ks, pint, stretch_fac) + case (4) + call mount_waves(km, scm_state%a_k, scm_state%b_k, ptop, ks, pint) + case (5) + call var_dz(km, scm_state%a_k, scm_state%b_k, ptop, ks, pint, stretch_fac) + case (6) + call var_gfs(km, scm_state%a_k, scm_state%b_k, ptop, ks, pint, stretch_fac) end select - - ptop = scm_state%a_k(1) - pint = scm_state%a_k(ks+1) - + + call check_eta_levels (scm_state%a_k, scm_state%b_k) + + if (verbose) then + write(*, '(A4, A13, A13, A11)') 'klev', 'ak', 'bk', 'p_ref' + do k=1,km+1 + write(*,'(I4, F13.5, F13.5, F11.2)') k, scm_state%a_k(k), scm_state%b_k(k), 1000.E2*scm_state%b_k(k) + scm_state%a_k(k) + enddo + endif + !> - Calculate interface pressures, sigma, and exner function. ! flip scm_state%a_k, scm_state%b_k in vertical @@ -1291,14 +523,189 @@ subroutine get_FV3_vgrid(scm_input, scm_state) end subroutine get_FV3_vgrid -subroutine var_dz(km, ak, bk, ptop, ks, pint, s_rate) +subroutine var_hi(km, ak, bk, ptop, ks, pint, s_rate) + integer, intent(in):: km + real, intent(in):: ptop + real, intent(in):: s_rate !< between [1. 1.1] + real, intent(out):: ak(km+1), bk(km+1) + real, intent(inout):: pint + integer, intent(out):: ks +! Local + real, parameter:: p00 = 1.E5 + real, dimension(km+1):: ze, pe1, peln, eta + real, dimension(km):: dz, s_fac, dlnp + real ztop, t0, dz0, sum1, tmp1 + real ep, es, alpha, beta, gama +!---- Tunable parameters: + integer:: k_inc = 15 ! p - do k=1,km+1 - pe1(k) = p0*( (1.-s0/t0) + s0/t0*exp(-n2*ze(k)/con_g) )**(1./con_rocp) - enddo - - ptop = pe1(1) -! if ( verbose ) write(*,*) 'GW_1D: computed model top (pa)=', ptop - -! Set up "sigma" coordinate - ak(1) = pe1(1) - bk(1) = 0. - do k=2,km - bk(k) = (pe1(k) - pe1(1)) / (pe1(km+1)-pe1(1)) ! bk == sigma - ak(k) = pe1(1)*(1.-bk(k)) - enddo - ak(km+1) = 0. - bk(km+1) = 1. - - do k=1,km+1 - pk1(k) = pe1(k) ** con_rocp - enddo - -! Compute volume mean potential temperature with hydrostatic eqn: - do k=1,km - pt1(k) = con_g*dz1(k) / ( con_cp*(pk1(k+1)-pk1(k)) ) - enddo - - end subroutine gw_1d +end subroutine check_eta_levels !> This subroutine calculates the pressure and exner function at grid centers and interface levels given a surface pressure and interface-level GFS grid coefficients. !! This subroutine should be called to update the pressures of the model levels as the surface pressure of the column changes. diff --git a/scm/src/suite_info.py b/scm/src/suite_info.py new file mode 100755 index 000000000..0fdb48a49 --- /dev/null +++ b/scm/src/suite_info.py @@ -0,0 +1,63 @@ +class suite(object): + + DEFAULT_MAX_TIMESTEP = 1800.0 + + def __init__(self, name, tracers, namelist, timestep, max_timestep, supported): + self._name = name #should remain unchanged after init + self._default_tracers = tracers #should remain unchanged after init + self._default_namelist = namelist #should remain unchanged after init + self.tracers = self._default_tracers #can be modified after init + self.namelist = self._default_namelist #can be modified after init + self._supported = supported + + if max_timestep > 0: + self._max_timestep = max_timestep #should remain unchanged after init + else: + self._max_timestep = DEFAULT_MAX_TIMESTEP + + if timestep <= self._max_timestep and timestep > 0: + self._default_timestep = timestep #should remain unchanged after init + self.timestep = self._default_timestep #can be modified after init + elif timestep <= 0: + self.timestep = None #use the default dt in the SCM code + else: + message = 'The timestep for suite {0} cannot be set greater than the max_timestep of {1}'.format(self._name, self._max_timestep) + raise Exception(message) + + @property + def timestep(self): + """Get the timestep for the given suite.""" + return self.timestep + + @timestep.setter + def timestep(self, value): + """Set the timestep for the given suite.""" + if value <= self._max_timestep: + self.timestep = value + else: + message = 'The timestep for suite {0} cannot be set greater than the max_timestep of {1}'.format(self._name, self._max_timestep) + raise Exception(message) + +suite_list = [] +suite_list.append(suite('SCM_GFS_v15p2', 'tracers_GFS_v15p2.txt', 'input_GFS_v15p2.nml', 600.0, 1800.0, True )) +suite_list.append(suite('SCM_GFS_v16', 'tracers_GFS_v16.txt', 'input_GFS_v16.nml', 600.0, 1800.0, True )) +suite_list.append(suite('SCM_GSD_v1', 'tracers_gsd.txt', 'input_GSD_v1.nml', 600.0, 600.0 , True )) +suite_list.append(suite('SCM_RRFS_v1alpha', 'tracers_RRFS_v1alpha.txt', 'input_RRFS_v1alpha.nml', 600.0, 600.0 , True )) +suite_list.append(suite('SCM_csawmg', 'tracers_csawmg.txt', 'input_csawmg.nml', 600.0, 1800.0, True )) + +suite_list.append(suite('SCM_GFS_v15p2_RRTMGP', 'tracers_GFS_v15p2.txt', 'input_GFS_v15p2_RRTMGP.nml', 600.0, 1800.0, False)) +suite_list.append(suite('SCM_GFS_v15p2_no_nsst', 'tracers_GFS_v15p2.txt', 'input_GFS_v15p2.nml', 600.0, 1800.0, False)) +suite_list.append(suite('SCM_GFS_v15p2_noahmp', 'tracers_GFS_v15p2.txt', 'input_GFS_v15p2_noahmp.nml', 600.0, 1800.0, False)) +suite_list.append(suite('SCM_GFS_v15p2_MYJ', 'tracers_GFS_v15p2.txt', 'input_GFS_v15p2_MYJ.nml', 600.0, 1800.0, False)) +suite_list.append(suite('SCM_GFS_v15p2_YSU', 'tracers_GFS_v15p2.txt', 'input_GFS_v15p2_YSU.nml', 600.0, 1800.0, False)) +suite_list.append(suite('SCM_GFS_v15p2_saYSU', 'tracers_GFS_v15p2.txt', 'input_GFS_v15p2_saYSU.nml', 600.0, 1800.0, False)) +suite_list.append(suite('SCM_GFS_v15p2_ACM', 'tracers_GFS_v15p2.txt', 'input_GFS_v15p2_ACM.nml', 600.0, 1800.0, False)) +suite_list.append(suite('SCM_GFS_v16_RRTMGP', 'tracers_GFS_v16.txt', 'input_GFS_v16_RRTMGP.nml', 600.0, 1800.0, False)) +suite_list.append(suite('SCM_GFS_v16_no_nsst', 'tracers_GFS_v16.txt', 'input_GFS_v16.nml', 600.0, 1800.0, False)) +suite_list.append(suite('HAFS_v0_hwrf', 'tracers_HAFS_v0_hwrf.txt', 'input_HAFS_v0_hwrf.nml', 600.0, 1800.0, False)) +suite_list.append(suite('HAFS_v0_hwrf_thompson', 'tracers_HAFS_v0_hwrf_thompson.txt', 'input_HAFS_v0_hwrf_thompson.nml', 600.0, 600.0 , False)) +suite_list.append(suite('SCM_GSD_v1nssl', 'tracers_gsd_nssl.txt', 'input_GSD_v1nssl.nml', 600.0, 600.0 , False)) +suite_list.append(suite('SCM_RRFS_v1nssl', 'tracers_RRFS_v1nssl_nohail_noccn.txt', 'input_RRFS_v1nssl_nohailnoccn.nml', 600.0, 600.0 , False)) + + + diff --git a/test/rt.sh b/test/rt.sh index 94a8798be..a8189c590 100755 --- a/test/rt.sh +++ b/test/rt.sh @@ -229,9 +229,9 @@ for compiler in "${compilers[@]}"; do BUILD_OUTPUT=${BIN_DIR}/build.out if [ "${build_type}" == "Debug" ] ; then # Add --runtime ${runtime} to multi_run_scm.py to reduce runtime for tests - test_run_cmd="${RUN_DIR}/multi_run_scm.py -f ${TEST_DIR}/rt_test_cases.py -v --runtime 86400" # 1 day + test_run_cmd="${BIN_DIR}/multi_run_scm.py -f ${TEST_DIR}/rt_test_cases.py -v --runtime_mult 0.1 --run_dir ${RUN_DIR}" else - test_run_cmd="${RUN_DIR}/multi_run_scm.py -f ${TEST_DIR}/rt_test_cases.py -v --timer --runtime 259200" # 3 days + test_run_cmd="${BIN_DIR}/multi_run_scm.py -f ${TEST_DIR}/rt_test_cases.py -v --timer --runtime_mult 0.1 --run_dir ${RUN_DIR}" fi . ${ETC_DIR}/${machine}_setup_${compiler}.sh @@ -261,8 +261,6 @@ for compiler in "${compilers[@]}"; do if [ -d "${RUN_DIR}" ] ; then rm -rf ${RUN_DIR}; fi mkdir ${RUN_DIR} cd ${RUN_DIR} - ln -s ${BIN_DIR}/${executable_name} ${executable_name} - ln -s ${SRC_DIR}/multi_run_scm.py multi_run_scm.py ln -s ${SRC_DIR}/run_scm.py run_scm.py job_name=${job_prefix}_${compiler}_${build_type_lc} if ${use_batch_system} ; then