import type { TSLMat3Node, TSLUniformNode } from '../../types/tsl.cjs'; import type { MPMMaterialModel, MPMMaterialParticleContext, MPMMaterialStressContext, MPMMaterialUpdateContext, MPMParticleFieldMap } from './MPMFluidModel.cjs'; /** Parameters for the fixed-corotated elastic material. */ export interface MPMElasticModelOptions { /** Young's modulus controlling elastic stiffness. */ youngsModulus?: number | undefined; /** Poisson ratio controlling transverse deformation. */ poissonRatio?: number | undefined; /** Reference particle volume used by the stress calculation. */ volume?: number | undefined; /** Initial particle density. */ density?: number | undefined; } /** Mutable TSL uniforms derived for {@link MPMElasticModel}. */ export interface MPMElasticUniforms { /** First Lamé shear parameter. */ mu: TSLUniformNode<'float', number>; /** Second Lamé parameter. */ lambda: TSLUniformNode<'float', number>; /** Reference particle volume. */ volume: TSLUniformNode<'float', number>; /** Initial particle density. */ density: TSLUniformNode<'float', number>; } /** Material-owned particle fields required for elastic deformation. */ export interface MPMElasticParticleFields extends MPMParticleFieldMap { /** Persistent deformation-gradient matrix. */ F: { type: 'mat3'; }; } /** Fixed-corotated elastic model proving that solver kernels are material-agnostic. */ export declare class MPMElasticModel implements MPMMaterialModel { /** Stable material identifier. */ name: 'elastic'; /** Elastic deformation-gradient particle field. */ particleFields: MPMElasticParticleFields; /** Live Lamé, volume, and density controls. */ uniforms: MPMElasticUniforms; /** Create a fixed-corotated material and derive its Lamé parameters. */ constructor({ youngsModulus, poissonRatio, volume, density }?: MPMElasticModelOptions); /** Initialize deformation to identity and store material density. */ initParticle({ particle }: MPMMaterialParticleContext): void; /** Evaluate fixed-corotated elastic stress for one particle. */ stress({ particle }: MPMMaterialStressContext): TSLMat3Node; /** Advance the deformation gradient from the affine velocity field. */ updateDeformation({ particle, C, dt }: MPMMaterialUpdateContext): void; }