Skip to content

Class uipc::constitution::AffineBodyConstitution

ClassList > uipc > constitution > AffineBodyConstitution

Inherits the following classes: uipc::constitution::IConstitution

Inherited by the following classes: uipc::constitution::AffineBodyRod, uipc::constitution::AffineBodyShell

Public Functions

Type Name
AffineBodyConstitution (const Json & config=default_config()) noexcept
void apply_to (geometry::SimplicialComplex & sc, Float kappa, Float mass_density=1e3) const
void apply_to (geometry::SimplicialComplex & sc, Float kappa, const Matrix12x12 & mass, Float volume) const
Apply ABD constitution with explicit mass matrix and volume override.
AffineBodyMaterial create_material (Float kappa) noexcept const

Public Functions inherited from uipc::constitution::IConstitution

See uipc::constitution::IConstitution

Type Name
std::string_view name () noexcept const
std::string_view type () noexcept const
U64 uid () noexcept const
const builtin::UIDInfo & uid_info () noexcept const
virtual ~IConstitution () = default

Public Static Functions

Type Name
Json default_config () noexcept

Protected Functions

Type Name
virtual U64 get_uid () noexcept override const
void setup_abd_attributes (geometry::SimplicialComplex & sc, Float kappa, Float mass_density, Float volume) const
Common ABD attribute setup without volume computation.

Protected Functions inherited from uipc::constitution::IConstitution

See uipc::constitution::IConstitution

Type Name
virtual U64 get_uid () noexcept const = 0

Public Functions Documentation

function AffineBodyConstitution

uipc::constitution::AffineBodyConstitution::AffineBodyConstitution (
    const Json & config=default_config()
) noexcept

function apply_to [1/2]

void uipc::constitution::AffineBodyConstitution::apply_to (
    geometry::SimplicialComplex & sc,
    Float kappa,
    Float mass_density=1e3
) const

function apply_to [2/2]

Apply ABD constitution with explicit mass matrix and volume override.

void uipc::constitution::AffineBodyConstitution::apply_to (
    geometry::SimplicialComplex & sc,
    Float kappa,
    const Matrix12x12 & mass,
    Float volume
) const

The 12x12 mass matrix is decomposed into (m, m_x_bar, m_x_bar_x_bar) and stored as meta attributes so the backend uses them directly instead of computing from mesh geometry.


function create_material

AffineBodyMaterial uipc::constitution::AffineBodyConstitution::create_material (
    Float kappa
) noexcept const

Public Static Functions Documentation

function default_config

static Json uipc::constitution::AffineBodyConstitution::default_config () noexcept

Protected Functions Documentation

function get_uid

virtual U64 uipc::constitution::AffineBodyConstitution::get_uid () noexcept override const

Implements uipc::constitution::IConstitution::get_uid


function setup_abd_attributes

Common ABD attribute setup without volume computation.

void uipc::constitution::AffineBodyConstitution::setup_abd_attributes (
    geometry::SimplicialComplex & sc,
    Float kappa,
    Float mass_density,
    Float volume
) const

Sets constitution_uid, transforms, dof_offset, dof_count, is_fixed, is_dynamic, external_kinetic, velocity, self_collision, kappa, volume, and mass_density attributes.

Subclasses (AffineBodyShell, AffineBodyRod) call this with their own pre-computed volume instead of compute_mesh_volume().



The documentation for this class was generated from the following file include/uipc/constitution/affine_body_constitution.h