hummingbird
Solving the self-adjoint angular flux transport equation using spectral elements on Cartesian geometry
Loading...
Searching...
No Matches
sem_problem.h
Go to the documentation of this file.
1// SPDX-License-Identifier: BSD-3-Clause
2// Copyright (c) 2026, Liam Pohlmann
3
4#ifndef HUMMINGBIRD_PROBLEM_SEM_PROBLEM_H_
5#define HUMMINGBIRD_PROBLEM_SEM_PROBLEM_H_
6
7#include "mesh/mesh.h"
10#include "utils/enums.h"
11
12namespace hummingbird {
13/**
14 * @brief Wrapper class that owns a ProblemBase of the type corresponding to
15 * the given FEFormulation
16 *
17 */
19 public:
20 /**
21 * @brief Construct a new SEMProblem object, creating the concrete
22 * ProblemBase implementation matching fe_formulation
23 *
24 * @param fe_formulation Finite element formulation to use
25 * @param mesh Mesh
26 * @param n_ordinates Number of ordinates in angular quadrature
27 * @throw std::runtime_error if fe_formulation is not supported
28 */
29 SEMProblem(const FEFormulation fe_formulation, const Mesh& mesh,
30 const size_t n_ordinates);
31
32 /**
33 * @brief Get the underlying ProblemBase object
34 *
35 * @return ProblemBase*
36 */
37 ProblemBase* get() const { return sem_problem_.get(); }
38
39 private:
40 /// @brief Concrete ProblemBase implementation for the chosen formulation
41 std::unique_ptr<ProblemBase> sem_problem_;
42};
43} // namespace hummingbird
44
45#endif // HUMMINGBIRD_PROBLEM_SEM_PROBLEM_H_
Class defing a mesh.
Definition mesh.h:27
Base class defining a formulation of the transport equation to be solved.
ProblemBase * get() const
Get the underlying ProblemBase object.
Definition sem_problem.h:37
SEMProblem(const FEFormulation fe_formulation, const Mesh &mesh, const size_t n_ordinates)
Construct a new SEMProblem object, creating the concrete ProblemBase implementation matching fe_formu...
Definition sem_problem.cc:6
std::unique_ptr< ProblemBase > sem_problem_
Concrete ProblemBase implementation for the chosen formulation.
Definition sem_problem.h:41
FEFormulation
Available finite element formulations.
Definition enums.h:63