From 83de836cc7f14cfa551a5c90985851ebdb7158a0 Mon Sep 17 00:00:00 2001 From: Jan Streffing Date: Mon, 17 Nov 2025 20:37:19 +0100 Subject: [PATCH 1/4] working 2.7.0 on levante --- configs/components/fesom/fesom-2.7.yaml | 700 ++++++++++++++++++ namelists/fesom2/2.7.0/namelist.config | 133 ++++ namelists/fesom2/2.7.0/namelist.cvmix | 211 ++++++ namelists/fesom2/2.7.0/namelist.dyn | 72 ++ namelists/fesom2/2.7.0/namelist.forcing | 145 ++++ namelists/fesom2/2.7.0/namelist.ice | 98 +++ namelists/fesom2/2.7.0/namelist.icepack | 146 ++++ namelists/fesom2/2.7.0/namelist.io | 343 +++++++++ namelists/fesom2/2.7.0/namelist.oce | 76 ++ namelists/fesom2/2.7.0/namelist.recom | 355 +++++++++ namelists/fesom2/2.7.0/namelist.tra | 118 +++ namelists/fesom2/2.7.0/namelist.transit | 53 ++ runscripts/fesom2/fesom2.7-levante-1d.yaml | 26 + .../fesom2/fesom2.7-levante-reference.yaml | 24 + 14 files changed, 2500 insertions(+) create mode 100644 configs/components/fesom/fesom-2.7.yaml create mode 100644 namelists/fesom2/2.7.0/namelist.config create mode 100644 namelists/fesom2/2.7.0/namelist.cvmix create mode 100644 namelists/fesom2/2.7.0/namelist.dyn create mode 100644 namelists/fesom2/2.7.0/namelist.forcing create mode 100644 namelists/fesom2/2.7.0/namelist.ice create mode 100644 namelists/fesom2/2.7.0/namelist.icepack create mode 100644 namelists/fesom2/2.7.0/namelist.io create mode 100644 namelists/fesom2/2.7.0/namelist.oce create mode 100644 namelists/fesom2/2.7.0/namelist.recom create mode 100644 namelists/fesom2/2.7.0/namelist.tra create mode 100644 namelists/fesom2/2.7.0/namelist.transit create mode 100644 runscripts/fesom2/fesom2.7-levante-1d.yaml create mode 100644 runscripts/fesom2/fesom2.7-levante-reference.yaml diff --git a/configs/components/fesom/fesom-2.7.yaml b/configs/components/fesom/fesom-2.7.yaml new file mode 100644 index 000000000..cae5e7ee1 --- /dev/null +++ b/configs/components/fesom/fesom-2.7.yaml @@ -0,0 +1,700 @@ +# FESOM2 YAML CONFIGURATION FILE +# +fesom: + model: fesom + branch: "2.7" + version: "2.7" + type: ocean + + comp_command: mkdir -p build; cd build; cmake -DENABLE_OPENMP=ON, -DASYNCHRONOUS_IO_THREADS=ON -DCMAKE_INSTALL_PREFIX=../ ..; make install -j `nproc --all` + clean_command: ${defaults.clean_command} + + # MA This variable needs to be set true in every version of fesom-2.1 (choose_ block + # below) whose source code contains the icebergs implementation + with_icb: false + use_icebergs: false + use_icesheet_coupling: false + + wiso_code: false + with_wiso: false + + with_recom: false + + required_plugins: + - "git+https://github.com/esm-tools-plugins/tar_binary_restarts" + + choose_version: + "2.7": + branch: "2.7.0" + namelist_dir: "${esm_namelist_dir}/fesom2/2.7.0/" + + "2.7-paleodyn": + branch: "2.7.0" + wiso_code: true + icb_code: true + namelist_dir: "${model_dir}/config/" + + "2.7-main": + branch: "main" + namelist_dir: "${model_dir}/config/" + + destination: "fesom-2.7" + install_bins: bin/fesom.x + git-repository: + - https://github.com/FESOM/fesom2.git + contact: "jan.streffing(at)awi.de, patrick.scholz(at)awi.de miguel.andres-martinez(at)awi.de, paul.gierz(at)awi.de" + + restart_rate: "12" + restart_unit: "m" + restart_first: 12 + restart_flag: "last" + + tar_binary_restarts: True + + time_step: 1800 + resolution: CORE2 + + comp_executable: fesom.x + executable: fesom + + mesh_rotated: false + old_mesh_format: false + with_part_format: false + time_dimension: "time" + + pool_dir: "${computer.pool_directories.pool}" + + choose_computer.name: + levante: + pool_dir: "${computer.pool_directories.pool}/AWICM/" + climate_data_dir: "${pool_dir}/FESOM2/INITIAL/phc3.0/" + forcing_data_dir: "${pool_dir}/FESOM2/FORCING/" + mesh_base_dir: "${pool_dir}/FESOM2/MESHES_FESOM2.1/" + albedo: + climate_data_dir: "${pool_dir}/FESOM/hydrography/" + mesh_base_dir: "${pool_dir}/FESOM/meshes_default/" + + setup_dir: "${model_dir}" + bin_dir: "${setup_dir}/bin" + climate_data_dir: "${pool_dir}/FESOM2/hydrography/phc3.0/" + forcing_data_dir: "${pool_dir}/forcing/" + mesh_base_dir: "${pool_dir}/FESOM2/meshes/" + ini_data_dir: "${pool_dir}/pool-data/" + + opbnd_dir: "somepath" + tide_forcing_dir: "somepath" + + steps_per_day: "$(( 86400 / ${time_step} ))" + + asforcing: JRA55 + + namelists: + - namelist.config + - namelist.cvmix + - namelist.dyn + - namelist.forcing + - namelist.ice + - namelist.icepack + - namelist.io + - namelist.oce + - namelist.tra + - namelist.transit + + whichEVP: 0 # 0=EVP, 1=mEVP, 2=aEVP + # See: Kimmritz et. al 2015 & 2016: https://doi.org/10.1016/j.jcp.2015.04.051, https://doi.org/10.1016/j.ocemod.2016.03.004 + choose_resolution: + CORE2: + nx: 126858 + mesh_dir: "${fesom.mesh_base_dir}/core2/" + nproc: 288 + whichEVP: 0 + alpha_evp: 250 # constant that control numerical stability of mEVP. + beta_evp: 250 # constant that control numerical stability of mEVP. + pi: + nx: 3140 + mesh_dir: "${fesom.mesh_base_dir}/pi/" + nproc: 4 + whichEVP: 0 + alpha_evp: 250 # constant that control numerical stability of mEVP. + beta_evp: 250 # constant that control numerical stability of mEVP. + LGM: + nx: 95239 + mesh_dir: "/home/a/a270064/bb1029/inputs/mesh_glac1d_m1_512/" + nproc: 1024 + whichEVP: 0 + alpha_evp: 250 # constant that control numerical stability of mEVP. + beta_evp: 250 # constant that control numerical stability of mEVP. + GLOB: + nx: 830305 + whichEVP: 1 + alpha_evp: 250 # constant that control numerical stability of mEVP. + beta_evp: 250 # constant that control numerical stability of mEVP. + CAVCORE2: + nx: 72411 + mesh_dir: "/work/ollie/pscholz/mesh_fesom2.0/cavity_72k/" + nproc: 288 + whichEVP: 0 + alpha_evp: 250 # constant that control numerical stability of mEVP. + beta_evp: 250 # constant that control numerical stability of mEVP. + PI_ICEv2: + nx: 132273 + whichEVP: 0 + alpha_evp: 250 # constant that control numerical stability of mEVP. + beta_evp: 250 # constant that control numerical stability of mEVP. + D3: + nx: 3160340 + whichEVP: 1 + alpha_evp: 500 # constant that control numerical stability of mEVP. + beta_evp: 500 # constant that control numerical stability of mEVP. + orca25: + nx: 912469 + whichEVP: 1 + alpha_evp: 500 # constant that control numerical stability of mEVP. + beta_evp: 500 # constant that control numerical stability of mEVP. + DART: + nx: 3160340 + whichEVP: 1 + alpha_evp: 500 # constant that control numerical stability of mEVP. + beta_evp: 500 # constant that control numerical stability of mEVP. + DARS: + nx: 3160340 + whichEVP: 1 + alpha_evp: 500 # constant that control numerical stability of mEVP. + beta_evp: 500 # constant that control numerical stability of mEVP. + ROS2: + nx: 26306560 + whichEVP: 1 + alpha_evp: 900 # constant that control numerical stability of mEVP. + beta_evp: 900 # constant that control numerical stability of mEVP. + HR: + nx: 1306775 + whichEVP: 1 + alpha_evp: 500 # constant that control numerical stability of mEVP. + beta_evp: 500 # constant that control numerical stability of mEVP. + jane: + nx: 33348172 + whichEVP: 1 + alpha_evp: 900 # constant that control numerical stability of mEVP. + beta_evp: 900 # constant that control numerical stability of mEVP. + SO3: + nx: 11087062 + whichEVP: 1 + alpha_evp: 800 # constant that control numerical stability of mEVP. + beta_evp: 800 # constant that control numerical stability of mEVP. + Arc01_fesom2: + nx: 753179 + whichEVP: 1 + alpha_evp: 500 # constant that control numerical stability of mEVP. + beta_evp: 500 # constant that control numerical stability of mEVP. + + + restart_in_files: + par_oce_restart: par_oce_restart + par_ice_restart: par_ice_restart + + restart_in_in_work: + par_oce_restart: fesom.${parent_date!syear}.oce.restart/*.nc + par_ice_restart: fesom.${parent_date!syear}.ice.restart/*.nc + fesom_raw_restart_info: fesom_raw_restart/*.info + fesom_raw_restart: fesom_raw_restart/np${nproc}/*.dump + fesom_bin_restart_info: fesom_bin_restart/*.info + fesom_bin_restart: fesom_bin_restart/np${nproc}/* + wiso_restart: fesom.${parent_date!syear}.wiso.restart.nc + icb_restart: iceberg.restart #.${parent_date!syear!month} + icb_restart_ISM: iceberg.restart.ISM + restart_in_sources: + par_oce_restart: fesom.${parent_date!syear}.oce.restart/*.nc + par_ice_restart: fesom.${parent_date!syear}.ice.restart/*.nc + fesom_raw_restart_info: fesom_raw_restart/*.info + fesom_raw_restart: fesom_raw_restart/np${nproc}/*.dump + fesom_bin_restart_info: fesom_bin_restart/*.info + fesom_bin_restart: fesom_bin_restart/np${nproc}/* + wiso_restart: fesom.${parent_date!syear}.wiso.restart.nc + icb_restart: iceberg.restart #.${parent_date!syear!month} + icb_restart_ISM: iceberg.restart.ISM + + restart_out_files: + par_oce_restart: par_oce_restart + par_ice_restart: par_ice_restart + fesom_raw_restart_info: fesom_raw_restart_info + fesom_raw_restart: fesom_raw_restart + fesom_bin_restart_info: fesom_bin_restart_info + fesom_bin_restart: fesom_bin_restart + + restart_out_in_work: + par_oce_restart: fesom.${end_date!syear}.oce.restart/*.nc + par_ice_restart: fesom.${end_date!syear}.ice.restart/*.nc + fesom_raw_restart_info: fesom_raw_restart/*.info + fesom_raw_restart: fesom_raw_restart/np${nproc}/*.dump + fesom_raw_restart_tar: fesom_raw_restart.tar.* + fesom_bin_restart_info: fesom_bin_restart/*.info + fesom_bin_restart: fesom_bin_restart/np${nproc}/* + fesom_bin_restart_tar: fesom_bin_restart.tar.* + wiso_restart: fesom.${end_date!syear}.wiso.restart.nc + icb_restart: iceberg.restart #.${parent_date!syear} + icb_restart_ISM: iceberg.restart.ISM + restart_out_sources: + par_oce_restart: fesom.${end_date!syear}.oce.restart/*.nc + par_ice_restart: fesom.${end_date!syear}.ice.restart/*.nc + fesom_raw_restart_info: fesom_raw_restart/*.info + fesom_raw_restart: fesom_raw_restart/np${nproc}/*.dump + fesom_raw_restart_tar: fesom_raw_restart.tar.* + fesom_bin_restart_info: fesom_bin_restart/*.info + fesom_bin_restart: fesom_bin_restart/np${nproc}/* + fesom_bin_restart_tar: fesom_bin_restart.tar.* + wiso_restart: fesom.${end_date!syear}.wiso.restart.nc + icb_restart: iceberg.restart #.${parent_date!syear} + icb_restart_ISM: iceberg.restart.ISM + + outdata_sources: + fesom: "*.fesom.*.nc" + outdata_targets: + fesom: "*.fesom.*.nc" + + choose_with_icb: + True: + required_plugins: + - "git+https://github.com/esm-tools-plugins/fesom_icb_pism" + + prepcompute_recipe: + - "compile_model" + - "_show_simulation_info" + - "create_new_files" + - "create_empty_folders" + - "prepare_coupler_files" + - "assemble" + - "log_used_files" + - "wait_for_iterative_coupling" + - "prep_icebergs" # Plugin + - "copy_files_to_thisrun" + - "modify_namelists" + - "apply_iceberg_calving_to_namelists" # Plugin + - "modify_files" + - "copy_files_to_work" + - "report_missing_files" + - "compute_and_log_file_checksums" + - "_write_finalized_config" + - "database_entry" + + use_icebergs: True # turns on icebergs + use_icesheet_coupling: True # initializes new icebergs every restart + update_icebergs: True + + icb_inputs: [longitude,latitude,length,height,scaling,felem] + + add_restart_in_files: + icb_restart: icb_restart + icb_restart_ISM: icb_restart_ISM + + add_restart_out_files: + icb_restart: icb_restart + icb_restart_ISM: icb_restart_ISM + + add_outdata_targets: + buoys_track: "buoys_track.nc_${run_datestamp}" + + add_outdata_sources: + buoys_track: "buoys_track.nc" + + choose_general.iterative_coupling: + True: + choose_general.chunk_number: + 1: + disch_file: "${ini_disch_file}" + "*": + disch_file: "${general.experiment_couple_dir}/latest_discharge.nc" + '*': + use_landice_water: False + + choose_use_icesheet_coupling: + true: + choose_general.run_number: + 1: + iceberg_dir: "${ini_iceberg_dir}" + "*": + iceberg_dir: "${general.experiment_couple_dir}" + + add_input_files: + num_non_melted_icb_file: "num_non_melted_icb_file" + + "*": + iceberg_dir: "${ini_iceberg_dir}" + + choose_update_icebergs: + true: + add_input_sources: + "[[icb_inputs-->ICB_INPUT]]": ${iceberg_dir}/icb_ICB_INPUT.dat + num_non_melted_icb_file: "${iceberg_dir}/num_non_melted_icb_file" + + false: + add_input_sources: + "[[icb_inputs-->ICB_INPUT]]": ${iceberg_dir}/icb_ICB_INPUT.dat_@YEAR@0101-@YEAR@1231 + num_non_melted_icb_file: "${iceberg_dir}/num_non_melted_icb_file_@YEAR@0101-@YEAR@1231" + + add_input_in_work: + latitude: "icb_latitude.dat" + longitude: "icb_longitude.dat" + length: "icb_length.dat" + height: "icb_height.dat" + scaling: "icb_scaling.dat" + felem: "icb_felem.dat" + num_non_melted_icb_file: "num_non_melted_icb_file" + + add_input_files: + latitude: "latitude" + longitude: "longitude" + length: "length" + height: "height" + scaling: "scaling" + felem: "felem" + #num_non_melted_icb_file: "num_non_melted_icb_file" + + log_files: + clock: clock + mesh_diag: mesh_diag + + log_in_work: + clock: fesom.clock + mesh_diag: fesom.mesh.diag.nc + + log_sources: + clock: fesom.clock + mesh_diag: fesom.mesh.diag.nc + + file_movements: + fesom_raw_restart_in: + all_directions: move + fesom_raw_restart_out: + all_directions: move + fesom_raw_restart_info_in: + all_directions: move + fesom_raw_restart_info_out: + all_directions: move + fesom_raw_restart_tar_out: + all_directions: move + fesom_bin_restart_in: + all_directions: move + fesom_bin_restart_out: + all_directions: move + fesom_bin_restart_info_in: + all_directions: move + fesom_bin_restart_info_out: + all_directions: move + fesom_bin_restart_tar_out: + all_directions: move + + choose_tar_binary_restarts: + True: + add_restart_out_files: + fesom_raw_restart_tar: fesom_raw_restart_tar + + # Is it a branchoff experiment? + branchoff: "$(( ${lresume} and ${general.run_number}==1 ))" + choose_branchoff: + # Makes sure the new in the namelist make an earlier date than that of + # of the clock to avoid cold starts for branching off experiments + true: + daynew: "${startday}" + yearnew: "$(( ${initial_date!syear} - 1 ))" + false: + daynew: "${initial_date!sdoy}" + yearnew: "${initial_date!syear}" + add_restart_in_files: + fesom_raw_restart_info: fesom_raw_restart_info + fesom_raw_restart: fesom_raw_restart + fesom_bin_restart_info: fesom_bin_restart_info + fesom_bin_restart: fesom_bin_restart + + + + namelist_changes: + namelist.config: + clockinit: + daynew: "${daynew}" + yearnew: "${yearnew}" + calendar: + include_fleapyear: "${leapyear}" + paths: + MeshPath: "${mesh_dir}" + ClimateDataPath: "${climate_data_dir}" + ResultPath: "${work_dir}" + timestep: + step_per_day: "${steps_per_day}" + run_length: "${restart_rate}" + run_length_unit: "${restart_unit}" + restart_log: + restart_length: "${restart_rate}" + restart_length_unit: "${restart_unit}" + inout: + restartflag: "${restart_flag}" + output_length: "${restart_rate}" + output_length_unit: "${restart_unit}" + restart_length: "${restart_rate}" + run_config: + lwiso: "${with_wiso}" + icebergs: + use_icebergs: "${use_icebergs}" + use_icesheet_coupling: "${use_icesheet_coupling}" + steps_per_ib_step: 8 + + + namelist.forcing: + + forcing_exchange_coeff: + Ce_atm_oce: ${Ce_atm_oce} + Ch_atm_oce: ${Ch_atm_oce} + Cd_atm_oce: ${Cd_atm_oce} + Ce_atm_ice: ${Ce_atm_ice} + Ch_atm_ice: ${Ch_atm_ice} + Cd_atm_ice: ${Cd_atm_ice} + + forcing_bulk: + AOMIP_drag_coeff: ${AOMIP_drag_coeff} + ncar_bulk_formulae: ${ncar_bulk_formulae} + ncar_bulk_z_wind: ${ncar_bulk_z_wind} + ncar_bulk_z_tair: ${ncar_bulk_z_tair} + ncar_bulk_z_shum: ${ncar_bulk_z_shum} + + nam_sbc: + nm_xwind_file: "${forcing_data_dir}/${forcing_folder}/${xwind_prefix}" + nm_ywind_file: "${forcing_data_dir}/${forcing_folder}/${ywind_prefix}" + nm_humi_file: "${forcing_data_dir}/${forcing_folder}/${humi_prefix}" + nm_qsr_file: "${forcing_data_dir}/${forcing_folder}/${qsr_prefix}" + nm_qlw_file: "${forcing_data_dir}/${forcing_folder}/${qlw_prefix}" + nm_tair_file: "${forcing_data_dir}/${forcing_folder}/${tair_prefix}" + nm_prec_file: "${forcing_data_dir}/${forcing_folder}/${prec_prefix}" + nm_snow_file: "${forcing_data_dir}/${forcing_folder}/${snow_prefix}" + nm_mslp_file: "${forcing_data_dir}/${forcing_folder}/${mslp_prefix}" + + nm_xwind_var: ${nm_xwind_var} + nm_ywind_var: ${nm_ywind_var} + nm_humi_var: ${nm_humi_var} + nm_qsr_var: ${nm_qsr_var} + nm_qlw_var: ${nm_qlw_var} + nm_tair_var: ${nm_tair_var} + nm_prec_var: ${nm_prec_var} + nm_snow_var: ${nm_snow_var} + nm_mslp_var: ${nm_mslp_var} + + nm_nc_iyear: ${nm_nc_iyear} + nm_nc_imm: ${nm_nc_imm} + nm_nc_idd: ${nm_nc_idd} + nm_nc_freq: ${nm_nc_freq} + nm_nc_tmid: ${nm_nc_tmid} + l_xwind: ${l_xwind} + l_ywind: ${l_ywind} + l_humi: ${l_humi} + l_qsr: ${l_qsr} + l_qlw: ${l_qlw} + l_tair: ${l_tair} + l_prec: ${l_prec} + l_mslp: ${l_mslp} + l_cloud: ${l_cloud} + l_snow: ${l_snow} + + nm_runoff_file: "${forcing_data_dir}/${forcing_folder}/${runoff_file}" + nm_sss_data_file: "${forcing_data_dir}/${forcing_folder}/${sss_data_file}" + nm_chl_data_file: "${forcing_data_dir}/Sweeney/Sweeney_2005.nc" + + runoff_data_source: ${runoff_data_source} + sss_data_source: ${sss_data_source} + namelist.ice: + ice_dyn: + whichEVP: ${whichEVP} + alpha_evp: ${alpha_evp} + beta_evp: ${beta_evp} + + use_landice_water: False + choose_general.iterative_coupling: + true: + add_output_targets: + fesom: "*.fesom.*.nc" + + choose_general.chunk_number: + 1: + use_landice_water: False + "*": + use_landice_water: True + + fwf_path: "${general.experiment_couple_dir}" + + add_namelist_changes: + namelist.forcing: + land_ice: + use_landice_water: "${use_landice_water}" + landice_start_mon: 1 + landice_end_mon: 12 + fwf_path: "${fwf_path}" + '*': + use_landice_water: False + + lasttime: "$(( 86400 - ${time_step}))" + currentday: "${current_date!sdoy}" + choose_currentday: + "1": + starttime: "0.0000000000000" + startday: 1 + '*': + starttime: "86400.0000000000" + startday: "$(( ${start_date!sdoy} - 1 ))" + + choose_lresume: + false: + create_config: + fesom.clock: + - "<--append-- 0.0000000000000 ${initial_date!sdoy} ${initial_date!syear}" + - "<--append-- 0.0000000000000 ${initial_date!sdoy} ${initial_date!syear}" + true: + create_config: + fesom.clock: + - "<--append-- ${lasttime} ${parent_date!sdoy} ${parent_date!syear}" + - "<--append-- ${starttime} ${startday} ${start_date!syear}" + + bin_in_work: + bin: "${executable}" + lib: "lib/fesom/libfesom.so" + + bin_sources: + bin: "${bin_dir}/${comp_executable}" + lib: "${fesom.model_dir}/build/lib/libfesom.so" + + + + config_files: + config: config + cvmix: cvmix + dyn: dyn + forcing: forcing + ice: ice + icepack: icepack + io: io + oce: oce + tra: tra + transit: transit + + config_sources: + config: "${namelist_dir}/namelist.config" + cvmix: "${namelist_dir}/namelist.cvmix" + dyn: "${namelist_dir}/namelist.dyn" + forcing: "${namelist_dir}/namelist.forcing" + ice: "${namelist_dir}/namelist.ice" + icepack: "${namelist_dir}/namelist.icepack" + io: "${namelist_dir}/namelist.io" + oce: "${namelist_dir}/namelist.oce" + tra: "${namelist_dir}/namelist.tra" + transit: "${namelist_dir}/namelist.transit" + + config_in_work: + config: "namelist.config" + cvmix: "namelist.cvmix" + dyn: "namelist.dyn" + forcing: "namelist.forcing" + ice: "namelist.ice" + icepack: "namelist.icepack" + io: "namelist.io" + oce: "namelist.oce" + tra: "namelist.tra" + transit: "namelist.transit" + + coupling_fields: + sst_feom: + grid: feom + sit_feom: + grid: feom + sie_feom: + grid: feom + snt_feom: + grid: feom + u_feom: + grid: feom + v_feom: + grid: feom + taux_oce: + grid: feom + tauy_oce: + grid: feom + taux_ico: + grid: feom + tauy_ico: + grid: feom + prec_oce: + grid: feom + snow_oce: + grid: feom + evap_oce: + grid: feom + subl_oce: + grid: feom + heat_oce: + grid: feom + heat_ico: + grid: feom + heat_swo: + grid: feom + hydr_oce: + grid: feom + calv_oce: + grid: feom + enth_oce: + grid: feom + u10w_oce: + grid: feom + v10w_oce: + grid: feom + + + wiso_fields: + - o18w_oce + - hdow_oce + - o16w_oce + - o18i_oce + - hdoi_oce + - o16i_oce + - w1_oce + - w2_oce + - w3_oce + - i1_oce + - i2_oce + - i3_oce + + + choose_with_wiso: + True: + add_restart_in_files: + wiso_restart: wiso_restart + add_restart_out_files: + wiso_restart: wiso_restart + add_coupling_fields: + "[[wiso_fields-->FIELD]]": + grid: feom + + + grids: + feom: + name: feom + nx: ${nx} + ny: 1 + oasis_grid_type: "U" + oyac_grid_type: "GC" + oyac_io_per_node: 4 + number_of_overlapping_points: 0 # oasis P-value + + + further_reading: + - fesom/fesom.forcing.yaml + - fesom/fesom.env.yaml + + # ------------------------ + # RECIPE + # ------------------------ + tidy_recipe: + - "tidy_coupler" + - "tar_binary_restarts" # Plugin + - "assemble" + - "check_for_unknown_files" + - "log_used_files" + - "throw_away_some_infiles" + - "copy_stuff_back_from_work" + - "copy_all_results_to_exp" + - "clean_run_dir" + diff --git a/namelists/fesom2/2.7.0/namelist.config b/namelists/fesom2/2.7.0/namelist.config new file mode 100644 index 000000000..7913968bc --- /dev/null +++ b/namelists/fesom2/2.7.0/namelist.config @@ -0,0 +1,133 @@ +! ============================================================================ +! ============ Namelist file for FESOM2 general configuration ================ +! ============================================================================ +! This file contains the main configuration parameters for FESOM2, including: +! - Model identification and run settings +! - Time stepping and simulation duration +! - Initial time/date settings +! - File paths for mesh, forcing, and output +! - Restart and logging configuration +! - Vertical coordinate system (ALE) +! - Grid geometry and rotation +! - Calendar settings +! - Model components (ice, cavities, etc.) +! - Parallel decomposition +! - Iceberg settings +! ============================================================================ + +! ============================================================================ +! RUN IDENTIFICATION +! ============================================================================ +&modelname +runid = 'fesom' ! run identifier (used in output filenames) +/ + +! ============================================================================ +! TIME STEPPING AND RUN LENGTH +! ============================================================================ +×tep +step_per_day = 36 ! number of time steps per day (determines dt = 86400/step_per_day seconds) + ! common values: 32 (45min), 48 (30min), 72 (20min), 96 (15min), 192 (7min 30sec), + ! 216 (6min 40sec), 240 (6min), 288 (5min), 360 (4min), 720 (2min), 1440 (1min), 2880 (30sec) +run_length = 1 ! total length of simulation run +run_length_unit = 'y' ! unit for run_length: 'y' (years), 'm' (months), 'd' (days), 's' (steps) +/ + +! ============================================================================ +! INITIAL TIME/DATE SETTINGS +! ============================================================================ +&clockinit +timenew = 0.0 ! initial time within the day [seconds] (0.0 = midnight) +daynew = 1 ! initial day of the month (1-31) +yearnew = 1958 ! initial year +/ + +! ============================================================================ +! MESH, INITIALIZATION & OUTPUT PATHS +! ============================================================================ +&paths +MeshPath = '/pool/data/AWICM/FESOM2/MESHES_FESOM2.1/core2/' ! path to mesh files (nod2d.out, elem2d.out, etc.) +ClimateDataPath = '/pool/data/AWICM/FESOM2/INITIAL/phc3.0/' ! path to initial conditions (temperature, salinity) +ResultPath = '/work/ab0246/$USER/runtime/fesom2/' ! path for output files and fesom.clock file +/ + +! ============================================================================ +! RESTART AND LOGGING CONFIGURATION +! ============================================================================ +&restart_log +restart_length = 1 ! frequency for netCDF restart files (required for d,h,s; y,m use 1) +restart_length_unit = 'y' ! unit: 'y' (years), 'm' (months), 'd' (days), 'h' (hours), 's' (steps), 'off' (disabled) +raw_restart_length = 1 ! frequency for raw core dump restart files +raw_restart_length_unit = 'y' ! unit: 'y', 'm', 'd', 'h', 's', 'off' +bin_restart_length = 1 ! frequency for binary derived type restart files +bin_restart_length_unit = 'y' ! unit: 'y', 'm', 'd', 'h', 's', 'off' +logfile_outfreq = 960 ! log file output frequency [number of time steps] +/ + +! ============================================================================ +! VERTICAL COORDINATE SYSTEM (ALE - Arbitrary Lagrangian-Eulerian) +! ============================================================================ +&ale_def +which_ALE = 'zstar' ! vertical coordinate type: + ! 'linfs' = linear free surface + ! 'zlevel' = z-level (fixed depth levels) + ! 'zstar' = z-star (terrain-following with SSH scaling) +use_partial_cell = .false. ! use partial bottom cells for better topography representation (not recommended) +/ + +! ============================================================================ +! GRID GEOMETRY AND ROTATION +! ============================================================================ +&geometry +cartesian = .false. ! use Cartesian coordinates (false = spherical Earth) +fplane = .false. ! use f-plane approximation (constant Coriolis parameter) +cyclic_length = 360 ! length of cyclic domain [degrees] (360 = global) +rotated_grid = .true. ! use rotated grid (typically for coupled models to avoid pole singularity) +force_rotation = .true. ! force grid rotation even if not coupled +alphaEuler = 50. ! first Euler angle (rotation around z-axis) [degrees] +betaEuler = 15. ! second Euler angle (rotation around new x-axis) [degrees] +gammaEuler = -90. ! third Euler angle (rotation around new z-axis) [degrees] + ! Euler angle convention: rotate first around z, then around new x, then around new z +/ + +! ============================================================================ +! CALENDAR SETTINGS +! ============================================================================ +&calendar +include_fleapyear = .true. ! include leap years in calendar (false = 365-day year, true = 365/366-day year) +/ + +! ============================================================================ +! MODEL COMPONENTS AND FEATURES +! ============================================================================ +&run_config +use_ice = .true. ! enable sea ice model +use_cavity = .false. ! enable ice shelf cavities +use_cavity_partial_cell = .false. ! use partial cells in ice shelf cavities (not recommended) +use_floatice = .false. ! enable floating ice (icebergs) +use_sw_pene = .true. ! enable shortwave radiation penetration into ocean +flag_debug = .false. ! enable debug output (verbose logging) +use_transit = .false. ! enable transient tracer module (CFCs, SF6, etc.) +/ + +! ============================================================================ +! PARALLEL DECOMPOSITION (DOMAIN PARTITIONING) +! ============================================================================ +&machine +n_levels = 2 ! number of hierarchy levels for domain decomposition +n_part = 2, 128 ! number of partitions at each level (total CPUs = product of n_part) + ! example: 2 x 128 = 256 MPI tasks + ! adjust based on mesh size and available compute resources + ! maximum scaling reached at ~300 FESOM2 2D nodes per CPU (see first line in nod2d.out for number of 2D nodes) +/ + +! ============================================================================ +! ICEBERG SETTINGS +! ============================================================================ +&icebergs +use_icesheet_coupling = .false. ! enable ice sheet model +ib_num = 1 ! number of iceberg classes +use_icebergs = .false. ! enable iceberg module +steps_per_ib_step = 8 ! ocean time steps per iceberg time step (iceberg subcycling) +ib_async_mode = 0 ! iceberg asynchronous mode (0=synchronous, 1=asynchronous) +/ diff --git a/namelists/fesom2/2.7.0/namelist.cvmix b/namelists/fesom2/2.7.0/namelist.cvmix new file mode 100644 index 000000000..5c73d9403 --- /dev/null +++ b/namelists/fesom2/2.7.0/namelist.cvmix @@ -0,0 +1,211 @@ +! ============================================================================ +! ========== Namelist file for FESOM2 CVMix parameterizations =============== +! ============================================================================ +! This file contains configuration for CVMix (Community Vertical Mixing) +! parameterizations: +! - TKE (Turbulent Kinetic Energy) scheme +! - IDEMIX (Internal Wave Dissipation, Energy, and Mixing) +! - PP (Pacanowski-Philander) scheme +! - KPP (K-Profile Parameterization) +! - TIDAL mixing parameterization +! +! Select the active scheme in namelist.oce (mix_scheme parameter) +! ============================================================================ + +! ============================================================================ +! TKE (TURBULENT KINETIC ENERGY) SCHEME +! ============================================================================ +¶m_tke +! --- TKE Model Parameters --- +tke_c_k = 0.1 ! TKE parameter c_k [dimensionless] +tke_c_eps = 0.7 ! TKE dissipation parameter c_eps [dimensionless] +tke_alpha = 30.0 ! TKE stability function parameter [dimensionless] + +! --- Mixing Length --- +tke_mxl_min = 1.0e-8 ! minimum mixing length [m] +tke_mxl_choice = 2 ! mixing length calculation method: + ! 1 = not implemented + ! 2 = Blanke & Delecluse option (currently only option) + +! --- Viscosity/Diffusivity Limits --- +tke_kappaM_min = 0.0 ! minimum momentum diffusivity [m²/s] +tke_kappaM_max = 100.0 ! maximum momentum diffusivity [m²/s] + +! --- Boundary Conditions --- +tke_cd = 3.75 ! surface boundary condition parameter + ! 3.75 for Dirichlet BC, 1.0 for Neumann BC + +! --- TKE Minimum Values --- +tke_surf_min = 1.0e-4 ! minimum surface TKE [m²/s²] +tke_min = 1.0e-6 ! minimum interior TKE [m²/s²] + +! --- Langmuir Turbulence --- +tke_dolangmuir = .false. ! include Langmuir turbulence parameterization +/ + +! ============================================================================ +! IDEMIX (INTERNAL WAVE ENERGY PARAMETERIZATION) +! ============================================================================ +! Based on Olbers & Eden (2013) and von Pollmann et al. (2017) +! ============================================================================ +¶m_idemix +! --- Time Scales --- +idemix_tau_v = 172800.0 ! vertical symmetrization time scale [s] (2 days) +idemix_tau_h = 1296000.0 ! horizontal symmetrization time scale [s] (15 days) + +! --- Spectral Parameters --- +idemix_gamma = 1.570 ! spectral shape constant [dimensionless] (order 1) +idemix_jstar = 5.0 ! spectral bandwidth in vertical modes [dimensionless] +idemix_mu0 = 0.33333333 ! dissipation parameter [dimensionless] + +! --- Energy Forcing --- +idemix_sforcusage = 0.2 ! fraction of surface forcing used [dimensionless] +idemix_n_hor_iwe_prop_iter = 5 ! iterations for horizontal wave propagation + +! --- Surface Forcing (Wind-Generated Internal Waves) --- +idemix_surforc_file = '/pool/data/AWICM/FESOM2/FORCING/IDEMIX/fourier_smooth_2005_cfsr_inert_rgrid.nc' ! path to surface forcing file +idemix_surforc_vname = 'var706' ! variable name in surface forcing file + +! --- Bottom Forcing (Tidal Internal Waves) --- +!idemix_botforc_file = '/albedo/pool/FESOM/fesom2.0/forcing/idemix/forcing_idemix_final_bin/FIN_tidal_energy_gx1v6_20090205_CESMJayne_remapnn_0.40deg.nc' ! path to bottom forcing !file +!idemix_botforc_vname = 'wave_dissipation' ! variable name in bottom forcing file +idemix_botforc_file = '/albedo/pool/FESOM/fesom2.0/forcing/idemix/forcing_idemix_final_bin/FIN_STORMTIDE2_M2_plus_NYCANDER_CnoM2_bin_0.40deg.nc' ! path to bottom forcing file, +idemix_botforc_vname = 'stormt_M2_plus_nycand_CnoM2' ! variable name in bottom forcing file + +/ + +! ============================================================================ +! PP (PACANOWSKI-PHILANDER) SCHEME +! ============================================================================ +! Based on Pacanowski & Philander (1981) +! ============================================================================ +¶m_pp +! --- PP Variant --- +pp_use_fesompp = .true. ! use FESOM flavor of PP (true) or original PP (false) + +! --- Mixing Coefficients --- +pp_Av0 = 0.01 ! reference mixing coefficient [m²/s] +pp_alpha = 5.0 ! Richardson number dependency parameter [dimensionless] + ! (alpha in eq. 1 of Pacanowski & Philander 1981) +pp_exp = 2.0 ! Richardson number exponent [dimensionless] + ! (n in eq. 1 of Pacanowski & Philander 1981) + +! --- Background Mixing --- +pp_Avbckg = 1.0e-4 ! constant background viscosity [m²/s] +pp_Kvbckg = 1.0e-5 ! constant background diffusivity [m²/s] +pp_use_nonconstKvb = .true. ! use latitude and depth dependent background diffusivity +/ + +! ============================================================================ +! KPP (K-PROFILE PARAMETERIZATION) +! ============================================================================ +! Based on Large et al. (1994) with CVMix implementation options +! ============================================================================ +¶m_kpp +! --- KPP Implementation --- +kpp_use_fesomkpp = .false. ! use CVMix MOM5-like KPP (true) or MOM6-like KPP (false) + +! --- Ocean Boundary Layer (OBL) Depth Calculation --- +kpp_use_enhanceKv = .true. ! add enhanced diffusivity at base of boundary layer +kpp_use_compEkman = .true. ! compute Ekman depth limit for OBL depth +kpp_use_monob = .true. ! compute Monin-Obukhov limit for OBL depth + +! --- Interpolation Methods --- +kpp_interptype_ri = "linear" ! interpolation type for OBL depth determination: + ! 'linear', 'quadratic', 'cubic' +kpp_interptype_atobl = "LMD94" ! interpolation of viscosity/diffusivity at OBL depth: + ! 'linear', 'quadratic', 'cubic', 'LMD94' +kpp_matchtechc = "ParabolicNonLocal" ! diffusivity and non-local transport profile: + ! 'SimpleShapes', 'MatchGradient', 'MatchBoth', 'ParabolicNonLocal' + +! --- Mixing Below OBL --- +kpp_internalmix = "KPP" ! Richardson number dependent mixing below OBL: + ! 'KPP' or 'PP' +kpp_pp_Av0 = 0.01 ! mixing coefficient for PP scheme below OBL [m²/s] + +! --- Shear Mixing Parameters --- +kpp_Av0 = 5.0e-3 ! leading coefficient of shear mixing [m²/s] (default: 5e-3) +kpp_Kv0 = 5.0e-3 ! leading coefficient of shear diffusion [m²/s] +kpp_Ri0 = 0.7 ! critical Richardson number [dimensionless] (0.7 in LMD94) + +! --- Background Mixing --- +kpp_use_nonconstKvb = .true. ! use non-constant background diffusivity (FESOM1.4 formulation) +kpp_Avbckg = 1.0e-4 ! constant background viscosity [m²/s] +kpp_Kvbckg = 1.0e-5 ! constant background diffusivity [m²/s] + +! --- Sea Ice Effects --- +kpp_reduce_tauuice = .false. ! reduce wind stress (u*) under sea ice + +! --- Langmuir Options in cvmix KPP --- + +! Stokes Similarty package +! If true, use Stokes Similarty package (i.e. include wave‐related / Stokes drift +! effects in the surface layer). Triggers usage of additional routines +! that alter the shape functions, or mixing formulations, incorporating wave / +! Stokes drift effects consistent with Monin–Obukhov similarity theory +! (MOST). The code logic probably augments or replaces parts of the standard boundary +! (layer similarity (or nonlocal mixing) using a Stokes‐drift‐aware correction. +kpp_use_StokesMOST= .false. !.true. + +! approximate proportionality between surface wind velocity and stokes velocity +! U_stokes ~ kpp_A_stokes * U_wind +kpp_A_stokes = 0.005 ! a + +! Langmuir option +! Option of Langmuir enhanced mixing apply an enhancement factor to the +! turbulent velocity scale +! LWF16 - MixingCoefEnhancement = Langmuir_EFactor +! RWHGK16 - MixingCoefEnhancement = cvmix_one + ShapeNoMatchAtS/NMshapeMax * & +! (Langmuir_EFactor - cvmix_one) +! NONE - Langmuir switched off, MixingCoefEnhancement=1 +kpp_langmuir_mixing= "NONE" !"LWF16" + +! Option of Langmuir turbulence enhanced entrainment - modify the unresolved shear +! LWF16 - Li Q., Webb A., Fox-Kemper B., Craig A., Danabasoglu G., +! Large W., Vertenstein M., 2016, Langmuir mixing effects on +! global climate: WAVEWATCH III in CESM, Ocean Modelling 103 (2016) 145–160 +! +! LF17 - Li Q., Fox-Kemper B., Breivik O., Webb A., 2017, Statistical +! models of global Langmuir mixing, Ocean Modelling 113 (2017) 95–114 +! +! RWHGK16 - Reichl B., Wang D., Hara T., Ginis I. and Kukulka T, 2016, Impact +! of Sea-State-Dependent Langmuir Turbulence on the Ocean +! Response to a Tropical Cyclone, Mon. Wea. Rev., 144 +! +! NONE - +kpp_langmuir_entrainment= "NONE" !"LF17" +/ + + +! ============================================================================ +! TIDAL MIXING PARAMETERIZATION +! ============================================================================ +! Based on Simmons et al. (2004) +! ============================================================================ +¶m_tidal +! --- Tidal Mixing Scheme --- +tidal_mixscheme = "Simmons" ! tidal mixing scheme (currently only 'Simmons' implemented) + +! --- Energy Dissipation Parameters --- +tidal_efficiency = 0.2 ! mixing efficiency [dimensionless, 0-1] + ! (Gamma in Simmons et al. 2004) +tidal_lcl_mixfrac = 0.33 ! local dissipation fraction [dimensionless] + ! (q in Simmons et al. 2004) + ! fraction of tidal energy dissipated locally vs radiated away + +! --- Vertical Structure --- +tidal_vert_decayscale = 500.0 ! vertical decay scale [m] + ! (zeta in Simmons et al. 2004) + ! controls vertical distribution of tidal mixing + +! --- Diffusivity Limits --- +tidal_max_coeff = 50e-4 ! maximum tidal diffusivity [m²/s] + +! --- Spatial Limits --- +tidal_depth_cutoff = 0.0 ! minimum depth for tidal mixing [m, positive downward] + ! (0.0 = compute everywhere) + +! --- Bottom Forcing (Tidal Energy Input) --- +tidal_botforc_file = '/pool/data/AWICM/FESOM2/FORCING/IDEMIX/tidal_energy_gx1v6_20090205_rgrid.nc' +/ + diff --git a/namelists/fesom2/2.7.0/namelist.dyn b/namelists/fesom2/2.7.0/namelist.dyn new file mode 100644 index 000000000..e670102bb --- /dev/null +++ b/namelists/fesom2/2.7.0/namelist.dyn @@ -0,0 +1,72 @@ +! ============================================================================ +! ========== Namelist file for FESOM2 momentum dynamics ====================== +! ============================================================================ +! This file contains configuration for momentum equations and dynamics: +! - Horizontal viscosity schemes and parameters +! - Momentum advection options +! - Free-slip vs no-slip boundary conditions +! - Vertical velocity splitting +! - Split-explicit barotropic subcycling +! - Energy diagnostics +! ============================================================================ + +! ============================================================================ +! HORIZONTAL VISCOSITY +! ============================================================================ +&dynamics_visc +! --- Viscosity Coefficients --- +visc_gamma0 = 0.003 ! background viscosity coefficient [m/s] + ! viscosity = gamma0 × element_length + ! keep < 0.01 m/s for numerical stability +visc_gamma1 = 0.1 ! flow-aware viscosity coefficient [dimensionless] +visc_gamma2 = 0.285 ! additional viscosity coefficient [s/m] + ! only used for easy backscatter (opt_visc=5) and dynamic backscatter (opt_visc=8) +visc_easybsreturn = 1.5 ! energy return parameter for easy backscatter [dimensionless] + +! --- Viscosity Scheme Selection --- +opt_visc = 5 ! horizontal viscosity scheme: + ! 5 = Kinematic (easy) Backscatter + ! 6 = Biharmonic flow-aware (depends on velocity Laplacian) + ! 7 = Biharmonic flow-aware (depends on velocity differences) + ! 8 = Dynamic Backscatter +check_opt_visc = .true. ! check if opt_visc=5 is valid based on resolution/Rossby radius ratio + +! --- Vertical Viscosity --- +use_ivertvisc = .true. ! use implicit vertical viscosity (recommended for stability) +/ + +! ============================================================================ +! GENERAL DYNAMICS SETTINGS +! ============================================================================ +&dynamics_general +! --- Momentum Advection --- +momadv_opt = 2 ! momentum advection option (only 2 is currently supported) + +! --- Boundary Conditions --- +use_freeslip = .false. ! enable free-slip lateral boundary conditions (false = no-slip) + +! --- Vertical Velocity Splitting --- +use_wsplit = .false. ! enable implicit/explicit splitting of vertical velocity +wsplit_maxcfl = 1.0 ! maximum allowed vertical CFL criterion (range: 0.5-1.0) + ! in older FESOM versions this was w_exp_max=1.e-3 + +! --- Energy Diagnostics --- +ldiag_KE = .false. ! enable kinetic energy diagnostics (requires additional computation) + +! --- Time Stepping --- +AB_order = 2 ! Adams-Bashforth time stepping order (2 or 3) + +! --- Split-Explicit Barotropic Subcycling --- +use_ssh_se_subcycl = .false. ! enable split-explicit subcycling for barotropic mode + ! (faster time stepping for sea surface height) +se_BTsteps = 50 ! number of barotropic subcycles per baroclinic time step +se_BTtheta = 0.14 ! implicitness parameter for barotropic solver (0-1, default: 0.14) +se_bottdrag = .true. ! include bottom drag in barotropic subcycling +se_bdrag_si = .true. ! use semi-implicit bottom drag (true) or explicit (false) +se_visc = .true. ! include viscosity in barotropic subcycling +se_visc_gamma0 = 10 ! background viscosity for barotropic mode [dimensionless] +se_visc_gamma1 = 19500 ! flow-aware viscosity for barotropic mode [dimensionless] + ! typical values: 19500 (CORE2@32spd), 2750 (CORE2@72spd) +se_visc_gamma2 = 0 ! additional viscosity for barotropic mode [dimensionless] +/ + diff --git a/namelists/fesom2/2.7.0/namelist.forcing b/namelists/fesom2/2.7.0/namelist.forcing new file mode 100644 index 000000000..1350eeda5 --- /dev/null +++ b/namelists/fesom2/2.7.0/namelist.forcing @@ -0,0 +1,145 @@ +! ============================================================================ +! ============= Namelist file for FESOM2 atmospheric forcing ================ +! ============================================================================ +! This file contains configuration for atmospheric forcing and surface boundary +! conditions, including: +! - Bulk formulae exchange coefficients (heat, momentum, moisture) +! - Bulk formulae options and reference heights +! - Land ice freshwater forcing +! - Age tracer configuration +! - Surface forcing data files and variables +! - Runoff and salinity restoring +! - Chlorophyll data for shortwave penetration +! ============================================================================ + +! ============================================================================ +! BULK FORMULAE EXCHANGE COEFFICIENTS +! ============================================================================ +! These coefficients control the turbulent exchange of heat, moisture, and +! momentum between the atmosphere and ocean/ice surfaces. +! ============================================================================ +&forcing_exchange_coeff +Ce_atm_oce = 0.00175 ! exchange coefficient of latent heat over open water (dimensionless) +Ch_atm_oce = 0.00175 ! exchange coefficient of sensible heat over open water (dimensionless) +Cd_atm_oce = 0.001 ! drag coefficient between atmosphere and water (dimensionless) +Ce_atm_ice = 0.00175 ! exchange coefficient of latent heat over ice (dimensionless) +Ch_atm_ice = 0.00175 ! exchange coefficient of sensible heat over ice (dimensionless) +Cd_atm_ice = 0.0012 ! drag coefficient between atmosphere and ice (dimensionless) +Swind = 0.0 ! parameterization for coupled current feedback (0.0 = disabled) + ! non-zero values reduce wind stress based on ocean surface currents +/ + +! ============================================================================ +! BULK FORMULAE OPTIONS +! ============================================================================ +! Configuration for bulk formulae calculations (turbulent fluxes). +! Reference heights must match the forcing data specifications. +! ============================================================================ +&forcing_bulk +AOMIP_drag_coeff = .false. ! use AOMIP drag coefficient formulation (false = use standard) +ncar_bulk_formulae = .true. ! use NCAR bulk formulae (Large & Yeager 2004, 2009) +ncar_bulk_z_wind = 10.0 ! reference height for wind forcing [m] + ! CORE2, JRA55-do: 10m; JRA55, NCEP: 2m +ncar_bulk_z_tair = 10.0 ! reference height for air temperature forcing [m] + ! CORE2, JRA55-do: 10m; JRA55, NCEP: 2m +ncar_bulk_z_shum = 10.0 ! reference height for specific humidity forcing [m] + ! CORE2, JRA55-do: 10m; JRA55, NCEP: 2m +/ + +! ============================================================================ +! LAND ICE FRESHWATER FORCING +! ============================================================================ +! Configuration for freshwater input from land ice (glaciers, ice sheets). +! Requires use_landice_water=.true. in namelist.config to enable output. +! ============================================================================ +&land_ice +use_landice_water = .false. ! enable land ice freshwater forcing +landice_start_mon = 5 ! start month for land ice forcing (1-12) +landice_end_mon = 10 ! end month for land ice forcing (1-12) +fwf_path = '' ! path to land ice freshwater flux data files +/ + +! ============================================================================ +! AGE TRACER CONFIGURATION +! ============================================================================ +! Configuration for passive age tracer (tracks water mass age). +! Requires use_age_tracer=.true. in namelist.config to enable output. +! ============================================================================ +&age_tracer +use_age_tracer = .false. ! enable age tracer computation +use_age_mask = .false. ! use spatial mask for age tracer initialization +age_tracer_path = '' ! path to age tracer mask file (if use_age_mask=.true.) +age_start_year = 2000 ! year to start age tracer (tracer age = 0 at this year) +/ + +! ============================================================================ +! SURFACE BOUNDARY CONDITION (FORCING DATA) +! ============================================================================ +! Specification of atmospheric forcing data files and variables. +! File paths are relative to the run directory. +! ============================================================================ +&nam_sbc + ! --- Forcing file paths --- + nm_xwind_file = '/pool/data/AWICM/FESOM2/FORCING/JRA55-do-v1.4.0/uas.' ! name of file with zonal wind speeds + nm_ywind_file = '/pool/data/AWICM/FESOM2/FORCING/JRA55-do-v1.4.0/vas.' ! name of file with meridional wind speeds + nm_xstre_file = '/pool/data/AWICM/FESOM2/FORCING/JRA55-do-v1.4.0/uas.' ! name of file with zonal wind stress + nm_ystre_file = '/pool/data/AWICM/FESOM2/FORCING/JRA55-do-v1.4.0/vas.' ! name of file with meridional wind stress + nm_humi_file = '/pool/data/AWICM/FESOM2/FORCING/JRA55-do-v1.4.0/huss.' ! name of file with air humidity + nm_qsr_file = '/pool/data/AWICM/FESOM2/FORCING/JRA55-do-v1.4.0/rsds.' ! name of file with short wave radiation + nm_qlw_file = '/pool/data/AWICM/FESOM2/FORCING/JRA55-do-v1.4.0/rlds.' ! name of file with long wave radiation + nm_tair_file = '/pool/data/AWICM/FESOM2/FORCING/JRA55-do-v1.4.0/tas.' ! name of file with 2m air temperature + nm_prec_file = '/pool/data/AWICM/FESOM2/FORCING/JRA55-do-v1.4.0/prra.' ! name of file with total precipitation + nm_snow_file = '/pool/data/AWICM/FESOM2/FORCING/JRA55-do-v1.4.0/prsn.' ! name of file with snow precipitation + + ! --- Variable names in netCDF forcing files --- + nm_xwind_var = 'uas' ! name of variable in file with wind + nm_ywind_var = 'vas' ! name of variable in file with wind + nm_xstre_var = 'uas' ! name of variable in file with wind + nm_ystre_var = 'vas' ! name of variable in file with wind + nm_humi_var = 'huss' ! name of variable in file with humidity + nm_qsr_var = 'rsds' ! name of variable in file with solar heat + nm_qlw_var = 'rlds' ! name of variable in file with long wave + nm_tair_var = 'tas' ! name of variable in file with 2m air temperature + nm_prec_var = 'prra' ! name of variable in file with total precipitation + nm_snow_var = 'prsn' ! name of variable in file with total precipitation + nm_mslp_var = 'psl' ! name of variable in file with air_pressure_at_sea_level + + ! --- Time axis configuration in forcing files --- + nm_nc_iyear = 1948 ! initial year of forcing data time axis + nm_nc_imm = 1 ! initial month of forcing data time axis (1-12) + nm_nc_idd = 1 ! initial day of forcing data time axis (1-31) + nm_nc_freq = 1 ! number of data points per day (1=daily, 4=6-hourly, etc.) + nm_nc_tmid = 1 ! time stamp position: 1=mid-point, 0=start of interval + y_perpetual = .false. ! use perpetual year forcing (repeat single year) + + ! --- Enable/disable individual forcing fields --- + l_xwind = .true. ! use zonal wind forcing + l_ywind = .true. ! use meridional wind forcing + l_humi = .true. ! use specific humidity forcing + l_qsr = .true. ! use shortwave radiation forcing + l_qlw = .true. ! use longwave radiation forcing + l_tair = .true. ! use air temperature forcing + l_prec = .true. ! use precipitation forcing + l_mslp = .false. ! use mean sea level pressure forcing + l_cloud = .false. ! use cloud cover forcing + l_snow = .true. ! use snow precipitation forcing + + ! --- Runoff configuration --- + runoff_data_source = 'JRA55' ! runoff data source: 'Dai09', 'JRA55, 'CORE2', or 'NONE' + nm_runoff_file = '' ! path to runoff data + + ! --- Sea surface salinity restoring --- + sss_data_source = 'CORE2' ! SSS restoring data source: 'CORE2', 'WOA', or 'NONE' + nm_sss_data_file = '/pool/data/AWICM/FESOM2/FORCING/JRA55-do-v1.4.0/PHC2_salx.nc' ! path to SSS restoring data file, e.g. PHC2_salx.nc + + ! --- Chlorophyll data for shortwave penetration --- + chl_data_source = 'Sweeney' ! chlorophyll data source: 'Sweeney' (monthly climatology) or 'None' (constant) + ! requires use_sw_pene=.true. in namelist.config + nm_chl_data_file = '/pool/data/AWICM/FESOM2/FORCING/JRA55-do-v1.4.0/Sweeney/Sweeney_2005.nc' ! chlorophyll data file (if Sweeney) + chl_const = 0.1 ! constant chlorophyll concentration [mg/m³] (if chl_data_source='None') + + ! --- Runoff mapper (distributes runoff over coastal area) --- + use_runoff_mapper = .false. ! enable runoff mapper (spreads runoff spatially) + runoff_basins_file = '' ! runoff basin mapping file + runoff_radius = 500000. ! radius for runoff spreading [m] (if use_runoff_mapper=.true.) +/ diff --git a/namelists/fesom2/2.7.0/namelist.ice b/namelists/fesom2/2.7.0/namelist.ice new file mode 100644 index 000000000..8b29ce4bf --- /dev/null +++ b/namelists/fesom2/2.7.0/namelist.ice @@ -0,0 +1,98 @@ +! ============================================================================ +! ============== Namelist file for FESOM2 sea ice model ===================== +! ============================================================================ +! This file contains configuration for sea ice dynamics and thermodynamics: +! - EVP (Elastic-Viscous-Plastic) rheology options +! - Ice strength and deformation parameters +! - Ocean-ice drag +! - Ice thermodynamics and thickness distribution +! - Albedo parameterizations +! ============================================================================ + +! ============================================================================ +! SEA ICE DYNAMICS +! ============================================================================ +&ice_dyn +! --- EVP Rheology Options --- +whichEVP = 0 ! EVP solver type: + ! 0 = standard EVP + ! 1 = modified EVP (mEVP) + ! 2 = adaptive EVP (aEVP) + +! --- Ice Strength Parameters --- +Pstar = 30000.0 ! ice strength parameter [N/m²] (typical: 20000-30000) +ellipse = 2.0 ! aspect ratio of yield curve ellipse (dimensionless) +c_pressure = 20.0 ! ice concentration parameter for strength computation (dimensionless) + +! --- Ice Deformation --- +delta_min = 1.0e-11 ! minimum strain rate for viscosity regularization [s⁻¹] + +! --- EVP Subcycling --- +evp_rheol_steps = 120 ! number of EVP subcycles per ice time step + +! --- mEVP Stability Parameters (for whichEVP=1) --- +alpha_evp = 250 ! mEVP stability constant (adjust with resolution) +beta_evp = 250 ! mEVP stability constant (adjust with resolution) + +! --- aEVP Tuning (for whichEVP=2) --- +c_aevp = 0.15 ! aEVP tuning constant (adjust with resolution) + +! --- Ocean-Ice Coupling --- +Cd_oce_ice = 0.0055 ! drag coefficient between ocean and ice (dimensionless, typical: 0.0055) + +! --- Numerical Stabilization --- +ice_gamma_fct = 0.5 ! smoothing parameter for ice dynamics (0.0-1.0) +ice_diff = 0.0 ! artificial diffusion for numerical stability [m²/s] +theta_io = 0.0 ! rotation angle for ice-ocean stress [degrees] + +! --- Time Stepping --- +ice_ave_steps = 1 ! ice time step = ice_ave_steps × ocean time step +/ + +! ============================================================================ +! SEA ICE THERMODYNAMICS +! ============================================================================ +&ice_therm +! --- Ice Properties --- +Sice = 4.0 ! bulk ice salinity [ppt] (typical range: 3.2-5.0) + +! --- Ice Thickness Distribution --- +iclasses = 7 ! number of ice thickness categories (default: 7) + ! set to 15 if using EM distribution (new_iceclasses=.true.) +new_iclasses = .false. ! use ice thickness distribution from EM observations + ! (Castro-Morales et al., JGR, 2013) +h_cutoff = 3.0 ! thickness cutoff for new_iclasses [m] + +! --- Lead Closing Parameters --- +h0 = 0.5 ! lead closing parameter for Northern Hemisphere [m] +h0_s = 0.5 ! lead closing parameter for Southern Hemisphere [m] + +! --- Minimum Thresholds --- +hmin = 0.01 ! minimum ice thickness [m] +armin = 0.01 ! minimum ice concentration (dimensionless) + +! --- Emissivity (Longwave Radiation) --- +emiss_ice = 0.97 ! emissivity of snow/ice surface (dimensionless, 0-1) +emiss_wat = 0.97 ! emissivity of open water (dimensionless, 0-1) + +! --- Albedo (Shortwave Radiation) --- +albsn = 0.81 ! albedo of frozen snow (dimensionless, 0-1) +albsnm = 0.77 ! albedo of melting snow (dimensionless, 0-1) +albi = 0.7 ! albedo of frozen ice (dimensionless, 0-1) +albim = 0.68 ! albedo of melting ice (dimensionless, 0-1) +albw = 0.1 ! albedo of open water (dimensionless, 0-1) +open_water_albedo = 0 ! open water albedo scheme: + ! 0 = default (constant albw) + ! 1 = Taylor et al. + ! 2 = Briegleb et al. + +! --- Thermal Conductivity --- +con = 2.1656 ! thermal conductivity of ice [W/m/K] +consn = 0.31 ! thermal conductivity of snow [W/m/K] + +! --- Snow Distribution --- +snowdist = .true. ! distribute snow depth according to ice thickness distribution + +! --- Melting Parameters --- +c_melt = 0.5 ! constant in concentration equation for melting conditions (0-1) +/ diff --git a/namelists/fesom2/2.7.0/namelist.icepack b/namelists/fesom2/2.7.0/namelist.icepack new file mode 100644 index 000000000..3fa487147 --- /dev/null +++ b/namelists/fesom2/2.7.0/namelist.icepack @@ -0,0 +1,146 @@ +&env_nml ! In the original release these variables are defined in the icepack.settings + nicecat = 5 ! number of ice thickness categories + nfsdcat = 1 ! number of floe size categories + nicelyr = 4 ! number of vertical layers in the ice + nsnwlyr = 4 ! number of vertical layers in the snow + ntraero = 0 ! number of aerosol tracers (up to max_aero in ice_domain_size.F90) + trzaero = 0 ! number of z aerosol tracers (up to max_aero = 6) + tralg = 0 ! number of algal tracers (up to max_algae = 3) + trdoc = 0 ! number of dissolve organic carbon (up to max_doc = 3) + trdic = 0 ! number of dissolve inorganic carbon (up to max_dic = 1) + trdon = 0 ! number of dissolve organic nitrogen (up to max_don = 1) + trfed = 0 ! number of dissolved iron tracers (up to max_fe = 2) + trfep = 0 ! number of particulate iron tracers (up to max_fe = 2) + nbgclyr = 0 ! number of zbgc layers + trbgcz = 0 ! set to 1 for zbgc tracers (needs TRBGCS = 0 and TRBRI = 1) + trzs = 0 ! set to 1 for zsalinity tracer (needs TRBRI = 1) + trbri = 0 ! set to 1 for brine height tracer + trage = 0 ! set to 1 for ice age tracer + trfy = 0 ! set to 1 for first-year ice area tracer + trlvl = 0 ! set to 1 for level and deformed ice tracers + trpnd = 0 ! set to 1 for melt pond tracers + trbgcs = 0 ! set to 1 for skeletal layer tracers (needs TRBGCZ = 0) + ndtd = 1 ! dynamic time steps per thermodynamic time step +/ + +&grid_nml + kcatbound = 1 +/ + +&tracer_nml + tr_iage = .false. + tr_FY = .false. + tr_lvl = .false. + tr_pond_cesm = .false. + tr_pond_topo = .false. + tr_pond_lvl = .false. + tr_aero = .false. + tr_fsd = .false. +/ + +&thermo_nml + kitd = 1 + ktherm = 1 + conduct = 'bubbly' + a_rapid_mode = 0.5e-3 + Rac_rapid_mode = 10.0 + aspect_rapid_mode = 1.0 + dSdt_slow_mode = -5.0e-8 + phi_c_slow_mode = 0.05 + phi_i_mushy = 0.85 + ksno = 0.3 +/ + +&shortwave_nml + shortwave = 'ccsm3' + albedo_type = 'ccsm3' + albicev = 0.78 + albicei = 0.36 + albsnowv = 0.98 + albsnowi = 0.70 + albocn = 0.1 + ahmax = 0.3 + R_ice = 0. + R_pnd = 0. + R_snw = 1.5 + dT_mlt = 1.5 + rsnw_mlt = 1500. + kalg = 0.6 +/ + +&ponds_nml + hp1 = 0.01 + hs0 = 0. + hs1 = 0.03 + dpscale = 1.e-3 + frzpnd = 'hlid' + rfracmin = 0.15 + rfracmax = 1. + pndaspect = 0.8 +/ + +&forcing_nml + formdrag = .false. + atmbndy = 'default' + calc_strair = .true. + calc_Tsfc = .true. + highfreq = .false. + natmiter = 5 + ustar_min = 0.0005 + emissivity = 0.95 + fbot_xfer_type = 'constant' + update_ocn_f = .true. + l_mpond_fresh = .false. + tfrz_option = 'linear_salt' + oceanmixed_ice = .true. + wave_spec_type = 'none' +/ + +&dynamics_nml + kstrength = 1 + krdg_partic = 1 + krdg_redist = 1 + mu_rdg = 3 + Cf = 17. + P_star = 27000. + C_star = 20. +/ + +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +!!!!!!!!!! Icepack output namelist !!!!!!!!!! +!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +&nml_list_icepack +io_list_icepack = 'aicen ',1, 'm', 4, ! Sea ice concentration + 'vicen ',1, 'm', 4, ! Volume per unit area of ice + 'vsnon ',1, 'm', 4, ! Volume per unit area of snow + !'Tsfcn ',1, 'm', 4, ! Sea ice surf. temperature + !'iagen ',1, 'm', 4, ! Sea ice age + !'FYn ',1, 'm', 4, ! First year ice + !'lvln ',1, 'm', 4, ! Ridged sea ice area and volume + !'pond_cesmn',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_topon',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_lvln ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'brinen ',1, 'm', 4, ! Volume fraction of ice with dynamic salt + !'qicen ',1, 'm', 4, ! Sea ice enthalpy + !'sicen ',1, 'm', 4, ! Sea ice salinity + !'qsnon ',1, 'm', 4, ! Snow enthalpy + ! Average over thicknes classes + !'aice ',1, 'm', 4, ! Sea ice concentration + !'vice ',1, 'm', 4, ! Volume per unit area of ice + !'vsno ',1, 'm', 4, ! Volume per unit area of snow + !'Tsfc ',1, 'm', 4, ! Sea ice surf. temperature + !'iage ',1, 'm', 4, ! Sea ice age + !'FY ',1, 'm', 4, ! First year ice + !'lvl ',1, 'm', 4, ! Ridged sea ice area and volume + !'pond_cesm ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_topo ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'pond_lvl ',1, 'm', 4, ! Melt ponds area, volume and refrozen lid thickness + !'brine ',1, 'm', 4, ! Volume fraction of ice with dynamic salt + !'qice ',1, 'm', 4, ! Sea ice enthalpy + !'sice ',1, 'm', 4, ! Sea ice salinity + !'qsno ',1, 'm', 4, ! Snow enthalpy + ! Other variables + !'uvel ',1, 'm', 4, ! x-component of sea ice velocity + !'vvel ',1, 'm', 4, ! y-component of sea ice velocity +/ diff --git a/namelists/fesom2/2.7.0/namelist.io b/namelists/fesom2/2.7.0/namelist.io new file mode 100644 index 000000000..82707cab6 --- /dev/null +++ b/namelists/fesom2/2.7.0/namelist.io @@ -0,0 +1,343 @@ +! ============================================================================ +! ============ Namelist file for FESOM2 output configuration ================= +! ============================================================================ +! This file contains configuration for model output and diagnostics: +! - Diagnostic flags for optional output fields +! - General output settings (compression, rotation) +! - Output variable list with frequency and precision +! - Complete catalog of all available output fields +! +! See the output catalog at the end of this file for all possible variables. +! Some outputs require specific flags in &diag_list or other namelists. +! ============================================================================ + +! ============================================================================ +! DIAGNOSTIC FLAGS +! ============================================================================ +! Enable/disable optional diagnostic computations and outputs. +! Setting these to .true. enables additional output fields (see catalog below). +! ============================================================================ +&diag_list +ldiag_solver = .false. ! enables solver diagnostics (convergence, iterations) +lcurt_stress_surf = .false. ! enables 'curl_surf' output (vorticity of surface stress) +ldiag_curl_vel3 = .false. ! enables 'curl_u' output (relative vorticity from 3D velocity) +ldiag_Ri = .false. ! enables Richardson number diagnostics ('shear', 'Ri') +ldiag_turbflux = .false. ! enables turbulent flux diagnostics ('KvdTdz', 'KvdSdz') +ldiag_salt3D = .false. ! enables 3D salinity diagnostics +ldiag_dMOC = .false. ! enables 'dMOC' output (density MOC diagnostics) +ldiag_DVD = .false. ! enables 'DVD' output (Discrete Variance Decay diagnostics) +ldiag_forc = .false. ! enables 'FORC' output (comprehensive forcing diagnostics) +ldiag_extflds = .false. ! enables extended field diagnostics +ldiag_destine = .false. ! enables heat content computation ('hc300m', 'hc700m', 'hc') +ldiag_trflx = .false. ! enables tracer flux diagnostics ('utemp', 'vtemp', 'usalt', 'vsalt') +ldiag_uvw_sqr = .false. ! enables 'UVW_SQR' output (squared velocities: u2, v2, w2) +ldiag_trgrd_xyz = .false. ! enables 'TRGRD_XYZ' output (horizontal & vertical tracer gradients) +/ + +! ============================================================================ +! GENERAL OUTPUT SETTINGS +! ============================================================================ +&nml_general +io_listsize = 120 ! total number of streams to allocate. Shall be larger or equal to the number of streams in &nml_list (max. 150) +vec_autorotate = .false. ! unrotate vector fields (velocities, winds) before writing to output files +compression_level = 1 ! compression level for netCDF output (1=fastest, 9=smallest) +/ + +! ============================================================================ +! OUTPUT VARIABLE LIST +! ============================================================================ +! Format: 'variable_id', frequency, unit, precision +! frequency = output frequency (integer) +! unit = 'y' (yearly), 'm' (monthly), 'd' (daily), 'h' (hourly), 's' (steps) +! precision = 4 (single precision) or 8 (double precision) +! ============================================================================ +&nml_list +io_list = 'sst ',1, 'm', 4, + 'sss ',1, 'm', 4, + 'ssh ',1, 'm', 4, + 'uice ',1, 'm', 4, + 'vice ',1, 'm', 4, + 'a_ice ',1, 'm', 4, + 'm_ice ',1, 'm', 4, + 'm_snow ',1, 'm', 4, + 'MLD1 ',1, 'm', 4, + 'MLD2 ',1, 'm', 4, + 'MLD3 ',1, 'm', 4, + 'tx_sur ',1, 'm', 4, + 'ty_sur ',1, 'm', 4, + 'temp ',1, 'm', 4, + 'salt ',1, 'm', 8, + 'N2 ',1, 'm', 4, + 'Kv ',1, 'm', 4, + 'u ',1, 'm', 4, + 'v ',1, 'm', 4, + 'unod ',1, 'm', 4, + 'vnod ',1, 'm', 4, + 'w ',1, 'm', 4, + 'Av ',1, 'm', 4, + 'bolus_u ',1, 'm', 4, + 'bolus_v ',1, 'm', 4, + 'bolus_w ',1, 'm', 4, + 'fw ',1, 'm', 4, + 'fh ',1, 'm', 4, + 'otracers ',1, 'm', 4, +/ + +! ============================================================================ +! COMPLETE CATALOG OF ALL POSSIBLE OUTPUT FIELDS +! ============================================================================ +! Below is a comprehensive list of all valid io_list IDs available in FESOM2. +! To enable any field, copy the line to the &nml_list section above. +! NOTE: Some fields require specific flags to be enabled (see comments). +! ============================================================================ + +! --- 2D OCEAN SURFACE FIELDS --- +! 'sst ',1, 'm', 4, ! sea surface temperature [C] +! 'sss ',1, 'm', 4, ! sea surface salinity [psu] +! 'ssh ',1, 'm', 4, ! sea surface elevation [m] +! 'vve_5 ',1, 'm', 4, ! vertical velocity at 5th level [m/s] +! 't_star ',1, 'm', 4, ! air temperature [C] +! 'qsr ',1, 'm', 4, ! solar radiation [W/s^2] + +! --- 3D OCEAN FIELDS --- +! 'temp ',1, 'm', 4, ! temperature [C] +! 'salt ',1, 'm', 8, ! salinity [psu] +! 'sigma0 ',1, 'm', 4, ! potential density [kg/m3] +! 'u ',1, 'm', 4, ! zonal velocity [m/s] +! 'v ',1, 'm', 4, ! meridional velocity [m/s] +! 'unod ',1, 'm', 4, ! zonal velocity at nodes [m/s] +! 'vnod ',1, 'm', 4, ! meridional velocity at nodes [m/s] +! 'w ',1, 'm', 4, ! vertical velocity [m/s] +! 'otracers ',1, 'm', 4, ! all other tracers if applicable +! 'age ',1, 'm', 4, ! water age tracer [year] (require use_age_tracer=.true.) + +! --- 2D SSH DIAGNOSTIC VARIABLES --- +! 'ssh_rhs ',1, 'm', 4, ! ssh rhs [m/s] +! 'ssh_rhs_old',1, 'm', 4, ! ssh rhs old [m/s] +! 'd_eta ',1, 'm', 4, ! dssh from solver [m] +! 'hbar ',1, 'm', 4, ! ssh n+0.5 tstep [m] +! 'hbar_old ',1, 'm', 4, ! ssh n-0.5 tstep [m] +! 'dhe ',1, 'm', 4, ! dhbar @ elem [m] + +! --- SEA ICE FIELDS (require use_ice=.true.) --- +! 'uice ',1, 'm', 4, ! ice velocity x [m/s] +! 'vice ',1, 'm', 4, ! ice velocity y [m/s] +! 'a_ice ',1, 'm', 4, ! ice concentration [%] +! 'm_ice ',1, 'm', 4, ! ice height per unit area [m] +! 'thdgrice ',1, 'm', 4, ! thermodynamic growth rate ice [m/s] +! 'thdgrarea ',1, 'm', 4, ! thermodynamic growth rate ice concentration [frac/s] +! 'dyngrarea' ,1, 'm', 4, ! dynamic growth rate ice concentration [frac/s] +! 'dyngrice ',1, 'm', 4, ! dynamic growth rate ice [m/s] +! 'thdgrsn ',1, 'm', 4, ! thermodynamic growth rate snow [m/s] +! 'dyngrsnw ',1, 'm', 4, ! dynamic growth rate snow [m/s] +! 'flice ',1, 'm', 4, ! flooding growth rate ice [m/s] +! 'm_snow ',1, 'm', 4, ! snow height per unit area [m] +! 'h_ice ',1, 'm', 4, ! ice thickness over ice-covered fraction [m] +! 'h_snow ',1, 'm', 4, ! snow thickness over ice-covered fraction [m] +! 'fw_ice ',1, 'm', 4, ! fresh water flux from ice ['m/s'] +! 'fw_snw ',1, 'm', 4, ! fresh water flux from snow ['m/s'] + +! --- SEA ICE DEBUG VARIABLES (require use_ice=.true.) --- +! 'strength_ice',1, 'm', 4, ! ice strength [?] +! 'inv_areamass',1, 'm', 4, ! inv_areamass [?] +! 'rhs_a ',1, 'm', 4, ! rhs_a [?] +! 'rhs_m ',1, 'm', 4, ! rhs_m [?] +! 'sgm11 ',1, 'm', 4, ! sgm11 [?] +! 'sgm12 ',1, 'm', 4, ! sgm12 [?] +! 'sgm22 ',1, 'm', 4, ! sgm22 [?] +! 'eps11 ',1, 'm', 4, ! eps11 [?] +! 'eps12 ',1, 'm', 4, ! eps12 [?] +! 'eps22 ',1, 'm', 4, ! eps22 [?] +! 'u_rhs_ice ',1, 'm', 4, ! u_rhs_ice [?] +! 'v_rhs_ice ',1, 'm', 4, ! v_rhs_ice [?] +! 'metric_fac',1, 'm', 4, ! metric_fac [?] +! 'elevat_ice',1, 'm', 4, ! elevat_ice [?] +! 'uwice ',1, 'm', 4, ! uwice [?] +! 'vwice ',1, 'm', 4, ! vwice [?] +! 'twice ',1, 'm', 4, ! twice [?] +! 'swice ',1, 'm', 4, ! swice [?] + +! --- MIXED LAYER DEPTH --- +! 'MLD1 ',1, 'm', 4, ! Mixed Layer Depth [m] Large et al. 1997, bvfreq(nz, node) > db_max +! 'MLD2 ',1, 'm', 4, ! Mixed Layer Depth [m] Levitus treshold, rhopot(nz)-rhopot(1) > 0.125_WP kg/m +! 'MLD3 ',1, 'm', 4, ! Mixed Layer Depth [m] Griffies 2016 , rhopot(nz)-rhopot(1) > 0.03_WP kg/m + +! --- HEAT CONTENT (require ldiag_destine=.true.) --- +! 'hc300m ',1, 'm', 4, ! Vertically integrated heat content upper 300m [J m**-2] +! 'hc700m ',1, 'm', 4, ! Vertically integrated heat content upper 700m [J m**-2] +! 'hc ',1, 'm', 4, ! Vertically integrated heat content total column [J m**-2] + +! --- WATER ISOTOPES IN SEA ICE (require lwiso=.true.) --- +! 'h2o18_ice ',1, 'm', 4, ! h2o18 concentration in sea ice [kmol/m**3] +! 'hDo16_ice ',1, 'm', 4, ! hDo16 concentration in sea ice [kmol/m**3] +! 'h2o16_ice ',1, 'm', 4, ! h2o16 concentration in sea ice [kmol/m**3] + +! --- FRESHWATER FLUX (require use_landice_water=.true.) --- +! 'landice ',1, 'm', 4, ! freshwater flux [m/s] + +! --- SURFACE FORCING --- +! 'tx_sur ',1, 'm', 4, ! zonal wind str. to ocean [N/m2] +! 'ty_sur ',1, 'm', 4, ! meridional wind str. to ocean [N/m2] +! 'curl_surf ',1, 'm', 4, ! vorticity of the surface stress [none] (require lcurt_stress_surf=.true.) +! 'fh ',1, 'm', 4, ! heat flux [W/m2] +! 'fw ',1, 'm', 4, ! fresh water flux [m/s] +! 'atmice_x ',1, 'm', 4, ! stress atmice x [N/m2] +! 'atmice_y ',1, 'm', 4, ! stress atmice y [N/m2] +! 'atmoce_x ',1, 'm', 4, ! stress atmoce x [N/m2] +! 'atmoce_y ',1, 'm', 4, ! stress atmoce y [N/m2] +! 'iceoce_x ',1, 'm', 4, ! stress iceoce x [N/m2] +! 'iceoce_y ',1, 'm', 4, ! stress iceoce y [N/m2] +! 'alpha ',1, 'm', 4, ! thermal expansion [none] +! 'beta ',1, 'm', 4, ! saline contraction [none] +! 'dens_flux ',1, 'm', 4, ! density flux [kg/(m3*s)] +! 'runoff ',1, 'm', 4, ! river runoff [m/s] +! 'evap ',1, 'm', 4, ! evaporation [m/s] +! 'prec ',1, 'm', 4, ! precipitation rain [m/s] +! 'snow ',1, 'm', 4, ! precipitation snow [m/s] +! 'tair ',1, 'm', 4, ! surface air temperature [°C] +! 'shum ',1, 'm', 4, ! specific humidity [] +! 'swr ',1, 'm', 4, ! short wave radiation [W/m^2] +! 'lwr ',1, 'm', 4, ! long wave radiation [W/m^2] +! 'uwind ',1, 'm', 4, ! 10m zonal surface wind velocity [m/s] +! 'vwind ',1, 'm', 4, ! 10m merid. surface wind velocity [m/s] +! 'virtsalt ',1, 'm', 4, ! virtual salt flux [m/s*psu] +! 'relaxsalt ',1, 'm', 4, ! relaxation salt flux [m/s*psu] +! 'realsalt ',1, 'm', 4, ! real salt flux from sea ice [m/s*psu] + +! --- KPP VERTICAL MIXING (require mix_scheme_nmb==1,17,3,37) --- +! 'kpp_obldepth',1, 'm', 4, ! KPP ocean boundary layer depth [m] +! 'kpp_sbuoyflx',1, 'm', 4, ! surface buoyancy flux [m2/s3] + +! --- RECOM 2D BIOGEOCHEMISTRY (require use_REcoM=.true. and __recom) --- +! 'dpCO2s ',1, 'm', 4, ! Difference of oceanic pCO2 minus atmospheric pCO2 [uatm] +! 'pCO2s ',1, 'm', 4, ! Partial pressure of oceanic CO2 [uatm] +! 'CO2f ',1, 'm', 4, ! CO2-flux into the surface water [mmolC/m2/d] +! 'O2f ',1, 'm', 4, ! O2-flux into the surface water [mmolO/m2/d] +! 'Hp ',1, 'm', 4, ! Mean of H-plus ions in the surface water [mol/kg] +! 'aFe ',1, 'm', 4, ! Atmospheric iron input [umolFe/m2/s] +! 'aN ',1, 'm', 4, ! Atmospheric DIN input [mmolN/m2/s] +! 'benN ',1, 'm', 4, ! Benthos Nitrogen [mmol] +! 'benC ',1, 'm', 4, ! Benthos Carbon [mmol] +! 'benSi ',1, 'm', 4, ! Benthos silicon [mmol] +! 'benCalc ',1, 'm', 4, ! Benthos calcite [mmol] +! 'NPPn ',1, 'm', 4, ! Mean NPP nanophytoplankton [mmolC/m2/d] +! 'NPPd ',1, 'm', 4, ! Mean NPP diatoms [mmolC/m2/d] +! 'GPPn ',1, 'm', 4, ! Mean GPP nanophytoplankton [mmolC/m2/d] +! 'GPPd ',1, 'm', 4, ! Mean GPP diatoms [mmolC/m2/d] +! 'NNAn ',1, 'm', 4, ! Net N-assimilation nanophytoplankton [mmolN/m2/d] +! 'NNAd ',1, 'm', 4, ! Net N-assimilation diatoms [mmolN/m2/d] +! 'Chldegn ',1, 'm', 4, ! Chlorophyll degradation nanophytoplankton [1/d] +! 'Chldegd ',1, 'm', 4, ! Chlorophyll degradation diatoms [1/d] +! 'NPPc ',1, 'm', 4, ! Mean NPP coccolithophores [mmolC/(m2*d)] +! 'GPPc ',1, 'm', 4, ! Mean GPP coccolithophores [mmolC/m2/d] +! 'NNAc ',1, 'm', 4, ! Net N-assimilation coccolithophores [mmolN/(m2*d)] +! 'Chldegc ',1, 'm', 4, ! Chlorophyll degradation coccolithophores [1/d] + +! --- RECOM 3D BIOGEOCHEMISTRY (require use_REcoM=.true. and __recom) --- +! 'PAR ',1, 'm', 4, ! PAR [W/m2] +! 'respmeso ',1, 'm', 4, ! Respiration rate of mesozooplankton [mmolC/m2/d] +! 'respmacro ',1, 'm', 4, ! Respiration rate of macrozooplankton [mmolC/m2/d] +! 'respmicro ',1, 'm', 4, ! Respiration rate of microzooplankton [mmolC/m2/d] +! 'calcdiss ',1, 'm', 4, ! Calcite dissolution [mmolC/m2/d] +! 'calcif ',1, 'm', 4, ! Calcification [mmolC/m2/d] +! 'aggn ',1, 'm', 4, ! Aggregation of small phytoplankton [mmolC/m2/d] +! 'aggd ',1, 'm', 4, ! Aggregation of diatoms [mmolC/m2/d] +! 'aggc ',1, 'm', 4, ! Aggregation of coccolithophores [mmolC/m2/d] +! 'docexn ',1, 'm', 4, ! DOC excretion by small phytoplankton [mmolC/m2/d] +! 'docexd ',1, 'm', 4, ! DOC excretion by diatoms [mmolC/m2/d] +! 'docexc ',1, 'm', 4, ! DOC excretion by coccolithophores [mmolC/m2/d] +! 'respn ',1, 'm', 4, ! Respiration by small phytoplankton [mmolC/m2/d] +! 'respd ',1, 'm', 4, ! Respiration by diatoms [mmolC/m2/d] +! 'respc ',1, 'm', 4, ! Respiration by coccolithophores [mmolC/(m2*d)] +! 'NPPn3D ',1, 'm', 4, ! Net primary production of small phytoplankton [mmolC/m2/d] +! 'NPPd3D ',1, 'm', 4, ! Net primary production of diatoms [mmolC/m2/d] +! 'NPPc3D ',1, 'm', 4, ! Net primary production of coccolithophores [mmolC/m2/d] + +! --- WATER ISOTOPES IN OCEAN (require lwiso=.true.) --- +! 'h2o18 ',1, 'm', 4, ! h2o18 concentration [kmol/m**3] +! 'hDo16 ',1, 'm', 4, ! hDo16 concentration [kmol/m**3] +! 'h2o16 ',1, 'm', 4, ! h2o16 concentration [kmol/m**3] + +! --- NEUTRAL SLOPES --- +! 'slopetap_x',1, 'm', 4, ! neutral slope tapered X [none] +! 'slopetap_y',1, 'm', 4, ! neutral slope tapered Y [none] +! 'slopetap_z',1, 'm', 4, ! neutral slope tapered Z [none] +! 'slope_x ',1, 'm', 4, ! neutral slope X [none] +! 'slope_y ',1, 'm', 4, ! neutral slope Y [none] +! 'slope_z ',1, 'm', 4, ! neutral slope Z [none] + +! --- MIXING AND DYNAMICS --- +! 'N2 ',1, 'm', 4, ! brunt väisälä [1/s2] +! 'Kv ',1, 'm', 4, ! vertical diffusivity Kv [m2/s] +! 'Av ',1, 'm', 4, ! vertical viscosity Av [m2/s] + +! --- VISCOSITY TENDENCIES (require dynamics%opt_visc==8) --- +! 'u_dis_tend',1, 'm', 4, ! horizontal velocity viscosity tendency [m/s] +! 'v_dis_tend',1, 'm', 4, ! meridional velocity viscosity tendency [m/s] +! 'u_back_tend',1, 'm', 4, ! horizontal velocity backscatter tendency [m2/s2] +! 'v_back_tend',1, 'm', 4, ! meridional velocity backscatter tendency [m2/s2] +! 'u_total_tend',1, 'm', 4,! horizontal velocity total viscosity tendency [m/s] +! 'v_total_tend',1, 'm', 4,! meridional velocity total viscosity tendency [m/s] + +! --- FERRARI/GM PARAMETERISATION (require Fer_GM=.true.) --- +! 'bolus_u ',1, 'm', 4, ! GM bolus velocity U [m/s] +! 'bolus_v ',1, 'm', 4, ! GM bolus velocity V [m/s] +! 'bolus_w ',1, 'm', 4, ! GM bolus velocity W [m/s] +! 'fer_K ',1, 'm', 4, ! GM, stirring diff. [m2/s] +! 'fer_scal ',1, 'm', 4, ! GM surface scaling [] +! 'fer_C ',1, 'm', 4, ! GM, depth independent speed [m/s] +! 'cfl_z ',1, 'm', 4, ! vertical CFL criteria [?] + +! --- DENSITY MOC DIAGNOSTICS (require ldiag_dMOC=.true.) --- +! 'dMOC ',1, 'm', 4, ! fluxes for density MOC (multiple variables) + +! --- PRESSURE GRADIENT FORCE --- +! 'pgf_x ',1, 'm', 4, ! zonal pressure gradient force [m/s^2] +! 'pgf_y ',1, 'm', 4, ! meridional pressure gradient force [m/s^2] + +! --- ALE LAYER THICKNESS --- +! 'hnode ',1, 'm', 4, ! vertice layer thickness [m] +! 'hnode_new ',1, 'm', 4, ! hnode_new [m] +! 'helem ',1, 'm', 4, ! elemental layer thickness [m] + +! --- OIFS/IFS INTERFACE (require __oifs or __ifsinterface) --- +! 'alb ',1, 'm', 4, ! ice albedo [none] +! 'ist ',1, 'm', 4, ! ice surface temperature [K] +! 'qsi ',1, 'm', 4, ! ice heat flux [W/m^2] +! 'qso ',1, 'm', 4, ! oce heat flux [W/m^2] +! 'enthalpy ',1, 'm', 4, ! enthalpy of fusion [W/m^2] +! 'qcon ',1, 'm', 4, ! conductive heat flux [W/m^2] +! 'qres ',1, 'm', 4, ! residual heat flux [W/m^2] +! 'runoff_liquid',1, 'm', 4, ! liquid water runoff [m/s] +! 'runoff_solid',1, 'm', 4, ! solid water runoff [m/s] + +! --- ICEBERG OUTPUTS (require use_icebergs=.true.) --- +! 'icb ',1, 'm', 4, ! iceberg outputs (multiple variables) + +! --- TKE MIXING DIAGNOSTICS (require mix_scheme_nmb==5 or 56) --- +! 'TKE ',1, 'm', 4, ! TKE diagnostics (multiple variables) + +! --- IDEMIX MIXING DIAGNOSTICS (require mod(mix_scheme_nmb,10)==6) --- +! 'IDEMIX ',1, 'm', 4, ! IDEMIX diagnostics (multiple variables) + +! --- TIDAL MIXING DIAGNOSTICS (require mod(mix_scheme_nmb,10)==7) --- +! 'TIDAL ',1, 'm', 4, ! TIDAL diagnostics (multiple variables) + +! --- FORCING DIAGNOSTICS (require ldiag_forc=.true.) --- +! 'FORC ',1, 'm', 4, ! forcing diagnostics (multiple variables) + +! --- DISCRETE VARIANCE DECAY (require ldiag_DVD=.true.) --- +! 'DVD ',1, 'm', 4, ! DVD diagnostics (multiple variables) + +! --- SPLIT-EXPLICIT SUBCYCLING (require dynamics%use_ssh_se_subcycl=.true.) --- +! 'SPLIT-EXPL',1, 'm', 4, ! split-explicit diagnostics (multiple variables) + +! --- SQUARED VELOCITIES (require ldiag_uvw_sqr=.true.) --- +! 'UVW_SQR ',1, 'm', 4, ! squared velocities (u2, v2, w2) + +! --- TRACER GRADIENTS (require ldiag_trgrd_xyz=.true.) --- +! 'TRGRD_XYZ ',1, 'm', 4, ! horizontal and vertical tracer gradients + +! ============================================================================ +! END OF CATALOG +! ============================================================================ diff --git a/namelists/fesom2/2.7.0/namelist.oce b/namelists/fesom2/2.7.0/namelist.oce new file mode 100644 index 000000000..c0dc986bd --- /dev/null +++ b/namelists/fesom2/2.7.0/namelist.oce @@ -0,0 +1,76 @@ +! ============================================================================ +! ============ Namelist file for FESOM2 ocean dynamics ====================== +! ============================================================================ +! This file contains configuration for ocean dynamics and parameterizations: +! - Bottom drag and vertical viscosity +! - Gent-McWilliams (GM) eddy parameterization +! - Redi isopycnal diffusion +! - Vertical mixing schemes (KPP, PP) +! - Convection parameters +! - Tidal forcing +! ============================================================================ + +! ============================================================================ +! OCEAN DYNAMICS AND PARAMETERIZATIONS +! ============================================================================ +&oce_dyn +! --- Basic ocean dynamics parameters --- +C_d = 0.0025 ! bottom drag coefficient (dimensionless, typical: 0.0025) +A_ver = 1.e-4 ! background vertical viscosity [m²/s] +scale_area = 5.8e9 ! reference element area for viscosity/diffusivity scaling [m²] + +! --- Salt Plume Parameterization --- +SPP = .false. ! enable Salt Plume Parameterization (for brine rejection under sea ice) + +! --- Gent-McWilliams (GM) Eddy Parameterization --- +Fer_GM = .true. ! to swith on/off GM after Ferrari et al. 2010 +K_GM_max = 1000.0 ! max. GM thickness diffusivity (m2/s) +K_GM_min = 2.0 ! max. GM thickness diffusivity (m2/s) +K_GM_bvref = 1 ! def of bvref in ferreira scaling 0=srf,1=bot mld,2=mean over mld,3=weighted mean over mld +K_GM_rampmax = -1.0 ! Resol >K_GM_rampmax[km] GM on +K_GM_rampmin = -1.0 ! Resol 8 if (ciso == .true.) otherwise -> 4 +use_MEDUSA = .false. ! Main switch for the sediment model MEDUSA +sedflx_num = 0 ! if 0: no file from MEDUSA is read but default sediment +bottflx_num = 4 ! if ciso&ciso_14: =8; if .not.ciso_14: =6; no ciso: =4 +use_atbox = .false. +add_loopback = .false. ! add loopback fluxes through rivers to the surface +lb_tscale = 1.0 ! /year: fraction of loopback fluxes yearly added to the surface +/ + +&pasinking +Vdet_a = 0.0288 ! [1/day] +Vcalc = 0.0144 ! [1/day] +/ + +&painitialization_N +cPhyN = 0.2d0 +cHetN = 0.2d0 +cZoo2N = 0.2d0 +/ + +&paArrhenius +recom_Tref = 288.15d0 ! [K] +C2K = 273.15d0 ! Conversion from degrees C to K +Ae = 4500.d0 ! [K] Slope of the linear part of the Arrhenius function +reminSi = 0.02d0 +k_o2_remin = 15.d0 ! NEW O2remin mmol m-3; Table 1 in Cram 2018 cites DeVries & Weber 2017 for a range of 0-30 mmol m-3 +/ + +&palimiter_function +NMinSlope = 50.d0 +SiMinSlope = 1000.d0 +NCmin = 0.04d0 !0.05d0 +NCmin_d = 0.04d0 !0.05d0 +NCmin_c = 0.04d0 ! NEW +SiCmin = 0.04d0 +k_Fe = 0.04d0 +k_Fe_d = 0.12d0 +k_Fe_c = 0.09d0 ! NEW +k_si = 4.d0 +P_cm = 3.0d0 ! [1/day] Rate of C-specific photosynthesis +P_cm_d = 3.5d0 +P_cm_c = 2.8d0 ! NEW +/ + +&palight_calculations +k_w = 0.04d0 ! [1/m] Light attenuation coefficient +a_chl = 0.03d0 ! [1/m * 1/(mg Chl)] Chlorophyll specific attenuation coefficients +/ + +&paphotosynthesis +alfa = 0.14d0 ! [(mmol C*m2)/(mg Chl*W*day)] +alfa_d = 0.19d0 ! An initial slope of the P-I curve +alfa_c = 0.10d0 ! NEW +parFrac = 0.43d0 +/ + +&paassimilation +V_cm_fact = 0.7d0 ! scaling factor for temperature dependent maximum of C-specific N-uptake +V_cm_fact_d = 0.7d0 +V_cm_fact_c = 0.7d0 ! NEW +NMaxSlope = 1000.d0 ! Max slope for limiting function +SiMaxSlope = 1000.d0 +NCmax = 0.2d0 ! [mmol N/mmol C] Maximum cell quota of nitrogen (N:C) +NCmax_d = 0.2d0 +NCmax_c = 0.15d0 ! NEW +SiCmax = 0.8d0 +NCuptakeRatio = 0.2d0 ! [mmol N/mmol C] Maximum uptake ratio of N:C +NCUptakeRatio_d = 0.2d0 +NCUptakeRatio_c = 0.2d0 ! NEW +SiCUptakeRatio = 0.2d0 +k_din = 0.55d0 ! [mmol N/m3] Half-saturation constant for nitrate uptake +k_din_d = 1.0d0 +k_din_c = 0.9d0 ! NEW +Chl2N_max = 3.15d0 ! [mg CHL/mmol N] Maximum CHL a : N ratio = 0.3 gCHL gN^-1 +Chl2N_max_d = 4.2d0 +Chl2N_max_c = 3.5d0 ! NEW +res_phy = 0.01d0 ! [1/day] Maintenance respiration rate constant +res_phy_d = 0.01d0 +res_phy_c = 0.01d0 ! NEW +biosynth = 2.33d0 ! [mmol C/mmol N] Cost of biosynthesis +biosynthSi = 0.d0 +/ + +&pairon_chem +totalligand = 1.d0 ! [mumol/m3] order 1. Total free ligand +ligandStabConst = 100.d0 ! [m3/mumol] order 100. Ligand-free iron stability constant +/ + +&pazooplankton +graz_max = 0.31d0 ! [mmol N/(m3 * day)] Maximum grazing loss parameter +epsilonr = 0.09d0 ! [(mmol N)2 /m6] Half saturation constant for grazing loss +res_het = 0.028d0 ! [1/day] Respiration by heterotrophs and mortality (loss to detritus) +Redfield = 6.625 ! [mmol C/mmol N] Redfield ratio of C:N = 106:16 +loss_het = 0.04d0 ! [1/day] Temperature dependent N degradation of extracellular organic N (EON) +pzDia = 1.0d0 !0.5d0 ! Maximum diatom preference +sDiaNsq = 0.d0 +pzPhy = 0.5d0 !0.25d0 !1.0d0 ! Maximum nano-phytoplankton preference (NEW: 3/12) +sPhyNsq = 0.d0 +pzCocco = 0.666d0 ! NEW (8/12) +sCoccoNsq = 0.d0 ! NEW +pzMicZoo = 1.0d0 ! NEW 3Zoo Maximum nano-phytoplankton preference +sMicZooNsq = 0.d0 ! NEW 3Zoo +tiny_het = 1.d-5 ! for more stable computation of HetRespFlux (_plus). Value can be > tiny because HetRespFlux ~ hetC**2. +/ + +&pasecondzooplankton +graz_max2 = 0.1d0 ! [mmol N/(m3 * day)] Maximum grazing loss parameter +epsilon2 = 0.0144d0 ! [(mmol N)2 /m6] Half saturation constant for grazing loss +res_zoo2 = 0.0107d0 ! [1/day] Respiration by heterotrophs and mortality (loss to detritus) +loss_zoo2 = 0.003d0 ! [1/day] Temperature dependent N degradation of extracellular organic N (EON) +fecal_rate_n = 0.104d0 ! [1/day] Temperature dependent N degradation of \ +fecal_rate_c = 0.236d0 +fecal_rate_n_mes = 0.25d0 ! NEW 3Zoo +fecal_rate_c_mes = 0.32d0 ! NEW 3Zoo +pzDia2 = 1.5d0 !1.d0 ! Maximum diatom preference +sDiaNsq2 = 0.d0 +pzPhy2 = 0.5d0 ! Maximum diatom preference +sPhyNsq2 = 0.d0 +pzCocco2 = 0.5d0 ! NEW +sCoccoNsq2 = 0.d0 ! NEW +pzHet = 1.5d0 !0.8d0 ! Maximum diatom preference +sHetNsq = 0.d0 +pzMicZoo2 = 1.0d0 ! NEW 3Zoo Maximum nano-phytoplankton preference +sMicZooNsq2 = 0.d0 +t1_zoo2 = 28145.d0 ! Krill temp. function constant1 +t2_zoo2 = 272.5d0 ! Krill temp. function constant2 +t3_zoo2 = 105234.d0 ! Krill temp. function constant3 +t4_zoo2 = 274.15d0 ! Krill temp. function constant3 +/ + +&pathirdzooplankton +graz_max3 = 0.46d0 ! NEW 3Zoo [mmol N/(m3 * day)] Maximum grazing loss parameter +epsilon3 = 0.64d0 ! NEW 3Zoo [(mmol N)2 /m6] Half saturation constant for grazing loss +loss_miczoo = 0.01d0 ! NEW 3Zoo [1/day] Temperature dependent N degradation of extracellular organic N (EON) +res_miczoo = 0.01d0 ! NEW 3Zoo [1/day] Respiration by heterotrophs and mortality (loss to detritus) +pzDia3 = 0.5d0 ! NEW 3Zoo Maximum diatom preference +sDiaNsq3 = 0.d0 ! NEW 3Zoo +pzPhy3 = 1.0d0 ! NEW 3Zoo Maximum nano-phytoplankton preference +sPhyNsq3 = 0.d0 ! NEW 3Zoo +pzCocco3 = 0.d0 ! NEW 3Zoo Maximum coccolithophore preference ! ATTENTION: This value needs to be tuned; I start with zero preference! +sCoccoNsq3 = 0.d0 ! NEW 3Zoo +/ + +&pagrazingdetritus +pzDet = 0.5d0 ! Maximum small detritus prefence by first zooplankton +sDetNsq = 0.d0 +pzDetZ2 = 0.5d0 ! Maximum large detritus preference by first zooplankton +sDetZ2Nsq = 0.d0 +pzDet2 = 0.5d0 ! Maximum small detritus prefence by second zooplankton +sDetNsq2 = 0.d0 +pzDetZ22 = 0.5d0 ! Maximum large detritus preference by second zooplankton +sDetZ2Nsq2 = 0.d0 +/ + +&paaggregation +agg_PD = 0.165d0 ! [m3/(mmol N * day)] Maximum aggregation loss parameter for DetN +agg_PP = 0.015d0 ! [m3/(mmol N * day)] Maximum aggregation loss parameter for PhyN and DiaN (plankton) +/ + +&padin_rho_N +rho_N = 0.11d0 ! [1/day] Temperature dependent N degradation of extracellular organic N (EON) (Remineralization of DON) +/ + +&padic_rho_C1 +rho_C1 = 0.1d0 ! [1/day] Temperature dependent C degradation of extracellular organic C (EOC) +/ + +&paphytoplankton_N +lossN = 0.05d0 ! [1/day] Phytoplankton loss of organic N compounds +lossN_d = 0.05d0 +lossN_c = 0.05d0 ! NEW +/ + +&paphytoplankton_C +lossC = 0.10d0 ! [1/day] Phytoplankton loss of carbon +lossC_d = 0.10d0 +lossC_c = 0.10d0 ! NEW +/ + +&paphytoplankton_ChlA +deg_Chl = 0.25d0 !0.2d0 !0.25d0 ! [1/day] +deg_Chl_d = 0.15d0 !0.2d0 !0.15d0 +deg_Chl_c = 0.2d0 ! NEW (has been 0.5) +/ + +&padetritus_N +gfin = 0.3d0 ! NEW 3Zoo [] Grazing efficiency (fraction of grazing flux into zooplankton pool) +grazEff2 = 0.8d0 ! [] Grazing efficiency (fraction of grazing flux into second zooplankton pool) +grazEff3 = 0.8d0 ! NEW 3Zoo [] Grazing efficiency (fraction of grazing flux into microzooplankton pool) +reminN = 0.165d0 ! [1/day] Temperature dependent remineralisation rate of detritus +/ + +&padetritus_C +reminC = 0.15d0 ! [1/day] Temperature dependent remineralisation rate of detritus +rho_c2 = 0.1d0 ! [1/day] Temperature dependent C degradation of TEP-C +/ + +&paheterotrophs +lossN_z = 0.1d0 +lossC_z = 0.1d0 +/ + +&paseczooloss +lossN_z2 = 0.02d0 +lossC_z2 = 0.02d0 +/ + +&pathirdzooloss +lossN_z3 = 0.05d0 ! NEW 3Zoo +lossC_z3 = 0.05d0 ! NEW 3Zoo +/ + +&paco2lim ! NEW +Cunits = 976.5625 ! Conversion factor between [mol/m3] (model) and [umol/kg] (function): (1000 * 1000) / 1024 +a_co2_phy = 1.162e+00 ! [dimensionless] +a_co2_dia = 1.040e+00 ! [dimensionless] +a_co2_cocco = 1.109e+00 ! [dimensionless] +a_co2_calc = 1.102e+00 ! [dimensionless] +b_co2_phy = 4.888e+01 ! [mol/kg] +b_co2_dia = 2.890e+01 ! [mol/kg] +b_co2_cocco = 3.767e+01 ! [mol/kg] +b_co2_calc = 4.238e+01 ! [mol/kg] +c_co2_phy = 2.255e-01 ! [kg/mol] +c_co2_dia = 8.778e-01 ! [kg/mol] +c_co2_cocco = 3.912e-01 ! [kg/mol] +c_co2_calc = 7.079e-01 ! [kg/mol] +d_co2_phy = 1.023e+07 ! [kg/mol] +d_co2_dia = 2.640e+06 ! [kg/mol] +d_co2_cocco = 9.450e+06 ! [kg/mol] +d_co2_calc = 1.343e+07 ! [kg/mol] +/ + +&pairon +Fe2N = 0.033d0 ! Fe2C * 6.625 +Fe2N_benthos = 0.15d0 ! test, default was 0.14 Fe2C_benthos * 6.625 - will have to be tuned. [umol/m2/day] +kScavFe = 0.07d0 +dust_sol = 0.02d0 ! Dissolution of Dust for bioavaliable +RiverFeConc = 100 +/ + +&pacalc +calc_prod_ratio = 0.02 +calc_diss_guts = 0.0d0 +calc_diss_rate = 0.005714 ! 20.d0/3500.d0 +calc_diss_rate2 = 0.005714d0 +calc_diss_omegac = 0.197d0 ! NEW DISS Value from Aumont et al. 2015, will be used with OmegaC_diss flag +calc_diss_exp = 1.d0 ! NEW DISS Exponent in the dissolution rate of calcite, will be used with OmegaC_diss flag +/ + +&pabenthos_decay_rate +decayRateBenN = 0.005d0 +decayRateBenC = 0.005d0 +decayRateBenSi = 0.005d0 +q_NC_Denit = 0.86d0 ! N:C quota of the denitrification process +/ + +&paco2_flux_param +permil = 0.000000976 ! 1.e-3/1024.5d0 ! Converting DIC from [mmol/m3] to [mol/kg] +permeg = 1.e-6 ! [atm/uatm] Changes units from uatm to atm +!X1 = exp(-5.d0*log(10.d0)) ! Lowest ph-value = 7.7 (phlo) +!X2 = exp(-9.d0*log(10.d0)) ! Highest ph-value = 9.5 (phhi) +Xacc = 1.e-12 ! Accuracy for ph-iteration (phacc) +CO2_for_spinup = 278.d0 ! [uatm] Atmospheric partial pressure of CO2 +/ + +&paalkalinity_restoring +surf_relax_Alk = 3.2e-07 !10.d0/31536000.d0 +/ + +&paballasting +rho_POC = 1033.d0 ! kg m-3; density of POC (see Table 1 in Cram et al., 2018) +rho_PON = 1033.d0 ! kg m-3; density of PON (see Table 1 in Cram et al., 2018) +rho_CaCO3 = 2830.d0 ! kg m-3; density of CaCO3 (see Table 1 in Cram et al., 2018) +rho_opal = 2090.d0 ! kg m-3; density of Opal (see Table 1 in Cram et al., 2018) +rho_ref_part = 1230.d0 ! kg m-3; reference particle density (see Cram et al., 2018) +rho_ref_water = 1027.d0 ! kg m-3; reference seawater density (see Cram et al., 2018) +visc_ref_water = 0.00158d0 ! kg m-1 s-1; reference seawater viscosity, at Temp=4 degC (see Cram et al., 2018) +w_ref1 = 10.d0 ! m s-1; reference sinking velocity of small detritus +w_ref2 = 200.d0 ! m s-1; reference sinking velocity of large detritus +depth_scaling1 = 0.015d0 ! s-1; factor to increase sinking speed of det1 with depth, set to 0 if not wanted +depth_scaling2 = 0.d0 ! s-1; factor to increase sinking speed of det2 with depth, set to 0 if not wanted +max_sinking_velocity = 250.d0 ! d-1; for numerical stability, set a maximum possible sinking velocity here (applies to both detritus classes) +/ + +&paciso +ciso_init = .false. ! initial fractionation of bulk organic matter +ciso_14 = .false. ! include inorganic radiocarbon +ciso_organic_14 = .false. ! include organic radiocarbon +lambda_14 = 3.8561e-12 ! corresponding to 1 year = 365.00 days +delta_CO2_13 = -6.61 ! atmospheric d13C (permil), global-mean value +big_delta_CO2_14(1) = 0. ! atmospheric D14C (permil), northern hemisphere polewards of 30°N +big_delta_CO2_14(2) = 0. ! atmospheric D14C (permil), (sub) tropical zone 30°N - 30°S +big_delta_CO2_14(3) = 0. ! atmospheric D14C (permil), southern hemisphere polewards of 30°S +atbox_spinup = .false. +cosmic_14_init = 2.0 +/ + diff --git a/namelists/fesom2/2.7.0/namelist.tra b/namelists/fesom2/2.7.0/namelist.tra new file mode 100644 index 000000000..5c81b332c --- /dev/null +++ b/namelists/fesom2/2.7.0/namelist.tra @@ -0,0 +1,118 @@ +! ============================================================================ +! ============ Namelist file for FESOM2 tracer configuration ================= +! ============================================================================ +! This file contains configuration for ocean tracers (temperature, salinity, +! and passive tracers): +! - Tracer list and advection/diffusion schemes +! - Initial conditions (3D ocean and 2D sea ice) +! - Biharmonic diffusion options +! - Vertical diffusion and time stepping +! - Physical parameterizations (mixing, restoring) +! ============================================================================ + +! ============================================================================ +! TRACER ARRAY ALLOCATION +! ============================================================================ +&tracer_listsize +num_tracers = 100 ! number of tracers to allocate (must be ≥ actual number of tracers) +/ + +! ============================================================================ +! TRACER LIST AND ADVECTION SCHEMES +! ============================================================================ +! Format: ID, horizontal_advection, vertical_advection, horizontal_diffusion, Kh_factor, Kv_factor +! Advection schemes: 'MFCT' (Multidimensional FCT), 'UPW1' (1st-order upwind), 'QR4C' (4th-order) +! Diffusion schemes: 'FCT' (Flux-Corrected Transport), 'NON' (none) +! Order switches : hor./vert. Ord.=1.0 --> 4th order, =0.0 --> 3rd order, =0.5 --> mixed 3rd&4th order +! ============================================================================ +! nml_tracer_list = +! idx, hor. Adv, vert. Adv., use FCT, hor.Ord., vert. Ord. +! 1 , 'MFCT' , 'QR4C' , 'FCT ' , 1. , 1. , ! temperature +! 2 , 'MFCT' , 'QR4C' , 'FCT ' , 1. , 1. , ! salinity +!101 , 'UPW1' , 'UPW1' , 'NON ' , 0. , 0. ! example passive tracer +&tracer_list +nml_tracer_list = +1 , 'MFCT', 'QR4C', 'FCT ', 0., 1., +2 , 'MFCT', 'QR4C', 'FCT ', 0., 1., +!101, 'UPW1', 'UPW1', 'NON ', 0., 0. +/ + +! ============================================================================ +! 3D TRACER INITIAL CONDITIONS (OCEAN) +! ============================================================================ +&tracer_init3d +n_ic3d = 2 ! number of 3D tracers to initialize from files +idlist = 2, 1 ! tracer IDs to initialize (1=temperature, 2=salinity) +filelist = 'phc3.0_winter.nc', 'phc3.0_winter.nc' ! netCDF files in ClimateDataPath (one per tracer) +varlist = 'salt', 'temp' ! variable names in the netCDF files +t_insitu = .true. ! if true, convert in-situ temperature to potential temperature +/ + +! ============================================================================ +! 2D TRACER INITIAL CONDITIONS (SEA ICE) +! ============================================================================ +&tracer_init2d +n_ic2d = 3 ! number of 2D tracers to initialize from files +idlist = 1, 2, 3 ! tracer IDs (1=ice concentration, 2=ice thickness, 3=snow thickness) +filelist = 'a_ice.nc', 'm_ice.nc', 'm_snow.nc' ! netCDF files in ClimateDataPath +varlist = 'a_ice', 'm_ice', 'm_snow' ! variable names in the netCDF files +ini_ice_from_file = .false. ! enable initialization from files (false = use default values) +/ + +! ============================================================================ +! TRACER GENERAL SETTINGS +! ============================================================================ +&tracer_general +! --- Biharmonic Diffusion --- +! Recommended for very high resolution runs (where Redi is typically disabled) +smooth_bh_tra = .false. ! enable biharmonic diffusion (filter implementation) for tracers +gamma0_tra = 0.0005 ! background biharmonic diffusion coefficient [dimensionless] +gamma1_tra = 0.0125 ! flow-aware biharmonic diffusion coefficient [dimensionless] +gamma2_tra = 0. ! additional biharmonic diffusion coefficient [dimensionless] + +! --- Vertical Diffusion and Time Stepping --- +i_vert_diff = .true. ! use implicit vertical diffusion (recommended for stability) +AB_order = 2 ! Adams-Bashforth time stepping order (2 or 3) +/ + +! ============================================================================ +! TRACER PHYSICS AND PARAMETERIZATIONS +! ============================================================================ +&tracer_phys +! --- Monin-Obukhov Mixing (TB04) --- +use_momix = .false. ! enable Monin-Obukhov mixing (Timmermann & Beckmann 2004) +momix_lat = -50.0 ! latitude threshold for TB04 [degrees] (90 = global, -50 = south of 50°S) +momix_kv = 0.01 ! mixing coefficient within MO length [m²/s] + +! --- Convective Instability Mixing --- +use_instabmix = .true. ! enhance mixing for unstable stratification (convection) +instabmix_kv = 0.1 ! mixing coefficient for unstable stratification [m²/s] + +! --- Wind Mixing (PP scheme only) --- +use_windmix = .false. ! enhance near-surface mixing by wind (for PP mixing stability) +windmix_kv = 1.e-3 ! wind mixing coefficient [m²/s] +windmix_nl = 2 ! number of surface layers for wind mixing + +! --- Shear Instability (KPP) --- +diff_sh_limit = 5.0e-3 ! maximum diffusivity due to shear instability [m²/s] (for KPP) + +! --- Background Diffusivity --- +Kv0_const = .true. ! use constant background vertical diffusivity +K_ver = 1.0e-5 ! background vertical diffusivity [m²/s] +K_hor = 0. ! background horizontal diffusivity [m²/s] + +! --- Double Diffusion (KPP) --- +double_diffusion = .false. ! enable double diffusion parameterization (for KPP) + +! --- Surface Restoring --- +surf_relax_T = 0.0 ! surface temperature restoring coefficient [m/s] (0 = disabled) +surf_relax_S = 1.929e-06 ! surface salinity restoring coefficient [m/s] +balance_salt_water = .true. ! balance virtual salt flux with freshwater flux + +! --- Climatology Restoring --- +clim_relax = 0.0 ! 3D climatology restoring coefficient [1/s] (0 = disabled) + +! --- Reference Salinity --- +ref_sss_local = .true. ! use local reference SSS (true) or global constant (false) +ref_sss = 34. ! global reference salinity [psu] (if ref_sss_local=false) +/ diff --git a/namelists/fesom2/2.7.0/namelist.transit b/namelists/fesom2/2.7.0/namelist.transit new file mode 100644 index 000000000..80313df59 --- /dev/null +++ b/namelists/fesom2/2.7.0/namelist.transit @@ -0,0 +1,53 @@ +! ============================================================================ +! ========== Namelist file for FESOM2 transient tracers ===================== +! ============================================================================ +! This file contains configuration for transient tracer simulations: +! - Radioactive isotopes (14C, 39Ar) +! - Chlorofluorocarbons (CFC-11, CFC-12) +! - Sulfur hexafluoride (SF6) +! - Anthropogenic vs paleoclimate simulations +! - Atmospheric boundary conditions +! - Decay constants +! +! Requires use_transit=.true. in namelist.config +! ============================================================================ + +! ============================================================================ +! TRANSIENT TRACER CONFIGURATION +! ============================================================================ +&transit_param +! --- Enable Individual Tracers --- +l_r14c = .false. ! enable radiocarbon (14C/C ratio) +l_r39ar = .false. ! enable 39Ar/Ar ratio +l_f11 = .false. ! enable CFC-11 (chlorofluorocarbon) +l_f12 = .false. ! enable CFC-12 (chlorofluorocarbon) +l_sf6 = .false. ! enable SF6 (sulfur hexafluoride) + +! --- Simulation Type --- +anthro_transit = .false. ! anthropogenic transient tracer simulation (modern era) +paleo_transit = .false. ! paleoclimate transient tracer simulation + +! --- Time Series Configuration --- +length_transit = 1 ! length of atmospheric forcing time series + ! use 166 for anthro_transit=.true. (1765-2020) +ti_start_transit = 1 ! starting time index in forcing file + ! use 1 for D14C, 80 for CFC-12 + +! --- Atmospheric Forcing File --- +ifile_transit = '/work/ab0246/a270108/fesom2_recom_config/input-for-awiesm/Table_CO2_isoC_CFCs1112_SF6.txt' + ! path to atmospheric boundary condition file + +! --- Atmospheric Concentrations (Global Mean) --- +r14c_a = 1.0000 ! atmospheric 14C/C ratio [dimensionless] +r39ar_a = 1.0000 ! atmospheric 39Ar/Ar ratio [dimensionless] +xarg_a = 9.34e-3 ! atmospheric Argon mole fraction [dimensionless] +xco2_a = 284.32e-6 ! atmospheric CO2 mole fraction [dimensionless] (preindustrial: 284.32 ppm) + +! --- Initial Ocean Concentrations (Global Mean) --- +dic_0 = 2.00 ! mixed layer DIC concentration [mol/m³] +arg_0 = 0.01 ! mixed layer Argon concentration [mol/m³] + +! --- Radioactive Decay Constants --- +decay14 = 3.8561e-12 ! decay constant of 14C [1/s] (half-life: 5700 years, 1 year = 365.0 days) +decay39 = 8.1708e-11 ! decay constant of 39Ar [1/s] (half-life: 269 years, 1 year = 365.0 days) +/ diff --git a/runscripts/fesom2/fesom2.7-levante-1d.yaml b/runscripts/fesom2/fesom2.7-levante-1d.yaml new file mode 100644 index 000000000..4f63c11eb --- /dev/null +++ b/runscripts/fesom2/fesom2.7-levante-1d.yaml @@ -0,0 +1,26 @@ +general: + user: !ENV ${USER} + account: "ab0246" + setup_name: fesom + compute_time: "00:10:00" + initial_date: '1960-01-01' + final_date: '1960-01-04' + base_dir: "/work/ab0246/${user}/runtime/${general.setup_name}-${general.version}/" + nyear: 0 + nmonth: 0 + nday: 1 + use_venv: False + +fesom: + version: 2.7 + model_dir: "/work/ab0246/${user}/model_codes/fesom-2.7/" + pool_dir: "/work/ab0246/a270092/input/" + mesh_dir: "/work/ab0246/a270092/input/fesom2/core2/" + restart_rate: 1 + restart_first: 1 + restart_unit: 'd' + resolution: "CORE2" + lresume: false + time_step: 1800 + nproc: 128 + omp_num_threads: 2 diff --git a/runscripts/fesom2/fesom2.7-levante-reference.yaml b/runscripts/fesom2/fesom2.7-levante-reference.yaml new file mode 100644 index 000000000..76bd65b24 --- /dev/null +++ b/runscripts/fesom2/fesom2.7-levante-reference.yaml @@ -0,0 +1,24 @@ +general: + user: !ENV ${USER} + account: "ab0246" + setup_name: fesom + compute_time: "08:00:00" + initial_date: '1958-01-01' + final_date: '2018-03-31' + base_dir: "/work/ab0246/${user}/runtime/${general.setup_name}-${general.version}/" + nyear: 20 + nmonth: 0 + use_venv: False + +fesom: + version: 2.7 + model_dir: "/work/ab0246/${user}/model_codes/fesom-2.7/" + pool_dir: "/work/ab0246/a270092/input/" + mesh_dir: "/work/ab0246/a270092/input/fesom2/core2/" + restart_rate: 20 + restart_first: 20 + restart_unit: 'y' + resolution: "CORE2" + lresume: false + time_step: 1800 + nproc: 768 From fa48a801b7e7239c418cac7b0b13dd181b111d0f Mon Sep 17 00:00:00 2001 From: Paul Gierz Date: Mon, 9 Mar 2026 19:22:39 -0700 Subject: [PATCH 2/4] fix(fesom2.7): minor syntax error in comp_command --- configs/components/fesom/fesom-2.7.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configs/components/fesom/fesom-2.7.yaml b/configs/components/fesom/fesom-2.7.yaml index cae5e7ee1..689ea888e 100644 --- a/configs/components/fesom/fesom-2.7.yaml +++ b/configs/components/fesom/fesom-2.7.yaml @@ -6,7 +6,7 @@ fesom: version: "2.7" type: ocean - comp_command: mkdir -p build; cd build; cmake -DENABLE_OPENMP=ON, -DASYNCHRONOUS_IO_THREADS=ON -DCMAKE_INSTALL_PREFIX=../ ..; make install -j `nproc --all` + comp_command: mkdir -p build; cd build; cmake -DENABLE_OPENMP=ON -DASYNCHRONOUS_IO_THREADS=ON -DCMAKE_INSTALL_PREFIX=../ ..; make install -j `nproc --all` clean_command: ${defaults.clean_command} # MA This variable needs to be set true in every version of fesom-2.1 (choose_ block From 4286a9861dc096ac78f60ef48fbd6ba94b2285e4 Mon Sep 17 00:00:00 2001 From: Paul Gierz Date: Mon, 9 Mar 2026 19:23:50 -0700 Subject: [PATCH 3/4] chore: adds comment about pool cleanup for @christian-stepanek --- configs/components/fesom/fesom-2.7.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/configs/components/fesom/fesom-2.7.yaml b/configs/components/fesom/fesom-2.7.yaml index 689ea888e..b98973b83 100644 --- a/configs/components/fesom/fesom-2.7.yaml +++ b/configs/components/fesom/fesom-2.7.yaml @@ -119,6 +119,8 @@ fesom: beta_evp: 250 # constant that control numerical stability of mEVP. LGM: nx: 95239 + # [TODO] @christian-stepanek - move mesh to pool and update path + # suggested: mesh_dir: "/work/ab0246/pool/FESOM2/meshes/glac1d_m1_512/" mesh_dir: "/home/a/a270064/bb1029/inputs/mesh_glac1d_m1_512/" nproc: 1024 whichEVP: 0 From 0370773c92df1ea49c8538e9f8f3af395f1d0b58 Mon Sep 17 00:00:00 2001 From: Paul Gierz Date: Mon, 9 Mar 2026 19:24:43 -0700 Subject: [PATCH 4/4] fix: corrects pool directory for cavity72k on albedo, adds note for @patrickscholz --- configs/components/fesom/fesom-2.7.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/configs/components/fesom/fesom-2.7.yaml b/configs/components/fesom/fesom-2.7.yaml index b98973b83..36198f192 100644 --- a/configs/components/fesom/fesom-2.7.yaml +++ b/configs/components/fesom/fesom-2.7.yaml @@ -133,7 +133,9 @@ fesom: beta_evp: 250 # constant that control numerical stability of mEVP. CAVCORE2: nx: 72411 - mesh_dir: "/work/ollie/pscholz/mesh_fesom2.0/cavity_72k/" + # [TODO] @patrickscholz - move mesh to pool and update path + # suggested: mesh_dir: "${fesom.mesh_base_dir}/cavity_72k/" + mesh_dir: "/albedo/work/user/pscholz/mesh_fesom2.0/cavity_72k/" nproc: 288 whichEVP: 0 alpha_evp: 250 # constant that control numerical stability of mEVP.