From c746986dc7fb86615be259aa2820da934470b18f Mon Sep 17 00:00:00 2001 From: Arne Morten Kvarving Date: Fri, 30 Jun 2023 11:44:56 +0200 Subject: [PATCH] ComponentName: add compile unit --- CMakeLists_files.cmake | 7 +- opm/simulators/utils/ComponentName.cpp | 122 +++++++++++++++++++++++++ opm/simulators/utils/ComponentName.hpp | 51 +---------- 3 files changed, 127 insertions(+), 53 deletions(-) create mode 100644 opm/simulators/utils/ComponentName.cpp diff --git a/CMakeLists_files.cmake b/CMakeLists_files.cmake index 492ab9446..870945c4f 100644 --- a/CMakeLists_files.cmake +++ b/CMakeLists_files.cmake @@ -72,20 +72,21 @@ list (APPEND MAIN_SOURCE_FILES opm/simulators/linalg/PreconditionerFactory6.cpp opm/simulators/linalg/PropertyTree.cpp opm/simulators/linalg/setupPropertyTree.cpp - opm/simulators/utils/PartiallySupportedFlowKeywords.cpp - opm/simulators/utils/readDeck.cpp - opm/simulators/utils/UnsupportedFlowKeywords.cpp opm/simulators/timestepping/AdaptiveSimulatorTimer.cpp opm/simulators/timestepping/AdaptiveTimeSteppingEbos.cpp opm/simulators/timestepping/TimeStepControl.cpp opm/simulators/timestepping/SimulatorTimer.cpp opm/simulators/timestepping/SimulatorTimerInterface.cpp opm/simulators/timestepping/gatherConvergenceReport.cpp + opm/simulators/utils/ComponentName.cpp opm/simulators/utils/DeferredLogger.cpp opm/simulators/utils/gatherDeferredLogger.cpp opm/simulators/utils/ParallelFileMerger.cpp opm/simulators/utils/ParallelRestart.cpp + opm/simulators/utils/PartiallySupportedFlowKeywords.cpp + opm/simulators/utils/readDeck.cpp opm/simulators/utils/SerializationPackers.cpp + opm/simulators/utils/UnsupportedFlowKeywords.cpp opm/simulators/wells/ALQState.cpp opm/simulators/wells/BlackoilWellModelConstraints.cpp opm/simulators/wells/BlackoilWellModelGeneric.cpp diff --git a/opm/simulators/utils/ComponentName.cpp b/opm/simulators/utils/ComponentName.cpp new file mode 100644 index 000000000..ffdc4bc06 --- /dev/null +++ b/opm/simulators/utils/ComponentName.cpp @@ -0,0 +1,122 @@ +/* + Copyright 2013, 2015 SINTEF ICT, Applied Mathematics. + Copyright 2014, 2015 Dr. Blatt - HPC-Simulation-Software & Services + Copyright 2014, 2015 Statoil ASA. + Copyright 2015 NTNU + Copyright 2015, 2016, 2017 IRIS AS + + This file is part of the Open Porous Media project (OPM). + + OPM is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + OPM is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with OPM. If not, see . +*/ + +#include +#include + +#include + +#include +#include +#include + +#include + +namespace Opm { + +template +ComponentName::ComponentName() + : names_(Indices::numEq) +{ + for (unsigned phaseIdx = 0; phaseIdx < FluidSystem::numPhases; ++phaseIdx) { + if (!FluidSystem::phaseIsActive(phaseIdx)) { + continue; + } + + const unsigned canonicalCompIdx = FluidSystem::solventComponentIndex(phaseIdx); + names_[Indices::canonicalToActiveComponentIndex(canonicalCompIdx)] + = FluidSystem::componentName(canonicalCompIdx); + } + + if constexpr (Indices::enableSolvent) { + names_[Indices::solventSaturationIdx] = "Solvent"; + } + + if constexpr (Indices::enableExtbo) { + names_[Indices::zFractionIdx] = "ZFraction"; + } + + if constexpr (Indices::enablePolymer) { + names_[Indices::polymerConcentrationIdx] = "Polymer"; + } + + if constexpr (Indices::polymerMoleWeightIdx >= 0) { + assert(Indices::enablePolymer); + names_[Indices::polymerMoleWeightIdx] = "MolecularWeightP"; + } + + if constexpr (Indices::enableEnergy) { + names_[Indices::temperatureIdx] = "Energy"; + } + + if constexpr (Indices::numFoam == 1) { + names_[Indices::foamConcentrationIdx] = "Foam"; + } + + if constexpr (Indices::numBrine == 1) { + names_[Indices::saltConcentrationIdx] = "Brine"; + } + + if constexpr (Indices::enableMICP) { + names_[Indices::microbialConcentrationIdx] = "Microbes"; + names_[Indices::oxygenConcentrationIdx] = "Oxygen"; + names_[Indices::ureaConcentrationIdx] = "Urea"; + names_[Indices::biofilmConcentrationIdx] = "Biofilm"; + names_[Indices::calciteConcentrationIdx] = "Calcite"; + } +} + +#define INSTANCE( ...) \ +template class ComponentName, \ + __VA_ARGS__>; + +// One phase +INSTANCE(BlackOilOnePhaseIndices<0u,0u,0u,0u,false,false,0u,1u,0u>) +INSTANCE(BlackOilOnePhaseIndices<0u,0u,0u,1u,false,false,0u,1u,0u>) +INSTANCE(BlackOilOnePhaseIndices<0u,0u,0u,0u,false,false,0u,1u,5u>) + +// Two phase +INSTANCE(BlackOilTwoPhaseIndices<0u,0u,0u,0u,false,false,0u,0u,0u>) +INSTANCE(BlackOilTwoPhaseIndices<0u,0u,0u,0u,false,false,0u,1u,0u>) +INSTANCE(BlackOilTwoPhaseIndices<0u,0u,0u,0u,false,false,0u,2u,0u>) +INSTANCE(BlackOilTwoPhaseIndices<0u,0u,1u,0u,false,false,0u,2u,0u>) +INSTANCE(BlackOilTwoPhaseIndices<0u,0u,2u,0u,false,false,0u,2u,0u>) +INSTANCE(BlackOilTwoPhaseIndices<0u,0u,0u,0u,false,true,0u,2u,0u>) +INSTANCE(BlackOilTwoPhaseIndices<0u,0u,0u,1u,false,false,0u,1u,0u>) +INSTANCE(BlackOilTwoPhaseIndices<0u,0u,0u,0u,false,true,0u,0u,0u>) +INSTANCE(BlackOilTwoPhaseIndices<0u,0u,0u,1u,false,false,0u,0u,0u>) +INSTANCE(BlackOilTwoPhaseIndices<0u,0u,0u,1u,false,true,0u,0u,0u>) +INSTANCE(BlackOilTwoPhaseIndices<1u,0u,0u,0u,false,false,0u,0u,0u>) + +// Blackoil +INSTANCE(BlackOilIndices<0u,0u,0u,0u,false,false,0u,0u>) +INSTANCE(BlackOilIndices<0u,0u,0u,0u,true,false,0u,0u>) +INSTANCE(BlackOilIndices<0u,0u,0u,0u,false,true,0u,0u>) +INSTANCE(BlackOilIndices<1u,0u,0u,0u,false,false,0u,0u>) +INSTANCE(BlackOilIndices<0u,1u,0u,0u,false,false,0u,0u>) +INSTANCE(BlackOilIndices<0u,0u,1u,0u,false,false,0u,0u>) +INSTANCE(BlackOilIndices<0u,0u,0u,1u,false,false,0u,0u>) +INSTANCE(BlackOilIndices<0u,0u,0u,1u,false,true,0u,0u>) +INSTANCE(BlackOilIndices<1u,0u,0u,0u,true,false,0u,0u>) + +} // namespace Opm diff --git a/opm/simulators/utils/ComponentName.hpp b/opm/simulators/utils/ComponentName.hpp index 01c45b9bc..35210f672 100644 --- a/opm/simulators/utils/ComponentName.hpp +++ b/opm/simulators/utils/ComponentName.hpp @@ -33,56 +33,7 @@ template class ComponentName { public: - ComponentName() - : names_(Indices::numEq) - { - for (unsigned phaseIdx = 0; phaseIdx < FluidSystem::numPhases; ++phaseIdx) { - if (!FluidSystem::phaseIsActive(phaseIdx)) { - continue; - } - - const unsigned canonicalCompIdx = FluidSystem::solventComponentIndex(phaseIdx); - names_[Indices::canonicalToActiveComponentIndex(canonicalCompIdx)] - = FluidSystem::componentName(canonicalCompIdx); - } - - if constexpr (Indices::enableSolvent) { - names_[Indices::solventSaturationIdx] = "Solvent"; - } - - if constexpr (Indices::enableExtbo) { - names_[Indices::zFractionIdx] = "ZFraction"; - } - - if constexpr (Indices::enablePolymer) { - names_[Indices::polymerConcentrationIdx] = "Polymer"; - } - - if constexpr (Indices::polymerMoleWeightIdx >= 0) { - assert(Indices::enablePolymer); - names_[Indices::polymerMoleWeightIdx] = "MolecularWeightP"; - } - - if constexpr (Indices::enableEnergy) { - names_[Indices::temperatureIdx] = "Energy"; - } - - if constexpr (Indices::numFoam == 1) { - names_[Indices::foamConcentrationIdx] = "Foam"; - } - - if constexpr (Indices::numBrine == 1) { - names_[Indices::saltConcentrationIdx] = "Brine"; - } - - if constexpr (Indices::enableMICP) { - names_[Indices::microbialConcentrationIdx] = "Microbes"; - names_[Indices::oxygenConcentrationIdx] = "Oxygen"; - names_[Indices::ureaConcentrationIdx] = "Urea"; - names_[Indices::biofilmConcentrationIdx] = "Biofilm"; - names_[Indices::calciteConcentrationIdx] = "Calcite"; - } - } + ComponentName(); const std::string& name(const int compIdx) const {