Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
6eb2eef
feat(fesom) add tracer diagnostics to FESOM2.5
ogurses Oct 15, 2024
3e84a88
add recom_sms diag
ogurses Nov 20, 2024
434f0e6
feat(recom): add ciso and medusa components
ogurses Dec 10, 2024
0864237
input to bc_surface from medusa added and Sed_input deleted
a270105 Dec 13, 2024
eafe8e9
fix(recom) Add missing directives
ogurses Feb 12, 2025
4408f0e
two small fixes
ogurses Feb 20, 2025
db00bd1
feat(recom)!: FESOM2.6-REcoM setup with 4p3z2d
ogurses Jun 16, 2025
209e076
fix(recom) Add missing temperature function code
ogurses Jun 27, 2025
0a01669
fix(recom): Add detritus sinking velocity and K0, solubility to diagn…
ogurses Jul 8, 2025
2836492
Merge remote-tracking branch 'origin/fesom2.6_recom_tra_diags' into f…
ogurses Jul 8, 2025
66a5aeb
fix(recom) clean merge conflicts
ogurses Jul 8, 2025
0ff8f60
Merge branch 'main' into fesom2.6_recom_awiesm3_co2_coupling
JanStreffing Jul 21, 2025
0a7b6cd
save wip towards co2 coupling with openifs48r1
JanStreffing Jul 21, 2025
b2f3de1
minor fixes to co2 coupling
JanStreffing Jul 22, 2025
5e8a525
maybe the right fields now?
JanStreffing Jul 22, 2025
ed7431d
higher precision conversion
JanStreffing Jul 22, 2025
89bb9b2
fix git merge mistake
JanStreffing Jul 23, 2025
d06a657
get recom to compile on gnu by removing unused and unallocated vars
JanStreffing Jul 23, 2025
663a67c
default recom namelists for AWI-ESM3
JanStreffing Jul 23, 2025
2372cc6
switch to sea ice masked co2 flux
JanStreffing Jul 23, 2025
398831e
add xco2 from oifs
Jul 23, 2025
e885e92
corrected if atmbox case
Jul 23, 2025
038e781
change dim of wf to match number of tracers depending on recom setting
JanStreffing Aug 6, 2025
b5c6725
add xco2atm output option
JanStreffing Aug 6, 2025
6e19194
multiply xco2 by 1e6 to go from mole fraction to ppm
JanStreffing Aug 6, 2025
20e79e7
co2 correct flux unit conversion
JanStreffing Aug 6, 2025
e5a31f7
Merge branch 'activate_debug_flags_with_cmake_build_type' into fesom2…
JanStreffing Sep 2, 2025
f8224a8
merge main into branch
JanStreffing Sep 2, 2025
6edd41d
Merge branch 'fix_netcdf_f77_interface' into fesom2.6_recom_awiesm3_c…
JanStreffing Sep 2, 2025
9bd1858
Merge branch 'main' into fesom2.6_recom_awiesm3_co2_coupling
JanStreffing Nov 12, 2025
2fb0cb5
saving wip, recomp + cavity runs, judiths suggestions not included yet
JanStreffing Nov 18, 2025
3f09f4c
Merge branch 'main' into fesom2.6_recom_awiesm3_co2_coupling
JanStreffing Dec 3, 2025
0c71b7e
Fix annual_event to use elapsed years instead of absolute year
JanStreffing Jan 21, 2026
d63dccc
Merge branch 'main' into bugfix/annual-restart-elapsed-years
JanStreffing Jan 21, 2026
9ce223c
Merge remote-tracking branch 'origin/bugfix/annual-restart-elapsed-ye…
JanStreffing Jan 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ set(OIFS_COUPLED OFF CACHE BOOL "compile fesom coupled to OpenIFS. (Also
set(CRAY OFF CACHE BOOL "compile with cray ftn")
set(USE_ICEPACK OFF CACHE BOOL "compile fesom with the Iceapck modules for sea ice column physics.")
set(OPENMP_REPRODUCIBLE OFF CACHE BOOL "serialize OpenMP loops that are critical for reproducible results")

set(RECOM_COUPLED OFF CACHE BOOL "compile fesom including biogeochemistry, REcoM3")
set(CISO_COUPLED OFF CACHE BOOL "compile ciso coupled to REcoM3. RECOM_COUPLED has to be active")
set(USE_MULTIO OFF CACHE BOOL "Use MULTIO for IO, either grib or binary for now. This also means path to MULTIO installation has to provided using env MULTIO_INSTALL_PATH='..' and multio configuration yamls must be present to run the model with MULTIO")
Expand Down
43 changes: 20 additions & 23 deletions config/bin_2p1z1d/job_albedo
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
#!/bin/bash
#SBATCH --account=nwg_hauck.maresys # edit your account
#SBATCH --job-name=recom
#SBATCH --account=nwg_maresys.maresys
#SBATCH --job-name=2p1z1d
#SBATCH --partition=mpp
#SBATCH --time=01:30:00
####SBATCH --constraint="[rack1|rack3]"
#SBATCH -N 9
#SBATCH --cpus-per-task=1
#SBATCH --time=08:00:00
#SBATCH --qos=12h
#SBATCH --nodes=9 # Number of tasks (MPI) tasks to be launched
#SBATCH --tasks-per-node 96 #8 #4 # using all 128CPus we exceed the maxload limit (>130) of many used nodes when us parallel I/O
#SBATCH --cpus-per-task 1
#SBATCH --tasks-per-node 96 # using all 128CPus we exceed the maxload limit (>130) of many used nodes when us parallel I/O

#SBATCH -o fesom2o.out
#SBATCH -e fesom2e.out
#SBATCH -o slurm-out.out
#SBATCH -e slurm-err.out

# disable hyperthreading
#SBATCH --hint=nomultithread
Expand All @@ -24,34 +23,32 @@ ulimit -s unlimited
JOBID=`echo $SLURM_JOB_ID |cut -d"." -f1`

ln -s ../bin/fesom.x . # cp -n ../bin/fesom.x
cp -n ../config/namelist.config .
cp -n ../config/namelist.forcing .
cp -n ../config/namelist.oce .
cp -n ../config/namelist.dyn .
cp -n ../config/namelist.tra .
cp -n ../config/namelist.ice .
cp -n ../config/namelist.io .
cp -n ../config/namelist.icepack .
#cp -n ../config/namelist.config .
#cp -n ../config/namelist.forcing .
#cp -n ../config/namelist.oce .
#cp -n ../config/namelist.dyn .
#cp -n ../config/namelist.tra .
#cp -n ../config/namelist.ice .
#cp -n ../config/namelist.io .
#cp -n ../config/namelist.icepack .

#___DETERMINE SLURM JOBID+OUTPUTFILE____________________________________________
jobid=$(echo $SLURM_JOB_ID | cut -d"." -f1)
fname="fesom2_${SLURM_JOB_NAME}_${jobid}.out"
fname="fesom2.0.out"

#___PUT JOB IN QUEUE____________________________________________________________
date
####srun --mpi=pmi2 ./fesom.x >> ${fname}
srun --mpi=pmi2 ./fesom.x > fesom2.0.out
date

#qstat -f $PBS_JOBID
#export EXITSTATUS=$?
#if [ ${EXITSTATUS} -eq 0 ] || [ ${EXITSTATUS} -eq 127 ] ; then
#sbatch job_ollie
#sbatch job_albedo
#fi

#Resultpath='/albedo/scratch/user/ogurses/ocean_only/'
Resultpath='/albedo/scratch/user/ogurses/fesom2.5_recom_st1_vsink_vben_diags/'
test -d $Resultpath/fesom.2019.oce.restart && exit
Resultpath='/albedo/work/user/...'
test -e $Resultpath/fesom.2019.oce.restart && exit

IsInFile=$( tail -3 fesom2.0.out | grep -c timesteps)
if (( IsInFile > 0 )); then
Expand Down
19 changes: 14 additions & 5 deletions config/bin_2p1z1d/namelist.config
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ runid='fesom'

&timestep
step_per_day=32 !96 !96 !72 !72 !45 !72 !96
run_length=1 !62 !62 !62 !28
run_length_unit='y' ! y, m, d, s
run_length= 1 !62 !62 !62 !28
run_length_unit='y' ! y, m, d, s
/

&clockinit ! the model starts at
Expand All @@ -18,8 +18,8 @@ yearnew=1958

&paths
MeshPath='/albedo/work/projects/p_recompdaf/frbunsen/FESOM2/meshes/core2/'
ClimateDataPath='/albedo/work/projects/MarESys/ogurses/input/corrected_input/'
ResultPath='/albedo/scratch/user/ogurses/fesom2.5_recom_st1_vsink_vben_diags/'
ClimateDataPath='/albedo/work/projects/MarESys/ogurses/input/corrected_input/'
ResultPath='/albedo/work/user/...'
/

&restart_log
Expand All @@ -29,7 +29,7 @@ raw_restart_length=1 ! --> do core dump restart
raw_restart_length_unit='off' ! e.g. y, d, h, s, off
bin_restart_length=1 ! --> do derived type binary restart
bin_restart_length_unit='off' ! e.g. y, d, h, s, off
logfile_outfreq=960 !in logfile info. output frequency, # steps
logfile_outfreq=960 !in logfile info. output frequency, # steps
/

&ale_def
Expand Down Expand Up @@ -59,9 +59,18 @@ use_cavity_partial_cell=.false.
use_floatice = .false.
use_sw_pene=.true.
flag_debug=.false.
use_transit=.false.
/

&machine
n_levels=2
n_part= 12, 36 ! 432 number of partitions on each hierarchy level
/

&icebergs
use_icesheet_coupling=.false.
ib_num=1
use_icebergs=.false.
steps_per_ib_step=8
ib_async_mode=0
/
36 changes: 28 additions & 8 deletions config/bin_2p1z1d/namelist.forcing
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,23 @@ ncar_bulk_z_shum=10.0 ! height at which humi forcing is located (CORE, JRA-do: 1
use_landice_water=.false.
landice_start_mon=5
landice_end_mon=10
fwf_path='./mesh/'

/

&age_tracer
use_age_tracer=.false.
use_age_mask=.false.
age_tracer_path='./mesh/'
age_start_year=2000

/

&nam_sbc
nm_xwind_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/uas.clim61' ! name of file with winds, if nm_sbc=2
nm_ywind_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/vas.clim61' ! name of file with winds, if nm_sbc=2
nm_xstre_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/uas.clim61' ! name of file with winds, if nm_sbc=2
nm_ystre_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/vas.clim61' ! name of file with winds, if nm_sbc=2
nm_humi_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/huss.clim61' ! name of file with humidity
nm_qsr_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/rsds.clim61' ! name of file with solar heat
nm_qlw_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/rlds.clim61' ! name of file with Long wave
Expand All @@ -37,24 +49,32 @@ landice_end_mon=10
nm_mslp_file = '/albedo/work/projects/MarESys/FROM-OLLIE/forcing_JRA55-do-v1.4.0_clim61/psl.clim61' ! air_pressure_at_sea_level
nm_xwind_var = 'uas' ! name of variable in file with wind
nm_ywind_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_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
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
nm_nc_iyear = 1900
nm_nc_imm = 1 ! initial month of time axis in netCDF
nm_nc_idd = 1 ! initial day of time axis in netCDF
nm_nc_freq = 1 ! data points per day (i.e. 86400 if the time axis is in seconds)
nm_nc_tmid = 0 ! 1 if the time stamps are given at the mid points of the netcdf file, 0 otherwise (i.e. 1 in CORE1, CORE2; 0 in JRA55)
y_perpetual=.true.
l_xwind=.true. l_ywind=.true. l_humi=.true. l_qsr=.true. l_qlw=.true. l_tair=.true. l_prec=.true. l_mslp=.true. l_cloud=.false. l_snow=.true.
l_xwind=.true. l_ywind=.true. l_xstre=.false. l_ystre=.false. l_humi=.true. l_qsr=.true. l_qlw=.true. l_tair=.true. l_prec=.true. l_mslp=.true. l_cloud=.false. l_snow=.true.
nm_runoff_file ='/albedo/pool/FESOM/forcing/CORE2/runoff.nc'
runoff_data_source ='CORE2' !Dai09, CORE2
!runoff_data_source ='Dai09' !Dai09, CORE2, JRA55
!runoff_climatology =.true.
nm_sss_data_file ='/albedo/pool/FESOM/forcing/CORE2/PHC2_salx.nc'
sss_data_source ='CORE2'
nm_sss_data_file ='/albedo/pool/FESOM/forcing/CORE2/PHC2_salx.nc'
chl_data_source ='None' !'Sweeney' monthly chlorophyll climatology or 'NONE' for constant chl_const (below). Make 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'
chl_const = 0.1
use_runoff_mapper = .FALSE.
runoff_basins_file = 'runoff_maps_regular.nc'
runoff_radius = 500000.
/
144 changes: 144 additions & 0 deletions config/bin_2p1z1d/namelist.icepack.cesm.ponds
Original file line number Diff line number Diff line change
@@ -0,0 +1,144 @@
&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 = 1 ! 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 = .true.
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
/

&shortwave_nml
shortwave = 'dEdd'
albedo_type = 'ccsm3'
albicev = 0.78
albicei = 0.36
albsnowv = 0.98
albsnowi = 0.70
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 = .false.
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
/
12 changes: 6 additions & 6 deletions config/bin_2p1z1d/namelist.io
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ ldiag_extflds =.false.
/

&nml_general
io_listsize =100 !number of streams to allocate. shallbe large or equal to the number of streams in &nml_list
io_listsize =150 !number of streams to allocate. shallbe large or equal to the number of streams in &nml_list
vec_autorotate =.false.
/

Expand Down Expand Up @@ -40,11 +40,11 @@ io_list = 'sst ',1, 'm', 4,
'otracers ',1, 'm', 4,
'N2 ',1, 'y', 4,
'Kv ',1, 'y', 4,
'u ',1, 'y', 4,
'v ',1, 'y', 4,
'unod ',1, 'y', 4,
'vnod ',1, 'y', 4,
'w ',1, 'y', 4,
'u ',1, 'm', 4,
'v ',1, 'm', 4,
'unod ',1, 'm', 4,
'vnod ',1, 'm', 4,
'w ',1, 'm', 4,
'Av ',1, 'y', 4,
'bolus_u ',1, 'y', 4,
'bolus_v ',1, 'y', 4,
Expand Down
2 changes: 1 addition & 1 deletion config/bin_2p1z1d/namelist.recom
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ useErosion = .false.
NitrogenSS = .false. ! When set to true, external sources and sinks of nitrogen are activated (Riverine, aeolian and denitrification)
useAeolianN = .false. ! When set to true, aeolian nitrogen deposition is activated
firstyearoffesomcycle = 1958 ! The first year of the actual physical forcing (e.g. JRA-55) used
lastyearoffesomcycle = 2022 ! Last year of the actual physical forcing used
lastyearoffesomcycle = 2024 ! Last year of the actual physical forcing used
numofCO2cycles = 1 ! Number of cycles of the forcing planned
currentCO2cycle = 1 ! Which CO2 cycle we are currently running
DIC_PI = .true.
Expand Down
Loading
Loading