Y YASPS
Docs menu
Getting started Mental model Attributes JOIN UNION Optimization Dynamic contact Capstone example Examples API reference

CUDA implementation · research software

Symbolic simulation without the combinatorial code

Describe physical energies once. YASPS traces every value to its true degrees of freedom, differentiates the symbolic program, emits fused CUDA kernels, assembles the sparse Newton system, and solves it on the GPU.

A world-space point may be a free vertex, part of an affine body, or generated by a cage. Conventional implementations often duplicate every energy for every combination. YASPS keeps one expression and preserves the route from each value back to its actual parameters.

It is not an eager tensor library. An expression such as a + b + c becomes one symbolic graph and one generated computation; YASPS does not materialize a + b as an intermediate array.

Learn the frontend in order

Work through these chapters sequentially. Each one supplies a piece of the final mixed-body program.

  1. 01
    Getting started

    Install the CUDA implementation and run the smallest symbolic solve.

  2. 02
    Scene and mesh model

    Understand scenes, meshes, primitives, lineage, and generated execution.

  3. 03
    Attributes and expressions

    Declare data, constants, matrix expressions, and named computation boundaries.

  4. 04
    Connectivity and JOIN

    Gather values from another primitive while retaining their symbolic path.

  5. 05
    Primitive unions

    Present heterogeneous parameterizations through one compatible interface.

  6. 06
    Energies and minimization

    Register scalar objectives, choose targets, assemble derivatives, and solve.

  7. 07
    Dynamic contact topology

    Update changing contact stencils without rebuilding the symbolic energy.

  8. 08
    Complete mixed-body example

    Assemble all seven chapters into the five-bunny container simulation.

The execution contract

YASPS returns the solution of H Δx = g; a Newton update normally subtracts that segment. It deliberately leaves collision detection, continuous collision detection, line search, and timestep policy to the application, where geometry and parameterization-specific decisions belong.

Begin with Getting started. The complete program appears only after the concepts it combines.