Skip to content

Feature/discretization tags introduction

Ivan Buntic requested to merge feature/discretization-tags-introduction into master

This MR introduces and uses tags for discretization methods, see method.hh. Fixes #1054 (closed).

The tags are introduced in the namespace DiscretizationMethods (with s) for each discretization method. These tags replace the enum class DiscretizationMethod. Tags have several advantages over the enum. Each tag is a named type (see dumux/common/tag.hh) so they can for example be used in tag dispatch. Moreover specializing with tags is extensible. For example we specialize the template DarcysLawImplementation for each discretization. When using the enum no new discretization methods can be added without changing enum class DiscretizationMethod. With tags you can make your own tag and specialize a class for that tag. This means new discretization methods can be developed in a modular fashion. The introduction of tags involves a couple of non-backwards-compatible changes, mostly in implementation classes that shouldn't affect most users (see below).

The following classes had their template arguments changed from DiscretizationMethod to class. This mostly affects implementation details.

File Namespace Class/Struct Comment
discretization/method.hh Dumux::DiscretizationMethods namespace DiscretizationMethods introduced
flux/box/darcyslaw.hh Dumux class DarcysLawImplementation
flux/box/fickslaw.hh Dumux class FicksLawImplementation
flux/box/forchheimerslaw.hh Dumux class ForchheimersLawImplementation
flux/box/fourierslaw.hh Dumux class FouriersLawImplementation
flux/box/fourierslawnonequilibrium.hh Dumux class FouriersLawNonEquilibriumImplementation
flux/box/maxwellstefanslaw.hh Dumux class MaxwellStefansLawImplementation
flux/ccmpfa/darcyslaw.hh Dumux class DarcysLawImplementation
flux/ccmpfa/fickslaw.hh Dumux class FicksLawImplementation
flux/ccmpfa/fourierslaw.hh Dumux class FouriersLawImplementation
flux/cctpfa/darcyslaw.hh Dumux class DarcysLawImplementation
flux/cctpfa/fickslaw.hh Dumux class FicksLawImplementation
flux/cctpfa/forchheimerslaw.hh Dumux class ForchheimersLawImplementation
flux/cctpfa/fourierslaw.hh Dumux class FouriersLawImplementation
flux/cctpfa/fourierslawnonequilibrium.hh Dumux class FouriersLawNonEquilibriumImplementation
flux/cctpfa/maxwellstefanslaw.hh Dumux class MaxwellStefansLawImplementation
flux/darcyslaw_fwd.hh Dumux class DarcysLawImplementation
flux/effectivestresslaw_fwd.hh Dumux class EffectiveStressLaw non-impl, but uses default
flux/fickslaw_fwd.hh Dumux class FicksLawImplementation
flux/forchheimerslaw_fwd.hh Dumux class ForchheimersLawImplementation
flux/fourierslaw_fwd.hh Dumux class FouriersLawImplementation
flux/fourierslawnonequilibrium_fwd.hh Dumux class FouriersLawNonEquilibriumImplementation
flux/hookeslaw_fwd.hh Dumux class HookesLaw non-impl, but uses default
flux/maxwellstefanslaw_fwd.hh Dumux class MaxwellStefansLawImplementation
flux/staggered/freeflow/fickslaw.hh Dumux class FicksLawImplementation
flux/staggered/freeflow/fourierslaw.hh Dumux class FouriersLawImplementation
flux/staggered/freeflow/maxwellstefanslaw.hh Dumux class MaxwellStefansLawImplementation
multidomain/boundary/stokesdarcy/couplingdata.hh Dumux class FicksLawImplementation
struct IsFicksLaw
class DarcysLawImplementation
class ForchheimersLawImplementation
common/typetraits/problem.hh Dumux::Detail struct ProblemTraits
discretization/checkoverlapsize.hh Dumux struct CheckOverlapSize
assembly/fvassembler.hh Dumux::Detail struct LocalAssemblerChooser
assembly/partialreassembler.hh Dumux class PartialReassemblerEngine
discretization/fluxstencil.hh Dumux class FluxStencil non-impl, but uses default
discretization/functionspacebasis.hh Dumux struct FunctionSpaceBasisTraits non-impl, but uses default
flux/upwindscheme.hh Dumux class UpwindSchemeImpl
freeflow/compositional/fluxvariables.hh Dumux class FreeflowNCFluxVariablesImpl
freeflow/compositional/localresidual.hh Dumux class FreeflowNCResidualImpl
freeflow/compositional/staggered/fluxvariables.hh Dumux class FreeflowNCFluxVariablesImpl
freeflow/compositional/staggered/localresidual.hh Dumux class FreeflowNCResidualImpl
freeflow/navierstokes/fluxvariables.hh Dumux class NavierStokesFluxVariablesImpl
freeflow/navierstokes/localresidual.hh Dumux class NavierStokesResidualImpl
freeflow/navierstokes/problem.hh Dumux struct NavierStokesParentProblemImpl
class NavierStokesProblemImpl
freeflow/navierstokes/scalarfluxvariablescachefiller.hh Dumux class FreeFlowScalarFluxVariablesCacheFillerImplementation
freeflow/navierstokes/staggered/fluxvariables.hh Dumux class NavierStokesFluxVariablesImpl
freeflow/navierstokes/staggered/localresidual.hh Dumux class NavierStokesResidualImpl
freeflow/nonisothermal/localresidual.hh Dumux class FreeFlowEnergyLocalResidualImplementation keep uniform casing: Freeflow and FreeFlow
class FreeFlowEnergyLocalResidualImplementation specialization for isothermal models
freeflow/rans/oneeq/fluxvariables.hh Dumux class OneEqFluxVariablesImpl
freeflow/rans/oneeq/localresidual.hh Dumux class OneEqResidualImpl
freeflow/rans/oneeq/staggered/fluxvariables.hh Dumux class OneEqFluxVariablesImpl
freeflow/rans/oneeq/staggered/localresidual.hh Dumux class OneEqResidualImpl
freeflow/rans/twoeq/kepsilon/fluxvariables.hh Dumux class KEpsilonFluxVariablesImpl
freeflow/rans/twoeq/kepsilon/localresidual.hh Dumux class KEpsilonResidualImpl
freeflow/rans/twoeq/kepsilon/staggered/fluxvariables.hh Dumux class KEpsilonFluxVariablesImpl
freeflow/rans/twoeq/kepsilon/staggered/localresidual.hh Dumux class KEpsilonResidualImpl
freeflow/rans/twoeq/komega/fluxvariables.hh Dumux class KOmegaFluxVariablesImpl
freeflow/rans/twoeq/komega/localresidual.hh Dumux class KOmegaResidualImpl
freeflow/rans/twoeq/komega/staggered/fluxvariables.hh Dumux class KOmegaFluxVariablesImpl
freeflow/rans/twoeq/komega/staggered/localresidual.hh Dumux class KOmegaResidualImpl
freeflow/rans/twoeq/lowrekepsilon/fluxvariables.hh Dumux class LowReKEpsilonFluxVariablesImpl
freeflow/rans/twoeq/lowrekepsilon/localresidual.hh Dumux class LowReKEpsilonResidualImpl
freeflow/rans/twoeq/lowrekepsilon/staggered/fluxvariables.hh Dumux class LowReKEpsilonFluxVariablesImpl
freeflow/rans/twoeq/lowrekepsilon/staggered/localresidual.hh Dumux class LowReKEpsilonResidualImpl
geomechanics/stressvariablescache.hh Dumux class StressVariablesCache non-impl, but uses default
linear/linearsolvertraits.hh Dumux struct LinearSolverTraitsImpl
multidomain/facet/couplingmanager.hh Dumux class FacetCouplingManager non-impl, but uses default
multidomain/facet/couplingmapper.hh Dumux class FacetCouplingMapper non-impl, but uses default
porousmediumflow/fluxvariablescache.hh Dumux class PorousMediumFluxVariablesCacheImplementation
porousmediumflow/fluxvariablescachefiller.hh Dumux class PorousMediumFluxVariablesCacheFillerImplementation
multidomain/fvassembler.hh Dumux::MultiDomainFVAssembler struct SubDomainAssemblerType
porousmediumflow/2p/saturationreconstruction.hh Dumux class TwoPScvSaturationReconstruction
discretization/box/scvftoscvboundarytypes.hh Dumux class ScvfToScvBoundaryTypes
Edited by Timo Koch

Merge request reports