HArD::Core2D
Hybrid Arbitrary Degree::Core 2D - Library to implement 2D schemes with edge and cell polynomials as unknowns
Public Types | Public Member Functions | List of all members
HArDCore2D::LEPNC_StefanPME Class Reference

LEPNC scheme for diffusion equation \(u - \div(K \nabla(\zeta(u))) = f\). More...

#include <LEPNC_StefanPME.hpp>

Public Types

using solution_function_type = std::function< double(double, double)>
 type for solution More...
 
using source_function_type = std::function< double(double, double, Cell *)>
 type for source More...
 
using grad_function_type = std::function< VectorRd(double, double, Cell *)>
 type for gradient More...
 
using tensor_function_type = std::function< Eigen::Matrix2d(double, double, Cell *)>
 type for diffusion tensor More...
 

Public Member Functions

 LEPNC_StefanPME (LEPNCCore &nc, tensor_function_type kappa, size_t deg_kappa, source_function_type source, BoundaryConditions BC, solution_function_type exact_solution, grad_function_type grad_exact_solution, TestCaseNonLinearity::nonlinearity_function_type zeta, double weight, std::string solver_type, std::ostream &output=std::cout)
 Constructor of the class. More...
 
Eigen::VectorXd solve ()
 Assemble and solve the scheme. More...
 
Eigen::VectorXd apply_nonlinearity (const Eigen::VectorXd &Y, const std::string type) const
 Compute non-linearity on vector (depends if weight=0, weight=1 or weight\in (0,1) ) More...
 
double L2_MassLumped (const Eigen::VectorXd Xh) const
 Mass-lumped L2 norm of a function given by a vector. More...
 
double EnergyNorm (const Eigen::VectorXd Xh) const
 Discrete energy norm (associated to the diffusion operator) More...
 
double get_assembly_time () const
 cpu time to assemble the scheme More...
 
double get_solving_time () const
 cpu time to solve the scheme More...
 
double get_solving_error () const
 residual after solving the scheme More...
 
double get_itime (size_t idx) const
 various intermediate assembly times More...
 

Detailed Description

LEPNC scheme for diffusion equation \(u - \div(K \nabla(\zeta(u))) = f\).

The vector Xh manipulated in the resolution has mixed components, corresponding either to the unknown u or to \(\zeta(u)\), depending on the choice of weight of mass-lumping for the cell/edge unknowns. If no weight is put on the edges (resp. the cells), then the edge (resp. cell) unknowns represent \(\zeta(u)\). Otherwise, they represent u.


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