Skip to content
Open
Show file tree
Hide file tree
Changes from 18 commits
Commits
Show all changes
60 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
bc31266
fix(recom): Correct silicate assimilation and diatom diagnostics

ogurses Aug 29, 2025
4258874
fix(recom): Correct Light limitation diagnostics(continued)
ogurses Aug 29, 2025
d82dbcb
fix(recom): Correct namelist.recom files in config folder
ogurses Aug 29, 2025
502d4d6
fix(fesom): Bugfix: sign of real salt flux
ogurses Sep 1, 2025
5349130
fix(recom): Return to saturation model for chlorophyll degradation
ogurses Sep 25, 2025
cda3511
feat(recom)!: feat(recom)!: replace `__coccos` and `__3Zoo2Det` direc…
ogurses Oct 9, 2025
80bbbe7
Merge branch 'main' into fesom2.6_recom_tra_diags
JanStreffing Oct 29, 2025
8484f71
bit more git like
JanStreffing Oct 29, 2025
bd25920
Remove comment from files array declaration
JanStreffing Oct 30, 2025
5073a7e
ci(recom): Add initialization and surface ocean boundary conditions f…
ogurses Nov 10, 2025
b4bda3c
Merge branch 'main' into fesom2.6_recom_tra_diags
suvarchal Nov 10, 2025
a8ddbb0
Merge branch 'main' into fesom2.6_recom_tra_diags
suvarchal Nov 10, 2025
41c46f5
wip building recom ci test
JanStreffing Nov 12, 2025
fc20636
Fix REcoM CI test: add push trigger and improve debugging
JanStreffing Nov 12, 2025
6e9bc49
Add REcoM namelist templates to fix CI test
JanStreffing Nov 12, 2025
79e89ac
Use default REcoM namelists from config/ instead of duplicates
JanStreffing Nov 12, 2025
0b8d5ae
Use simpler 2p1z1d REcoM configuration for faster CI test
JanStreffing Nov 12, 2025
bba9cb8
Fix sed patterns to avoid breaking namelist format
JanStreffing Nov 12, 2025
91b5f99
Fix namelist.tra to use correct test input files
JanStreffing Nov 12, 2025
074bd00
Simplify namelist patching with cleaner sed patterns
JanStreffing Nov 12, 2025
ac6b6fd
Add namelist validation checks to debug pavariables error
JanStreffing Nov 12, 2025
0c086d8
Use pre-configured namelists instead of runtime patching
JanStreffing Nov 12, 2025
ae4e009
Debug: Check if mkrun creates namelist.recom or if we need to add it
JanStreffing Nov 12, 2025
500095b
Fix: Copy and patch namelists since mkrun doesn't create them
JanStreffing Nov 12, 2025
849a33b
Fix REcoM namelist reading bug
JanStreffing Nov 12, 2025
f3e0fdb
Simplify CI workflow: remove unused nam_rsbc section
JanStreffing Nov 12, 2025
d88c4f1
Switch to 2p3z2d (30 tracers) configuration for REcoM CI test
JanStreffing Nov 12, 2025
859863b
Fix REcoM segfault: allocate missing wFlux arrays
JanStreffing Nov 12, 2025
5a14213
Set test year to 1948 to match available forcing data
JanStreffing Nov 12, 2025
2291cbe
Remove push trigger from REcoM workflow
JanStreffing Nov 12, 2025
cc1f2b8
Disable leap years for REcoM test to match forcing data
JanStreffing Nov 12, 2025
fc84680
Fix segfault: add missing argument to monthly_event call
JanStreffing Nov 12, 2025
03e4ea8
Fix dust file name: create symlink for default filename
JanStreffing Nov 12, 2025
0d3d7f8
Fix dust file path: create symlink in ClimateDataPath
JanStreffing Nov 12, 2025
8dec5e7
Fix segfault: allocate missing RiverFe array
JanStreffing Nov 12, 2025
6070aea
Enable atmospheric pressure forcing for REcoM CO2 flux
JanStreffing Nov 12, 2025
fe4dbac
Fix NetCDF files with missing _FillValue attributes
JanStreffing Nov 12, 2025
f171de0
Fix NetCDF files with proper _FillValue attributes
JanStreffing Nov 12, 2025
fdd860f
Enable atmospheric pressure forcing by patching namelist.forcing
JanStreffing Nov 12, 2025
2d49c67
Fix sed regex: escape dots in .false. pattern
JanStreffing Nov 12, 2025
2ee535c
Add namelist.forcing display to verify l_mslp patch
JanStreffing Nov 12, 2025
1cdbbc7
Fix sed pattern to handle spaces around = in l_mslp
JanStreffing Nov 12, 2025
9a8056e
Reduce debug output in CI workflow
JanStreffing Nov 12, 2025
4b5be61
Fix NetCDF fill value handling for CDO/NCO compatibility
JanStreffing Nov 12, 2025
8d59a65
Add NaN debugging to DIC calculation in REcoM
JanStreffing Nov 12, 2025
c6c21e0
Add NaN debugging to recom_forcing before CO2 flux
JanStreffing Nov 12, 2025
2a1ed34
fix(recom): Bugfixes related to ballasting
ogurses Dec 1, 2025
8f94ed3
Merge branch 'main' into fesom2.6_recom_tra_diags
JanStreffing Jan 26, 2026
075f709
overwrite Sweeney path for recom ci test
JanStreffing Jan 26, 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
45 changes: 21 additions & 24 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=biogeo_model.biogeo_model
#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 @@ -23,35 +22,33 @@ ulimit -s unlimited
# determine JOBID
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 .
#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 .

#___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.xxxxx.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
Loading
Loading