Velocity extension
GridapTopOpt.AbstractVelocityExtension
— Typeabstract type AbstractVelocityExtension end
An abstract type for velocity extension structures. Structs that inherit from this type must implement the project!
method.
GridapTopOpt.IdentityVelocityExtension
— Typestruct IdentityVelocityExtension <: AbstractVelocityExtension
A velocity-extension method that does nothing.
GridapTopOpt.VelocityExtension
— Typestruct VelocityExtension{A,B} <: AbstractVelocityExtension
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$.U_reg::B
: The trial space used for the Hilbertian extension-regularisation.cache::C
: 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,V_φ,uhd) -> dF_reg::Vector
Project dFh
onto a function space described by the vel_ext
.
Note:
- We expect that
dF
is a vector resulting from assembly on V_φ. - uhd should be an FEFunction on V_φ.