DUBeat 1.0.1
High-order discontinuous Galerkin methods and applications to cardiac electrophysiology
Loading...
Searching...
No Matches
ModelDG_t< basis > Class Template Reference

Class representing the resolution of time-dependent problems using discontinuous Galerkin methods. More...

#include <model_DG_t.hpp>

Inheritance diagram for ModelDG_t< basis >:
Collaboration diagram for ModelDG_t< basis >:

Public Member Functions

 ModelDG_t (std::string model_name)
 Constructor.
 
 ModelDG_t (ModelDG_t< basis > &ModelDG_t)=default
 Default copy constructor.
 
 ModelDG_t (const ModelDG_t< basis > &ModelDG_t)=default
 Default const copy constructor.
 
 ModelDG_t (ModelDG_t< basis > &&ModelDG_t)=default
 Default move constructor.
 
virtual ~ModelDG_t ()=default
 Destructor.
 
- Public Member Functions inherited from ModelDG< basis >
 ModelDG (std::string model_name)
 Constructor.
 
 ModelDG (ModelDG< basis > &ModelDG)=default
 Default copy constructor.
 
 ModelDG (const ModelDG< basis > &ModelDG)=default
 Default const copy constructor.
 
 ModelDG (ModelDG< basis > &&ModelDG)=default
 Default move constructor.
 
unsigned int get_dofs_per_cell () const
 Return the number of degrees of freedom per element.
 
virtual ~ModelDG ()=default
 Destructor.
 

Protected Member Functions

virtual void declare_parameters (lifex::ParamHandler &params) const override
 Override for declaration of additional parameters.
 
virtual void parse_parameters (lifex::ParamHandler &params) override
 Override to parse additional parameters.
 
virtual void time_initialization ()
 Setup for the time-dependent problems at the initial time-step.
 
virtual void update_time ()
 To perform the time increment.
 
virtual void intermediate_error_print (const lifex::LinAlg::MPI::Vector &solution_owned, const lifex::LinAlg::MPI::Vector &solution_ex_owned, const std::shared_ptr< dealii::Function< lifex::dim > > &u_ex, const char *solution_name=(char *)"u")
 Computation of the \(L^\infty\) error at an intermediate time-step.
 
void run () override
 Override for the simulation run.
 
- Protected Member Functions inherited from ModelDG< basis >
virtual void setup_system ()
 Setup of the problem before the resolution.
 
void make_sparsity_pattern (const DoFHandlerDG< basis > &dof, dealii::DynamicSparsityPattern &sparsity, const dealii::AffineConstraints< double > &constraints=dealii::AffineConstraints< double >(), const bool keep_constrained_dofs=true, const dealii::types::subdomain_id subdomain_id=dealii::numbers::invalid_subdomain_id)
 Creation of the sparsity pattern to assign to the system matrix before assembling.
 
void initialize_solution (lifex::LinAlg::MPI::Vector &solution_owned, lifex::LinAlg::MPI::Vector &solution)
 To inizialize the solutions using the deal.II reinit.
 
virtual void assemble_system ()=0
 Assembly of the linear system, pure virtual.
 
void create_mesh ()
 Load the mesh from the default path.
 
void create_mesh (std::string mesh_path)
 Load the mesh from a user-defined path.
 
void solve_system ()
 System solving.
 
void compute_errors (const lifex::LinAlg::MPI::Vector &solution_owned, const lifex::LinAlg::MPI::Vector &solution_ex_owned, const std::shared_ptr< dealii::Function< lifex::dim > > &u_ex, const std::shared_ptr< dealii::Function< lifex::dim > > &grad_u_ex, const char *solution_name=(char *)"u") const
 To compute the \(L^\infty\) error, the \(L^2\) error, the \(H^1\) error and the \(DG\) error at the end of system solving, it exploits the DGComputeErrors<basis> class.
 
virtual void output_results (std::string output_name="solution") const
 Output of results.
 
virtual void conversion_to_fem (lifex::LinAlg::MPI::Vector &sol_owned)
 To convert a discretized solution from modal to nodal basis (does nothing if problem is already in nodal basis), in-place version.
 
virtual lifex::LinAlg::MPI::Vector conversion_to_fem (const lifex::LinAlg::MPI::Vector &sol_owned) const
 To convert a discretized solution from modal to nodal basis (does nothing if problem is already in nodal basis), const version.
 
virtual void conversion_to_fem (lifex::LinAlg::MPI::Vector &sol_owned, const std::string fem_file_path, const unsigned int degree_fem=1, const double scaling_factor=1) const
 
virtual void conversion_to_dub (lifex::LinAlg::MPI::Vector &sol_owned)
 To convert a discretized solution in Dubiner basis (only for problems using Dubiner basis).
 
virtual lifex::LinAlg::MPI::Vector conversion_to_dub (const lifex::LinAlg::MPI::Vector &sol_owned) const
 To convert a discretized solution in Dubiner basis (only for problems using Dubiner basis).
 
