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.
+
+
+
+
+ -Duse_libMPI -Duse_netCDF $(F2003_FLAGS) -DMAXFIELDMETHODS_=600
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ $(F2003_FLAGS)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+