From f9453f90d02cd53330e8259c26dd5b30d7038d6f Mon Sep 17 00:00:00 2001 From: Yi-Cheng Teng - NOAA GFDL <143743249+yichengt900@users.noreply.github.com> Date: Wed, 10 Jan 2024 09:44:57 -0500 Subject: [PATCH] Add GHA and RT scripts (#1) * Add CI and RT scripts * Rename RT.yaml * Rm RT.xml and mod ci bash script * mod RT.yaml * Update create_run_xml_from_template.bash * Modify workdir name --- .github/workflows/NWA12_RT.yaml | 34 + ...m6_cobalt_1D.yaml => mom6_cobalt_1D._yaml} | 0 ci/compile_ocean_ice_cobalt.xml | 121 +++ ci/create_run_xml_from_template.bash | 162 ++++ ci/ocean_ice_cobalt_experiments.template.xml | 692 ++++++++++++++++++ ci/platforms.xml | 76 ++ 6 files changed, 1085 insertions(+) create mode 100644 .github/workflows/NWA12_RT.yaml rename .github/workflows/{mom6_cobalt_1D.yaml => mom6_cobalt_1D._yaml} (100%) create mode 100644 ci/compile_ocean_ice_cobalt.xml create mode 100755 ci/create_run_xml_from_template.bash create mode 100644 ci/ocean_ice_cobalt_experiments.template.xml create mode 100644 ci/platforms.xml diff --git a/.github/workflows/NWA12_RT.yaml b/.github/workflows/NWA12_RT.yaml new file mode 100644 index 0000000..4c69e28 --- /dev/null +++ b/.github/workflows/NWA12_RT.yaml @@ -0,0 +1,34 @@ +# This is a basic workflow to help you get started with Actions + +name: NWA12_RT + +# Controls when the workflow will run +on: + # Triggers the workflow on push or pull request events but only for the "main" branch + push: + branches: [ "dev/cefi" ] + pull_request: + branches: [ "dev/cefi" ] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "build" + build: + # The type of runner that the job will run on + runs-on: self-hosted + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - name: Checkout Repository + uses: actions/checkout@v3 + + # Run create_run_xml_from_template.bash + - name: create and run FRE xml + run: | + pwd + cd ci + bash create_run_xml_from_template.bash diff --git a/.github/workflows/mom6_cobalt_1D.yaml b/.github/workflows/mom6_cobalt_1D._yaml similarity index 100% rename from .github/workflows/mom6_cobalt_1D.yaml rename to .github/workflows/mom6_cobalt_1D._yaml diff --git a/ci/compile_ocean_ice_cobalt.xml b/ci/compile_ocean_ice_cobalt.xml new file mode 100644 index 0000000..3a57845 --- /dev/null +++ b/ci/compile_ocean_ice_cobalt.xml @@ -0,0 +1,121 @@ + + + +Make the executable for cefi ocean-ice-cobalt experiments. + + + + FMS.git + + + + -Duse_libMPI -Duse_netCDF $(F2003_FLAGS) -DMAXFIELDMETHODS_=600 + + + + + + + MOM6.git + + + + + + + + + + SIS2.git + + + + + + + + + + + icebergs.git + + + + + + + + ice_param.git + + + + + + + + land_null.git + + + + + + + atmos_null.git + + + + $(F2003_FLAGS) + + + + + + + + coupler.git + + + + + + + + + diff --git a/ci/create_run_xml_from_template.bash b/ci/create_run_xml_from_template.bash new file mode 100755 index 0000000..76f9a9c --- /dev/null +++ b/ci/create_run_xml_from_template.bash @@ -0,0 +1,162 @@ +#!/bin/bash + +# --- get current date --- +CURRENT_DATE=$(date "+%Y%m%d%H%M") + +# --- submodules from MOM6_OBGC_examples --- + +submodules="FMS MOM6 ocean_BGC SIS2 atmos_null coupler ice_param icebergs land_null" + +# --- get the remote URL for ocean_BGC & MOM6 repos +pushd ../ +git config --file .gitmodules --get submodule.src/ocean_BGC.url +export OBGC_SUBMODULE_URL=$(git config --file .gitmodules --get submodule.src/ocean_BGC.url | sed 's|/ocean_BGC\.git$||') +git config --file .gitmodules --get submodule.src/MOM6.url +export MOM6_SUBMODULE_URL=$(git config --file .gitmodules --get submodule.src/MOM6.url | sed 's|/MOM6\.git$||') +popd + +# --- get the hash for the various repos +if [ -f ocean_ice_cobalt_experiments.xml ]; then rm -rf ocean_ice_cobalt_experiments.xml ; fi +pushd ../ +for mod in $submodules ; do + export hash_${mod}=$( git submodule status | grep $mod | awk '{print $1}' | cut -c 2-10 ) +done +popd + +echo "Current date: " $CURRENT_DATE +echo "MOM6 tag: " $hash_MOM6 +echo "ocean_BGC tag: " $hash_ocean_BGC +echo "SIS2 tag: " $hash_SIS2 +echo "ICEBREGS tag: " $hash_icebergs +echo "ICE_PARAM tag: " $hash_ice_param +echo "COUPLER tag: " $hash_coupler +echo "FMS tag: " $hash_FMS +echo "ATMOS tag: " $hash_atmos_null +echo "LAND tag: " $hash_land_null +echo "MOM6_SUBMODULE_URL: " $MOM6_SUBMODULE_URL +echo "OBGC_MOM6_SUBMODULE_URL: " $OBGC_SUBMODULE_URL + +# --- replace the hashes in the xml template + +cat ocean_ice_cobalt_experiments.template.xml | sed -e "s//$hash_FMS/g" \ + -e "s//$hash_coupler/g" \ + -e "s//$hash_SIS2/g" \ + -e "s//$hash_icebergs/g" \ + -e "s//$hash_ice_param/g" \ + -e "s//$hash_MOM6/g" \ + -e "s//$hash_ocean_BGC/g" \ + -e "s//$hash_land_null/g" \ + -e "s//$hash_atmos_null/g" \ + -e "s||$MOM6_SUBMODULE_URL|g" \ + -e "s||$OBGC_SUBMODULE_URL|g" \ + -e "s//$CURRENT_DATE/g" \ + > ocean_ice_cobalt_experiments.xml + + +# -- clean up tmp folders or runs from previos runs +echo "remove MOM6_OBGC_examples folder" +rm -rf MOM6_OBGC_examples + +workflow_directory="/lustre/f2/dev/Yi-cheng.Teng/github/cefi_NWA12_regression_${CURRENT_DATE}" +# Check if the directory exists +if [ -d "$workflow_directory" ]; then + # If it exists, remove it + echo "Removing workflow directory: $workflow_directory" + rm -rf "$workflow_directory" +else + echo "Workflow directory does not exist: $workflow_directory" +fi + +# Now compile mom6-sis2-cobalt +module use -a /ncrc/home2/fms/local/modulefiles +module load fre/bronx-20 +module use -a /ncrc/home2/fms/local/modulefiles +module load fre/bronx-20 +echo "run fremake and submit compile job" +fremake -f -F -x ocean_ice_cobalt_experiments.xml -p ncrc5.intel22 -t repro MOM6_SIS2_GENERIC_4P_compile_symm +jobid=$(sbatch --parsable /lustre/f2/dev/Yi-cheng.Teng/github/cefi_NWA12_regression_${CURRENT_DATE}/MOM6_SIS2_GENERIC_4P_compile_symm/ncrc5.intel22-repro/exec/compile_MOM6_SIS2_GENERIC_4P_compile_symm.csh | awk -F';' '{print $1}' | cut -f1) +echo "Submitted Slurm job with ID: $jobid" + +# Check the status of the job in a loop +sleep 1 +while :; do + # Check the status of the job + job_status=$(squeue -h -j "$jobid" -o "%T" 2>/dev/null) + + if [ -z "$job_status" ]; then + echo "Job with ID $jobid is not found or completed." + break + else + echo "Job with ID $jobid is still running." + echo "Job Status: $job_status" + fi + + # Sleep for a short duration before checking again + sleep 60 # Adjust the sleep duration as needed +done + + +# check if fms_MOM6_SIS2_GENERIC_4P_compile_symm.x create successfully or not +executable_file="/lustre/f2/dev/Yi-cheng.Teng/github/cefi_NWA12_regression_${CURRENT_DATE}/MOM6_SIS2_GENERIC_4P_compile_symm/ncrc5.intel22-repro/exec/fms_MOM6_SIS2_GENERIC_4P_compile_symm.x" +if [ -f "$executable_file" ]; then + echo "Executable file created successfully: $executable_file" + # Rest of your script... +else + echo "Executable file not created within the specified duration." + echo "Please check /lustre/f2/dev/Yi-cheng.Teng/github/cefi_NWA12_regression_${CURRENT_DATE}/MOM6_SIS2_GENERIC_4P_compile_symm/ncrc5.intel22-repro/exec/compile_MOM6_SIS2_GENERIC_4P_compile_symm.csh.o$jobid" + exit 1 +fi + +# run frerun and submit a RT test for NWA12-RT case +echo "run frerun and submit a NWA12-RT case" +frerun --notransfer -o -x ocean_ice_cobalt_experiments.xml -p ncrc5.intel22 -q debug -r NWA12_RT -t repro NWA12_COBALT_V1 +rt_jobid=$(sbatch --parsable /lustre/f2/dev/Yi-cheng.Teng/github/cefi_NWA12_regression_${CURRENT_DATE}/NWA12_COBALT_V1/ncrc5.intel22-repro/scripts/run/NWA12_COBALT_V1_1x0m2d_1646x1o | awk -F';' '{print $1}' | cut -f1) +echo "Submitted RT job with ID: $rt_jobid" + +# Check the status of the job in a loop +sleep 1 +while :; do + # Check the status of the job + job_status2=$(squeue -h -j "$rt_jobid" -o "%T" 2>/dev/null) + + if [ -z "$job_status2" ]; then + echo "Job with ID $rt_jobid is not found or completed." + break + else + echo "Job with ID $rt_jobid is still running." + echo "Job Status: $job_status2" + fi + + # Sleep for a short duration before checking again + sleep 300 # Adjust the sleep duration as needed +done + +# check if restart create successfully or not +check_file="/lustre/f2/scratch/Yi-cheng.Teng/github/cefi_NWA12_regression_${CURRENT_DATE}/NWA12_COBALT_V1/ncrc5.intel22-repro/archive/1x0m2d_1646x1o/restart/19930103.tar.ok" +if [ -f "$check_file" ]; then + echo "restart files exist successfully: $check_file" +else + echo "NWA12 RT is not done within the specified duration." + echo "Please check /lustre/f2/scratch/Yi-cheng.Teng/github/cefi_NWA12_regression_${CURRENT_DATE}/NWA12_COBALT_V1/ncrc5.intel22-repro/stdout/run/NWA12_COBALT_V1_1x0m2d_1646x1o.o$rt_jobid" + exit 10 +fi + +# check with references +if [ -f check.log ]; then rm -rf check.log ; fi +frecheck -x ocean_ice_cobalt_experiments.xml -p ncrc5.intel22 -r NWA12_RT -t repro NWA12_COBALT_V1 > check.log + +# String to check +expected_string="REFERENTIALLY PASSED: NWA12_COBALT_V1" + +# Check if the string exists in the file +if grep -qF "$expected_string" check.log; then + echo "PASSED: RT results are identical." +else + echo "FAIL: check the check.log" + cat check.log + exit 100 +fi + +# Final clean-up +rm -rf /lustre/f2/scratch/Yi-cheng.Teng/work/github/cefi_NWA12_regression_${CURRENT_DATE} +rm -rf /lustre/f2/dev/Yi-cheng.Teng/github/cefi_NWA12_regression_${CURRENT_DATE} diff --git a/ci/ocean_ice_cobalt_experiments.template.xml b/ci/ocean_ice_cobalt_experiments.template.xml new file mode 100644 index 0000000..145765e --- /dev/null +++ b/ci/ocean_ice_cobalt_experiments.template.xml @@ -0,0 +1,692 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + months = $months + days = $days + current_date = 1993,1,1,0,0,0 + hours = 0 + minutes = 0 + seconds = 0 + calendar = 'gregorian' + dt_cpld = 3600 + dt_atmos = 3600 + do_atmos = .false. + do_land = .false. + do_ice = .true. + do_ocean = .true. + atmos_npes = 0, + ocean_npes = 0, + concurrent = .false. + use_lag_fluxes=.false. + atmos_nthreads = $atm_threads + ocean_nthreads = $ocn_threads + do_chksum = .false. + do_endpoint_chksum = .false. + + + do_generic_tracer=.true. + do_generic_abiotic=.false. + do_generic_CFC=.false. + do_generic_COBALT=.true. + do_generic_age=.false. + do_generic_SF6=.false. + force_update_fluxes=.true. + as_param='unused' + do_vertfill_post=.true. + + + max_fields = 400 + + + co2_calc='mocsy' + + + co2_calc = 'mocsy' + debug = .false. + imbalance_tolerance=1.0e-9 + + + max_files = 600 + flush_nc_files=.false. + max_axes = 600 + max_num_axis_sets = 600 + max_input_fields = 2000 + max_output_fields = 5000 + mix_snapshot_average_fields=.false. + + + make_exchange_reproduce = .true. + interp_method = 'second_order' + + + clock_grain='ROUTINE' + clock_flags='NONE' + domains_stack_size = 8000000 + stack_size =0 + + + fms_netcdf_restart=.true. + threading_read='multi' + max_files_r = 800 + max_files_w = 800 + checksum_required=.false. + + + layout= 1,1 + + + + construct_table_wrt_liq = .true. + construct_table_wrt_liq_and_ice = .true. + + + t_range = 10. + + + verbose=.false. + verbose_hrs=24 + traj_sample_hrs=24 + debug=.false. + really_debug=.false. + use_slow_find=.true. + add_weight_to_ocean=.true. + passive_mode=.false. + generate_test_icebergs=.false. + speed_limit=0. + use_roundoff_fix=.true. + make_calving_reproduce=.true. + + + neutral = .true. + + + ocean_albedo_option = 2 + + + rough_scheme = 'beljaars' + + + ncar_ocean_flux_multilevel = .true. + bulk_zu = 10.0 + bulk_zt = 2.0 + bulk_zq = 2.0 + raoult_sat_vap = .true. + + + + + + + + + + +"ATM", "p_surf", "msl", "INPUT/ERA5_msl_${fyear}_padded.nc", "bilinear", 1.0 +"ATM", "p_bot", "msl", "INPUT/ERA5_msl_${fyear}_padded.nc", "bilinear", 1.0 +"ATM", "t_bot", "t2m", "INPUT/ERA5_t2m_${fyear}_padded.nc", "bilinear", 1.0 +"ATM", "sphum_bot", "sphum", "INPUT/ERA5_sphum_${fyear}_padded.nc", "bilinear", 1.0 +"ATM", "u_bot", "u10", "INPUT/ERA5_u10_${fyear}_padded.nc", "bicubic", 1.0 +"ATM", "v_bot", "v10", "INPUT/ERA5_v10_${fyear}_padded.nc", "bicubic", 1.0 +"ATM", "z_bot", "", "", "bilinear", 10.0 +"ATM", "gust", "", "", "bilinear", 1.0e-4 +"ATM", "o2_flux_pcair_atm", "", "", "none", 0.214 +"ATM", "co2_flux_pcair_atm", "mole_fraction_of_carbon_dioxide_in_air", "INPUT/mole_fraction_of_co2_extended_ssp245.nc", "bilinear", 1.0e-06 +"ATM", "co2_bot", "mole_fraction_of_carbon_dioxide_in_air", "INPUT/mole_fraction_of_co2_extended_ssp245.nc", "bilinear", 1.0e-06 +"ATM", "co2_dvmr_restore", "mole_fraction_of_carbon_dioxide_in_air", "INPUT/mole_fraction_of_co2_extended_ssp245.nc", "bilinear", 1.0e-06 +# +"ICE", "lw_flux_dn" , "strd", "INPUT/ERA5_strd_${fyear}_padded.nc", "bilinear", 2.77778e-4 +"ICE", "sw_flux_vis_dir_dn", "ssrd", "INPUT/ERA5_ssrd_${fyear}_padded.nc", "bilinear", 7.9167e-5 +"ICE", "sw_flux_vis_dif_dn", "ssrd", "INPUT/ERA5_ssrd_${fyear}_padded.nc", "bilinear", 7.9167e-5 +"ICE", "sw_flux_nir_dir_dn", "ssrd", "INPUT/ERA5_ssrd_${fyear}_padded.nc", "bilinear", 5.9722e-5 +"ICE", "sw_flux_nir_dif_dn", "ssrd", "INPUT/ERA5_ssrd_${fyear}_padded.nc", "bilinear", 5.9722e-5 +"ICE", "lprec", "lp", "INPUT/ERA5_lp_${fyear}_padded.nc", "bilinear", 0.277777778 +"ICE", "fprec", "sf", "INPUT/ERA5_sf_${fyear}_padded.nc", "bilinear", 0.277777778 +"ICE", "runoff", "runoff", "INPUT/glofas_runoff_${fyear}.nc", "none", 1.0 +"ICE", "calving", "", "", "none", 0.0 +"ICE", "dhdt", "", "", "none", 80.0 +"ICE", "dedt", "", "", "none", 2.0e-6 +"ICE", "drdt", "", "", "none", 10.0 +# +"LND", "t_surf", "", "", "none", 273.0 +"LND", "t_ca", "", "", "none", 273.0 +"LND", "q_ca", "", "", "none", 0.0 +"LND", "rough_mom", "", "", "none", 0.01 +"LND", "rough_heat", "", "", "none", 0.1 +"LND", "albedo", "", "", "none", 0.1 +"LND", "sphum_surf", "", "", "none", 0.0 +"LND", "sphum_ca", "", "", "none", 0.0 +"LND", "t_flux", "", "", "none", 0.0 +"LND", "sphum_flux", "", "", "none", 0.0 +"LND", "lw_flux", "", "", "none", 0.0 +"LND", "sw_flux", "", "", "none", 0.0 +"LND", "lprec", "", "", "none", 0.0 +"LND", "fprec", "", "", "none", 0.0 +"LND", "dhdt", "", "", "none", 5.0 +"LND", "dedt", "", "", "none", 2.0e-6 +"LND", "dedq", "", "", "none", 0.0 +"LND", "drdt", "", "", "none", 5.0 +"LND", "drag_q", "", "", "none", 0.0 +"LND", "p_surf", "", "", "none", 1.0e5 +# +"OCN", "runoff_no3_flux_ice_ocn", "NO3_CONC", "./INPUT/RiverNutrients_Integrated_NWA12_GLOFAS_RC4US1990to2022_2023_04_v2.nc", "none", 1.0e-3 +"OCN", "runoff_ldon_flux_ice_ocn", "LDON_CONC", "./INPUT/RiverNutrients_Integrated_NWA12_GLOFAS_RC4US1990to2022_2023_04_v2.nc", "none", 1.0e-3 +"OCN", "runoff_sldon_flux_ice_ocn", "SLDON_CONC", "./INPUT/RiverNutrients_Integrated_NWA12_GLOFAS_RC4US1990to2022_2023_04_v2.nc", "none", 1.0e-3 +"OCN", "runoff_srdon_flux_ice_ocn", "SRDON_CONC", "./INPUT/RiverNutrients_Integrated_NWA12_GLOFAS_RC4US1990to2022_2023_04_v2.nc", "none", 1.0e-3 +"OCN", "runoff_ndet_flux_ice_ocn", "NDET_CONC", "./INPUT/RiverNutrients_Integrated_NWA12_GLOFAS_RC4US1990to2022_2023_04_v2.nc", "none", 1.0e-3 +"OCN", "runoff_po4_flux_ice_ocn", "PO4_CONC", "./INPUT/RiverNutrients_Integrated_NWA12_GLOFAS_RC4US1990to2022_2023_04_v2.nc", "none", 1.0e-3 +"OCN", "runoff_ldop_flux_ice_ocn", "LDOP_CONC", "./INPUT/RiverNutrients_Integrated_NWA12_GLOFAS_RC4US1990to2022_2023_04_v2.nc", "none", 1.0e-3 +"OCN", "runoff_sldop_flux_ice_ocn", "SLDOP_CONC", "./INPUT/RiverNutrients_Integrated_NWA12_GLOFAS_RC4US1990to2022_2023_04_v2.nc", "none", 1.0e-3 +"OCN", "runoff_srdop_flux_ice_ocn", "SRDOP_CONC", "./INPUT/RiverNutrients_Integrated_NWA12_GLOFAS_RC4US1990to2022_2023_04_v2.nc", "none", 1.0e-3 +"OCN", "runoff_pdet_flux_ice_ocn", "PDET_CONC", "./INPUT/RiverNutrients_Integrated_NWA12_GLOFAS_RC4US1990to2022_2023_04_v2.nc", "none", 1.0e-3 +"OCN", "runoff_fed_flux_ice_ocn", "FED_CONC", "./INPUT/RiverNutrients_Integrated_NWA12_GLOFAS_RC4US1990to2022_2023_04_v2.nc", "none", 1.0e-3 +"OCN", "runoff_alk_flux_ice_ocn", "ALK_CONC", "./INPUT/RiverNutrients_Integrated_NWA12_GLOFAS_RC4US1990to2022_2023_04_v2.nc", "none", 1.0e-3 +"OCN", "runoff_dic_flux_ice_ocn", "DIC_CONC", "./INPUT/RiverNutrients_Integrated_NWA12_GLOFAS_RC4US1990to2022_2023_04_v2.nc", "none", 1.0e-3 +"OCN", "runoff_nh4_flux_ice_ocn", "NH4_CONC", "./INPUT/RiverNutrients_Integrated_NWA12_GLOFAS_RC4US1990to2022_2023_04_v2.nc", "none", 1.0e-3 +"OCN", "runoff_fedet_flux_ice_ocn", "FEDET_CONC", "./INPUT/RiverNutrients_Integrated_NWA12_GLOFAS_RC4US1990to2022_2023_04_v2.nc", "none", 1.0e-3 +"OCN", "runoff_o2_flux_ice_ocn", "O2_CONC", "./INPUT/RiverNutrients_Integrated_NWA12_GLOFAS_RC4US1990to2022_2023_04_v2.nc", "none", 1.0e-3 +"OCN", "runoff_sio4_flux_ice_ocn", "SI_CONC", "./INPUT/RiverNutrients_Integrated_NWA12_GLOFAS_RC4US1990to2022_2023_04_v2.nc", "none", 1.0e-3 +"OCN", "runoff_lith_flux_ice_ocn", "", "", "none", 13.0e-3 +"OCN", "dry_dep_fed_flux_ice_ocn", "dryfe", "./INPUT/esm4_dryfe_climo_1993-2014.nc", "bilinear", -1.0 +"OCN", "wet_dep_fed_flux_ice_ocn", "wetfe", "./INPUT/esm4_wetfe_climo_1993-2014.nc", "bilinear", -1.0 +"OCN", "dry_dep_lith_flux_ice_ocn", "drydust", "./INPUT/esm4_drydust_climo_1993-2014.nc", "bilinear", -1.0 +"OCN", "wet_dep_lith_flux_ice_ocn", "wetdust", "./INPUT/esm4_wetdust_climo_1993-2014.nc", "bilinear", -1.0 +"OCN", "dry_dep_po4_flux_ice_ocn", "drydust", "./INPUT/esm4_drydust_climo_1993-2014.nc", "bilinear", -4.0e-6 +"OCN", "wet_dep_no3_flux_ice_ocn", "wetnoy", "./INPUT/esm4_wetnoy_climo_1993-2014.nc", "bilinear", -1.0 +"OCN", "dry_dep_no3_flux_ice_ocn", "drynoy", "./INPUT/esm4_drynoy_climo_1993-2014.nc", "bilinear", -1.0 +"OCN", "wet_dep_nh4_flux_ice_ocn", "wetnh4", "./INPUT/esm4_wetnh4_climo_1993-2014.nc", "bilinear", -1.0 +"OCN", "dry_dep_nh4_flux_ice_ocn", "drynh4", "./INPUT/esm4_drynh4_climo_1993-2014.nc", "bilinear", -1.0 + + + +# specific humidity for moist runs +"TRACER", "atmos_mod", "sphum" + "longname", "specific humidity" + "units", "kg/kg" / +# prognostic cloud scheme tracers +"TRACER", "atmos_mod", "liq_wat" + "longname", "cloud liquid specific humidity" + "units", "kg/kg" / +"TRACER", "atmos_mod", "ice_wat" + "longname", "cloud ice water specific humidity" + "units", "kg/kg" / +"TRACER", "atmos_mod", "cld_amt" + "longname", "cloud fraction" + "units", "none" / +# sphum must be present on land as well +"TRACER", "land_mod", "sphum" + "longname", "specific humidity" + "units", "kg/kg" / +###................................................. + +"namelists","ocean_mod","generic_COBALT" +enforce_src_info = f +alk_obc_src_file_name = bgc_esper_1993_2022.nc +alk_obc_lfac_in = 0.03 +alk_obc_lfac_out = 1.0 +cadet_arag_obc_src_file_name = bgc_cobalt.nc +cadet_arag_obc_lfac_in = 0.03 +cadet_ararg_obc_lfac_out = 1.0 +cadet_calc_obc_src_file_name = bgc_cobalt.nc +cadet_calc_obc_lfac_in = 0.03 +cadet_calc_obc_lfac_out = 1.0 +dic_obc_src_file_name = bgc_esper_1993_2022.nc +dic_obc_lfac_in = 0.03 +dic_obc_lfac_out = 1.0 +dic14_obc_src_file_name = bgc_zero.nc +dic14_obc_lfac_in = 0.03 +dic14_obc_lfac_out = 1.0 +do14_obc_src_file_name = bgc_zero.nc +do14_obc_lfac_in = 0.03 +do14_obc_lfac_out = 1.0 +do14c_obc_src_file_name = bgc_zero.nc +do14c_obc_lfac_in = 0.03 +do14c_obc_lfac_out = 1.0 +di14c_obc_src_file_name = bgc_zero.nc +di14c_obc_lfac_in = 0.03 +di14c_obc_lfac_out = 1.0 +fed_obc_src_file_name = bgc_cobalt.nc +fed_obc_lfac_in = 0.03 +fed_obc_lfac_out = 1.0 +fedi_obc_src_file_name = bgc_cobalt.nc +fedi_obc_lfac_in = 0.03 +fedi_obc_lfac_out = 1.0 +felg_obc_src_file_name = bgc_cobalt.nc +felg_obc_lfac_in = 0.03 +felg_obc_lfac_out = 1.0 +fedet_obc_src_file_name = bgc_cobalt.nc +fedet_obc_lfac_in = 0.03 +fedet_obc_lfac_out = 1.0 +fesm_obc_src_file_name = bgc_cobalt.nc +fesm_obc_lfac_in = 0.03 +fesm_obc_lfac_out = 1.0 +ldon_obc_src_file_name = bgc_cobalt.nc +ldon_obc_lfac_in = 0.03 +ldon_obc_lfac_out = 1.0 +ldop_obc_src_file_name = bgc_cobalt.nc +ldop_obc_lfac_in = 0.03 +ldop_obc_lfac_out = 1.0 +lith_obc_src_file_name = bgc_cobalt.nc +lith_obc_lfac_in = 0.03 +lith_obc_lfac_out = 1.0 +lithdet_obc_src_file_name = bgc_cobalt.nc +lithdet_obc_lfac_in = 0.03 +lithdet_obc_lfac_out = 1.0 +nbact_obc_src_file_name = bgc_cobalt.nc +nbact_obc_lfac_in = 0.03 +nbact_obc_lfac_out = 1.0 +ndet_obc_src_file_name = bgc_cobalt.nc +ndet_obc_lfac_in = 0.03 +ndet_obc_lfac_out = 1.0 +ndi_obc_src_file_name = bgc_cobalt.nc +ndi_obc_lfac_in = 0.03 +ndi_obc_lfac_out = 1.0 +nlg_obc_src_file_name = bgc_cobalt.nc +nlg_obc_lfac_in = 0.03 +nlg_obc_lfac_out = 1.0 +nsm_obc_src_file_name = bgc_cobalt.nc +nsm_obc_lfac_in = 0.03 +nsm_obc_lfac_out = 1.0 +nh3_obc_src_file_name = bgc_zero.nc +nh3_obc_lfac_in = 0.03 +nh3_obc_lfac_out = 1.0 +nh4_obc_src_file_name = bgc_cobalt.nc +nh4_obc_lfac_in = 0.03 +nh4_obc_lfac_out = 1.0 +no3_obc_src_file_name = bgc_woa.nc +no3_obc_lfac_in = 0.03 +no3_obc_lfac_out = 1.0 +o2_obc_src_file_name = bgc_woa.nc +o2_obc_lfac_in = 0.03 +o2_obc_lfac_out = 1.0 +pdet_obc_src_file_name = bgc_cobalt.nc +pdet_obc_lfac_in = 0.03 +pdet_obc_lfac_out = 1.0 +po4_obc_src_file_name = bgc_woa.nc +po4_obc_lfac_in = 0.03 +po4_obc_lfac_out = 1.0 +srdon_obc_src_file_name = bgc_cobalt.nc +srdon_obc_lfac_in = 0.03 +srdon_obc_lfac_out = 1.0 +srdop_obc_src_file_name = bgc_cobalt.nc +srdop_obc_lfac_in = 0.03 +srdop_obc_lfac_out = 1.0 +sldon_obc_src_file_name = bgc_cobalt.nc +sldon_obc_lfac_in = 0.03 +sldon_obc_lfac_out = 1.0 +sldop_obc_src_file_name = bgc_cobalt.nc +sldop_obc_lfac_in = 0.03 +sldop_obc_lfac_out = 1.0 +sidet_obc_src_file_name = bgc_cobalt.nc +sidet_obc_lfac_in = 0.03 +sidet_obc_lfac_out = 1.0 +silg_obc_src_file_name = bgc_cobalt.nc +silg_obc_lfac_in = 0.03 +silg_obc_lfac_out = 1.0 +sio4_obc_src_file_name = bgc_woa.nc +sio4_obc_lfac_in = 0.03 +sio4_obc_lfac_out = 1.0 +nsmz_obc_src_file_name = bgc_cobalt.nc +nsmz_obc_lfac_in = 0.03 +nsmz_obc_lfac_out = 1.0 +nmdz_obc_src_file_name = bgc_cobalt.nc +nmdz_obc_lfac_in = 0.03 +nmdz_obc_lfac_out = 1.0 +nlgz_obc_src_file_name = bgc_cobalt.nc +nlgz_obc_lfac_in = 0.03 +nlgz_obc_lfac_out = 1.0 +nmdp_obc_src_file_name = bgc_cobalt.nc +nmdp_obc_lfac_in = 0.03 +nmdp_obc_lfac_out = 1.0 +femdp_obc_src_file_name = bgc_cobalt.nc +femdp_obc_lfac_in = 0.03 +femdp_obc_lfac_out = 1.0 +femd_obc_src_file_name = bgc_cobalt.nc +femd_obc_lfac_in = 0.03 +femd_obc_lfac_out = 1.0 +simd_obc_src_file_name = bgc_cobalt.nc +simd_obc_lfac_in = 0.03 +simd_obc_lfac_out = 1.0 +pdi_obc_src_file_name = bgc_cobalt.nc +pdi_obc_lfac_in = 0.03 +pdi_obc_lfac_out = 1.0 +psm_obc_src_file_name = bgc_cobalt.nc +psm_obc_lfac_in = 0.03 +psm_obc_lfac_out = 1.0 +pmd_obc_src_file_name = bgc_cobalt.nc +pmd_obc_lfac_in = 0.03 +pmd_obc_lfac_out = 1.0 +nmd_obc_src_file_name = bgc_cobalt.nc +nmd_obc_lfac_in = 0.03 +nmd_obc_lfac_out = 1.0 +plg_obc_src_file_name = bgc_cobalt.nc +plg_obc_lfac_in = 0.03 +plg_obc_lfac_out = 1.0 +/ + + +$name +$baseDate + + + $(ACR)/nwa12_input/diag_tables/diag_table_NWA12_RT + + + $(ACR)/nwa12_input/NWA12_COBALT_2023_10_spinup_2003.nc + $(ACR)/nwa12_input/glorys_ic_1993-01-01.nc + + + $work/INPUT/MOM_override << MOM_OVERRIDE_EOF +#override USE_generic_tracer = True +#override MAX_FIELDS=500 +#override OBC_TIDE_NODAL_REF_DATE = ${fyear},7,2 +DT_OBC_SEG_UPDATE_OBGC = 3600 +#override CHL_FROM_FILE = False +#override DO_GEOTHERMAL = True +#override GENERIC_TRACER_IC_FILE = "NWA12_COBALT_2023_10_spinup_2003.nc" +MOM_OVERRIDE_EOF + ]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > $HOME/frejobs_stdout < $work/INPUT/MOM_layout << MOM_LAYOUT_EOF +#override IO_LAYOUT = $ocn_io_layout +#override LAYOUT = $ocn_layout +#override MASKTABLE = $ocn_mask_table +#override OCEAN_OMP_THREADS = $ocn_threads +MOM_LAYOUT_EOF + +cat > $work/INPUT/SIS_layout << SIS_LAYOUT_EOF +#override IO_LAYOUT = $ice_io_layout +#override LAYOUT = $ice_layout +#override MASKTABLE = $ice_mask_table +SIS_LAYOUT_EOF + +cat > $work/INPUT/SIS_override << SIS_OVERRIDE_EOF +#override ICE_STATS_INTERVAL = 10. +#override DO_ICEBERGS = False +#override ICE_OCEAN_STRESS_STAGGER = "C" +SIS_OVERRIDE_EOF + +cat > $work/INPUT/SIS_diurnal << SIS_diurnal_EOF +SIS_diurnal_EOF + +# IAF cycle mechanism +echo "Model year = $fyear" + +# add empty MOM_mask_table +if ( ! -e $work/INPUT/MOM_mask_table ) then + echo "0" > $work/INPUT/MOM_mask_table +endif + ]]> + + + + + + + + $(ACR)/nwa12_input/nwa12_grid_75z.tar + + + + $(ACR)/nwa12_input/diag_dz.nc + + + + $(ACR)/nwa12_input/ocean_static.nc + + + + + + + + + $(ACR)/nwa12_input/MOM_input + + $(ACR)/nwa12_input/bgc_woa.nc + $(ACR)/nwa12_input/bgc_esper_1993_2022.nc + $(ACR)/nwa12_input/bgc_cobalt.nc + + $(ACR)/nwa12_input/so_001.nc + $(ACR)/nwa12_input/so_002.nc + $(ACR)/nwa12_input/so_003.nc + $(ACR)/nwa12_input/thetao_001.nc + $(ACR)/nwa12_input/thetao_002.nc + $(ACR)/nwa12_input/thetao_003.nc + $(ACR)/nwa12_input/zos_001.nc + $(ACR)/nwa12_input/zos_002.nc + $(ACR)/nwa12_input/zos_003.nc + $(ACR)/nwa12_input/uv_001.nc + $(ACR)/nwa12_input/uv_002.nc + $(ACR)/nwa12_input/uv_003.nc + + $(ACR)/nwa12_input/RiverNutrients_Integrated_NWA12_GLOFAS_RC4US1990to2022_2023_04_v2.nc + + $(ACR)/nwa12_input/tu_001.nc + $(ACR)/nwa12_input/tu_002.nc + $(ACR)/nwa12_input/tu_003.nc + $(ACR)/nwa12_input/tz_001.nc + $(ACR)/nwa12_input/tz_002.nc + $(ACR)/nwa12_input/tz_003.nc + + + + $(ACR)/nwa12_input/esm4_drydust_climo_1993-2014.nc + $(ACR)/nwa12_input/esm4_wetdust_climo_1993-2014.nc + $(ACR)/nwa12_input/esm4_dryfe_climo_1993-2014.nc + $(ACR)/nwa12_input/esm4_wetfe_climo_1993-2014.nc + $(ACR)/nwa12_input/esm4_drynh4_climo_1993-2014.nc + $(ACR)/nwa12_input/esm4_wetnh4_climo_1993-2014.nc + $(ACR)/nwa12_input/esm4_drynoy_climo_1993-2014.nc + $(ACR)/nwa12_input/esm4_wetnoy_climo_1993-2014.nc + $(ACR)/nwa12_input/mole_fraction_of_co2_extended_ssp245.nc + + + + + $(ACR)/nwa12_input/ERA5_msl_${fyear}_padded.nc + $(ACR)/nwa12_input/ERA5_t2m_${fyear}_padded.nc + $(ACR)/nwa12_input/ERA5_sphum_${fyear}_padded.nc + $(ACR)/nwa12_input/ERA5_strd_${fyear}_padded.nc + $(ACR)/nwa12_input/ERA5_ssrd_${fyear}_padded.nc + $(ACR)/nwa12_input/ERA5_lp_${fyear}_padded.nc + $(ACR)/nwa12_input/ERA5_sf_${fyear}_padded.nc + $(ACR)/nwa12_input/ERA5_u10_${fyear}_padded.nc + $(ACR)/nwa12_input/ERA5_v10_${fyear}_padded.nc + $(ACR)/nwa12_input/glofas_runoff_${fyear}.nc + + + output_directory = './' + input_filename = '$restart_flag' + restart_input_dir = 'INPUT/' + restart_output_dir = 'RESTART/' + parameter_filename = 'INPUT/MOM_input','INPUT/MOM_layout','INPUT/MOM_override' + + + + + + + + $(ACR)/nwa12_input/SIS_input + + + output_directory = './' + input_filename = '$restart_flag' + restart_input_dir = 'INPUT/' + restart_output_dir = 'RESTART/' + parameter_filename = 'INPUT/SIS_input','INPUT/SIS_layout','INPUT/SIS_override' + + + + + diff --git a/ci/platforms.xml b/ci/platforms.xml new file mode 100644 index 0000000..114a645 --- /dev/null +++ b/ci/platforms.xml @@ -0,0 +1,76 @@ + + + + + $(FRE_VERSION) + + $(NCRC_GROUP) + + $DEV/$USER/$(FRE_STEM) + $DEV/$USER/$(FRE_STEM)$(DEBUGLEVEL)/$(name)/$(platform)-$(target)/scripts + $DEV/$USER/$(FRE_STEM)$(DEBUGLEVEL)/$(name)/$(platform)-$(target)/state + $DEV/$USER/$(FRE_STEM)/$(BUILD_DATE)/$(name)/src + $DEV/$USER/$(FRE_STEM)/$(BUILD_DATE)/$(name)/$(platform)-$(target)/exec + $SCRATCH/$USER/$(stem)$(DEBUGLEVEL)/$(name)/$(platform)-$(target)/archive + $SCRATCH/$USER/$(stem)$(DEBUGLEVEL)/$(name)/$(platform)-$(target)/stdout + $SCRATCH/$USER/work/$(stem)/$FRE_JOBID + + + + + + + + + + + + + + + + $(FRE_VERSION) + + + $ARCHIVE/$(stem)/$(name)/$(platform)-$(target) + $(archiveDir)/pp + /ptmp/$USER + $(NB_ROOT) + + + + + + + + + + + + + + + + + + + + + + + +