Velocity extension
GridapTopOpt.VelocityExtension
— Typestruct 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:
- It naturally extends the shape sensitivity from $\partial\Omega$ onto the bounding domain $D$; and
- 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 forproject!
GridapTopOpt.VelocityExtension
— MethodVelocityExtension(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 assemblerls::LinearSolver
: A linear solver
GridapTopOpt.project!
— Methodproject!(vel_ext::VelocityExtension,dF::AbstractVector) -> dF
Project shape derivative dF
onto a function space described by the vel_ext
.