@@ -358,6 +358,171 @@ function (initial_condition::RisingThermalBubbleProfile)(params)
358358 return local_state
359359end
360360
361+ """
362+ RCEMIPIIProfile_295()
363+
364+ An [`InitialCondition`](@ref) following the sounding to initialize simulations for
365+ RCEMIPII as described by Wing et. al. (2018)
366+ (https://doi.org/10.5194/gmd-11-793-2018). This profile is for an initial
367+ temperature of 295 K. Note: this should be used for RCE_small and NOT
368+ RCE_large - RCE_large must be initialized with the final state of RCE_small.
369+ """
370+
371+ struct RCEMIPIIProfile_295 <: InitialCondition end
372+ function (:: RCEMIPIIProfile_295 )(params)
373+ function local_state (local_geometry)
374+ FT = eltype (params)
375+ R_d = CAP. R_d (params)
376+ grav = CAP. grav (params)
377+ thermo_params = CAP. thermodynamics_params (params)
378+
379+ T_0 = FT (295 ) # K
380+ q_0 = FT (12e-3 ) # kg kg-1
381+
382+ q_t = FT (10 ^ (- 14 )) # kg kg -1
383+ z_q1 = FT (4000 ) # m
384+ z_q2 = FT (7500 ) # m
385+ z_t = FT (15000 ) # m
386+ Γ = FT (0.0067 ) # K m-1
387+ p_0 = FT (101480 ) # Pa
388+
389+ T_v0 = T_0 * (FT (1 ) + FT (0.608 ) * q_0)
390+ T_vt = T_v0 - Γ * z_t
391+
392+ p_t = p_0 * (T_vt / T_v0)^ (grav / (R_d * Γ))
393+
394+ RCEMIPII_T_v (z) = z ≤ z_t ? T_v0 - Γ * z : T_vt
395+ RCEMIPII_p (z) =
396+ z ≤ z_t ? p_0 * ((T_v0 - Γ * z) / T_v0)^ (grav / (R_d * Γ)) :
397+ p_t * exp (- grav * (z - z_t) / (R_d * T_vt))
398+ RCEMIPII_q (z) = z ≤ z_t ? q_0 * exp (- z / z_q1) * exp (- (z / z_q2)^ 2 ) : q_t
399+
400+ (; z) = local_geometry. coordinates
401+
402+ q = RCEMIPII_q (z)
403+ T_v = RCEMIPII_T_v (z)
404+ T = T_v / (FT (1 ) + FT (0.608 ) * q)
405+ p = RCEMIPII_p (z)
406+
407+ return LocalState (;
408+ params,
409+ geometry = local_geometry,
410+ thermo_state = TD. PhaseEquil_pTq (thermo_params, p, T, q),
411+ )
412+ end
413+ return local_state
414+ end
415+
416+ """
417+ RCEMIPIIProfile_300()
418+
419+ An [`InitialCondition`](@ref) following the sounding to initialize simulations for
420+ RCEMIPII as described by Wing et. al. (2018)
421+ (https://doi.org/10.5194/gmd-11-793-2018). This profile is for an initial
422+ temperature of 300 K. Note: this should be used for RCE_small and NOT
423+ RCE_large - RCE_large must be initialized with the final state of RCE_small.
424+ """
425+
426+ struct RCEMIPIIProfile_300 <: InitialCondition end
427+ function (:: RCEMIPIIProfile_300 )(params)
428+ function local_state (local_geometry)
429+ FT = eltype (params)
430+ R_d = CAP. R_d (params)
431+ grav = CAP. grav (params)
432+ thermo_params = CAP. thermodynamics_params (params)
433+
434+ T_0 = FT (300 ) # K
435+ q_0 = FT (18.65e-3 ) # kg kg-1
436+
437+ q_t = FT (10 ^ (- 14 )) # kg kg -1
438+ z_q1 = FT (4000 ) # m
439+ z_q2 = FT (7500 ) # m
440+ z_t = FT (15000 ) # m
441+ Γ = FT (0.0067 ) # K m-1
442+ p_0 = FT (101480 ) # Pa
443+
444+ T_v0 = T_0 * (FT (1 ) + FT (0.608 ) * q_0)
445+ T_vt = T_v0 - Γ * z_t
446+
447+ p_t = p_0 * (T_vt / T_v0)^ (grav / (R_d * Γ))
448+
449+ RCEMIPII_T_v (z) = z ≤ z_t ? T_v0 - Γ * z : T_vt
450+ RCEMIPII_p (z) =
451+ z ≤ z_t ? p_0 * ((T_v0 - Γ * z) / T_v0)^ (grav / (R_d * Γ)) :
452+ p_t * exp (- grav * (z - z_t) / (R_d * T_vt))
453+ RCEMIPII_q (z) = z ≤ z_t ? q_0 * exp (- z / z_q1) * exp (- (z / z_q2)^ 2 ) : q_t
454+
455+ (; z) = local_geometry. coordinates
456+
457+ q = RCEMIPII_q (z)
458+ T_v = RCEMIPII_T_v (z)
459+ T = T_v / (FT (1 ) + FT (0.608 ) * q)
460+ p = RCEMIPII_p (z)
461+
462+ return LocalState (;
463+ params,
464+ geometry = local_geometry,
465+ thermo_state = TD. PhaseEquil_pTq (thermo_params, p, T, q),
466+ )
467+ end
468+ return local_state
469+ end
470+
471+ """
472+ RCEMIPIIProfile_305()
473+
474+ An [`InitialCondition`](@ref) following the sounding to initialize simulations for
475+ RCEMIPII as described by Wing et. al. (2018)
476+ (https://doi.org/10.5194/gmd-11-793-2018). This profile is for an initial
477+ temperature of 305 K. Note: this should be used for RCE_small and NOT
478+ RCE_large - RCE_large must be initialized with the final state of RCE_small.
479+ """
480+
481+ struct RCEMIPIIProfile_305 <: InitialCondition end
482+ function (:: RCEMIPIIProfile_305 )(params)
483+ function local_state (local_geometry)
484+ FT = eltype (params)
485+ R_d = CAP. R_d (params)
486+ grav = CAP. grav (params)
487+ thermo_params = CAP. thermodynamics_params (params)
488+
489+ T_0 = FT (305 ) # K
490+ q_0 = FT (24e-3 ) # kg kg-1
491+
492+ q_t = FT (10 ^ (- 14 )) # kg kg -1
493+ z_q1 = FT (4000 ) # m
494+ z_q2 = FT (7500 ) # m
495+ z_t = FT (15000 ) # m
496+ Γ = FT (0.0067 ) # K m-1
497+ p_0 = FT (101480 ) # Pa
498+
499+ T_v0 = T_0 * (FT (1 ) + FT (0.608 ) * q_0)
500+ T_vt = T_v0 - Γ * z_t
501+
502+ p_t = p_0 * (T_vt / T_v0)^ (grav / (R_d * Γ))
503+
504+ RCEMIPII_T_v (z) = z ≤ z_t ? T_v0 - Γ * z : T_vt
505+ RCEMIPII_p (z) =
506+ z ≤ z_t ? p_0 * ((T_v0 - Γ * z) / T_v0)^ (grav / (R_d * Γ)) :
507+ p_t * exp (- grav * (z - z_t) / (R_d * T_vt))
508+ RCEMIPII_q (z) = z ≤ z_t ? q_0 * exp (- z / z_q1) * exp (- (z / z_q2)^ 2 ) : q_t
509+
510+ (; z) = local_geometry. coordinates
511+
512+ q = RCEMIPII_q (z)
513+ T_v = RCEMIPII_T_v (z)
514+ T = T_v / (FT (1 ) + FT (0.608 ) * q)
515+ p = RCEMIPII_p (z)
516+
517+ return LocalState (;
518+ params,
519+ geometry = local_geometry,
520+ thermo_state = TD. PhaseEquil_pTq (thermo_params, p, T, q),
521+ )
522+ end
523+ return local_state
524+ end
525+
361526"""
362527 overwrite_initial_conditions!(initial_condition, args...)
363528
0 commit comments