Source code for abcmodel.atmos.clouds.no_clouds
from dataclasses import dataclass, field
import jax.numpy as jnp
from jax import Array
from ...coupling import AbstractCoupledState
from ..abstracts import AbstractCloudModel, AbstractCloudState
[docs]
@dataclass
class NoCloudState(AbstractCloudState):
"""No cloud initial state."""
cc_frac: Array = field(default_factory=lambda: jnp.array(0.0))
"""Cloud core fraction [-], range 0 to 1."""
cc_mf: Array = field(default_factory=lambda: jnp.array(0.0))
"""Cloud core mass flux [kg/kg/s]."""
cc_qf: Array = field(default_factory=lambda: jnp.array(0.0))
"""Cloud core moisture flux [kg/kg/s]."""
cl_trans: Array = field(default_factory=lambda: jnp.array(0.0))
"""Cloud layer transmittance [-], range 0 to 1."""
q2_h: Array = field(default_factory=lambda: jnp.array(0.0))
"""Humidity variance at mixed-layer top [kg²/kg²]."""
top_CO22: Array = field(default_factory=lambda: jnp.array(0.0))
"""CO2 variance at mixed-layer top [ppm²]."""
wCO2M: Array = field(default_factory=lambda: jnp.array(0.0))
"""CO2 mass flux [mgC/m²/s]."""
[docs]
class NoCloudModel(AbstractCloudModel[NoCloudState]):
"""No cloud is formed using this model."""
def __init__(self):
pass
[docs]
def init_state(self) -> NoCloudState:
"""Initialize the model state.
Returns:
The initial cloud state.
"""
return NoCloudState()
[docs]
def run(self, state: AbstractCoupledState) -> NoCloudState:
"""No calculations."""
return state.atmos.clouds