Skip to content

Commit 23e1382

Browse files
Remove SourceTerm superclass (#209)
Co-authored-by: KARA Abdelhadi 265943 <[email protected]>
1 parent 6787376 commit 23e1382

File tree

84 files changed

+615
-671
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

84 files changed

+615
-671
lines changed

include/ConfigParser/config_parser.h

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "../../include/PolarGrid/polargrid.h"
1111
#include "../../include/GMGPolar/test_cases.h"
1212
#include "../../include/GMGPolar/igmgpolar.h"
13+
#include "../../include/GMGPolar/gmgpolar.h"
1314
#include "test_selection.h"
1415

1516
class ConfigParser
@@ -26,11 +27,12 @@ class ConfigParser
2627
// Test Case
2728
const DomainGeometryVariant& domainGeometry() const;
2829
const DensityProfileCoefficientsVariant& densityProfileCoefficients() const;
29-
const BoundaryConditionsVariant& boundaryConditions() const;
30-
const SourceTerm& sourceTerm() const;
3130
const ExactSolution& exactSolution() const;
3231
std::unique_ptr<IGMGPolar> solver() const;
3332

33+
template <concepts::DomainGeometry DomainGeometry, concepts::DensityProfileCoefficients DensityProfileCoefficients>
34+
void solve(GMGPolar<DomainGeometry, DensityProfileCoefficients>& solver) const;
35+
3436
// Control Parameters
3537
int verbose() const;
3638
bool paraview() const;
@@ -72,9 +74,14 @@ class ConfigParser
7274
// Input Functions
7375
std::unique_ptr<const DomainGeometryVariant> domain_geometry_;
7476
std::unique_ptr<const DensityProfileCoefficientsVariant> density_profile_coefficients_;
75-
std::unique_ptr<const BoundaryConditionsVariant> boundary_conditions_;
76-
std::unique_ptr<const SourceTerm> source_term_;
7777
std::unique_ptr<const ExactSolution> exact_solution_;
78+
GeometryType geometry_type_;
79+
ProblemType problem_type_;
80+
AlphaCoeff alpha_type_;
81+
BetaCoeff beta_type_;
82+
double Rmax_;
83+
double kappa_eps_;
84+
double delta_e_;
7885
// General solver output and visualization settings
7986
int verbose_;
8087
bool paraview_;

include/ConfigParser/test_selection.h

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,30 +3,9 @@
33
#include <variant>
44

55
#include "../../include/GMGPolar/test_cases.h"
6-
#include "../../include/InputFunctions/BoundaryConditions/cartesianR2_Boundary_CircularGeometry.h"
7-
#include "../../include/InputFunctions/BoundaryConditions/cartesianR6_Boundary_CzarnyGeometry.h"
8-
#include "../../include/InputFunctions/BoundaryConditions/polarR6_Boundary_CzarnyGeometry.h"
9-
#include "../../include/InputFunctions/BoundaryConditions/refined_Boundary_CzarnyGeometry.h"
10-
#include "../../include/InputFunctions/BoundaryConditions/cartesianR2_Boundary_CzarnyGeometry.h"
11-
#include "../../include/InputFunctions/BoundaryConditions/cartesianR6_Boundary_ShafranovGeometry.h"
12-
#include "../../include/InputFunctions/BoundaryConditions/polarR6_Boundary_ShafranovGeometry.h"
13-
#include "../../include/InputFunctions/BoundaryConditions/refined_Boundary_ShafranovGeometry.h"
14-
#include "../../include/InputFunctions/BoundaryConditions/cartesianR2_Boundary_ShafranovGeometry.h"
15-
#include "../../include/InputFunctions/BoundaryConditions/polarR6_Boundary_CircularGeometry.h"
16-
#include "../../include/InputFunctions/BoundaryConditions/refined_Boundary_CircularGeometry.h"
17-
#include "../../include/InputFunctions/BoundaryConditions/cartesianR6_Boundary_CircularGeometry.h"
18-
#include "../../include/InputFunctions/BoundaryConditions/polarR6_Boundary_CulhamGeometry.h"
19-
#include "../../include/InputFunctions/BoundaryConditions/refined_Boundary_CulhamGeometry.h"
206

217
using DomainGeometryVariant = std::variant<CircularGeometry, ShafranovGeometry, CzarnyGeometry, CulhamGeometry>;
228

239
using DensityProfileCoefficientsVariant =
2410
std::variant<PoissonCoefficients, SonnendruckerCoefficients, SonnendruckerGyroCoefficients, ZoniCoefficients,
2511
ZoniGyroCoefficients, ZoniShiftedCoefficients, ZoniShiftedGyroCoefficients>;
26-
27-
using BoundaryConditionsVariant = std::variant<
28-
CartesianR2_Boundary_CircularGeometry, CartesianR6_Boundary_CzarnyGeometry, PolarR6_Boundary_CzarnyGeometry,
29-
Refined_Boundary_CzarnyGeometry, CartesianR2_Boundary_CzarnyGeometry, CartesianR6_Boundary_ShafranovGeometry,
30-
PolarR6_Boundary_ShafranovGeometry, Refined_Boundary_ShafranovGeometry, CartesianR2_Boundary_ShafranovGeometry,
31-
PolarR6_Boundary_CircularGeometry, Refined_Boundary_CircularGeometry, CartesianR6_Boundary_CircularGeometry,
32-
PolarR6_Boundary_CulhamGeometry, Refined_Boundary_CulhamGeometry>;

include/GMGPolar/gmgpolar.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
#include "../InputFunctions/densityProfileCoefficients.h"
99
#include "../InputFunctions/domainGeometry.h"
10+
#include "../InputFunctions/sourceTerm.h"
1011
#include "../Level/level.h"
1112

1213
#include "igmgpolar.h"
@@ -51,7 +52,7 @@ class GMGPolar : public IGMGPolar
5152

5253
// Solve system with given boundary conditions and source term.
5354
// Multiple solves with different inputs are supported.
54-
template <concepts::BoundaryConditions BoundaryConditions>
55+
template <concepts::BoundaryConditions BoundaryConditions, concepts::SourceTerm SourceTerm>
5556
void solve(const BoundaryConditions& boundary_conditions, const SourceTerm& source_term);
5657

5758
/* ---------------------------------------------------------------------- */
@@ -139,7 +140,7 @@ class GMGPolar : public IGMGPolar
139140
/* --------------- */
140141
/* Setup Functions */
141142
int chooseNumberOfLevels(const PolarGrid& finest_grid);
142-
template <concepts::BoundaryConditions BoundaryConditions>
143+
template <concepts::BoundaryConditions BoundaryConditions, concepts::SourceTerm SourceTerm>
143144
void build_rhs_f(const Level<DomainGeometry, DensityProfileCoefficients>& level, Vector<double> rhs_f,
144145
const BoundaryConditions& boundary_conditions, const SourceTerm& source_term);
145146
void discretize_rhs_f(const Level<DomainGeometry, DensityProfileCoefficients>& level, Vector<double> rhs_f);

include/GMGPolar/setup.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ void GMGPolar<DomainGeometry, DensityProfileCoefficients>::discretize_rhs_f(
327327
}
328328

329329
template <concepts::DomainGeometry DomainGeometry, concepts::DensityProfileCoefficients DensityProfileCoefficients>
330-
template <concepts::BoundaryConditions BoundaryConditions>
330+
template <concepts::BoundaryConditions BoundaryConditions, concepts::SourceTerm SourceTerm>
331331
void GMGPolar<DomainGeometry, DensityProfileCoefficients>::build_rhs_f(
332332
const Level<DomainGeometry, DensityProfileCoefficients>& level, Vector<double> rhs_f,
333333
const BoundaryConditions& boundary_conditions, const SourceTerm& source_term)

include/GMGPolar/solver.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// Main Solver Routine
33
// =============================================================================
44
template <concepts::DomainGeometry DomainGeometry, concepts::DensityProfileCoefficients DensityProfileCoefficients>
5-
template <concepts::BoundaryConditions BoundaryConditions>
5+
template <concepts::BoundaryConditions BoundaryConditions, concepts::SourceTerm SourceTerm>
66
void GMGPolar<DomainGeometry, DensityProfileCoefficients>::solve(const BoundaryConditions& boundary_conditions,
77
const SourceTerm& source_term)
88
{

include/InputFunctions/SourceTerms/cartesianR2_Poisson_CircularGeometry.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,12 @@
66

77
#include "../../PolarGrid/polargrid.h"
88

9-
class CartesianR2_Poisson_CircularGeometry : public SourceTerm
9+
class CartesianR2_Poisson_CircularGeometry
1010
{
1111
public:
1212
explicit CartesianR2_Poisson_CircularGeometry(PolarGrid const& grid, double Rmax);
13-
virtual ~CartesianR2_Poisson_CircularGeometry() = default;
1413

15-
double operator()(std::size_t i_r, std::size_t i_theta) const override;
14+
double operator()(std::size_t i_r, std::size_t i_theta) const;
1615

1716
private:
1817
PolarGrid const& grid_;

include/InputFunctions/SourceTerms/cartesianR2_Poisson_CzarnyGeometry.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,13 @@
66

77
#include "../../PolarGrid/polargrid.h"
88

9-
class CartesianR2_Poisson_CzarnyGeometry : public SourceTerm
9+
class CartesianR2_Poisson_CzarnyGeometry
1010
{
1111
public:
1212
explicit CartesianR2_Poisson_CzarnyGeometry(PolarGrid const& grid, double Rmax, double inverse_aspect_ratio_epsilon,
1313
double ellipticity_e);
14-
virtual ~CartesianR2_Poisson_CzarnyGeometry() = default;
1514

16-
double operator()(std::size_t i_r, std::size_t i_theta) const override;
15+
double operator()(std::size_t i_r, std::size_t i_theta) const;
1716

1817
private:
1918
PolarGrid const& grid_;

include/InputFunctions/SourceTerms/cartesianR2_Poisson_ShafranovGeometry.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,13 @@
66

77
#include "../../PolarGrid/polargrid.h"
88

9-
class CartesianR2_Poisson_ShafranovGeometry : public SourceTerm
9+
class CartesianR2_Poisson_ShafranovGeometry
1010
{
1111
public:
1212
explicit CartesianR2_Poisson_ShafranovGeometry(PolarGrid const& grid, double Rmax, double elongation_kappa,
1313
double shift_delta);
14-
virtual ~CartesianR2_Poisson_ShafranovGeometry() = default;
1514

16-
double operator()(std::size_t i_r, std::size_t i_theta) const override;
15+
double operator()(std::size_t i_r, std::size_t i_theta) const;
1716

1817
private:
1918
PolarGrid const& grid_;

include/InputFunctions/SourceTerms/cartesianR2_SonnendruckerGyro_CircularGeometry.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,12 @@
66

77
#include "../../PolarGrid/polargrid.h"
88

9-
class CartesianR2_SonnendruckerGyro_CircularGeometry : public SourceTerm
9+
class CartesianR2_SonnendruckerGyro_CircularGeometry
1010
{
1111
public:
1212
explicit CartesianR2_SonnendruckerGyro_CircularGeometry(PolarGrid const& grid, double Rmax);
13-
virtual ~CartesianR2_SonnendruckerGyro_CircularGeometry() = default;
1413

15-
double operator()(std::size_t i_r, std::size_t i_theta) const override;
14+
double operator()(std::size_t i_r, std::size_t i_theta) const;
1615

1716
private:
1817
PolarGrid const& grid_;

include/InputFunctions/SourceTerms/cartesianR2_SonnendruckerGyro_CzarnyGeometry.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,13 @@
66

77
#include "../../PolarGrid/polargrid.h"
88

9-
class CartesianR2_SonnendruckerGyro_CzarnyGeometry : public SourceTerm
9+
class CartesianR2_SonnendruckerGyro_CzarnyGeometry
1010
{
1111
public:
1212
explicit CartesianR2_SonnendruckerGyro_CzarnyGeometry(PolarGrid const& grid, double Rmax,
1313
double inverse_aspect_ratio_epsilon, double ellipticity_e);
14-
virtual ~CartesianR2_SonnendruckerGyro_CzarnyGeometry() = default;
1514

16-
double operator()(std::size_t i_r, std::size_t i_theta) const override;
15+
double operator()(std::size_t i_r, std::size_t i_theta) const;
1716

1817
private:
1918
PolarGrid const& grid_;

0 commit comments

Comments
 (0)