Commit Graph

1 Commits

Author SHA1 Message Date
Jukka Aho 000dee3994 feat(physics): Add physics coupling API with multiphysics support
Create src/physics/api.jl defining physics problem abstractions:
- AbstractPhysics base type for all physics problems
- assemble!() interface for building global system (K, f)
- solve!() interface for solving physics problems
- add_dirichlet!() for essential BCs (prescribed displacements/temperatures)
- add_neumann!() for natural BCs (surface tractions/heat flux)

Physics couples four components: Mesh (where), Material (constitutive law),
Field (what we solve), Formulation (how we discretize). Physics references
Mesh (does not own it) enabling multiphysics: multiple Physics can share
one Mesh for memory efficiency and coupling.

Dispatch specialization via formulation × field type parameters:
  assemble!(::Physics{ContinuumFormulation{FullThreeD}, Displacement{3}, M, Mat})
  assemble!(::Physics{BeamFormulation{Timoshenko}, DisplacementRotation{3}, M, Mat})

Comprehensive documentation with multiphysics examples, dispatch patterns,
and interface contracts. Assembly implementations in src/assembly/.

Part of systematic modular API architecture.
2025-11-15 18:42:03 +02:00