Skip to content
Snippets Groups Projects
Commit b41d66f0 authored by Dominic Kempf's avatar Dominic Kempf
Browse files

Removing dependence on dimension in template parameters for problem and

model
parent 28a8660e
No related branches found
No related tags found
1 merge request!42Feature/tutorial07update
......@@ -46,13 +46,6 @@ public:
}
/// tex: speedofsound
//! Neumann boundary condition
template<typename I, typename X>
NUMBER j (const I& i, const X& x) const
{
return 0.0;
}
/// tex: bc
//! Boundary condition value - reflecting bc
template<typename I, typename X, typename R>
......
......@@ -49,18 +49,12 @@ public:
return 1.0;
}
//! Neumann boundary condition
template<typename I, typename X>
NUMBER j (const I& i, const X& x) const
{
return 0.0;
}
//! Boundary condition value - reflecting bc
//! Boundary condition
template<typename I, typename X, typename R>
Range g (const I& is, const X& x, const R& s) const
{
Range u(0.0);
//reflecting bc
// u[0] = -s[0];
// u[1] = -s[1];
// u[2] = -s[2];
......@@ -95,10 +89,10 @@ public:
auto c1 = std::cos(alpha*x);
auto st = std::sin(alpha*0.0);
auto ct = std::cos(alpha*0.0);
u[0] += 0; // E_x
u[0] += 0; // E_x
u[1] += -c1*st; // E_y
u[2] += s1*ct; // E_z
u[3] += 0; // H_x
u[3] += 0; // H_x
u[4] += c1*st; // H_y
u[5] += s1*ct; // H_z
......
......@@ -9,7 +9,7 @@ class LLFflux
public:
static constexpr int dim = MODEL::dim;
static constexpr int m = MODEL::Model::m;
static constexpr int m = MODEL::m;
using Model = MODEL;
using RF = typename MODEL::RangeField; // type for computations
......@@ -69,7 +69,7 @@ class FluxVectorSplitting
public:
static constexpr int dim = MODEL::dim;
static constexpr int m = MODEL::Model::m;
static constexpr int m = MODEL::m;
using Model = MODEL;
using RF = typename MODEL::RangeField; // type for computations
......@@ -142,7 +142,7 @@ class VariableFluxVectorSplitting
public:
static constexpr int dim = MODEL::dim;
static constexpr int m = MODEL::Model::m;
static constexpr int m = MODEL::m;
static constexpr int mstar = MODEL::mstar;
using Model = MODEL;
......
......@@ -5,10 +5,14 @@
*/
template<int dim, typename PROBLEM>
class Model ;
class Model_ ;
//wrapper for dimension specialisation
template<typename PROBLEM>
using Model = Model_<PROBLEM::dim, PROBLEM>;
template<typename PROBLEM>
class Model<1,PROBLEM>
class Model_<1,PROBLEM>
{
public:
......@@ -17,7 +21,7 @@ public:
using RangeField = typename PROBLEM::RangeField;
Model (PROBLEM& p)
Model_ (PROBLEM& p)
: problem(p)
{
}
......@@ -56,7 +60,7 @@ public:
template<typename PROBLEM>
class Model<2,PROBLEM>
class Model_<2,PROBLEM>
{
public:
......@@ -65,7 +69,7 @@ public:
using RangeField = typename PROBLEM::RangeField;
Model (PROBLEM& p)
Model_ (PROBLEM& p)
: problem(p)
{
}
......
#ifndef SHALLOWWATER_RIEMANNPROBLEM
#define SHALLOWWATER_RIEMANNPROBLEM
template<const int dim, typename GV, typename NUMBER>
template<typename GV, typename NUMBER>
class Problem
{
public:
......@@ -8,6 +8,7 @@ public:
using RangeField = NUMBER;
//problem specification depends on dimension
static constexpr int dim = GV::dimension;
static constexpr int m = dim+1;
using Range = Dune::FieldVector<NUMBER,m>;
......@@ -17,14 +18,6 @@ public:
{
}
//! Neumann boundary condition
template<typename I, typename X>
NUMBER j (const I& i, const X& x) const
{
return 0.0;
}
//! Boundary condition value - reflecting bc
template<typename I, typename X, typename R>
Range g (const I& is, const X& x, const R& s) const
......
......@@ -130,11 +130,11 @@ int main(int argc, char** argv)
GV gv = grid.leafGridView();
//create problem (setting)
using PROBLEM = Problem<1, GV,GV::Grid::ctype>;
using PROBLEM = Problem<GV,GV::Grid::ctype>;
PROBLEM problem;
//create model on a given setting
using MODEL = Model<dim,PROBLEM >;
using MODEL = Model<PROBLEM>;
MODEL model(problem);
//create numerical flux
......@@ -186,11 +186,11 @@ int main(int argc, char** argv)
GV gv=grid.leafGridView();
//create problem (setting)
using PROBLEM = Problem<2, GV,GV::Grid::ctype>;
using PROBLEM = Problem<GV,GV::Grid::ctype>;
PROBLEM problem;
//create model on a given setting
using MODEL = Model<dim,PROBLEM>;
using MODEL = Model<PROBLEM>;
MODEL model(problem);
//create numerical flux
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment