Evolving surface finite element method  v0.3.0-14-g3598512
Numerical experiments for my papers
Namespaces | Classes | Functions
Esfem::Impl Namespace Reference

Implementation details. More...

Namespaces

 hash
 hash grid plus helper functions
 

Classes

class  Analytic_velocity
 The actual implementation of the velocity. More...
 
class  Evolving_grid
 Evolution via a hash map. More...
 
class  Explicit_initial_data
 Initial data is given via an analytic formula. More...
 
struct  Identity_impl
 
class  MCF_op
 
class  Random_initial_data
 Random perturbation around an equilibrium point. More...
 
class  Rhs_fun
 Scalar valued right-hand side for the surface PDE. More...
 
struct  sd_iData
 Sphere growing via na logistic growth function. More...
 
struct  sd_rhs
 Right-hand side for surface Dalquist test equation. More...
 
struct  sdp_u_rhs
 Right-hand side for surface logistic sphere experiment. More...
 
struct  sls_iData
 Sphere growing via a logistic growth function. More...
 
struct  sls_rhs
 Right-hand side for surface logistic sphere experiment. More...
 
struct  sls_v_iData
 Velocity of a sphere growing via a logistic growth function. More...
 
struct  sphere_1EF
 First eigen function of the sphere. More...
 
struct  sphere_2EF
 Second eigen function of the sphere. More...
 
struct  sphere_3EF
 Thrid eigen function of the sphere. More...
 
struct  sphere_eigenFun
 Implementation of SecOrd_op::vIdata::ssef() More...
 
struct  sphere_mcf_sol
 Implementation of SecOrd_op::vIdata::ssef() More...
 
class  Vec_rhs_fun
 Vector valued right-hand side for the mean curvature equation. More...
 

Functions

Evolving_grid::Nodes_key get_vertexList (const std::string &filename)
 
std::size_t get_relevant_precision (const Evolving_grid::Nodes_key &vertex_list)
 
Evolving_grid::Map identity_map (const Evolving_grid::Nodes_key &, const std::size_t precision)
 
std::size_t get_relevant_precision (const std::string &number)
 
std::vector< std::size_t > create_precision_vec (const std::vector< std::string > &vertex_list)
 
std::size_t max (const std::vector< std::size_t > &)
 
std::string node_to_string (const Evolving_grid::Node &, const int precision)
 
Evolving_grid::Node string_to_node (const std::string &)
 
std::string normalize_node (const std::string &, const int precision)
 
std::string clean_whitespace (const std::string &)
 
std::vector< std::string > dgfFile_to_vec (const std::string &filename)
 
template<typename It >
It dgf_find_vertex (It first, It last, const std::string &filename)
 
template<typename It >
It dgf_close_list (It first, It last, const std::string &filename)
 
const std::string & project_dir ()
 
void dune_fem_parameter_append (int argc, char **argv, const std::string &file)
 
std::string get_gridKey ()
 
std::string get_macroGrid ()
 
std::string doubleVector_to_string (const std::vector< double > &)
 
void file_check (const std::vector< std::string > &file_list)
 
double hom_value (const Esfem::Io::Parameter &, const Esfem::Growth)
 
double pertubation (const Esfem::Io::Parameter &, const Esfem::Growth)
 
std::string print_configuration (const Esfem::Io::Parameter &, const Esfem::Growth)
 
std::string dof_filename (const Io::Parameter &, const Growth)
 
template<typename Rhs , typename Fef >
void assemble_RHS (const Rhs &rhs, Fef &fef)
 Assemble load vector. More...
 
std::vector< MCF_op::Domain< MCF_op::Vector_fef > > oriented_basis (const MCF_op::Geometry &)
 Calculates an oriented basis for the tangent space. Assumes grid dimension == 2 and world dimension == 3. More...
 
MCF_op::Range< MCF_op::Vector_fefnonUnit_normal (const std::vector< MCF_op::Domain< MCF_op::Vector_fef > > &basis)
 Calculates an non-normalized normal vector via the cross product formula. More...
 
MCF_op::RangeField euclidean_norm (const MCF_op::Range< MCF_op::Vector_fef > &v)
 Euclidean norm for a 3-dimensional vector.
 
Evaluation helper functions
Parameters
ptQuadrature point obtained by MCF_op::Quadrature.
qThe quadrature object itself
cfThe local finit element function

Evaluates the local finite element function on the quadrature points. I have to pass the point and the quadrature object itself since I do not know what its precise type is. I do not consider using template a good practise for this problem.

Todo:
Figure out the type of q[pt].
MCF_op::Range< MCF_op::Vector_fefevaluate (const std::size_t pt, const MCF_op::Quadrature &q, const MCF_op::Local_function< MCF_op::Vector_fef > &cf)
 
MCF_op::Range< MCF_op::Scalar_fefevaluate (const std::size_t pt, const MCF_op::Quadrature &q, const MCF_op::Local_function< MCF_op::Scalar_fef > &cf)
 Returns X(p) More...
 
MCF_op::Jacobian_range< MCF_op::Vector_fefjacobian (const std::size_t pt, const MCF_op::Quadrature &q, const MCF_op::Local_function< MCF_op::Vector_fef > &cf)
 Returns dX(p)
 

Detailed Description

Implementation details.

Function Documentation

template<typename Rhs , typename Fef >
void Esfem::Impl::assemble_RHS ( const Rhs rhs,
Fef &  fef 
)

Assemble load vector.

Template Parameters
RhsDeduce Rhs_fun or Vec_rhs_fun
FefDeduce Scal_FEfun::Dune_FEfun or Vec_FEfun::Dune_FEfun

Definition at line 314 of file secOrd_op_rhs_impl.h.

MCF_op::Range<MCF_op::Scalar_fef> Esfem::Impl::evaluate ( const std::size_t  pt,
const MCF_op::Quadrature &  q,
const MCF_op::Local_function< MCF_op::Scalar_fef > &  cf 
)
inline

Returns X(p)

Returns u(p)

Definition at line 209 of file secOrd_op_solutionDriven_impl.h.

MCF_op::Range<MCF_op::Vector_fef> Esfem::Impl::nonUnit_normal ( const std::vector< MCF_op::Domain< MCF_op::Vector_fef > > &  basis)

Calculates an non-normalized normal vector via the cross product formula.

Warning
Assumes basis.size() == 2 and that the basis is correctly oriented.
Returns
Outward pointing non unit normal vector.
std::vector< MCF_op::Domain< Vector_fef > > Esfem::Impl::oriented_basis ( const MCF_op::Geometry g)

Calculates an oriented basis for the tangent space. Assumes grid dimension == 2 and world dimension == 3.

Returns
Two (numerical) vectors which represent an oriented basis of the tangent space.

Definition at line 174 of file secOrd_op_solutionDriven_impl.cpp.