Source code for genesis.engine.materials.PBD.liquid

import platform
import sys
from typing import TYPE_CHECKING, Literal

from genesis.typing import PositiveFloat, ValidFloat

from .base import Base

if TYPE_CHECKING:
    from genesis.engine.entities.pbd_entity import PBDParticleEntity

SamplerType = Literal["pbs", "random", "regular"]
DEFAULT_SAMPLER: SamplerType = "pbs" if (sys.platform == "linux" and platform.machine() == "x86_64") else "random"


[docs]class Liquid(Base["PBDParticleEntity"]): """ The liquid material class for PBD. Parameters ---------- rho : float, optional The rest density of the fluid in kg/m³. Default is 1000.0. sampler : str, optional Particle sampler ('pbs', 'regular', 'random'). Note that 'pbs' is only supported on Linux x86 for now. Defaults to 'pbs' on supported platforms, 'random' otherwise. density_relaxation : float, optional Relaxation factor for solving the density constraint. Default is 0.2. viscosity_relaxation : float, optional Relaxation factor used in the viscosity solver. Default is 0.01. """ rho: PositiveFloat = 1000.0 sampler: SamplerType = DEFAULT_SAMPLER density_relaxation: ValidFloat = 0.2 viscosity_relaxation: ValidFloat = 0.01