GOTM Runtime¶
Runtime containers and the compiled timestep loop. The Python/Numba boundary
is crossed exactly once per simulation run by calling the compiled
time_loop_*_compiled() function.
Runtime Containers¶
Runtime state arrays for the compiled single-column GOTM runner.
- class pygotm.gotm.runtime_state.RuntimeState(nlev, ga, z, zi, h, ho, u, uo, v, vo, w, T, S, Tp, Sp, Ti, Tobs, Sobs, NN, NNT, NNS, SS, SSU, SSV, SSCSTK, SSSTK, buoy, alpha, beta, rho_p, rho, rad, xP, avh, fric, drag, bioshade, tke, tkeo, eps, omega, L, kb, epsb, P, B, Pb, Px, PSTK, num, nuh, nus, nucl, gamu, gamv, gamb, gamh, gams, cmue1, cmue2, cmue3, sq_var, sl_var, gam, as_, an, at, av, aw, SPF, r, Rig, xRf, uu, vv, ww, z0b, z0s, za, u_taub, u_taubo, u_taus, taub, tx, ty, Hice, Hsnow, Hfrazil, T1, T2, Tice_surface, fdd, ice_cover, Tf, albedo_ice, transmissivity, ocean_ice_flux, ocean_ice_heat_flux, ocean_ice_salt_flux, surface_ice_energy, bottom_ice_energy, melt_rate, T_melt, S_melt)[source]¶
Bases:
objectFlat 1D state arrays owned by the compiled single-column runtime.
- Parameters:
- pygotm.gotm.runtime_state.allocate_runtime_state(nlev)[source]¶
Allocate zero-filled 1D state arrays with GOTM 0:nlev indexing.
- Return type:
- Parameters:
nlev (int)
Scalar runtime parameters for compiled single-column GOTM integration.
- class pygotm.gotm.runtime_params.RuntimeParams(nlev, nt, dt, cnpar, latitude, longitude, depth, gravity, rho0, cori, avmolu, avmolT, avmolS, cp, h0b, z0s_min, calc_bottom_stress, charnock, charnock_val, max_it_z0b, plume_active, int_press_type, plume_type, plume_slope_x, plume_slope_y, seagrass_active, seagrass_alpha, seagrass_grassind, seagrass_grassn, stokes_active, w_adv_active, w_adv_discr, s_adv, t_adv, sprof_input_active, tprof_input_active, uprof_input_active, vprof_input_active, zeta_input_active, grid_method, airsea_fluxes_method, airsea_hum_method, airsea_shortwave_method, airsea_shortwave_type, airsea_longwave_method, airsea_longwave_type, airsea_albedo_method, airsea_ssuv_method, airsea_sst_obs_method, airsea_shortwave_scale_factor, airsea_heat_scale_factor, airsea_const_albedo, ice_model, turb_method, tke_method, len_scale_method, my_b1, my_sq, my_sl, my_e1, my_e2, my_e3, my_ex, my_e6, my_length, stab_method, scnd_method, kb_method, epsb_method, iw_model, prandtl0_fix, mld_method, mld_diff_k, mld_ri_crit, kappa, cm0, cmsf, cde, k_min, eps_min, kb_min, epsb_min, tx, ty, dzetadx, dzetady, ext_press_mode, vel_relax_ramp, k_ubc, k_lbc, psi_ubc, psi_lbc, ubc_type, lbc_type, length_lim, sig_k, sig_w, cw, gen_alpha, gen_l, galp, cc1, ct1, ctt, a1, a2, a3, a5, at1, at2, at3, at5, cw1, cw2, cw3plus, cw3minus, cwx, cw4, ce1, ce2, ce3plus, ce3minus, cex, ce4, sig_e, sig_e0, sig_peps, iw_alpha, klimiw, rich_cr, numiw, nuhiw, numshear, light_A, light_g1, light_g2, density_method, rhob, alpha0, beta0, T0, S0)[source]¶
Bases:
objectScalar parameters extracted before crossing into Numba.
- Parameters:
nlev (int)
nt (int)
dt (float)
cnpar (float)
latitude (float)
longitude (float)
depth (float)
gravity (float)
rho0 (float)
cori (float)
avmolu (float)
avmolT (float)
avmolS (float)
cp (float)
h0b (float)
z0s_min (float)
calc_bottom_stress (int)
charnock (int)
charnock_val (float)
max_it_z0b (int)
plume_active (int)
int_press_type (int)
plume_type (int)
plume_slope_x (float)
plume_slope_y (float)
seagrass_active (int)
seagrass_alpha (float)
seagrass_grassind (int)
seagrass_grassn (int)
stokes_active (int)
w_adv_active (int)
w_adv_discr (int)
s_adv (int)
t_adv (int)
sprof_input_active (int)
tprof_input_active (int)
uprof_input_active (int)
vprof_input_active (int)
zeta_input_active (int)
grid_method (int)
airsea_fluxes_method (int)
airsea_hum_method (int)
airsea_shortwave_method (int)
airsea_shortwave_type (int)
airsea_longwave_method (int)
airsea_longwave_type (int)
airsea_albedo_method (int)
airsea_ssuv_method (int)
airsea_sst_obs_method (int)
airsea_shortwave_scale_factor (float)
airsea_heat_scale_factor (float)
airsea_const_albedo (float)
ice_model (int)
turb_method (int)
tke_method (int)
len_scale_method (int)
my_b1 (float)
my_sq (float)
my_sl (float)
my_e1 (float)
my_e2 (float)
my_e3 (float)
my_ex (float)
my_e6 (float)
my_length (int)
stab_method (int)
scnd_method (int)
kb_method (int)
epsb_method (int)
iw_model (int)
prandtl0_fix (float)
mld_method (int)
mld_diff_k (float)
mld_ri_crit (float)
kappa (float)
cm0 (float)
cmsf (float)
cde (float)
k_min (float)
eps_min (float)
kb_min (float)
epsb_min (float)
tx (float)
ty (float)
dzetadx (float)
dzetady (float)
ext_press_mode (int)
vel_relax_ramp (float)
k_ubc (int)
k_lbc (int)
psi_ubc (int)
psi_lbc (int)
ubc_type (int)
lbc_type (int)
length_lim (int)
sig_k (float)
sig_w (float)
cw (float)
gen_alpha (float)
gen_l (float)
galp (float)
cc1 (float)
ct1 (float)
ctt (float)
a1 (float)
a2 (float)
a3 (float)
a5 (float)
at1 (float)
at2 (float)
at3 (float)
at5 (float)
cw1 (float)
cw2 (float)
cw3plus (float)
cw3minus (float)
cwx (float)
cw4 (float)
ce1 (float)
ce2 (float)
ce3plus (float)
ce3minus (float)
cex (float)
ce4 (float)
sig_e (float)
sig_e0 (float)
sig_peps (int)
iw_alpha (float)
klimiw (float)
rich_cr (float)
numiw (float)
nuhiw (float)
numshear (float)
light_A (float)
light_g1 (float)
light_g2 (float)
density_method (int)
rhob (float)
alpha0 (float)
beta0 (float)
T0 (float)
S0 (float)
- pygotm.gotm.runtime_params.make_runtime_params(*, nlev, nt, dt, cnpar=1.0, latitude=0.0, longitude=0.0, depth=1.0, gravity=9.81, rho0=1027.0, cori=0.0, avmolu=1.3e-06, avmolT=1.4e-07, avmolS=1.1e-09, cp=3991.86795711963, h0b=0.05, z0s_min=0.02, calc_bottom_stress=0, charnock=0, charnock_val=1400.0, max_it_z0b=10, plume_active=0, int_press_type=0, plume_type=2, plume_slope_x=0.0, plume_slope_y=0.0, seagrass_active=0, seagrass_alpha=0.0, seagrass_grassind=0, seagrass_grassn=0, stokes_active=0, w_adv_active=0, w_adv_discr=4, s_adv=0, t_adv=0, sprof_input_active=0, tprof_input_active=0, uprof_input_active=0, vprof_input_active=0, zeta_input_active=0, grid_method=0, airsea_fluxes_method=0, airsea_hum_method=1, airsea_shortwave_method=1, airsea_shortwave_type=1, airsea_longwave_method=3, airsea_longwave_type=1, airsea_albedo_method=0, airsea_ssuv_method=1, airsea_sst_obs_method=0, airsea_shortwave_scale_factor=1.0, airsea_heat_scale_factor=1.0, airsea_const_albedo=0.0, ice_model=1, turb_method=0, tke_method=0, len_scale_method=0, my_b1=0.0, my_sq=0.2, my_sl=0.2, my_e1=1.8, my_e2=1.33, my_e3=1.8, my_ex=1.8, my_e6=4.0, my_length=1, stab_method=0, scnd_method=0, kb_method=0, epsb_method=0, iw_model=0, prandtl0_fix=0.74, mld_method=2, mld_diff_k=1e-05, mld_ri_crit=0.5, kappa=0.4, cm0=0.5477, cmsf=1.0, cde=0.0, k_min=1e-10, eps_min=1e-12, kb_min=1e-10, epsb_min=1e-12, tx=0.0, ty=0.0, dzetadx=0.0, dzetady=0.0, ext_press_mode=0, vel_relax_ramp=1000000000000000.0, k_ubc=1, k_lbc=1, psi_ubc=1, psi_lbc=1, ubc_type=1, lbc_type=1, length_lim=0, sig_k=1.0, sig_w=2.0, cw=100.0, gen_alpha=-2.0, gen_l=0.2, galp=0.27, cc1=0.0, ct1=0.0, ctt=0.0, a1=0.0, a2=0.0, a3=0.0, a5=0.0, at1=0.0, at2=0.0, at3=0.0, at5=0.0, cw1=0.555, cw2=0.833, cw3plus=0.5, cw3minus=0.0, cwx=0.555, cw4=0.15, ce1=1.44, ce2=1.92, ce3plus=1.5, ce3minus=0.0, cex=1.44, ce4=0.0, sig_e=1.3, sig_e0=1.3, sig_peps=0, iw_alpha=0.0, klimiw=1e-06, rich_cr=0.7, numiw=0.0001, nuhiw=1e-05, numshear=0.005, light_A=0.58, light_g1=0.35, light_g2=23.0, density_method=1, rhob=1027.0, alpha0=0.0, beta0=0.0, T0=10.0, S0=35.0)[source]¶
Build RuntimeParams with explicit GOTM-compatible defaults.
- Return type:
- Parameters:
nlev (int)
nt (int)
dt (float)
cnpar (float)
latitude (float)
longitude (float)
depth (float)
gravity (float)
rho0 (float)
cori (float)
avmolu (float)
avmolT (float)
avmolS (float)
cp (float)
h0b (float)
z0s_min (float)
calc_bottom_stress (int)
charnock (int)
charnock_val (float)
max_it_z0b (int)
plume_active (int)
int_press_type (int)
plume_type (int)
plume_slope_x (float)
plume_slope_y (float)
seagrass_active (int)
seagrass_alpha (float)
seagrass_grassind (int)
seagrass_grassn (int)
stokes_active (int)
w_adv_active (int)
w_adv_discr (int)
s_adv (int)
t_adv (int)
sprof_input_active (int)
tprof_input_active (int)
uprof_input_active (int)
vprof_input_active (int)
zeta_input_active (int)
grid_method (int)
airsea_fluxes_method (int)
airsea_hum_method (int)
airsea_shortwave_method (int)
airsea_shortwave_type (int)
airsea_longwave_method (int)
airsea_longwave_type (int)
airsea_albedo_method (int)
airsea_ssuv_method (int)
airsea_sst_obs_method (int)
airsea_shortwave_scale_factor (float)
airsea_heat_scale_factor (float)
airsea_const_albedo (float)
ice_model (int)
turb_method (int)
tke_method (int)
len_scale_method (int)
my_b1 (float)
my_sq (float)
my_sl (float)
my_e1 (float)
my_e2 (float)
my_e3 (float)
my_ex (float)
my_e6 (float)
my_length (int)
stab_method (int)
scnd_method (int)
kb_method (int)
epsb_method (int)
iw_model (int)
prandtl0_fix (float)
mld_method (int)
mld_diff_k (float)
mld_ri_crit (float)
kappa (float)
cm0 (float)
cmsf (float)
cde (float)
k_min (float)
eps_min (float)
kb_min (float)
epsb_min (float)
tx (float)
ty (float)
dzetadx (float)
dzetady (float)
ext_press_mode (int)
vel_relax_ramp (float)
k_ubc (int)
k_lbc (int)
psi_ubc (int)
psi_lbc (int)
ubc_type (int)
lbc_type (int)
length_lim (int)
sig_k (float)
sig_w (float)
cw (float)
gen_alpha (float)
gen_l (float)
galp (float)
cc1 (float)
ct1 (float)
ctt (float)
a1 (float)
a2 (float)
a3 (float)
a5 (float)
at1 (float)
at2 (float)
at3 (float)
at5 (float)
cw1 (float)
cw2 (float)
cw3plus (float)
cw3minus (float)
cwx (float)
cw4 (float)
ce1 (float)
ce2 (float)
ce3plus (float)
ce3minus (float)
cex (float)
ce4 (float)
sig_e (float)
sig_e0 (float)
sig_peps (int)
iw_alpha (float)
klimiw (float)
rich_cr (float)
numiw (float)
nuhiw (float)
numshear (float)
light_A (float)
light_g1 (float)
light_g2 (float)
density_method (int)
rhob (float)
alpha0 (float)
beta0 (float)
T0 (float)
S0 (float)
Persistent work arrays for compiled single-column GOTM integration.
- class pygotm.gotm.runtime_work.RuntimeWork(nlev, au, bu, cu, du, ru, qu, avh, q_sour, l_sour, sig_eff, adv_cu, idpdx, idpdy, dusdz, dvsdz, vel_relax_tau, vel_relax_tau_eff, s_relax_tau, t_relax_tau, uprof, vprof, q2l, seagrass_z, seagrass_exc, seagrass_vfric, seagrass_xx, seagrass_yy, seagrass_xxP, seagrass_excur, seagrass_grassfric)[source]¶
Bases:
objectReusable scratch arrays passed explicitly into compiled routines.
- Parameters:
- pygotm.gotm.runtime_work.allocate_runtime_work(nlev)[source]¶
Allocate persistent work arrays once for a single-column run.
- Return type:
- Parameters:
nlev (int)
Dense output buffers for compiled single-column GOTM integration.
- class pygotm.gotm.runtime_output.RuntimeOutput(enabled, output_every, force_final, nout, output_step, time, zeta, u_taus, u10, v10, airt, airp, hum, es, ea, qs, qa, rhoa, cloud, albedo, precip, evap, int_precip, int_evap, int_swr, int_heat, int_total, I_0, qh, qe, ql, heat, tx, ty, sst, sst_obs, sss, mld_surf, u_taub, taub, mld_bott, us0, vs0, ds, Ekin, Epot, Eturb, extra_scalars, fabm_scalars, rho_p, rho, u, v, T, S, Tp, Ti, Sp, Tobs, Sobs, u_obs, v_obs, idpdx, idpdy, tke, eps, num, nuh, h, xP, fric, drag, avh, bioshade, ga, uu, vv, ww, NN, NNT, NNS, buoy, SS, P, B, Pb, kb, epsb, L, PSTK, cmue1, cmue2, as_, an, at, gamu, gamv, gamh, gams, Rig, gamb, gam, r, taux, tauy, rad, us, vs, dusdz, dvsdz, nus, nucl, z, zi, extra_z_profiles, fabm_z_profiles, fabm_attrs)[source]¶
Bases:
objectPreallocated dense output buffers filled inside the compiled loop.
- Parameters:
enabled (bool)
output_every (int)
force_final (bool)
nout (int)
extra_scalars (dict[str, ndarray[tuple[Any, ...], dtype[float64]]])
fabm_scalars (dict[str, ndarray[tuple[Any, ...], dtype[float64]]])
extra_z_profiles (dict[str, ndarray[tuple[Any, ...], dtype[float64]]])
fabm_z_profiles (dict[str, ndarray[tuple[Any, ...], dtype[float64]]])
- pygotm.gotm.runtime_output.allocate_runtime_output(nlev, nt, *, enabled=True, output_every=1, force_final=True)[source]¶
Allocate dense output arrays for initial, periodic, and final states.
Preprocessed forcing arrays for compiled single-column GOTM integration.
- class pygotm.gotm.runtime_forcing.RuntimeForcing(nlev, nt, yearday, time, secondsofday, zeta, dpdx, dpdy, h_press, tx, ty, heat, swr, airp, airt, hum, cloud, u10, v10, precip, longwave, sst_obs, sss_obs, w_adv, w_height, us0, vs0, ds, light_A, light_g1, light_g2, Tobs, Sobs, Tprof, Sprof, epsprof, uprof, vprof, dtdx, dtdy, dsdx, dsdy, us, vs, dusdz, dvsdz)[source]¶
Bases:
objectDense forcing and observation inputs prepared before Numba integration.
Output Coordinates¶
The RuntimeOutput buffers use two
vertical coordinates in the returned xarray.Dataset:
z— cell-centre depth levels (shapenlev); used by scalar fields (\(\theta\), \(S\), \(k\), \(\varepsilon\), etc.)zi— interface depth levels (shapenlev + 1); used by flux and diffusivity fields (\(\nu_t\), \(\kappa_t\), etc.)
Output scheduling (output_every, initial/final slots) is resolved before
entering the compiled loop. runtime_output_to_dataset() maps the dense
buffers to GOTM-compatible variable names and attaches latitude/longitude as
scalar coordinates after the run completes.
Time Loop¶
Numba-compiled central timestep loop for single-column GOTM runs.
- pygotm.gotm.time_loop.run_compiled_time_loop(params, state, work, forcing, output, step_offset=0, out_slot_base=0, write_ic=1, init_int_precip=0.0, init_int_evap=0.0, init_int_swr=0.0, init_int_heat=0.0, init_int_total=0.0, hydro_store=0, hydro_T=None, hydro_S=None, hydro_rho=None, hydro_h=None, hydro_nuh=None, hydro_rad=None, hydro_taub=None)[source]¶
Validate runtime containers and cross into the compiled unified loop.
step_offset is the global step index where this call starts — used to slice forcing arrays when running one chunk of a larger simulation. out_slot_base is the output-array slot offset for this call. Both default to 0 for full-run (non-chunked) execution.
- Return type:
- Parameters:
params (RuntimeParams)
state (RuntimeState)
work (RuntimeWork)
forcing (RuntimeForcing)
output (RuntimeOutput)
step_offset (int)
out_slot_base (int)
write_ic (int)
init_int_precip (float)
init_int_evap (float)
init_int_swr (float)
init_int_heat (float)
init_int_total (float)
hydro_store (int)
hydro_T (ndarray | None)
hydro_S (ndarray | None)
hydro_rho (ndarray | None)
hydro_h (ndarray | None)
hydro_nuh (ndarray | None)
hydro_rad (ndarray | None)
hydro_taub (ndarray | None)
- pygotm.gotm.time_loop.time_loop_compiled(nlev, nt, dt, cnpar, output_every, output_enabled, force_final_output, gravity, rho0, density_method, rhob, alpha0, beta0, T0, S0, avmolu, avmolT, avmolS, cp, cori, latitude, longitude, depth, h0b, z0s_min, charnock, charnock_val, calc_bottom_stress, max_it_z0b, plume_active, int_press_type, plume_type, plume_slope_x, plume_slope_y, seagrass_active, seagrass_alpha, seagrass_grassind, seagrass_grassn, w_adv_active, w_adv_discr, s_adv, t_adv, sprof_input_active, tprof_input_active, uprof_input_active, vprof_input_active, zeta_input_active, grid_method, ext_press_mode, vel_relax_ramp, airsea_fluxes_method, airsea_hum_method, airsea_shortwave_method, airsea_shortwave_type, airsea_longwave_method, airsea_longwave_type, airsea_albedo_method, airsea_ssuv_method, airsea_sst_obs_method, airsea_shortwave_scale_factor, airsea_heat_scale_factor, airsea_const_albedo, ice_model, light_A, light_g1, light_g2, len_scale_method, scnd_method, tke_method, turb_method, stab_method, prandtl0_fix, mld_method, mld_diff_k, mld_ri_crit, my_b1, my_sq, my_sl, my_e1, my_e2, my_e3, my_ex, my_e6, my_length, kappa, cm0, cmsf, cde, k_min, eps_min, kb_min, epsb_min, k_ubc, k_lbc, psi_ubc, psi_lbc, ubc_type, lbc_type, length_lim, sig_k, sig_w, sig_e, sig_e0, sig_peps, cw, gen_alpha, gen_l, galp, cc1, ct1, ctt, a1, a2, a3, a5, at1, at2, at3, at5, cw1, cw2, cw3plus, cw3minus, cwx, cw4, ce1, ce2, ce3plus, ce3minus, cex, ce4, iw_model, iw_alpha, klimiw, rich_cr, numiw, nuhiw, numshear, h, ho, u, uo, v, vo, w, T, S, Tp, Ti, Sp, Tobs, Sobs, NN, NNT, NNS, SS, SSU, SSV, SSCSTK, SSSTK, xP, fric, drag, avh, bioshade, ga, rad, buoy, alpha_density, beta_density, rho_p, rho, tke, tkeo, eps, omega, L, kb, epsb, P, B, Pb, Px, PSTK, num, nuh, nus, nucl, gamh, gams, cmue1, cmue2, cmue3, as_, an, at, av, aw, uu, vv, ww, sq_var, sl_var, z, zi, z0b, z0s, za, u_taub, u_taubo, u_taus, taub, tx, ty, Hice, Hsnow, Hfrazil, T1, T2, Tice_surface, fdd, ice_cover, Tf, albedo_ice, transmissivity, ocean_ice_flux, ocean_ice_heat_flux, ocean_ice_salt_flux, surface_ice_energy, bottom_ice_energy, melt_rate, T_melt, S_melt, au, bu, cu, du, ru, qu, work_avh, q_sour, l_sour, sig_eff, adv_cu, idpdx, idpdy, dusdz, dvsdz, relax_tau, relax_tau_eff, s_relax_tau, t_relax_tau, uprof, vprof, q2l, seagrass_z, seagrass_exc, seagrass_vfric, seagrass_xx, seagrass_yy, seagrass_xxP, seagrass_excur, seagrass_grassfric, stokes_active, forcing_yearday, forcing_secondsofday, forcing_dpdx, forcing_dpdy, forcing_h_press, forcing_tx, forcing_ty, forcing_heat, forcing_swr, forcing_airp, forcing_airt, forcing_hum, forcing_cloud, forcing_u10, forcing_v10, forcing_precip, forcing_longwave, forcing_sst_obs, forcing_sss_obs, forcing_Tobs, forcing_Sobs, forcing_Tprof, forcing_Sprof, forcing_uprof, forcing_vprof, forcing_dtdx, forcing_dtdy, forcing_dsdx, forcing_dsdy, forcing_w_adv, forcing_w_height, forcing_zeta, forcing_us0, forcing_vs0, forcing_ds, forcing_light_A, forcing_light_g1, forcing_light_g2, forcing_us, forcing_vs, forcing_dusdz, forcing_dvsdz, output_step, output_time, output_zeta, output_u_taus, output_u10, output_v10, output_airt, output_airp, output_hum, output_es, output_ea, output_qs, output_qa, output_rhoa, output_cloud, output_albedo, output_precip, output_evap, output_int_precip, output_int_evap, output_int_swr, output_int_heat, output_int_total, output_I_0, output_qh, output_qe, output_ql, output_heat, output_tx, output_ty, output_sst, output_sst_obs, output_sss, output_mld_surf, output_u_taub, output_taub, output_mld_bott, output_us0, output_vs0, output_ds, output_Ekin, output_Epot, output_Eturb, output_rho_p, output_rho, output_u, output_v, output_T, output_S, output_Tp, output_Ti, output_Sp, output_Tobs, output_Sobs, output_u_obs, output_v_obs, output_idpdx, output_idpdy, output_tke, output_eps, output_num, output_nuh, output_h, output_xP, output_fric, output_drag, output_avh, output_bioshade, output_ga, output_uu, output_vv, output_ww, output_NN, output_NNT, output_NNS, output_buoy, output_SS, output_P, output_B, output_Pb, output_kb, output_epsb, output_L, output_PSTK, output_cmue1, output_cmue2, output_as, output_an, output_at, output_gamu, output_gamv, output_gamh, output_gams, output_Rig, output_gamb, output_gam, output_r, output_taux, output_tauy, output_rad, output_us, output_vs, output_dusdz, output_dvsdz, output_nus, output_nucl, output_z, output_zi, output_Hfrazil, output_Hice, output_T1, output_T2, output_Tf, output_Tice_surface, output_bottom_ice_energy, output_ocean_ice_flux, output_ocean_ice_heat_flux, output_ocean_ice_salt_flux, output_surface_ice_energy, step_offset, out_slot_base, write_ic, init_int_precip, init_int_evap, init_int_swr, init_int_heat, init_int_total, hydro_store, hydro_T, hydro_S, hydro_rho, hydro_h, hydro_nuh, hydro_rad, hydro_taub)[source]¶
Run profile-forced cases through the compiled timestep loop.
Fortran-parity notes (seagrass validation case):
cmue1/cmue2 pre-population removed — an earlier version initialised
cmue1/cmue2across all levels before the step-0 NetCDF write by re-running the stability-function kernel (Munk-Anderson, Schumann-Gerz, or Constant) forturb_method == 2. This was incorrect: Fortran GOTM’sinit_turbulenceseeds only level 1 via thecompute_cpsi3probe; all other levels are zero in the reference NetCDF at t=0. Pre-populating overwrote those zeros withcm0_fix-derived values and broke parity forcmue1/cmue2. The block has been removed; the stability kernels run at the start of every proper timestep, which is correct.kb passed to step_turbulence_first_order_single — previously the
kb(buoyancy variance) array was passed as atkeplaceholder in the first-order path. Becausealpha_mnbreadskbto compute theatstability parameter, this produced a wrongatvalue wheneverkb > kb_min.kbis now forwarded correctly as a read-only input.- Return type:
- Parameters:
nlev (int)
nt (int)
dt (float)
cnpar (float)
output_every (int)
output_enabled (int)
force_final_output (int)
gravity (float)
rho0 (float)
density_method (int)
rhob (float)
alpha0 (float)
beta0 (float)
T0 (float)
S0 (float)
avmolu (float)
avmolT (float)
avmolS (float)
cp (float)
cori (float)
latitude (float)
longitude (float)
depth (float)
h0b (float)
z0s_min (float)
charnock (int)
charnock_val (float)
calc_bottom_stress (int)
max_it_z0b (int)
plume_active (int)
int_press_type (int)
plume_type (int)
plume_slope_x (float)
plume_slope_y (float)
seagrass_active (int)
seagrass_alpha (float)
seagrass_grassind (int)
seagrass_grassn (int)
w_adv_active (int)
w_adv_discr (int)
s_adv (int)
t_adv (int)
sprof_input_active (int)
tprof_input_active (int)
uprof_input_active (int)
vprof_input_active (int)
zeta_input_active (int)
grid_method (int)
ext_press_mode (int)
vel_relax_ramp (float)
airsea_fluxes_method (int)
airsea_hum_method (int)
airsea_shortwave_method (int)
airsea_shortwave_type (int)
airsea_longwave_method (int)
airsea_longwave_type (int)
airsea_albedo_method (int)
airsea_ssuv_method (int)
airsea_sst_obs_method (int)
airsea_shortwave_scale_factor (float)
airsea_heat_scale_factor (float)
airsea_const_albedo (float)
ice_model (int)
light_A (float)
light_g1 (float)
light_g2 (float)
len_scale_method (int)
scnd_method (int)
tke_method (int)
turb_method (int)
stab_method (int)
prandtl0_fix (float)
mld_method (int)
mld_diff_k (float)
mld_ri_crit (float)
my_b1 (float)
my_sq (float)
my_sl (float)
my_e1 (float)
my_e2 (float)
my_e3 (float)
my_ex (float)
my_e6 (float)
my_length (int)
kappa (float)
cm0 (float)
cmsf (float)
cde (float)
k_min (float)
eps_min (float)
kb_min (float)
epsb_min (float)
k_ubc (int)
k_lbc (int)
psi_ubc (int)
psi_lbc (int)
ubc_type (int)
lbc_type (int)
length_lim (int)
sig_k (float)
sig_w (float)
sig_e (float)
sig_e0 (float)
sig_peps (int)
cw (float)
gen_alpha (float)
gen_l (float)
galp (float)
cc1 (float)
ct1 (float)
ctt (float)
a1 (float)
a2 (float)
a3 (float)
a5 (float)
at1 (float)
at2 (float)
at3 (float)
at5 (float)
cw1 (float)
cw2 (float)
cw3plus (float)
cw3minus (float)
cwx (float)
cw4 (float)
ce1 (float)
ce2 (float)
ce3plus (float)
ce3minus (float)
cex (float)
ce4 (float)
iw_model (int)
iw_alpha (float)
klimiw (float)
rich_cr (float)
numiw (float)
nuhiw (float)
numshear (float)
h (ndarray)
ho (ndarray)
u (ndarray)
uo (ndarray)
v (ndarray)
vo (ndarray)
w (ndarray)
T (ndarray)
S (ndarray)
Tp (ndarray)
Ti (ndarray)
Sp (ndarray)
Tobs (ndarray)
Sobs (ndarray)
NN (ndarray)
NNT (ndarray)
NNS (ndarray)
SS (ndarray)
SSU (ndarray)
SSV (ndarray)
SSCSTK (ndarray)
SSSTK (ndarray)
xP (ndarray)
fric (ndarray)
drag (ndarray)
avh (ndarray)
bioshade (ndarray)
ga (ndarray)
rad (ndarray)
buoy (ndarray)
alpha_density (ndarray)
beta_density (ndarray)
rho_p (ndarray)
rho (ndarray)
tke (ndarray)
tkeo (ndarray)
eps (ndarray)
omega (ndarray)
L (ndarray)
kb (ndarray)
epsb (ndarray)
P (ndarray)
B (ndarray)
Pb (ndarray)
Px (ndarray)
PSTK (ndarray)
num (ndarray)
nuh (ndarray)
nus (ndarray)
nucl (ndarray)
gamh (ndarray)
gams (ndarray)
cmue1 (ndarray)
cmue2 (ndarray)
cmue3 (ndarray)
as_ (ndarray)
an (ndarray)
at (ndarray)
av (ndarray)
aw (ndarray)
uu (ndarray)
vv (ndarray)
ww (ndarray)
sq_var (ndarray)
sl_var (ndarray)
z (ndarray)
zi (ndarray)
z0b (ndarray)
z0s (ndarray)
za (ndarray)
u_taub (ndarray)
u_taubo (ndarray)
u_taus (ndarray)
taub (ndarray)
tx (ndarray)
ty (ndarray)
Hice (ndarray)
Hsnow (ndarray)
Hfrazil (ndarray)
T1 (ndarray)
T2 (ndarray)
Tice_surface (ndarray)
fdd (ndarray)
ice_cover (ndarray)
Tf (ndarray)
albedo_ice (ndarray)
transmissivity (ndarray)
ocean_ice_flux (ndarray)
ocean_ice_heat_flux (ndarray)
ocean_ice_salt_flux (ndarray)
surface_ice_energy (ndarray)
bottom_ice_energy (ndarray)
melt_rate (ndarray)
T_melt (ndarray)
S_melt (ndarray)
au (ndarray)
bu (ndarray)
cu (ndarray)
du (ndarray)
ru (ndarray)
qu (ndarray)
work_avh (ndarray)
q_sour (ndarray)
l_sour (ndarray)
sig_eff (ndarray)
adv_cu (ndarray)
idpdx (ndarray)
idpdy (ndarray)
dusdz (ndarray)
dvsdz (ndarray)
relax_tau (ndarray)
relax_tau_eff (ndarray)
s_relax_tau (ndarray)
t_relax_tau (ndarray)
uprof (ndarray)
vprof (ndarray)
q2l (ndarray)
seagrass_z (ndarray)
seagrass_exc (ndarray)
seagrass_vfric (ndarray)
seagrass_xx (ndarray)
seagrass_yy (ndarray)
seagrass_xxP (ndarray)
seagrass_excur (ndarray)
seagrass_grassfric (ndarray)
stokes_active (int)
forcing_yearday (ndarray)
forcing_secondsofday (ndarray)
forcing_dpdx (ndarray)
forcing_dpdy (ndarray)
forcing_h_press (ndarray)
forcing_tx (ndarray)
forcing_ty (ndarray)
forcing_heat (ndarray)
forcing_swr (ndarray)
forcing_airp (ndarray)
forcing_airt (ndarray)
forcing_hum (ndarray)
forcing_cloud (ndarray)
forcing_u10 (ndarray)
forcing_v10 (ndarray)
forcing_precip (ndarray)
forcing_longwave (ndarray)
forcing_sst_obs (ndarray)
forcing_sss_obs (ndarray)
forcing_Tobs (ndarray)
forcing_Sobs (ndarray)
forcing_Tprof (ndarray)
forcing_Sprof (ndarray)
forcing_uprof (ndarray)
forcing_vprof (ndarray)
forcing_dtdx (ndarray)
forcing_dtdy (ndarray)
forcing_dsdx (ndarray)
forcing_dsdy (ndarray)
forcing_w_adv (ndarray)
forcing_w_height (ndarray)
forcing_zeta (ndarray)
forcing_us0 (ndarray)
forcing_vs0 (ndarray)
forcing_ds (ndarray)
forcing_light_A (ndarray)
forcing_light_g1 (ndarray)
forcing_light_g2 (ndarray)
forcing_us (ndarray)
forcing_vs (ndarray)
forcing_dusdz (ndarray)
forcing_dvsdz (ndarray)
output_step (ndarray)
output_time (ndarray)
output_zeta (ndarray)
output_u_taus (ndarray)
output_u10 (ndarray)
output_v10 (ndarray)
output_airt (ndarray)
output_airp (ndarray)
output_hum (ndarray)
output_es (ndarray)
output_ea (ndarray)
output_qs (ndarray)
output_qa (ndarray)
output_rhoa (ndarray)
output_cloud (ndarray)
output_albedo (ndarray)
output_precip (ndarray)
output_evap (ndarray)
output_int_precip (ndarray)
output_int_evap (ndarray)
output_int_swr (ndarray)
output_int_heat (ndarray)
output_int_total (ndarray)
output_I_0 (ndarray)
output_qh (ndarray)
output_qe (ndarray)
output_ql (ndarray)
output_heat (ndarray)
output_tx (ndarray)
output_ty (ndarray)
output_sst (ndarray)
output_sst_obs (ndarray)
output_sss (ndarray)
output_mld_surf (ndarray)
output_u_taub (ndarray)
output_taub (ndarray)
output_mld_bott (ndarray)
output_us0 (ndarray)
output_vs0 (ndarray)
output_ds (ndarray)
output_Ekin (ndarray)
output_Epot (ndarray)
output_Eturb (ndarray)
output_rho_p (ndarray)
output_rho (ndarray)
output_u (ndarray)
output_v (ndarray)
output_T (ndarray)
output_S (ndarray)
output_Tp (ndarray)
output_Ti (ndarray)
output_Sp (ndarray)
output_Tobs (ndarray)
output_Sobs (ndarray)
output_u_obs (ndarray)
output_v_obs (ndarray)
output_idpdx (ndarray)
output_idpdy (ndarray)
output_tke (ndarray)
output_eps (ndarray)
output_num (ndarray)
output_nuh (ndarray)
output_h (ndarray)
output_xP (ndarray)
output_fric (ndarray)
output_drag (ndarray)
output_avh (ndarray)
output_bioshade (ndarray)
output_ga (ndarray)
output_uu (ndarray)
output_vv (ndarray)
output_ww (ndarray)
output_NN (ndarray)
output_NNT (ndarray)
output_NNS (ndarray)
output_buoy (ndarray)
output_SS (ndarray)
output_P (ndarray)
output_B (ndarray)
output_Pb (ndarray)
output_kb (ndarray)
output_epsb (ndarray)
output_L (ndarray)
output_PSTK (ndarray)
output_cmue1 (ndarray)
output_cmue2 (ndarray)
output_as (ndarray)
output_an (ndarray)
output_at (ndarray)
output_gamu (ndarray)
output_gamv (ndarray)
output_gamh (ndarray)
output_gams (ndarray)
output_Rig (ndarray)
output_gamb (ndarray)
output_gam (ndarray)
output_r (ndarray)
output_taux (ndarray)
output_tauy (ndarray)
output_rad (ndarray)
output_us (ndarray)
output_vs (ndarray)
output_dusdz (ndarray)
output_dvsdz (ndarray)
output_nus (ndarray)
output_nucl (ndarray)
output_z (ndarray)
output_zi (ndarray)
output_Hfrazil (ndarray)
output_Hice (ndarray)
output_T1 (ndarray)
output_T2 (ndarray)
output_Tf (ndarray)
output_Tice_surface (ndarray)
output_bottom_ice_energy (ndarray)
output_ocean_ice_flux (ndarray)
output_ocean_ice_heat_flux (ndarray)
output_ocean_ice_salt_flux (ndarray)
output_surface_ice_energy (ndarray)
step_offset (int)
out_slot_base (int)
write_ic (int)
init_int_precip (float)
init_int_evap (float)
init_int_swr (float)
init_int_heat (float)
init_int_total (float)
hydro_store (int)
hydro_T (ndarray)
hydro_S (ndarray)
hydro_rho (ndarray)
hydro_h (ndarray)
hydro_nuh (ndarray)
hydro_rad (ndarray)
hydro_taub (ndarray)
- pygotm.gotm.time_loop.warmup_couette_step_routines(params, state, work)[source]¶
Directly call major Couette step routines once to populate signatures.
- Return type:
- Parameters:
params (RuntimeParams)
state (RuntimeState)
work (RuntimeWork)
Builder¶
Setup helpers for the compiled single-column GOTM runtime.
- class pygotm.gotm.runtime_builder.RuntimeBundle(params, state, work, forcing, output, runner)[source]¶
Bases:
objectAll setup-time containers needed to invoke a compiled runtime.
- Parameters:
params (RuntimeParams)
state (RuntimeState)
work (RuntimeWork)
forcing (RuntimeForcing)
output (RuntimeOutput)
runner (TimeLoopRunner)
-
params:
RuntimeParams¶
-
state:
RuntimeState¶
-
work:
RuntimeWork¶
-
forcing:
RuntimeForcing¶
-
output:
RuntimeOutput¶
-
runner:
TimeLoopRunner¶
- class pygotm.gotm.runtime_builder.RuntimePhaseTimings(runtime_build_s=0.0, force_build_s=0.0, integration_s=0.0, compiled_integration_s=0.0, fabm_chunk_s=0.0, copy_back_s=0.0)[source]¶
Bases:
objectOptional wall-clock timing accumulator for compiled runtime phases.
- Parameters:
- class pygotm.gotm.runtime_builder.TimeLoopRunner(*args, **kwargs)[source]¶
Bases:
ProtocolCallable wrapper that crosses into the compiled timestep loop.
- exception pygotm.gotm.runtime_builder.UnsupportedConfigurationError[source]¶
Bases:
RuntimeErrorRaised when setup requests physics not yet supported by compiled loops.
- pygotm.gotm.runtime_builder.build_runtime(params, *, output=True, output_every=1, force_final=True)[source]¶
Allocate containers and select the compiled loop for params.
- Return type:
- Parameters:
params (RuntimeParams)
output (bool)
output_every (int)
force_final (bool)
- pygotm.gotm.runtime_builder.build_runtime_forcing(nlev, nt)[source]¶
Allocate dense forcing arrays for a compiled runtime.
- Return type:
- Parameters:
- pygotm.gotm.runtime_builder.build_runtime_forcing_from_run(run, *, max_steps=None)[source]¶
Precompute observation and surface forcing arrays from an initialized run.
- Return type:
- Parameters:
- pygotm.gotm.runtime_builder.build_runtime_from_run(run, *, max_steps=None, output=False, timings=None)[source]¶
Copy an initialized GotmRun object graph into flat runtime containers.
- Return type:
- Parameters:
run (Any)
max_steps (int | None)
output (bool)
timings (RuntimePhaseTimings | None)
- pygotm.gotm.runtime_builder.build_runtime_output(nlev, nt, *, output=True, output_every=1, force_final=True)[source]¶
Allocate dense output buffers.
- pygotm.gotm.runtime_builder.build_runtime_params(*, nlev, nt, dt, cnpar=1.0, latitude=0.0, longitude=0.0, depth=1.0, gravity=9.81, rho0=1027.0, cori=0.0, avmolu=1.3e-06, avmolT=1.4e-07, avmolS=1.1e-09, cp=3991.86795711963, h0b=0.05, z0s_min=0.02, calc_bottom_stress=0, charnock=0, charnock_val=1400.0, max_it_z0b=10, plume_active=0, int_press_type=0, plume_type=2, plume_slope_x=0.0, plume_slope_y=0.0, seagrass_active=0, seagrass_alpha=0.0, seagrass_grassind=0, seagrass_grassn=0, stokes_active=0, w_adv_active=0, w_adv_discr=4, s_adv=0, t_adv=0, sprof_input_active=0, tprof_input_active=0, uprof_input_active=0, vprof_input_active=0, zeta_input_active=0, grid_method=0, airsea_fluxes_method=0, airsea_hum_method=1, airsea_shortwave_method=1, airsea_shortwave_type=1, airsea_longwave_method=3, airsea_longwave_type=1, airsea_albedo_method=0, airsea_ssuv_method=1, airsea_sst_obs_method=0, airsea_shortwave_scale_factor=1.0, airsea_heat_scale_factor=1.0, airsea_const_albedo=0.0, ice_model=1, turb_method=0, tke_method=0, len_scale_method=0, my_b1=0.0, my_sq=0.2, my_sl=0.2, my_e1=1.8, my_e2=1.33, my_e3=1.8, my_ex=1.8, my_e6=4.0, my_length=1, stab_method=0, scnd_method=0, kb_method=0, epsb_method=0, iw_model=0, prandtl0_fix=0.74, mld_method=2, mld_diff_k=1e-05, mld_ri_crit=0.5, kappa=0.4, cm0=0.5477, cmsf=1.0, cde=0.0, k_min=1e-10, eps_min=1e-12, kb_min=1e-10, epsb_min=1e-12, tx=0.0, ty=0.0, dzetadx=0.0, dzetady=0.0, ext_press_mode=0, vel_relax_ramp=1000000000000000.0, k_ubc=1, k_lbc=1, psi_ubc=1, psi_lbc=1, ubc_type=1, lbc_type=1, length_lim=0, sig_k=1.0, sig_w=2.0, cw=100.0, gen_alpha=-2.0, gen_l=0.2, galp=0.27, cc1=0.0, ct1=0.0, ctt=0.0, a1=0.0, a2=0.0, a3=0.0, a5=0.0, at1=0.0, at2=0.0, at3=0.0, at5=0.0, cw1=0.555, cw2=0.833, cw3plus=0.5, cw3minus=0.0, cwx=0.555, cw4=0.15, ce1=1.44, ce2=1.92, ce3plus=1.5, ce3minus=0.0, cex=1.44, ce4=0.0, sig_e=1.3, sig_e0=1.3, sig_peps=0, iw_alpha=0.0, klimiw=1e-06, rich_cr=0.7, numiw=0.0001, nuhiw=1e-05, numshear=0.005, light_A=0.58, light_g1=0.35, light_g2=23.0, density_method=1, rhob=1027.0, alpha0=0.0, beta0=0.0, T0=10.0, S0=35.0)¶
Build RuntimeParams with explicit GOTM-compatible defaults.
- Return type:
- Parameters:
nlev (int)
nt (int)
dt (float)
cnpar (float)
latitude (float)
longitude (float)
depth (float)
gravity (float)
rho0 (float)
cori (float)
avmolu (float)
avmolT (float)
avmolS (float)
cp (float)
h0b (float)
z0s_min (float)
calc_bottom_stress (int)
charnock (int)
charnock_val (float)
max_it_z0b (int)
plume_active (int)
int_press_type (int)
plume_type (int)
plume_slope_x (float)
plume_slope_y (float)
seagrass_active (int)
seagrass_alpha (float)
seagrass_grassind (int)
seagrass_grassn (int)
stokes_active (int)
w_adv_active (int)
w_adv_discr (int)
s_adv (int)
t_adv (int)
sprof_input_active (int)
tprof_input_active (int)
uprof_input_active (int)
vprof_input_active (int)
zeta_input_active (int)
grid_method (int)
airsea_fluxes_method (int)
airsea_hum_method (int)
airsea_shortwave_method (int)
airsea_shortwave_type (int)
airsea_longwave_method (int)
airsea_longwave_type (int)
airsea_albedo_method (int)
airsea_ssuv_method (int)
airsea_sst_obs_method (int)
airsea_shortwave_scale_factor (float)
airsea_heat_scale_factor (float)
airsea_const_albedo (float)
ice_model (int)
turb_method (int)
tke_method (int)
len_scale_method (int)
my_b1 (float)
my_sq (float)
my_sl (float)
my_e1 (float)
my_e2 (float)
my_e3 (float)
my_ex (float)
my_e6 (float)
my_length (int)
stab_method (int)
scnd_method (int)
kb_method (int)
epsb_method (int)
iw_model (int)
prandtl0_fix (float)
mld_method (int)
mld_diff_k (float)
mld_ri_crit (float)
kappa (float)
cm0 (float)
cmsf (float)
cde (float)
k_min (float)
eps_min (float)
kb_min (float)
epsb_min (float)
tx (float)
ty (float)
dzetadx (float)
dzetady (float)
ext_press_mode (int)
vel_relax_ramp (float)
k_ubc (int)
k_lbc (int)
psi_ubc (int)
psi_lbc (int)
ubc_type (int)
lbc_type (int)
length_lim (int)
sig_k (float)
sig_w (float)
cw (float)
gen_alpha (float)
gen_l (float)
galp (float)
cc1 (float)
ct1 (float)
ctt (float)
a1 (float)
a2 (float)
a3 (float)
a5 (float)
at1 (float)
at2 (float)
at3 (float)
at5 (float)
cw1 (float)
cw2 (float)
cw3plus (float)
cw3minus (float)
cwx (float)
cw4 (float)
ce1 (float)
ce2 (float)
ce3plus (float)
ce3minus (float)
cex (float)
ce4 (float)
sig_e (float)
sig_e0 (float)
sig_peps (int)
iw_alpha (float)
klimiw (float)
rich_cr (float)
numiw (float)
nuhiw (float)
numshear (float)
light_A (float)
light_g1 (float)
light_g2 (float)
density_method (int)
rhob (float)
alpha0 (float)
beta0 (float)
T0 (float)
S0 (float)
- pygotm.gotm.runtime_builder.build_runtime_state(nlev)[source]¶
Allocate runtime state arrays.
- Return type:
- Parameters:
nlev (int)
- pygotm.gotm.runtime_builder.build_runtime_work(nlev)[source]¶
Allocate persistent runtime work arrays.
- Return type:
- Parameters:
nlev (int)
- pygotm.gotm.runtime_builder.runtime_output_to_dataset(run, bundle, *, attrs=None)[source]¶
Convert dense compiled output buffers to an xarray dataset after a run.
- pygotm.gotm.runtime_builder.select_time_loop(params)[source]¶
Return the compiled loop wrapper for the currently supported setup.
- Return type:
- Parameters:
params (RuntimeParams)