Skip to content

Feature/universal frontal solver - #100

Merged
nikoscham merged 2 commits into
mainfrom
feature/universal-frontal-solver
Oct 29, 2026
Merged

nikoscham merged 2 commits into
mainfrom
feature/universal-frontal-solver

Conversation

@nikoscham

Copy link
Copy Markdown
Member

Decouple the frontal solver from physics models and restructure src

Frontal solver (#77):

  • runFrontalSolver(assembleFront, meshData, boundaryConditionsHandler)
    no longer imports any physics model; model-specific parameters are
    bound into the assembler by the caller
  • Boundary condition classes implement a common frontal interface:
    imposeDirichletBoundaryConditionsFront and the optional
    imposeRobinBoundaryConditionsFront (returns null off Robin boundaries)
  • newtonRaphson takes assembleFront and boundaryConditionsHandler via
    context instead of importing frontPropagation
  • Frontal convection now applies every side of an element on the same
    boundary, matching the matrix assembly

Restructure:

  • elements/: basis functions, numerical integration, isoparametric
    mapping, element geometry and initializeFEA (split from meshUtils)
  • physics/: models together with their boundary condition classes
    (was models/)
  • linalg/: sparse matrix and BLAS utilities (was numerics/)
  • io/: Gmsh reader, now including the Gmsh-to-FEAScript conversion
    previously in Mesh.parseMeshFromGmsh
  • solvers/index.js exports every solver except WebGPUComputeEngine

Deduplicate boundary conditions:

  • Add getBoundarySides() to replace the repeated side-node tables
  • Thermal and generic BCs share one node loop for the matrix and
    frontal Dirichlet paths
  • Thermal convection uses one per-side computation for both paths
    (thermalBoundaryConditions.js 989 -> 425 lines)

Add Prettier config matching the existing code style

Frontal solver (#77):
- runFrontalSolver(assembleFront, meshData, boundaryConditionsHandler)
  no longer imports any physics model; model-specific parameters are
  bound into the assembler by the caller
- Boundary condition classes implement a common frontal interface:
  imposeDirichletBoundaryConditionsFront and the optional
  imposeRobinBoundaryConditionsFront (returns null off Robin boundaries)
- newtonRaphson takes assembleFront and boundaryConditionsHandler via
  context instead of importing frontPropagation
- Frontal convection now applies every side of an element on the same
  boundary, matching the matrix assembly

Restructure:
- elements/: basis functions, numerical integration, isoparametric
  mapping, element geometry and initializeFEA (split from meshUtils)
- physics/: models together with their boundary condition classes
  (was models/)
- linalg/: sparse matrix and BLAS utilities (was numerics/)
- io/: Gmsh reader, now including the Gmsh-to-FEAScript conversion
  previously in Mesh.parseMeshFromGmsh
- solvers/index.js exports every solver except WebGPUComputeEngine

Deduplicate boundary conditions:
- Add getBoundarySides() to replace the repeated side-node tables
- Thermal and generic BCs share one node loop for the matrix and
  frontal Dirichlet paths
- Thermal convection uses one per-side computation for both paths
  (thermalBoundaryConditions.js 989 -> 425 lines)

Add Prettier config matching the existing code style
Frontal solver (#77):
- runFrontalSolver(assembleFront, meshData, boundaryConditionsHandler)
  no longer imports any physics model; model-specific parameters are
  bound into the assembler by the caller
- Boundary condition classes implement a common frontal interface:
  imposeDirichletBoundaryConditionsFront and the optional
  imposeRobinBoundaryConditionsFront (returns null off Robin boundaries)
- newtonRaphson takes assembleFront and boundaryConditionsHandler via
  context instead of importing frontPropagation
- Frontal convection now applies every side of an element on the same
  boundary, matching the matrix assembly

Restructure:
- elements/: basis functions, numerical integration, isoparametric
  mapping, element geometry and initializeFEA (split from meshUtils)
- physics/: models together with their boundary condition classes
  (was models/)
- linalg/: sparse matrix and BLAS utilities (was numerics/)
- io/: Gmsh reader, now including the Gmsh-to-FEAScript conversion
  previously in Mesh.parseMeshFromGmsh
- solvers/index.js exports every solver except WebGPUComputeEngine

Deduplicate boundary conditions:
- Add getBoundarySides() to replace the repeated side-node tables
- Thermal and generic BCs share one node loop for the matrix and
  frontal Dirichlet paths
- Thermal convection uses one per-side computation for both paths
  (thermalBoundaryConditions.js 989 -> 425 lines)

Add Prettier config matching the existing code style
@nikoscham nikoscham self-assigned this Oct 29, 2026
@nikoscham nikoscham added the enhancement New feature or request label Oct 29, 2026
@nikoscham nikoscham linked an issue Oct 29, 2026 that may be closed by this pull request
@nikoscham
nikoscham merged commit fc431fa into main Oct 29, 2026
2 checks passed
@nikoscham
nikoscham deleted the feature/universal-frontal-solver branch October 29, 2026 07:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Universal frontal solver integration

1 participant