diff --git a/test/porousmediumflow/2p2c/implicit/mpnccomparison/2p2c_comparison_problem.hh b/test/porousmediumflow/2p2c/implicit/mpnccomparison/2p2c_comparison_problem.hh index 8110281fd993fc2056e31f2d334602e827eda3c0..42c8ca38b56be4f400ca19ffca1bc21213acef9c 100644 --- a/test/porousmediumflow/2p2c/implicit/mpnccomparison/2p2c_comparison_problem.hh +++ b/test/porousmediumflow/2p2c/implicit/mpnccomparison/2p2c_comparison_problem.hh @@ -72,7 +72,15 @@ SET_INT_PROP(TwoPTwoCComparisonTypeTag, Formulation, TwoPTwoCFormulation::pnsw); SET_BOOL_PROP(TwoPTwoCComparisonTypeTag, UseMoles, true); -SET_TYPE_PROP(TwoPTwoCComparisonTypeTag, VtkOutputFields, TwoPTwoCMPNCVtkOutputFields<TypeTag>); +SET_PROP(TwoPTwoCComparisonTypeTag, VtkOutputFields) +{ +private: + using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem); + using Indices = typename GET_PROP_TYPE(TypeTag, Indices); + +public: + using type = TwoPTwoCMPNCVtkOutputFields<FluidSystem, Indices>; +}; } diff --git a/test/porousmediumflow/2p2c/implicit/mpnccomparison/vtkoutputfields.hh b/test/porousmediumflow/2p2c/implicit/mpnccomparison/vtkoutputfields.hh index 1964868b4f81ba265de8ffea2eef7161cd3f9bf8..25bfdc159c05560995e6578f69eed7c2b629c698 100644 --- a/test/porousmediumflow/2p2c/implicit/mpnccomparison/vtkoutputfields.hh +++ b/test/porousmediumflow/2p2c/implicit/mpnccomparison/vtkoutputfields.hh @@ -33,40 +33,34 @@ namespace Dumux * \ingroup TwoPTwoCModel * \brief Adds vtk output fields specific to the two-phase two-component model */ -template<class TypeTag> +template<class FluidSystem, class Indices> class TwoPTwoCMPNCVtkOutputFields { - using Indices = typename GET_PROP_TYPE(TypeTag, Indices); - using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables); - using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem); - - static constexpr int numPhases = GET_PROP_VALUE(TypeTag, NumPhases); - static constexpr int numComponents = GET_PROP_VALUE(TypeTag, NumComponents); public: template <class VtkOutputModule> static void init(VtkOutputModule& vtk) { // register standardized vtk output fields - vtk.addVolumeVariable([](const VolumeVariables& v){ return v.saturation(Indices::nPhaseIdx); }, "Sn"); - vtk.addVolumeVariable([](const VolumeVariables& v){ return v.saturation(Indices::wPhaseIdx); }, "Sw"); - vtk.addVolumeVariable([](const VolumeVariables& v){ return v.pressure(Indices::nPhaseIdx); }, "pn"); - vtk.addVolumeVariable([](const VolumeVariables& v){ return v.pressure(Indices::wPhaseIdx); }, "pw"); + vtk.addVolumeVariable([](const auto& v){ return v.saturation(Indices::nPhaseIdx); }, "Sn"); + vtk.addVolumeVariable([](const auto& v){ return v.saturation(Indices::wPhaseIdx); }, "Sw"); + vtk.addVolumeVariable([](const auto& v){ return v.pressure(Indices::nPhaseIdx); }, "pn"); + vtk.addVolumeVariable([](const auto& v){ return v.pressure(Indices::wPhaseIdx); }, "pw"); - vtk.addVolumeVariable([](const VolumeVariables& v){ return v.density(Indices::wPhaseIdx); }, "rhoW"); - vtk.addVolumeVariable([](const VolumeVariables& v){ return v.density(Indices::nPhaseIdx); }, "rhoN"); - vtk.addVolumeVariable([](const VolumeVariables& v){ return v.mobility(Indices::wPhaseIdx); }, "mobW"); - vtk.addVolumeVariable([](const VolumeVariables& v){ return v.mobility(Indices::nPhaseIdx); }, "mobN"); + vtk.addVolumeVariable([](const auto& v){ return v.density(Indices::wPhaseIdx); }, "rhoW"); + vtk.addVolumeVariable([](const auto& v){ return v.density(Indices::nPhaseIdx); }, "rhoN"); + vtk.addVolumeVariable([](const auto& v){ return v.mobility(Indices::wPhaseIdx); }, "mobW"); + vtk.addVolumeVariable([](const auto& v){ return v.mobility(Indices::nPhaseIdx); }, "mobN"); - for (int i = 0; i < numPhases; ++i) - for (int j = 0; j < numComponents; ++j) - vtk.addVolumeVariable([i,j](const VolumeVariables& v){ return v.massFraction(i,j); },"X_"+ FluidSystem::phaseName(i) + "^" + FluidSystem::componentName(j)); + for (int i = 0; i < FluidSystem::numPhases; ++i) + for (int j = 0; j < FluidSystem::numComponents; ++j) + vtk.addVolumeVariable([i,j](const auto& v){ return v.massFraction(i,j); },"X_"+ FluidSystem::phaseName(i) + "^" + FluidSystem::componentName(j)); - for (int i = 0; i < numPhases; ++i) - for (int j = 0; j < numComponents; ++j) - vtk.addVolumeVariable([i,j](const VolumeVariables& v){ return v.moleFraction(i,j); },"x_"+ FluidSystem::phaseName(i) + "^" + FluidSystem::componentName(j)); + for (int i = 0; i < FluidSystem::numPhases; ++i) + for (int j = 0; j < FluidSystem::numComponents; ++j) + vtk.addVolumeVariable([i,j](const auto& v){ return v.moleFraction(i,j); },"x_"+ FluidSystem::phaseName(i) + "^" + FluidSystem::componentName(j)); - vtk.addVolumeVariable([](const VolumeVariables& v){ return v.porosity(); }, "porosity"); + vtk.addVolumeVariable([](const auto& v){ return v.porosity(); }, "porosity"); } }; diff --git a/test/porousmediumflow/mpnc/implicit/2p2ccomparison/mpnc_comparison_problem.hh b/test/porousmediumflow/mpnc/implicit/2p2ccomparison/mpnc_comparison_problem.hh index 729f97da157611f7dd7b2da5eec4f6ac3bdb492c..c9799fbd22dc794756bb125756f7ba19d6621eab 100644 --- a/test/porousmediumflow/mpnc/implicit/2p2ccomparison/mpnc_comparison_problem.hh +++ b/test/porousmediumflow/mpnc/implicit/2p2ccomparison/mpnc_comparison_problem.hh @@ -73,7 +73,16 @@ SET_TYPE_PROP(MPNCComparisonTypeTag, Scalar, double); SET_BOOL_PROP(MPNCComparisonTypeTag, EnableMolecularDiffusion, true); SET_BOOL_PROP(MPNCComparisonTypeTag, UseMoles, true); -SET_TYPE_PROP(MPNCComparisonTypeTag, VtkOutputFields, TwoPTwoCMPNCVtkOutputFields<TypeTag>); + +SET_PROP(MPNCComparisonTypeTag, VtkOutputFields) +{ +private: + using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem); + using Indices = typename GET_PROP_TYPE(TypeTag, Indices); + +public: + using type = TwoPTwoCMPNCVtkOutputFields<FluidSystem, Indices>; +}; }