Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use refs for long variable names #627

Merged
merged 1 commit into from
Mar 5, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
56 changes: 28 additions & 28 deletions experiments/AMIP/components/atmosphere/climaatmos_init.jl
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@ function get_atmos_config(coupler_dict)
end

function atmos_init(::Type{FT}, atmos_config_dict::Dict) where {FT}

# By passing `parsed_args` to `AtmosConfig`, `parsed_args` overwrites the default atmos config
atmos_config = CA.AtmosConfig(atmos_config_dict)
simulation = CA.get_simulation(atmos_config)
Expand All @@ -76,16 +75,27 @@ function atmos_init(::Type{FT}, atmos_config_dict::Dict) where {FT}
@warn("Running with ρe_int in coupled mode is not tested yet.", maxlog = 1)
end

# define shorter references for long variable names to increase readability
ρ_flux_h_tot = integrator.p.precomputed.sfc_conditions.ρ_flux_h_tot
ρ_flux_q_tot = integrator.p.precomputed.sfc_conditions.ρ_flux_q_tot
ᶠradiation_flux = integrator.p.radiation.ᶠradiation_flux
ρ_flux_uₕ = integrator.p.precomputed.sfc_conditions.ρ_flux_uₕ
col_integrated_rain = integrator.p.precipitation.col_integrated_rain
col_integrated_snow = integrator.p.precipitation.col_integrated_snow
ᶜS_ρq_tot = integrator.p.precipitation.ᶜS_ρq_tot
ᶜ3d_rain = integrator.p.precipitation.ᶜ3d_rain
ᶜ3d_snow = integrator.p.precipitation.ᶜ3d_snow

# set initial fluxes to zero
@. integrator.p.precomputed.sfc_conditions.ρ_flux_h_tot = Geometry.Covariant3Vector(FT(0.0))
@. integrator.p.precomputed.sfc_conditions.ρ_flux_q_tot = Geometry.Covariant3Vector(FT(0.0))
@. integrator.p.radiation.ᶠradiation_flux = Geometry.WVector(FT(0))
integrator.p.precomputed.sfc_conditions.ρ_flux_uₕ.components .= Ref(SMatrix{1, 2}([FT(0), FT(0)]))
integrator.p.precipitation.col_integrated_rain .= FT(0)
integrator.p.precipitation.col_integrated_snow .= FT(0)
integrator.p.precipitation.ᶜS_ρq_tot .= FT(0)
integrator.p.precipitation.ᶜ3d_rain .= FT(0)
integrator.p.precipitation.ᶜ3d_snow .= FT(0)
@. ρ_flux_h_tot = Geometry.Covariant3Vector(FT(0.0))
@. ρ_flux_q_tot = Geometry.Covariant3Vector(FT(0.0))
@. ᶠradiation_flux = Geometry.WVector(FT(0))
ρ_flux_uₕ.components .= Ref(SMatrix{1, 2}([FT(0), FT(0)]))
col_integrated_rain .= FT(0)
juliasloan25 marked this conversation as resolved.
Show resolved Hide resolved
col_integrated_snow .= FT(0)
ᶜS_ρq_tot .= FT(0)
ᶜ3d_rain .= FT(0)
ᶜ3d_snow .= FT(0)

sim = ClimaAtmosSimulation(integrator.p.params, Y, spaces, integrator)

