Skip to content

Robin boundary conditions #331

Description

@mohdibntarek

TopOpt.jl currently supports only Dirichlet (Ferrite.Dirichlet) and Neumann (surface load / heat-flux) boundary conditions. Robin (mixed/convective) boundary conditions of the form a·u + b·∂u/∂n = g are not supported.

Robin BCs matter for two physics:

  • Heat transfer: convective heat transfer (Newton's law of cooling), -k ∇T·n = h (T - T_∞), i.e. h·T + k ∂T/∂n = h·T_∞.
  • Structural mechanics: elastic foundations / spring supports (Winkler boundary), where a boundary reaction is proportional to the displacement.

Implementing them requires:

  • adding the Robin term as a boundary integral over the Robin facets, contributing to both the stiffness/conductivity matrix and the load vector,
  • keeping the added matrix/vector contributions differentiable via Zygote,
  • wiring them into the HeatConductionProblem and/or StiffnessTopOptProblem constructors and the FEA assembly path (src/TopOptProblems/matrices_and_vectors.jl, src/TopOptProblems/assemble.jl),
  • distinguishing the Robin (external, non-penalized) contribution from penalized loads, consistent with the existing weights/fes vs dloads/fixedload/cload convention.

Prepared with assistance from deepseek-v4-pro via opencode.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions