Velocity extension

GridapTopOpt.VelocityExtensionType
struct VelocityExtension{A,B}

Wrapper to hold a stiffness matrix and a cache for the Hilbertian extension-regularisation. See Allaire et al. 2022 (link).

The Hilbertian extension-regularisation method involves solving an identification problem over a Hilbert space $H$ on $D$ with inner product $\langle\cdot,\cdot\rangle_H$: Find $g_\Omega\in H$ such that $\langle g_\Omega,w\rangle_H =-J^{\prime}(\Omega)(w\boldsymbol{n})~ \forall w\in H.$

This provides two benefits:

  1. It naturally extends the shape sensitivity from $\partial\Omega$ onto the bounding domain $D$; and
  2. ensures a descent direction for $J(\Omega)$ with additional regularity (i.e., $H$ as opposed to $L^2(\partial\Omega)$)

Properties

  • K::A: The discretised inner product over $H$.
  • cache::B: Cached objects used for project!
source
GridapTopOpt.VelocityExtensionMethod
VelocityExtension(biform,U_reg,V_reg;assem,ls)

Create an instance of VelocityExtension given a bilinear form biform, trial space U_reg, and test space V_reg.

Optional

  • assem: A matrix assembler
  • ls::LinearSolver: A linear solver
source
GridapTopOpt.project!Method
project!(vel_ext::VelocityExtension,dF::AbstractVector) -> dF

Project shape derivative dF onto a function space described by the vel_ext.

source