diff --git a/dune/fem-dg/examples/advdiff/algorithmcreator.hh b/dune/fem-dg/examples/advdiff/algorithmcreator.hh index c1f30ed34ce1a2cd3691235a30a130668f69b90a..709cd27b5396d89e9a53440093efd00c16090389 100644 --- a/dune/fem-dg/examples/advdiff/algorithmcreator.hh +++ b/dune/fem-dg/examples/advdiff/algorithmcreator.hh @@ -60,9 +60,10 @@ namespace Fem AdvectionLimiter::Enum::unlimited, Matrix::Enum::matrixfree, AdvectionFlux::Enum::upwind, - PrimalDiffusionFlux::Enum::cdg2, - DualDiffusionFlux::Enum::average, - Formulation::Enum::dual > AC; + PrimalDiffusionFlux::Enum::cdg2 > AC; + // Local DG approach + // LocalDiffusionFlux::Enum::general, + // Formulation::Enum::local > AC; typedef typename AC::GridType GridType; typedef typename AC::GridParts HostGridPartType; diff --git a/dune/fem-dg/examples/advdiff/test/parameter_cmake b/dune/fem-dg/examples/advdiff/test/parameter_cmake index a27a41f80de2f6e91ab3a6d2e2ac8c5e0f1c9832..07e1ac6f94eb32ba614356ea77cf751a3dbc0aff 100644 --- a/dune/fem-dg/examples/advdiff/test/parameter_cmake +++ b/dune/fem-dg/examples/advdiff/test/parameter_cmake @@ -45,5 +45,6 @@ fem.io.macroGridFile_3d: ../../grids/unitcube3.dgf # SOLVER #------- dgdiffusionflux.upwind: -1 -0.001 +dgdiffusionflux.method: LDG femdg.stepper.maxtimestep: 0.5 paramfile: ../../parameter/paramSolver diff --git a/dune/fem-dg/misc/algorithmcreatorselector.hh b/dune/fem-dg/misc/algorithmcreatorselector.hh index 40f26eeff7e3f5e620773165b9c2f79eeef94013..4101304086b79d46d901dbd934c15503c4df0d73 100644 --- a/dune/fem-dg/misc/algorithmcreatorselector.hh +++ b/dune/fem-dg/misc/algorithmcreatorselector.hh @@ -215,7 +215,7 @@ namespace Fem enum class Enum { primal, - dual + local }; } @@ -321,7 +321,7 @@ namespace Fem }; template< class OperatorTraits > - class AdvectionDiffusionOperatorSelector< OperatorTraits, Formulation::Enum::dual, AdvectionLimiter::Enum::unlimited > + class AdvectionDiffusionOperatorSelector< OperatorTraits, Formulation::Enum::local, AdvectionLimiter::Enum::unlimited > { static const int advection = OperatorTraits::ModelType::hasAdvection; static const int diffusion = OperatorTraits::ModelType::hasDiffusion; @@ -338,7 +338,7 @@ namespace Fem }; template< class OperatorTraits > - class AdvectionDiffusionOperatorSelector< OperatorTraits, Formulation::Enum::dual, AdvectionLimiter::Enum::limited > + class AdvectionDiffusionOperatorSelector< OperatorTraits, Formulation::Enum::local, AdvectionLimiter::Enum::limited > { static const int advection = OperatorTraits::ModelType::hasAdvection; static const int diffusion = OperatorTraits::ModelType::hasDiffusion; @@ -573,19 +573,19 @@ namespace Fem }; template< class ModelImp, class DiscreteFunctionSpaceImp, - PrimalDiffusionFlux::Enum diffFluxId, DualDiffusionFlux::Enum dualDiffFluxId, Formulation::Enum form > + PrimalDiffusionFlux::Enum diffFluxId, LocalDiffusionFlux::Enum localDiffFluxId, Formulation::Enum form > struct DiffusionFluxSelector; - template< class ModelImp, class DiscreteFunctionSpaceImp, PrimalDiffusionFlux::Enum diffFluxId, DualDiffusionFlux::Enum dualDiffFluxId > - struct DiffusionFluxSelector< ModelImp, DiscreteFunctionSpaceImp, diffFluxId, dualDiffFluxId, Formulation::Enum::primal > + template< class ModelImp, class DiscreteFunctionSpaceImp, PrimalDiffusionFlux::Enum diffFluxId, LocalDiffusionFlux::Enum localDiffFluxId > + struct DiffusionFluxSelector< ModelImp, DiscreteFunctionSpaceImp, diffFluxId, localDiffFluxId, Formulation::Enum::primal > { typedef DGPrimalDiffusionFlux< DiscreteFunctionSpaceImp, ModelImp, diffFluxId > type; }; - template< class ModelImp, class DiscreteFunctionSpaceImp, PrimalDiffusionFlux::Enum diffFluxId, DualDiffusionFlux::Enum dualDiffFluxId > - struct DiffusionFluxSelector< ModelImp, DiscreteFunctionSpaceImp, diffFluxId, dualDiffFluxId, Formulation::Enum::dual > + template< class ModelImp, class DiscreteFunctionSpaceImp, PrimalDiffusionFlux::Enum diffFluxId, LocalDiffusionFlux::Enum localDiffFluxId > + struct DiffusionFluxSelector< ModelImp, DiscreteFunctionSpaceImp, diffFluxId, localDiffFluxId, Formulation::Enum::local > { - typedef DGDualDiffusionFlux< DiscreteFunctionSpaceImp, ModelImp, dualDiffFluxId > type; + typedef DGLocalDiffusionFlux< DiscreteFunctionSpaceImp, ModelImp, localDiffFluxId > type; }; } diff --git a/dune/fem-dg/misc/configurator.hh b/dune/fem-dg/misc/configurator.hh index 54383096a6bf7e075d71d0f313413e530cdfb6c1..de3ec9b9b52c6310a71a48380ab9e191d4e939e5 100644 --- a/dune/fem-dg/misc/configurator.hh +++ b/dune/fem-dg/misc/configurator.hh @@ -37,7 +37,7 @@ namespace Fem Matrix::Enum matrixId, AdvectionFlux::Enum advFluxId, PrimalDiffusionFlux::Enum diffFluxId, - DualDiffusionFlux::Enum dualDiffFluxId = DualDiffusionFlux::Enum::average, + LocalDiffusionFlux::Enum localDiffFluxId = LocalDiffusionFlux::Enum::general, Formulation::Enum formId = Formulation::Enum::primal > class AlgorithmConfigurator { @@ -66,7 +66,7 @@ namespace Fem template< class ModelImp, AdvectionFlux::Enum id = advFluxId > using AdvectionFluxes = DGAdvectionFlux< ModelImp, id >; - template< class ModelImp, class DFSpace, PrimalDiffusionFlux::Enum id = diffFluxId, DualDiffusionFlux::Enum did = dualDiffFluxId > + template< class ModelImp, class DFSpace, PrimalDiffusionFlux::Enum id = diffFluxId, LocalDiffusionFlux::Enum did = localDiffFluxId > using DiffusionFluxes = typename DiffusionFluxSelector< ModelImp, DFSpace, id, did, formId >::type; template< class DomainDFSpace, @@ -75,12 +75,12 @@ namespace Fem class AnalyticalTraitsImp, AdvectionFlux::Enum advId = advFluxId, PrimalDiffusionFlux::Enum diffId = diffFluxId, - DualDiffusionFlux::Enum dualDiffId = dualDiffFluxId > + LocalDiffusionFlux::Enum localDiffId = localDiffFluxId > using DefaultAssembTraits = DefaultAssemblerTraits< polOrd, AnalyticalTraitsImp, typename SolverSelector< solverId, false, DomainDFSpace, RangeDFSpace >::LinearOperatorType, AdvectionFluxes< typename AnalyticalTraitsImp::ModelType, advId >, - DiffusionFluxes< typename AnalyticalTraitsImp::ModelType, DomainDFSpace, diffId, dualDiffId >, + DiffusionFluxes< typename AnalyticalTraitsImp::ModelType, DomainDFSpace, diffId, localDiffId >, DiscreteFunctions< DomainDFSpace >, DiscreteFunctions< RangeDFSpace > >; template< class DomainDFSpace, @@ -90,12 +90,12 @@ namespace Fem class AdaptationIndicatorFunctionSpaceImp = typename DomainDFSpace::FunctionSpaceType, AdvectionFlux::Enum advId = advFluxId, PrimalDiffusionFlux::Enum diffId = diffFluxId, - DualDiffusionFlux::Enum dualDiffId = dualDiffFluxId > + LocalDiffusionFlux::Enum localDiffId = localDiffFluxId > using DefaultOpTraits = DefaultOperatorTraits< polOrd, AnalyticalTraitsImp, DiscreteFunctions< DomainDFSpace >, AdvectionFluxes< typename AnalyticalTraitsImp::ModelType, advId >, - DiffusionFluxes< typename AnalyticalTraitsImp::ModelType, DomainDFSpace, diffId, dualDiffId >, + DiffusionFluxes< typename AnalyticalTraitsImp::ModelType, DomainDFSpace, diffId, localDiffId >, ExtraParameterTupleImp, AdaptationIndicatorFunctionSpaceImp >; diff --git a/dune/fem-dg/operator/fluxes/diffusion/fluxes.hh b/dune/fem-dg/operator/fluxes/diffusion/fluxes.hh index 3a4494e5ef16124ef371349368adab1283ebbf98..5f348f518194b5af51e5c6ed9e0e34b0e1db6fed 100644 --- a/dune/fem-dg/operator/fluxes/diffusion/fluxes.hh +++ b/dune/fem-dg/operator/fluxes/diffusion/fluxes.hh @@ -220,15 +220,15 @@ namespace Fem template <class DiscreteFunctionSpaceImp, class Model, - DualDiffusionFlux::Enum id > - class DGDualDiffusionFlux; + LocalDiffusionFlux::Enum id > + class DGLocalDiffusionFlux; template <class DiscreteFunctionSpaceImp, class Model> - class DGDualDiffusionFlux< DiscreteFunctionSpaceImp, Model, DualDiffusionFlux::Enum::average > - : public LDGDiffusionFluxImpl< DiscreteFunctionSpaceImp, Model, DGDualDiffusionFluxParameters > + class DGLocalDiffusionFlux< DiscreteFunctionSpaceImp, Model, LocalDiffusionFlux::Enum::br1 > + : public LDGDiffusionFluxImpl< DiscreteFunctionSpaceImp, Model, DGLocalDiffusionFluxParameters > { - typedef LDGDiffusionFluxImpl< DiscreteFunctionSpaceImp, Model, DGDualDiffusionFluxParameters > + typedef LDGDiffusionFluxImpl< DiscreteFunctionSpaceImp, Model, DGLocalDiffusionFluxParameters > BaseType; public: @@ -239,20 +239,20 @@ namespace Fem /** * \brief constructor reading parameters */ - DGDualDiffusionFlux( GridPartType& gridPart, + DGLocalDiffusionFlux( GridPartType& gridPart, const Model& model, const ParameterType& parameters = ParameterType() ) - : BaseType( gridPart, model, parameters, DualDiffusionFlux::Enum::average ) + : BaseType( gridPart, model, parameters, LocalDiffusionFlux::Enum::br1 ) { } }; template <class DiscreteFunctionSpaceImp, class Model> - class DGDualDiffusionFlux< DiscreteFunctionSpaceImp, Model, DualDiffusionFlux::Enum::ldg > - : public LDGDiffusionFluxImpl< DiscreteFunctionSpaceImp, Model, DGDualDiffusionFluxParameters > + class DGLocalDiffusionFlux< DiscreteFunctionSpaceImp, Model, LocalDiffusionFlux::Enum::ldg > + : public LDGDiffusionFluxImpl< DiscreteFunctionSpaceImp, Model, DGLocalDiffusionFluxParameters > { - typedef LDGDiffusionFluxImpl< DiscreteFunctionSpaceImp, Model, DGDualDiffusionFluxParameters > + typedef LDGDiffusionFluxImpl< DiscreteFunctionSpaceImp, Model, DGLocalDiffusionFluxParameters > BaseType; public: @@ -263,20 +263,20 @@ namespace Fem /** * \brief constructor reading parameters */ - DGDualDiffusionFlux( GridPartType& gridPart, + DGLocalDiffusionFlux( GridPartType& gridPart, const Model& model, const ParameterType& parameters = ParameterType() ) - : BaseType( gridPart, model, parameters, DualDiffusionFlux::Enum::ldg ) + : BaseType( gridPart, model, parameters, LocalDiffusionFlux::Enum::ldg ) { } }; template <class DiscreteFunctionSpaceImp, class Model> - class DGDualDiffusionFlux< DiscreteFunctionSpaceImp, Model, DualDiffusionFlux::Enum::general > - : public LDGDiffusionFluxImpl< DiscreteFunctionSpaceImp, Model, DGDualDiffusionFluxParameters > + class DGLocalDiffusionFlux< DiscreteFunctionSpaceImp, Model, LocalDiffusionFlux::Enum::general > + : public LDGDiffusionFluxImpl< DiscreteFunctionSpaceImp, Model, DGLocalDiffusionFluxParameters > { - typedef LDGDiffusionFluxImpl< DiscreteFunctionSpaceImp, Model, DGDualDiffusionFluxParameters > + typedef LDGDiffusionFluxImpl< DiscreteFunctionSpaceImp, Model, DGLocalDiffusionFluxParameters > BaseType; public: @@ -287,10 +287,10 @@ namespace Fem /** * \brief constructor reading parameters */ - DGDualDiffusionFlux( GridPartType& gridPart, + DGLocalDiffusionFlux( GridPartType& gridPart, const Model& model, const ParameterType& parameters = ParameterType() ) - : BaseType( gridPart, model, parameters, DualDiffusionFlux::Enum::general ) + : BaseType( gridPart, model, parameters, LocalDiffusionFlux::Enum::general ) { } }; diff --git a/dune/fem-dg/operator/fluxes/diffusion/parameters.hh b/dune/fem-dg/operator/fluxes/diffusion/parameters.hh index 6605282a08aa91b9e97f03d199ebb3c41ee9514c..b2b53abd47a798607f6fa45d49275886e2754e7e 100644 --- a/dune/fem-dg/operator/fluxes/diffusion/parameters.hh +++ b/dune/fem-dg/operator/fluxes/diffusion/parameters.hh @@ -47,7 +47,7 @@ namespace Fem } - namespace DualDiffusionFlux + namespace LocalDiffusionFlux { /** * \brief Enum of all known local DG diffusion flux implementations. @@ -57,15 +57,15 @@ namespace Fem enum class Enum { //! Bassi-Rebay flux. - average, + br1, //! Local DG flux. ldg, //! general flux: Parameter selection is done via parameter file! - general, + general }; //! Contains all known enums for dual diffusion fluxes which can be chosen via parameter file. - const Enum _enums[] = { Enum::average, Enum::ldg }; + const Enum _enums[] = { Enum::br1, Enum::ldg }; //! Contains all known names of dual diffusion fluxes which can be chosen via parameter file. const std::string _strings[] = { "BR1", "LDG" }; //! Number of known primal diffusion fluxes which can be chosen via parameter file. @@ -210,18 +210,18 @@ namespace Fem * * \ingroup ParameterClass */ - class DGDualDiffusionFluxParameters - : public Fem::LocalParameter< DGDualDiffusionFluxParameters, DGDualDiffusionFluxParameters > + class DGLocalDiffusionFluxParameters + : public Fem::LocalParameter< DGLocalDiffusionFluxParameters, DGLocalDiffusionFluxParameters > { public: - typedef DualDiffusionFlux::Enum IdEnum; + typedef LocalDiffusionFlux::Enum IdEnum; /** * \brief Constructor * * \param[in] keyPrefix key prefix for parameter file. */ - DGDualDiffusionFluxParameters( const std::string keyPrefix = "dgdiffusionflux." ) + DGLocalDiffusionFluxParameters( const std::string keyPrefix = "dgdiffusionflux." ) : keyPrefix_( keyPrefix ) {} @@ -233,9 +233,9 @@ namespace Fem */ static std::string methodNames( const IdEnum& mthd ) { - for( int i = 0; i < DualDiffusionFlux::_size; i++) - if( DualDiffusionFlux::_enums[i] == mthd ) - return DualDiffusionFlux::_strings[i]; + for( int i = 0; i < LocalDiffusionFlux::_size; i++) + if( LocalDiffusionFlux::_enums[i] == mthd ) + return LocalDiffusionFlux::_strings[i]; assert( false ); return "invalid diffusion flux"; } @@ -245,8 +245,8 @@ namespace Fem */ virtual IdEnum getMethod() const { - const int i = Fem::Parameter::getEnum( keyPrefix_ + "method", DualDiffusionFlux::_strings ); - return DualDiffusionFlux::_enums[i]; + const int i = Fem::Parameter::getEnum( keyPrefix_ + "method", LocalDiffusionFlux::_strings ); + return LocalDiffusionFlux::_enums[i]; } //! todo please doc me