Equations

This page maps package types to common PDE boundary/interface formulations.

Boundary Conditions

Let u be the unknown scalar field, n the outward unit normal, and g a prescribed function.

Dirichlet (Dirichlet(g)):

\[u = g \quad \text{on } \partial\Omega_D\]

Neumann (Neumann(g)):

\[\partial_n u = g \quad \text{on } \partial\Omega_N\]

Robin (Robin(\alpha, \beta, g)):

\[\alpha u + \beta\,\partial_n u = g \quad \text{on } \partial\Omega_R\]

Periodic (Periodic()): opposite sides are constrained by periodic identification. validate_borderconditions!(bc, N) enforces that periodic sides are paired.

Traction (Traction(\tau)):

\[\sigma n = \tau \quad \text{on } \partial\Omega_T\]

Pressure outlet (PressureOutlet(p_{\mathrm{out}})): for Stokes solvers this maps to

\[\sigma n = -p_{\mathrm{out}}\,n \quad \text{on } \partial\Omega_{\mathrm{out}}\]

Do-nothing (DoNothing()):

\[\sigma n = 0 \quad \text{on } \partial\Omega_0\]

Advection inflow (Inflow(g), where u\cdot n < 0): impose transported scalar value

\[\phi = g \quad \text{on inflow boundary}\]

Advection outflow (Outflow(), where u\cdot n \ge 0): no scalar data is imposed at the boundary.

Interface Conditions

Let \Gamma be an interior interface with traces (\cdot)_1 and (\cdot)_2 on each side.

Scalar jump (ScalarJump(\alpha_1, \alpha_2, g)):

\[\alpha_1 u_1 - \alpha_2 u_2 = g \quad \text{on } \Gamma\]

Flux jump (FluxJump(\beta_1, \beta_2, g)):

\[\beta_1\,\partial_n u_1 - \beta_2\,\partial_n u_2 = g \quad \text{on } \Gamma\]

Robin-type jump (RobinJump(\alpha, \beta, g)):

\[\alpha [u] + \beta [\partial_n u] = g \quad \text{on } \Gamma\]

where [q] := q_1 - q_2.

Binary-alloy equilibrium descriptor (AlloyEquilibrium(k, T_m, m)):

\[C_{s\Gamma} = k\,C_{l\Gamma}\]

\[T_\Gamma = T_m + m\,C_{l\Gamma}\]

Gibbs-Thomson descriptor (GibbsThomson(\sigma_0; kinetic=\mu_0, ...)):

\[T_\Gamma = T_m - \sigma_{\mathrm{eff}}\,\kappa_\Gamma - \mu_{\mathrm{eff}}\,V_\Gamma\]

with optional 2D harmonic anisotropy factors from HarmonicAnisotropy(\epsilon; m, \theta_0):

\[A(\theta) = 1 + \epsilon \cos\!\big(m(\theta-\theta_0)\big)\]

and (for capillarity when stiffness is enabled):

\[A_{\mathrm{stiff}}(\theta) = 1 + \epsilon(1-m^2)\cos\!\big(m(\theta-\theta_0)\big).\]

Runtime Evaluation Semantics

For all coefficients/values, eval_bc supports:

  • constant scalars
  • callbacks with signature (x...)
  • callbacks with signature (x..., t)

with x passed as StaticArrays.SVector and expanded into scalar coordinates.