virtual void conversion_to_dub (lifex::LinAlg::MPI::Vector &sol_owned, const std::string fem_file_path, const unsigned int degree_fem=1, const double scaling_factor=1) const
 
void discretize_analytical_solution (const std::shared_ptr< dealii::Function< lifex::dim > > &u_analytical, lifex::LinAlg::MPI::Vector &sol_owned)
 Conversion of an analytical solution from FEM to basis coefficients.
 
void conversion_to_fem (lifex::LinAlg::MPI::Vector &sol_owned)
 Conversion of a discretized solution from Dubiner coefficients to FEM coefficients.
 
lifex::LinAlg::MPI::Vector conversion_to_fem (const lifex::LinAlg::MPI::Vector &sol_owned) const
 Conversion to FEM coefficients, const version.
 
void conversion_to_fem (lifex::LinAlg::MPI::Vector &sol_owned, const std::string fem_file_path, const unsigned int degree_fem, const double scaling_factor) const
 
void conversion_to_dub (lifex::LinAlg::MPI::Vector &sol_owned)
 Conversion of a discretized solution from FEM coefficients to Dubiner coefficients.
 
lifex::LinAlg::MPI::Vector conversion_to_dub (const lifex::LinAlg::MPI::Vector &sol_owned) const
 Conversion to DUB coefficients, const version.
 
void conversion_to_dub (lifex::LinAlg::MPI::Vector &sol_owned, const std::string fem_file_path, const unsigned int degree_fem, const double scaling_factor) const
 
void discretize_analytical_solution (const std::shared_ptr< dealii::Function< lifex::dim > > &u_analytical, lifex::LinAlg::MPI::Vector &sol_owned)
 Conversion of an analytical solution from FEM to basis coefficients.
 
void discretize_analytical_solution (const std::shared_ptr< dealii::Function< lifex::dim > > &u_analytical, lifex::LinAlg::MPI::Vector &sol_owned)
 Conversion of an analytical solution from FEM to basis coefficients.
 

Protected Attributes

double prm_time_init
 Initial time.
 
double prm_time_final
 Final time.
 
double prm_time_step
 Time-step amplitude.
 
unsigned int prm_bdf_order
 BDF order.
 
double time
 Current time.
 
unsigned int timestep_number
 Current time-step number.
 
lifex::utils::BDFHandler< lifex::LinAlg::MPI::Vector > bdf_handler
 BDF time advancing handler.
 
lifex::LinAlg::MPI::Vector solution_bdf
 BDF solution, with ghost entries.
 
lifex::LinAlg::MPI::Vector solution_ext
 BDF extrapolated solution, with ghost entries.
 
- Protected Attributes inherited from ModelDG< basis >
const std::string model_name
 Name of the class/problem.
 
unsigned int prm_fe_degree
 Polynomials degree.
 
unsigned int prm_n_refinements
 Mesh refinement level (>=1).
 
double prm_penalty_coeff
 DG Penalty coefficient.
 
double prm_stability_coeff
 DG stabilty coefficient.
 
double scaling_factor = 1
 Scaling factor.
 
std::shared_ptr< lifex::utils::MeshHandler > triangulation
 Triangulation (internal use for useful already implemented methods).
 
unsigned int dofs_per_cell
 Number of degrees of freedom per cell.
 
DoFHandlerDG< basis > dof_handler
 DoFHandler (internal use for useful already implemented methods).
 
std::shared_ptr< DUBFEMHandler< basis > > dub_fem_values
 Member used for conversions between analytical, nodal and modal representations of the solutions.
 
std::unique_ptr< AssembleDG< basis > > assemble
 Matrix assembler.
 
lifex::utils::LinearSolverHandler< lifex::LinAlg::MPI::Vector > linear_solver
 Linear solver handler.
 
lifex::utils::PreconditionerHandler preconditioner
 Preconditioner handler.
 
lifex::LinAlg::MPI::SparseMatrix matrix
 Distributed matrix of the linear system.
 
lifex::LinAlg::MPI::Vector rhs
 Distributed right hand side vector of the linear system.
 
lifex::LinAlg::MPI::Vector solution_owned
 Distributed solution vector, without ghost entries.
 
lifex::LinAlg::MPI::Vector solution
 Distributed solution vector, with ghost entries.
 
lifex::LinAlg::MPI::Vector solution_ex_owned
 Distributed exact solution vector, without ghost entries.
 
lifex::LinAlg::MPI::Vector solution_ex
 Distributed exact solution vector, without ghost entries.
 
std::shared_ptr< lifex::utils::FunctionDirichlet > u_ex
 Pointer to exact solution function.
 
std::shared_ptr< dealii::Function< lifex::dim > > grad_u_ex
 Pointer to exact gradient solution Function.
 
std::shared_ptr< dealii::Function< lifex::dim > > f_ex
 Known forcing term.
 
std::shared_ptr< dealii::Function< lifex::dim > > g_n
 Neumann boundary conditions.
 

Detailed Description

template<class basis>
class ModelDG_t< basis >

Class representing the resolution of time-dependent problems using discontinuous Galerkin methods.

