"""Internal freestream state models for formulation assembly."""
from __future__ import annotations
from dataclasses import dataclass
import numpy as np
[docs]
@dataclass(slots=True)
class Freestream2D:
"""Uniform two-dimensional freestream state."""
speed: float
"""Freestream speed."""
alpha_deg: float
"""Freestream angle of attack in degrees."""
@property
def alpha_rad(self) -> float:
"""Freestream angle of attack in radians."""
return float(np.deg2rad(self.alpha_deg))
@property
def u(self) -> float:
"""Freestream x-velocity component."""
return float(self.speed * np.cos(self.alpha_rad))
@property
def v(self) -> float:
"""Freestream y-velocity component."""
return float(self.speed * np.sin(self.alpha_rad))