Feature/discretization tags introduction
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 |