Commit Graph

1 Commits

Author SHA1 Message Date
Jukka Aho e67c888c4d feat(physics): Add concrete Physics implementation with boundary conditions
Create src/physics.jl with concrete Physics struct implementation:
- Physics{Formulation, Field, Mesh, Material} parameterized struct
- DirichletBC for essential BCs (prescribed displacements/temperatures)
- NeumannBC for natural BCs (surface tractions/heat flux)
- Constraint placeholder for future constraint handling
- Constructor with automatic type inference
- add_dirichlet!(physics, nodes, components, value) implementation
- add_neumann!(physics, surfaces, tractions) implementation

Physics references Mesh (does not own it) for memory efficiency and
multiphysics coupling. Type parameter order optimized for dispatch:
formulation × field determines assembly method specialization.

Example:
  physics = Physics(mesh, :all, Displacement{3}(),
                   ContinuumFormulation{FullThreeD}(), steel)

Uses abstract interface from src/physics/api.jl.
Part of systematic modular API architecture.
2025-11-15 18:40:47 +02:00