Definition at line 61 of file model_DG_t.hpp.

Constructor & Destructor Documentation

◆ ModelDG_t() [1/4]

template<class basis >
ModelDG_t< basis >::ModelDG_t ( std::string  model_name)
inline

Constructor.

Definition at line 65 of file model_DG_t.hpp.

◆ ModelDG_t() [2/4]

template<class basis >
ModelDG_t< basis >::ModelDG_t ( ModelDG_t< basis > &  ModelDG_t)
default

Default copy constructor.

◆ ModelDG_t() [3/4]

template<class basis >
ModelDG_t< basis >::ModelDG_t ( const ModelDG_t< basis > &  ModelDG_t)
default

Default const copy constructor.

◆ ModelDG_t() [4/4]

template<class basis >
ModelDG_t< basis >::ModelDG_t ( ModelDG_t< basis > &&  ModelDG_t)
default

Default move constructor.

◆ ~ModelDG_t()

template<class basis >
virtual ModelDG_t< basis >::~ModelDG_t ( )
virtualdefault

Destructor.

Member Function Documentation

◆ declare_parameters()

template<class basis >
void ModelDG_t< basis >::declare_parameters ( lifex::ParamHandler &  params) const
overrideprotectedvirtual

Override for declaration of additional parameters.

Reimplemented from ModelDG< basis >.

Reimplemented in DUBeat::models::MonodomainFHNDG< basis >.

Definition at line 134 of file model_DG_t.hpp.

◆ intermediate_error_print()

template<class basis >
void ModelDG_t< basis >::intermediate_error_print ( const lifex::LinAlg::MPI::Vector &  solution_owned,
const lifex::LinAlg::MPI::Vector &  solution_ex_owned,
const std::shared_ptr< dealii::Function< lifex::dim > > &  u_ex,
const char *  solution_name = (char *)"u" 
)
protectedvirtual

Computation of the \(L^\infty\) error at an intermediate time-step.

Definition at line 256 of file model_DG_t.hpp.

◆ parse_parameters()

template<class basis >
void ModelDG_t< basis >::parse_parameters ( lifex::ParamHandler &  params)
overrideprotectedvirtual

Override to parse additional parameters.

Reimplemented from ModelDG< basis >.

Reimplemented in DUBeat::models::MonodomainFHNDG< basis >.

Definition at line 194 of file model_DG_t.hpp.

◆ run()

template<class basis >
void ModelDG_t< basis >::run ( )
overrideprotectedvirtual

Override for the simulation run.

Reimplemented from ModelDG< basis >.

Reimplemented in DUBeat::models::MonodomainFHNDG< basis >.

Definition at line 298 of file model_DG_t.hpp.

◆ time_initialization()

template<class basis >
void ModelDG_t< basis >::time_initialization ( )
protectedvirtual

Setup for the time-dependent problems at the initial time-step.

Reimplemented in DUBeat::models::MonodomainFHNDG< basis >.

Definition at line 233 of file model_DG_t.hpp.

◆ update_time()

template<class basis >
void ModelDG_t< basis >::update_time ( )
protectedvirtual

To perform the time increment.

Reimplemented in DUBeat::models::MonodomainFHNDG< basis >.

Definition at line 281 of file model_DG_t.hpp.

Member Data Documentation

◆ bdf_handler

template<class basis >
lifex::utils::BDFHandler<lifex::LinAlg::MPI::Vector> ModelDG_t< basis >::bdf_handler
protected

BDF time advancing handler.

Definition at line 125 of file model_DG_t.hpp.

◆ prm_bdf_order

template<class basis >
unsigned int ModelDG_t< basis >::prm_bdf_order
protected

BDF order.

Definition at line 119 of file model_DG_t.hpp.

◆ prm_time_final

template<class basis >
double ModelDG_t< basis >::prm_time_final
protected

Final time.

Definition at line 115 of file model_DG_t.hpp.

◆ prm_time_init

template<class basis >
double ModelDG_t< basis >::prm_time_init
protected

Initial time.

Definition at line 113 of file model_DG_t.hpp.

◆ prm_time_step

template<class basis >
double ModelDG_t< basis >::prm_time_step
protected

Time-step amplitude.

Definition at line 117 of file model_DG_t.hpp.

◆ solution_bdf

template<class basis >
lifex::LinAlg::MPI::Vector ModelDG_t< basis >::solution_bdf
protected

BDF solution, with ghost entries.

Definition at line 127 of file model_DG_t.hpp.

◆ solution_ext

template<class basis >
lifex::LinAlg::MPI::Vector ModelDG_t< basis >::solution_ext
protected

BDF extrapolated solution, with ghost entries.

Definition at line 129 of file model_DG_t.hpp.

◆ time

template<class basis >
double ModelDG_t< basis >::time
protected

Current time.

Definition at line 121 of file model_DG_t.hpp.

◆ timestep_number

template<class basis >
unsigned int ModelDG_t< basis >::timestep_number
protected

Current time-step number.

Definition at line 123 of file model_DG_t.hpp.


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