Evolving surface finite element method  v0.3.0-14-g3598512
Numerical experiments for my papers
Classes | Public Member Functions | Private Attributes | List of all members
Esfem::SecOrd_op::Solution_driven Class Reference

Solve the surface partial differential equation for solution driven paper. More...

#include <secOrd_op_solutionDriven.h>

Classes

struct  Data
 

Public Member Functions

 Solution_driven (const Io::Parameter &, const Grid::Grid_and_time &, const Grid::Scal_FEfun &u_wrapper)
 Get PDE parameter, time and growth promoting function $u$. More...
 
 ~Solution_driven ()
 Required for the pointer to implementation technique.
 
void solve (const Grid::Vec_FEfun &rhs, Grid::Vec_FEfun &lhs) const
 Solve regularized mean curvature equation. More...
 
void brusselator_rhs (const Grid::Vec_FEfun &rhs, Grid::Vec_FEfun &lhs) const
 Generates right-hand side without load vector for the linear system. More...
 
void operator() (const Grid::Vec_FEfun &rhs, Grid::Vec_FEfun &lhs) const
 For debugging reasons. More...
 

Private Attributes

std::unique_ptr< Datad_ptr
 Pointer to data members.
 

Detailed Description

Solve the surface partial differential equation for solution driven paper.

Partial differential equation

Parameter

$\varepsilon, \delta, a \in \R$ for the surface equation, where $\varepsilon$ and $\alpha$ are small regularization parameter.

Smooth problem

For given $u\colon \surface \to \R$ search for $X\colon \surface_{0} \times [0,T] \to \R^{m+1}$ such that

\begin{align*} v - \alpha \laplaceBeltrami v = {} & \parentheses[\big]{\varepsilon (-\meanCurvature) + \delta u} \surfaceNormal = \varepsilon \laplaceBeltrami X + \delta u \surfaceNormal, \\ \dell_{t} X = {} & v(X). \end{align*}

Finite element discretization

For given $\nodalValue{u}\colon I \to \R^{N}$ search for $\nodalValue{X}\colon I \to \R^{3N}$ (surface nodal values) such that

\begin{equation*} \parentheses[\big]{M(X) + \alpha A(X)} \dell_t X = \varepsilon A(X)X + \delta M(u,\nodalValue{\surfaceNormal}) \end{equation*}

Full discretization

For given $\nodalValue{X}^n$ and $\nodalValue{u}^n$ solve for $\nodalValue{X}^{n+1}$

\begin{equation*} \parentheses[\big]{M_3^n + (\alpha + \varepsilon\tau) A_3^n} \nodalValue{X}^{n+1} = (M_3^n + \alpha A_3^n) \nodalValue{X}^n + \tau \delta M_3^n(\nodalValue{u}^n, \nodalValue{\surfaceNormal}), \end{equation*}

where $\nodalValue{\surfaceNormal}^n$ is elementwise normal.

Definition at line 31 of file secOrd_op_solutionDriven.h.

Constructor & Destructor Documentation

Solution_driven::Solution_driven ( const Io::Parameter p,
const Grid::Grid_and_time &  g,
const Grid::Scal_FEfun &  u_wrapper 
)

Get PDE parameter, time and growth promoting function $u$.

Extracts from Io::Parameter the parameter $ \alpha $ and $ \delta $. Grid::Grid_and_time provides dynamical time steps via time_provider. More precisely we need the method velocity_regularization, surface_growthFactor and mcf_regularization from Io::Parameter.

Postcondition
Grid_and_time and u_wrapper outlive this object.

Definition at line 67 of file secOrd_op_solutionDriven.cpp.

Member Function Documentation

void Solution_driven::brusselator_rhs ( const Grid::Vec_FEfun rhs,
Grid::Vec_FEfun lhs 
) const

Generates right-hand side without load vector for the linear system.

Parameters
rhs$\nodalValue{X}^n$
Return values
lhs$ (M_3^n + \alpha A_3^n) \nodalValue{X}^n + \tau \delta M_3^n(\nodalValue{u}^n, \nodalValue{\surfaceNormal}) $
Precondition
$u$, which is given in the constructor, is still valid. The nodal values of rhs should be the nodes itself.
See also
Identity

Definition at line 84 of file secOrd_op_solutionDriven.cpp.

void Solution_driven::operator() ( const Grid::Vec_FEfun rhs,
Grid::Vec_FEfun lhs 
) const

For debugging reasons.

Parameters
rhs$\nodalValue{X}$
Return values
lhs$ (M^n + (\alpha + \varepsilon \tau) A^n) \nodalValue{X} $

Definition at line 89 of file secOrd_op_solutionDriven.cpp.

void Solution_driven::solve ( const Grid::Vec_FEfun rhs,
Grid::Vec_FEfun lhs 
) const

Solve regularized mean curvature equation.

Parameters
rhs$\nodalValue{Y}$
Return values
lhsSolution of $ \parentheses[\big]{M_3^n + (\alpha + \varepsilon\tau) A_3^n} \nodalValue{X}^{n+1} = \nodalValue{Y} $
Remarks
The solver is the conjugated gradient method.
Precondition
Parameter rhs must be assembled.
See also
brusselator_rhs(), Vec_rhs

Definition at line 76 of file secOrd_op_solutionDriven.cpp.


The documentation for this class was generated from the following files: