@@ -6,6 +6,11 @@ import Dates
66import ClimaUtilities. ClimaArtifacts: @clima_artifact
77import LazyArtifacts
88
9+ abstract type AbstractPrescribedFlow end
10+ @kwdef struct PrescribedFlow
11+ prescribed_u₃:: Function
12+ end
13+
914abstract type AbstractMoistureModel end
1015abstract type AbstractMoistModel <: AbstractMoistureModel end
1116struct DryModel <: AbstractMoistureModel end
@@ -682,11 +687,12 @@ Base.broadcastable(x::AtmosGravityWave) = tuple(x)
682687Base. broadcastable (x:: AtmosSponge ) = tuple (x)
683688Base. broadcastable (x:: AtmosSurface ) = tuple (x)
684689
685- struct AtmosModel{W, SCM, R, TC, GW, VD, SP, SU, NU}
690+ struct AtmosModel{W, SCM, R, TC, PF, GW, VD, SP, SU, NU}
686691 water:: W
687692 scm_setup:: SCM
688693 radiation:: R
689694 turbconv:: TC
695+ prescribed_flow:: PF
690696 gravity_wave:: GW
691697 vertical_diffusion:: VD
692698 sponge:: SP
@@ -702,6 +708,7 @@ const ATMOS_MODEL_GROUPS = (
702708 (AtmosWater, :water ),
703709 (AtmosRadiation, :radiation ),
704710 (AtmosTurbconv, :turbconv ),
711+ (PrescribedFlow, :prescribed_flow ),
705712 (AtmosGravityWave, :gravity_wave ),
706713 (AtmosSponge, :sponge ),
707714 (AtmosSurface, :surface ),
@@ -919,11 +926,14 @@ function AtmosModel(; kwargs...)
919926 disable_surface_flux_tendency =
920927 get (atmos_model_kwargs, :disable_surface_flux_tendency , false )
921928
929+ prescribed_flow = get (atmos_model_kwargs, :prescribed_flow , nothing )
930+
922931 return AtmosModel{
923932 typeof (water),
924933 typeof (scm_setup),
925934 typeof (radiation),
926935 typeof (turbconv),
936+ typeof (prescribed_flow),
927937 typeof (gravity_wave),
928938 typeof (vertical_diffusion),
929939 typeof (sponge),
@@ -934,6 +944,7 @@ function AtmosModel(; kwargs...)
934944 scm_setup,
935945 radiation,
936946 turbconv,
947+ prescribed_flow,
937948 gravity_wave,
938949 vertical_diffusion,
939950 sponge,
0 commit comments