Expand Down Expand Up @@ -300,29 +310,19 @@ Extension of Interfacer.get_field to get the net TOA radiation, which is a sum o
upward and downward longwave and shortwave radiation.
"""
function get_field(atmos_sim::ClimaAtmosSimulation, ::Val{:F_radiative_TOA})
radiation = atmos_sim.integrator.p.radiation.radiation_model
FT = eltype(atmos_sim.integrator.u)
# save radiation source
if radiation != nothing
if atmos_sim.integrator.p.radiation.radiation_model != nothing
face_space = axes(atmos_sim.integrator.u.f)
nz_faces = length(Spaces.vertical_topology(face_space).mesh.faces)

LWd_TOA = Fields.level(
CA.RRTMGPI.array2field(FT.(atmos_sim.integrator.p.radiation.radiation_model.face_lw_flux_dn), face_space),
nz_faces - half,
)
LWu_TOA = Fields.level(
CA.RRTMGPI.array2field(FT.(atmos_sim.integrator.p.radiation.radiation_model.face_lw_flux_up), face_space),
nz_faces - half,
)
SWd_TOA = Fields.level(
CA.RRTMGPI.array2field(FT.(atmos_sim.integrator.p.radiation.radiation_model.face_sw_flux_dn), face_space),
nz_faces - half,
)
SWu_TOA = Fields.level(
CA.RRTMGPI.array2field(FT.(atmos_sim.integrator.p.radiation.radiation_model.face_sw_flux_up), face_space),
nz_faces - half,
)
(; face_lw_flux_dn, face_lw_flux_up, face_sw_flux_dn, face_sw_flux_up) =
atmos_sim.integrator.p.radiation.radiation_model

LWd_TOA = Fields.level(CA.RRTMGPI.array2field(FT.(face_lw_flux_dn), face_space), nz_faces - half)
LWu_TOA = Fields.level(CA.RRTMGPI.array2field(FT.(face_lw_flux_up), face_space), nz_faces - half)
SWd_TOA = Fields.level(CA.RRTMGPI.array2field(FT.(face_sw_flux_dn), face_space), nz_faces - half)
SWu_TOA = Fields.level(CA.RRTMGPI.array2field(FT.(face_sw_flux_up), face_space), nz_faces - half)

return @. -(LWd_TOA + SWd_TOA - LWu_TOA - SWu_TOA) # [W/m^2]
else
Expand Down
13 changes: 8 additions & 5 deletions experiments/AMIP/components/land/bucket_utils.jl
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,10 @@ function make_land_domain(
@assert zlim[1] < zlim[2]
depth = zlim[2] - zlim[1]

radius = ClimaCore.Spaces.topology(atmos_boundary_space).mesh.domain.radius
nelements_horz = ClimaCore.Spaces.topology(atmos_boundary_space).mesh.ne
mesh = ClimaCore.Spaces.topology(atmos_boundary_space).mesh

radius = mesh.domain.radius
nelements_horz = mesh.ne
npolynomial =
ClimaCore.Spaces.Quadratures.polynomial_degree(ClimaCore.Spaces.quadrature_style(atmos_boundary_space))
nelements = (nelements_horz, nelements_vert)
Expand Down Expand Up @@ -79,9 +81,10 @@ reinit!(sim::BucketSimulation) = reinit!(sim.integrator)
# extensions required by FluxCalculator (partitioned fluxes)
function update_turbulent_fluxes_point!(sim::BucketSimulation, fields::NamedTuple, colidx::Fields.ColumnIndex)
(; F_turb_energy, F_turb_moisture) = fields
sim.integrator.p.bucket.turbulent_fluxes.shf[colidx] .= F_turb_energy
sim.integrator.p.bucket.turbulent_fluxes.vapor_flux[colidx] .=
F_turb_moisture ./ LP.ρ_cloud_liq(sim.model.parameters.earth_param_set)
turbulent_fluxes = sim.integrator.p.bucket.turbulent_fluxes
turbulent_fluxes.shf[colidx] .= F_turb_energy
earth_params = sim.model.parameters.earth_param_set
turbulent_fluxes.vapor_flux[colidx] .= F_turb_moisture ./ LP.ρ_cloud_liq(earth_params)
return nothing
anastasia-popova marked this conversation as resolved.
Show resolved Hide resolved
end

Expand Down
8 changes: 4 additions & 4 deletions src/ConservationChecker.jl
Original file line number Diff line number Diff line change
Expand Up @@ -96,14 +96,14 @@ function check_conservation!(
for sim in model_sims
sim_name = Symbol(Interfacer.name(sim))
if sim isa Interfacer.AtmosModelSimulation
F_radiative_TOA = coupler_sim.fields.F_radiative_TOA
# save radiation source
parent(coupler_sim.fields.F_radiative_TOA) .= parent(Interfacer.get_field(sim, Val(:F_radiative_TOA)))
parent(F_radiative_TOA) .= parent(Interfacer.get_field(sim, Val(:F_radiative_TOA)))

if isempty(ccs.toa_net_source)
radiation_sources_accum = sum(coupler_sim.fields.F_radiative_TOA .* FT(coupler_sim.Δt_cpl)) # ∫ J / m^2 dA
radiation_sources_accum = sum(F_radiative_TOA .* FT(coupler_sim.Δt_cpl)) # ∫ J / m^2 dA
else
radiation_sources_accum =
sum(coupler_sim.fields.F_radiative_TOA .* FT(coupler_sim.Δt_cpl)) .+ ccs.toa_net_source[end] # ∫ J / m^2 dA
radiation_sources_accum = sum(F_radiative_TOA .* FT(coupler_sim.Δt_cpl)) .+ ccs.toa_net_source[end] # ∫ J / m^2 dA
end
push!(ccs.toa_net_source, radiation_sources_accum)

Expand Down
Loading