Commit 8dcda087 authored by Kilian Weishaupt's avatar Kilian Weishaupt
Browse files

[freeflow][io] Free IOFields of (almost all) template parameters

parent 8c58db99
......@@ -36,12 +36,9 @@ namespace Dumux
* \ingroup FreeflowNCModel
* \brief Adds I/O fields specific to the FreeflowNC model
*/
template<class BaseOutputFields, class ModelTraits>
class FreeflowNCIOFields
template<class BaseOutputFields, bool turbulenceModel = false>
struct FreeflowNCIOFields
{
public:
//! Initialize the FreeflowNC specific output fields.
template <class OutputModule>
DUNE_DEPRECATED_MSG("use initOutputModule instead")
......@@ -67,7 +64,7 @@ public:
out.addVolumeVariable([j](const auto& v){ return v.diffusionCoefficient(0, j); }, "D^" + FluidSystem::componentName(j) + "_" + FluidSystem::phaseName(0));
// the eddy diffusivity is recalculated for an arbitrary component which is not the phase component
if (ModelTraits::usesTurbulenceModel())
if (turbulenceModel)
out.addVolumeVariable([j](const auto& v){ return v.effectiveDiffusivity(0, j) - v.diffusionCoefficient(0, j); }, "D_t");
}
}
......
......@@ -124,15 +124,7 @@ public:
};
//! The specific I/O fields
SET_PROP(KEpsilonNC, IOFields)
{
private:
using ModelTraits = typename GET_PROP_TYPE(TypeTag, ModelTraits);
using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
using SinglePhaseIOFields = KEpsilonIOFields<FVGridGeometry>;
public:
using type = FreeflowNCIOFields<SinglePhaseIOFields, ModelTraits>;
};
SET_TYPE_PROP(KEpsilonNC, IOFields, FreeflowNCIOFields<KEpsilonIOFields, true/*turbulenceModel*/>);
//////////////////////////////////////////////////////////////////////////
// Property values for non-isothermal multi-component k-epsilon model
......@@ -198,12 +190,9 @@ public:
SET_PROP(KEpsilonNCNI, IOFields)
{
private:
using ModelTraits = typename GET_PROP_TYPE(TypeTag, ModelTraits);
using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
using BaseIOFields = KEpsilonIOFields<FVGridGeometry>;
using NonIsothermalFields = FreeflowNonIsothermalIOFields<BaseIOFields, ModelTraits>;
using IsothermalIOFields = FreeflowNCIOFields<KEpsilonIOFields, true/*turbulenceModel*/>;
public:
using type = FreeflowNCIOFields<NonIsothermalFields, ModelTraits>;
using type = FreeflowNonIsothermalIOFields<IsothermalIOFields, true/*turbulenceModel*/>;
};
// \}
......
......@@ -142,15 +142,7 @@ public:
};
//! The specific I/O fields
SET_PROP(KOmegaNC, IOFields)
{
private:
using ModelTraits = typename GET_PROP_TYPE(TypeTag, ModelTraits);
using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
using SinglePhaseIOFields = KOmegaIOFields<FVGridGeometry>;
public:
using type = FreeflowNCIOFields<SinglePhaseIOFields, ModelTraits>;
};
SET_TYPE_PROP(KOmegaNC, IOFields, FreeflowNCIOFields<KOmegaIOFields, true/*turbulenceModel*/>);
//////////////////////////////////////////////////////////////////////////
// Property values for non-isothermal multi-component k-omega model
......@@ -216,12 +208,9 @@ public:
SET_PROP(KOmegaNCNI, IOFields)
{
private:
using ModelTraits = typename GET_PROP_TYPE(TypeTag, ModelTraits);
using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
using BaseIOFields = KOmegaIOFields<FVGridGeometry>;
using NonIsothermalFields = FreeflowNonIsothermalIOFields<BaseIOFields, ModelTraits>;
using IsothermalIOFields = FreeflowNCIOFields<KOmegaIOFields, true/*turbulenceModel*/>;
public:
using type = FreeflowNCIOFields<NonIsothermalFields, ModelTraits>;
using type = FreeflowNonIsothermalIOFields<IsothermalIOFields, true/*turbulenceModel*/>;
};
// \}
......
......@@ -129,15 +129,7 @@ public:
};
//! The specific I/O fields
SET_PROP(LowReKEpsilonNC, IOFields)
{
private:
using ModelTraits = typename GET_PROP_TYPE(TypeTag, ModelTraits);
using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
using SinglePhaseIOFields = LowReKEpsilonIOFields<FVGridGeometry>;
public:
using type = FreeflowNCIOFields<SinglePhaseIOFields, ModelTraits>;
};
SET_TYPE_PROP(LowReKEpsilonNC, IOFields, FreeflowNCIOFields<LowReKEpsilonIOFields, true/*turbulenceModel*/>);
//////////////////////////////////////////////////////////////////////////
// Property values for non-isothermal multi-component low-Re k-epsilon model
......@@ -203,12 +195,9 @@ public:
SET_PROP(LowReKEpsilonNCNI, IOFields)
{
private:
using ModelTraits = typename GET_PROP_TYPE(TypeTag, ModelTraits);
using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
using BaseIOFields = LowReKEpsilonIOFields<FVGridGeometry>;
using NonIsothermalFields = FreeflowNonIsothermalIOFields<BaseIOFields, ModelTraits>;
using IsothermalIOFields = FreeflowNCIOFields<LowReKEpsilonIOFields, true/*turbulenceModel*/>;
public:
using type = FreeflowNCIOFields<NonIsothermalFields, ModelTraits>;
using type = FreeflowNonIsothermalIOFields<IsothermalIOFields, true/*turbulenceModel*/>;
};
// \}
......
......@@ -171,15 +171,7 @@ SET_TYPE_PROP(NavierStokesNC, FluxVariables, FreeflowNCFluxVariables<TypeTag>);
SET_TYPE_PROP(NavierStokesNC, FluxVariablesCache, FreeFlowFluxVariablesCache<TypeTag>);
//! The specific I/O fields
SET_PROP(NavierStokesNC, IOFields)
{
private:
using ModelTraits = typename GET_PROP_TYPE(TypeTag, ModelTraits);
using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
using BaseIOFields = NavierStokesIOFields<FVGridGeometry>;
public:
using type = FreeflowNCIOFields<BaseIOFields, ModelTraits>;
};
SET_TYPE_PROP(NavierStokesNC, IOFields, FreeflowNCIOFields<NavierStokesIOFields>);
/*!
* \brief The fluid state which is used by the volume variables to
......@@ -222,12 +214,9 @@ public:
SET_PROP(NavierStokesNCNI, IOFields)
{
private:
using ModelTraits = typename GET_PROP_TYPE(TypeTag, ModelTraits);
using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
using BaseIOFields = NavierStokesIOFields<FVGridGeometry>;
using NonIsothermalFields = FreeflowNonIsothermalIOFields<BaseIOFields, ModelTraits>;
using IsothermalIOFields = FreeflowNCIOFields<NavierStokesIOFields>;
public:
using type = FreeflowNCIOFields<NonIsothermalFields, ModelTraits>;
using type = FreeflowNonIsothermalIOFields<IsothermalIOFields>;
};
//! Use Fourier's Law as default heat conduction type
......
......@@ -140,15 +140,7 @@ public:
};
//! The specific I/O fields
SET_PROP(OneEqNC, IOFields)
{
private:
using ModelTraits = typename GET_PROP_TYPE(TypeTag, ModelTraits);
using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
using SinglePhaseIOFields = OneEqIOFields<FVGridGeometry>;
public:
using type = FreeflowNCIOFields<SinglePhaseIOFields, ModelTraits>;
};
SET_TYPE_PROP(OneEqNC, IOFields, FreeflowNCIOFields<OneEqIOFields, true/*turbulenceModel*/>);
//////////////////////////////////////////////////////////////////////////
// Property values for non-isothermal multi-component one-equation model
......@@ -214,12 +206,9 @@ public:
SET_PROP(OneEqNCNI, IOFields)
{
private:
using ModelTraits = typename GET_PROP_TYPE(TypeTag, ModelTraits);
using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
using BaseIOFields = OneEqIOFields<FVGridGeometry>;
using NonIsothermalFields = FreeflowNonIsothermalIOFields<BaseIOFields, ModelTraits>;
using IsothermalIOFields = FreeflowNCIOFields<OneEqIOFields, true/*turbulenceModel*/>;
public:
using type = FreeflowNCIOFields<NonIsothermalFields, ModelTraits>;
using type = FreeflowNonIsothermalIOFields<IsothermalIOFields, true/*turbulenceModel*/>;
};
// \}
......
......@@ -99,15 +99,7 @@ public:
};
//! The specific I/O fields
SET_PROP(ZeroEqNC, IOFields)
{
private:
using ModelTraits = typename GET_PROP_TYPE(TypeTag, ModelTraits);
using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
using BaseIOFields = RANSIOFields<FVGridGeometry>;
public:
using type = FreeflowNCIOFields<BaseIOFields, ModelTraits>;
};
SET_TYPE_PROP(ZeroEqNC, IOFields, FreeflowNCIOFields<RANSIOFields, true/*turbulenceModel*/>);
//////////////////////////////////////////////////////////////////////////
// Property values for non-isothermal multi-component ZeroEq model
......@@ -155,12 +147,9 @@ public:
SET_PROP(ZeroEqNCNI, IOFields)
{
private:
using ModelTraits = typename GET_PROP_TYPE(TypeTag, ModelTraits);
using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
using BaseIOFields = RANSIOFields<FVGridGeometry>;
using NonIsothermalFields = FreeflowNonIsothermalIOFields<BaseIOFields, ModelTraits>;
using IsothermalIOFields = FreeflowNCIOFields<RANSIOFields, true/*turbulenceModel*/>;
public:
using type = FreeflowNCIOFields<NonIsothermalFields, ModelTraits>;
using type = FreeflowNonIsothermalIOFields<IsothermalIOFields, true/*turbulenceModel*/>;
};
// \}
......
......@@ -74,29 +74,35 @@ std::function<std::string(int,int)> createStaggeredPVNameFunction(const Dune::Mu
}
}
// forward declare
template<class T, class U>
class StaggeredVtkOutputModule;
/*!
* \ingroup NavierStokesModel
* \brief Adds I/O fields for the Navier-Stokes model
*/
template<class FVGridGeometry>
class NavierStokesIOFields
{
// Helper type used for tag dispatching (to add discretization-specific fields).
template<DiscretizationMethod discMethod>
using discMethodTag = std::integral_constant<DiscretizationMethod, discMethod>;
//! Helper strcuts to determine whether a staggered grid discretization is used
template<class T>
struct isStaggered : public std::false_type {};
template<class... Args>
struct isStaggered<StaggeredVtkOutputModule<Args...>>
: public std::true_type {};
public:
//! Initialize the Navier-Stokes specific output fields.
template <class OutputModule>
static void initOutputModule(OutputModule& out)
{
using FluidSystem = typename OutputModule::VolumeVariables::FluidSystem;
out.addVolumeVariable([](const auto& v){ return v.pressure(); }, IOName::pressure());
out.addVolumeVariable([](const auto& v){ return v.molarDensity(); }, IOName::molarDensity());
out.addVolumeVariable([](const auto& v){ return v.density(); }, IOName::density());
// add discretization-specific fields
additionalOutput_(out, discMethodTag<FVGridGeometry::discMethod>{});
additionalOutput_(out, isStaggered<OutputModule>());
}
template <class OutputModule>
......@@ -119,21 +125,20 @@ public:
private:
//! Adds discretization-specific fields (nothing by default).
template <class OutputModule, class AnyMethod>
static void additionalOutput_(OutputModule& out, AnyMethod)
template <class OutputModule>
static void additionalOutput_(OutputModule& out)
{ }
//! Adds discretization-specific fields (velocity vectors on the faces for the staggered discretization).
template <class OutputModule>
static void additionalOutput_(OutputModule& out, discMethodTag<DiscretizationMethod::staggered>)
static void additionalOutput_(OutputModule& out, std::true_type)
{
const bool writeFaceVars = getParamFromGroup<bool>(out.paramGroup(), "Vtk.WriteFaceData", false);
if(writeFaceVars)
{
auto faceVelocityVector = [](const typename FVGridGeometry::SubControlVolumeFace& scvf, const auto& faceVars)
auto faceVelocityVector = [](const auto& scvf, const auto& faceVars)
{
using Scalar = typename OutputModule::VolumeVariables::PrimaryVariables::value_type;
using VelocityVector = Dune::FieldVector<Scalar, FVGridGeometry::GridView::dimensionworld>;
using VelocityVector = std::decay_t<decltype(scvf.unitOuterNormal())>;
VelocityVector velocity(0.0);
velocity[scvf.directionIndex()] = faceVars.velocitySelf();
......
......@@ -199,13 +199,8 @@ SET_TYPE_PROP(NavierStokes, FluxVariables, NavierStokesFluxVariables<TypeTag>);
SET_TYPE_PROP(NavierStokes, FluxVariablesCache, FreeFlowFluxVariablesCache<TypeTag>);
//! The specific I/O fields
SET_PROP(NavierStokes, IOFields)
{
private:
using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
public:
using type = NavierStokesIOFields<FVGridGeometry>;
};
SET_TYPE_PROP(NavierStokes, IOFields, NavierStokesIOFields);
//////////////////////////////////////////////////////////////////
// Property values for non-isothermal Navier-Stokes model
//////////////////////////////////////////////////////////////////
......@@ -222,15 +217,7 @@ public:
};
//! The specific non-isothermal I/O fields
SET_PROP(NavierStokesNI, IOFields)
{
private:
using ModelTraits = typename GET_PROP_TYPE(TypeTag, ModelTraits);
using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
using IsothermalFields = NavierStokesIOFields<FVGridGeometry>;
public:
using type = FreeflowNonIsothermalIOFields<IsothermalFields, ModelTraits>;
};
SET_TYPE_PROP(NavierStokesNI, IOFields, FreeflowNonIsothermalIOFields<NavierStokesIOFields>);
// \}
}
......
......@@ -35,12 +35,9 @@ namespace Dumux
* \ingroup FreeflowNIModel
* \brief Adds I/O fields specific to non-isothermal free-flow models
*/
template<class IsothermalIOFields, class ModelTraits>
class FreeflowNonIsothermalIOFields
template<class IsothermalIOFields, bool turbulenceModel = false>
struct FreeflowNonIsothermalIOFields
{
public:
//! Initialize the non-isothermal specific output fields.
template <class OutputModule>
DUNE_DEPRECATED_MSG("use initOutputModule instead")
......@@ -57,7 +54,7 @@ public:
out.addVolumeVariable([](const auto& v){ return v.temperature(); }, IOName::temperature());
out.addVolumeVariable([](const auto& v){ return v.thermalConductivity(); }, "lambda");
if (ModelTraits::usesTurbulenceModel())
if (turbulenceModel)
out.addVolumeVariable([](const auto& v){ return v.effectiveThermalConductivity() - v.thermalConductivity(); }, "lambda_t");
}
......
......@@ -34,13 +34,8 @@ namespace Dumux
* \ingroup RANSModel
* \brief Adds I/O fields for the Reynolds-Averaged Navier-Stokes model
*/
template<class FVGridGeometry>
class RANSIOFields
struct RANSIOFields
{
enum { dim = FVGridGeometry::GridView::dimension };
public:
template <class OutputModule>
DUNE_DEPRECATED_MSG("use initOutputModule instead")
static void init(OutputModule& out)
......@@ -52,7 +47,9 @@ public:
template <class OutputModule>
static void initOutputModule(OutputModule& out)
{
NavierStokesIOFields<FVGridGeometry>::initOutputModule(out);
NavierStokesIOFields::initOutputModule(out);
static constexpr auto dim = decltype(std::declval<typename OutputModule::VolumeVariables>().velocity())::dimension;
out.addVolumeVariable([](const auto& v){ return v.velocity()[0] / v.velocityMaximum()[0]; }, "v_x/v_x,max");
out.addVolumeVariable([](const auto& v){ return v.velocityGradients()[0]; }, "dv_x/dx_");
......
......@@ -84,13 +84,7 @@ public:
};
//! The specific I/O fields
SET_PROP(RANS, IOFields)
{
private:
using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
public:
using type = RANSIOFields<FVGridGeometry>;
};
SET_TYPE_PROP(RANS, IOFields, RANSIOFields);
//////////////////////////////////////////////////////////////////
// Property values for non-isothermal Reynolds-averaged Navier-Stokes model
......@@ -112,15 +106,7 @@ public:
};
//! The specific non-isothermal I/O fields
SET_PROP(RANSNI, IOFields)
{
private:
using ModelTraits = typename GET_PROP_TYPE(TypeTag, ModelTraits);
using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
using IsothermalFields = RANSIOFields<FVGridGeometry>;
public:
using type = FreeflowNonIsothermalIOFields<IsothermalFields, ModelTraits>;
};
SET_TYPE_PROP(RANSNI, IOFields, FreeflowNonIsothermalIOFields<RANSIOFields, true/*turbulenceModel*/>);
//! Use Fourier's Law as default heat conduction type
SET_TYPE_PROP(RANSNI, HeatConductionType, FouriersLaw<TypeTag>);
......
......@@ -33,12 +33,8 @@ namespace Dumux
* \ingroup OneEqModel
* \brief Adds I/O fields for the one-equation turbulence model by Spalart-Allmaras
*/
template<class FVGridGeometry>
class OneEqIOFields
struct OneEqIOFields
{
enum { dim = FVGridGeometry::GridView::dimension };
public:
template <class OutputModule>
DUNE_DEPRECATED_MSG("use initOutputModule instead")
static void init(OutputModule& out)
......@@ -50,7 +46,7 @@ public:
template <class OutputModule>
static void initOutputModule(OutputModule& out)
{
RANSIOFields<FVGridGeometry>::initOutputModule(out);
RANSIOFields::initOutputModule(out);
out.addVolumeVariable([](const auto& v){ return v.viscosityTilde(); }, "nu_tilde");
}
......
......@@ -170,13 +170,7 @@ public:
};
//! The specific I/O fields
SET_PROP(OneEq, IOFields)
{
private:
using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
public:
using type = OneEqIOFields<FVGridGeometry>;
};
SET_TYPE_PROP(OneEq, IOFields, OneEqIOFields);
//////////////////////////////////////////////////////////////////
// default property values for the non-isothermal Spalart-Allmaras model
......@@ -216,15 +210,7 @@ public:
};
//! The specific non-isothermal I/O fields
SET_PROP(OneEqNI, IOFields)
{
private:
using ModelTraits = typename GET_PROP_TYPE(TypeTag, ModelTraits);
using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
using IsothermalFields = OneEqIOFields<FVGridGeometry>;
public:
using type = FreeflowNonIsothermalIOFields<IsothermalFields, ModelTraits>;
};
SET_TYPE_PROP(OneEqNI, IOFields, FreeflowNonIsothermalIOFields<OneEqIOFields, true/*turbulenceModel*/>);
// \}
}
......
......@@ -34,13 +34,8 @@ namespace Dumux
* \ingroup KEpsilonModel
* \brief Adds I/O fields for the k-epsilon turbulence model
*/
template<class FVGridGeometry>
class KEpsilonIOFields
struct KEpsilonIOFields
{
enum { dim = FVGridGeometry::GridView::dimension };
public:
template <class OutputModule>
DUNE_DEPRECATED_MSG("use initOutputModule instead")
static void init(OutputModule& out)
......@@ -52,7 +47,7 @@ public:
template <class OutputModule>
static void initOutputModule(OutputModule& out)
{
RANSIOFields<FVGridGeometry>::initOutputModule(out);
RANSIOFields::initOutputModule(out);
out.addVolumeVariable([](const auto& v){ return v.turbulentKineticEnergy(); }, "k");
out.addVolumeVariable([](const auto& v){ return v.dissipation(); }, "epsilon");
......
......@@ -156,13 +156,7 @@ public:
};
//! The specific I/O fields
SET_PROP(KEpsilon, IOFields)
{
private:
using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
public:
using type = KEpsilonIOFields<FVGridGeometry>;
};
SET_TYPE_PROP(KEpsilon, IOFields, KEpsilonIOFields);
//////////////////////////////////////////////////////////////////
// default property values for the non-isothermal k-epsilon model
......@@ -202,15 +196,7 @@ public:
};
//! The specific non-isothermal I/O fields
SET_PROP(KEpsilonNI, IOFields)
{
private:
using ModelTraits = typename GET_PROP_TYPE(TypeTag, ModelTraits);
using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
using IsothermalFields = KEpsilonIOFields<FVGridGeometry>;
public:
using type = FreeflowNonIsothermalIOFields<IsothermalFields, ModelTraits>;
};
SET_TYPE_PROP(KEpsilonNI, IOFields, FreeflowNonIsothermalIOFields<KEpsilonIOFields, true/*turbulenceModel*/>);
// \}
}
......
......@@ -34,13 +34,8 @@ namespace Dumux
* \ingroup KOmegaModel
* \brief Adds I/O fields for the Reynolds-Averaged Navier-Stokes model
*/
template<class FVGridGeometry>
class KOmegaIOFields
struct KOmegaIOFields
{
enum { dim = FVGridGeometry::GridView::dimension };
public:
template <class OutputModule>
DUNE_DEPRECATED_MSG("use initOutputModule instead")
static void init(OutputModule& out)
......@@ -52,7 +47,7 @@ public:
template <class OutputModule>
static void initOutputModule(OutputModule& out)
{
RANSIOFields<FVGridGeometry>::initOutputModule(out);
RANSIOFields::initOutputModule(out);
out.addVolumeVariable([](const auto& v){ return v.turbulentKineticEnergy(); }, "k");
out.addVolumeVariable([](const auto& v){ return v.dissipation(); }, "omega");
......
......@@ -163,13 +163,7 @@ public:
};
//! The specific I/O fields
SET_PROP(KOmega, IOFields)
{
private:
using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
public:
using type = KOmegaIOFields<FVGridGeometry>;
};
SET_TYPE_PROP(KOmega, IOFields, KOmegaIOFields);
///////////////////////////////////////////////////////////////////////////
// default property values for the non-isothermal k-omega single phase model
......@@ -210,15 +204,7 @@ public:
};
//! The specific non-isothermal I/O fields
SET_PROP(KOmegaNI, IOFields)
{
private:
using ModelTraits = typename GET_PROP_TYPE(TypeTag, ModelTraits);
using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry);
using IsothermalFields = KOmegaIOFields<FVGridGeometry>;
public:
using type = FreeflowNonIsothermalIOFields<IsothermalFields, ModelTraits>;
};
SET_TYPE_PROP(KOmegaNI, IOFields, FreeflowNonIsothermalIOFields<KOmegaIOFields, true/*turbulenceModel*/>);
// \}
}
......
......@@ -34,13 +34,8 @@ namespace Dumux
* \ingroup LowReKEpsilonModel
* \brief Adds I/O fields for the low-Re k-epsilon turbulence model
*/
template<class FVGridGeometry>
class LowReKEpsilonIOFields
struct LowReKEpsilonIOFields
{
enum { dim = FVGridGeometry::GridView::dimension };
public:
template <class OutputModule>
DUNE_DEPRECATED_MSG("use initOutputModule instead")
static void init(OutputModule& out)
......@@ -52,7 +47,7 @@ public:
template <class OutputModule>
static void initOutputModule(OutputModule& out)
{
RANSIOFields<FVGridGeometry>::initOutputModule(out);
RANSIOFields::initOutputModule(out);
out.addVolumeVariable([](const auto& v){ return v.turbulentKineticEnergy(); }, "k");