HybridADRSolver
Loading...
Searching...
No Matches
HybridADRSolver::Problems::ADRProblem< dim > Class Template Reference

Concrete implementation of a steady-state Advection-Diffusion-Reaction problem. More...

#include <problem_definition.h>

Inheritance diagram for HybridADRSolver::Problems::ADRProblem< dim >:
Collaboration diagram for HybridADRSolver::Problems::ADRProblem< dim >:

Public Member Functions

 ADRProblem ()
double diffusion_coefficient (const Point< dim > &) const override
 Constant diffusion coefficient \( \mu = 1.0 \).
double reaction_coefficient (const Point< dim > &) const override
 Constant reaction coefficient \( \gamma = 0.1 \).
Tensor< 1, dim > advection_field (const Point< dim > &p) const override
 Rotational advection field. 2D: \( \beta = (-y, x)^T \) 3D: \( \beta = (-y, x, 0.1)^T \).
double source_term (const Point< dim > &p) const override
 Computes the source term \( f \) using the Method of Manufactured Solutions.
std::set< types::boundary_id > get_dirichlet_ids () const override
 Defines Dirichlet boundaries. All boundaries except Right (ID 1) are Dirichlet (0, 2, 3, 4, 5).
std::set< types::boundary_id > get_neumann_ids () const override
 Defines Neumann boundaries. Only the Right boundary (ID 1) is Neumann.
const Function< dim > & get_dirichlet_function (types::boundary_id) const override
 Returns zero function for Dirichlet BCs.
const Function< dim > & get_neumann_function (const types::boundary_id id) const override
 Returns analytic flux for Neumann BCs.
bool has_exact_solution () const override
 Checks if an analytical exact solution is available.
const Function< dim > & get_exact_solution () const override
 Returns the exact solution function object (if available).
bool is_symmetric () const override
 Problem is non-symmetric due to advection term.
std::string get_name () const override
 Returns a descriptive name of the problem.
Public Member Functions inherited from HybridADRSolver::ProblemInterface< dim >
virtual ~ProblemInterface ()=default

Detailed Description

template<int dim>
class HybridADRSolver::Problems::ADRProblem< dim >

Concrete implementation of a steady-state Advection-Diffusion-Reaction problem.

Solves: \( -\mu \Delta u + \mathbf{\beta} \cdot \nabla u + \gamma u = f \)

Domain: Unit Hypercube \( [0,1]^d \). BCs: Neumann on Right face (ID 1), Homogeneous Dirichlet elsewhere.

Constructor & Destructor Documentation

◆ ADRProblem()

template<int dim>
HybridADRSolver::Problems::ADRProblem< dim >::ADRProblem ( )
inline

Member Function Documentation

◆ advection_field()

template<int dim>
Tensor< 1, dim > HybridADRSolver::Problems::ADRProblem< dim >::advection_field ( const Point< dim > & p) const
inlineoverridevirtual

Rotational advection field. 2D: \( \beta = (-y, x)^T \) 3D: \( \beta = (-y, x, 0.1)^T \).

Implements HybridADRSolver::ProblemInterface< dim >.

◆ diffusion_coefficient()

template<int dim>
double HybridADRSolver::Problems::ADRProblem< dim >::diffusion_coefficient ( const Point< dim > & ) const
inlineoverridevirtual

Constant diffusion coefficient \( \mu = 1.0 \).

Implements HybridADRSolver::ProblemInterface< dim >.

◆ get_dirichlet_function()

template<int dim>
const Function< dim > & HybridADRSolver::Problems::ADRProblem< dim >::get_dirichlet_function ( types::boundary_id ) const
inlineoverridevirtual

Returns zero function for Dirichlet BCs.

Implements HybridADRSolver::ProblemInterface< dim >.

◆ get_dirichlet_ids()

template<int dim>
std::set< types::boundary_id > HybridADRSolver::Problems::ADRProblem< dim >::get_dirichlet_ids ( ) const
inlinenodiscardoverridevirtual

Defines Dirichlet boundaries. All boundaries except Right (ID 1) are Dirichlet (0, 2, 3, 4, 5).

Implements HybridADRSolver::ProblemInterface< dim >.

◆ get_exact_solution()

template<int dim>
const Function< dim > & HybridADRSolver::Problems::ADRProblem< dim >::get_exact_solution ( ) const
inlineoverridevirtual

Returns the exact solution function object (if available).

Implements HybridADRSolver::ProblemInterface< dim >.

◆ get_name()

template<int dim>
std::string HybridADRSolver::Problems::ADRProblem< dim >::get_name ( ) const
inlinenodiscardoverridevirtual

Returns a descriptive name of the problem.

Implements HybridADRSolver::ProblemInterface< dim >.

◆ get_neumann_function()

template<int dim>
const Function< dim > & HybridADRSolver::Problems::ADRProblem< dim >::get_neumann_function ( const types::boundary_id id) const
inlineoverridevirtual

Returns analytic flux for Neumann BCs.

Implements HybridADRSolver::ProblemInterface< dim >.

◆ get_neumann_ids()

template<int dim>
std::set< types::boundary_id > HybridADRSolver::Problems::ADRProblem< dim >::get_neumann_ids ( ) const
inlinenodiscardoverridevirtual

Defines Neumann boundaries. Only the Right boundary (ID 1) is Neumann.

Implements HybridADRSolver::ProblemInterface< dim >.

◆ has_exact_solution()

template<int dim>
bool HybridADRSolver::Problems::ADRProblem< dim >::has_exact_solution ( ) const
inlinenodiscardoverridevirtual

Checks if an analytical exact solution is available.

Implements HybridADRSolver::ProblemInterface< dim >.

◆ is_symmetric()

template<int dim>
bool HybridADRSolver::Problems::ADRProblem< dim >::is_symmetric ( ) const
inlinenodiscardoverridevirtual

Problem is non-symmetric due to advection term.

Implements HybridADRSolver::ProblemInterface< dim >.

◆ reaction_coefficient()

template<int dim>
double HybridADRSolver::Problems::ADRProblem< dim >::reaction_coefficient ( const Point< dim > & ) const
inlineoverridevirtual

Constant reaction coefficient \( \gamma = 0.1 \).

Implements HybridADRSolver::ProblemInterface< dim >.

◆ source_term()

template<int dim>
double HybridADRSolver::Problems::ADRProblem< dim >::source_term ( const Point< dim > & p) const
inlineoverridevirtual

Computes the source term \( f \) using the Method of Manufactured Solutions.

\( f = -\mu \Delta u + \mathbf{\beta} \cdot \nabla u + \gamma u \)

where \( u \) is the ExactSolution.

Implements HybridADRSolver::ProblemInterface< dim >.


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