Source code for buffalo_panel.assembly.internal.freestream

"""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))