Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Compositional: 1D example for validation #876

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions CMakeLists.txt
Expand Up @@ -210,6 +210,7 @@ foreach(tapp co2injection_flash_ni_vcfv
co2injection_ncp_ni_ecfv
co2injection_pvs_ni_ecfv
co2_ptflash_ecfv
co2_ptflash_ecfv_validation
powerinjection_forchheimer_fd
powerinjection_forchheimer_ad
powerinjection_darcy_fd
Expand Down
62 changes: 62 additions & 0 deletions tests/co2_ptflash_ecfv_validation.cc
@@ -0,0 +1,62 @@
// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
// vi: set et ts=4 sw=4 sts=4:
/*
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 2 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 <http://www.gnu.org/licenses/>.

Consult the COPYING file in the top-level source directory of this
module for the precise wording of the license and the list of
copyright holders.
*/
/*!
* \file
*
* \brief Box problem with two phases and multiple components.
* Solved with a PTFlash two phase solver.
*/
#include "config.h"

#include <opm/models/utils/start.hh>
#include "problems/co2ptflashproblemvalidation.hh"


namespace Opm::Properties {

namespace TTag {
struct CO2PTEcfvProblemValidation {
using InheritsFrom = std::tuple<CO2PTBaseProblem, FlashModel>;
};
}

template <class TypeTag>
struct SpatialDiscretizationSplice<TypeTag, TTag::CO2PTEcfvProblemValidation>
{
using type = TTag::EcfvDiscretization;
};

template <class TypeTag>
struct LocalLinearizerSplice<TypeTag, TTag::CO2PTEcfvProblemValidation>
{
using type = TTag::AutoDiffLocalLinearizer;
};


} // namespace Opm::Properties

int main(int argc, char **argv)
{
using EcfvProblemTypeTag = Opm::Properties::TTag::CO2PTEcfvProblemValidation;
return Opm::start<EcfvProblemTypeTag>(argc, argv);
}
20 changes: 20 additions & 0 deletions tests/problems/co2ptflashproblem.hh
Expand Up @@ -218,6 +218,26 @@ struct VtkWriteFilterVelocities<TypeTag, TTag::CO2PTBaseProblem> {
static constexpr bool value = true;
};

template <class TypeTag>
struct VtkWriteViscosities<TypeTag, TTag::CO2PTBaseProblem> {
static constexpr bool value = true;
};

template <class TypeTag>
struct VtkWritePorosity<TypeTag, TTag::CO2PTBaseProblem> {
static constexpr bool value = true;
};

template <class TypeTag>
struct VtkWriteIntrinsicPermeabilities<TypeTag, TTag::CO2PTBaseProblem> {
static constexpr bool value = true;
};

template <class TypeTag>
struct VtkWriteMobilities<TypeTag, TTag::CO2PTBaseProblem> {
static constexpr bool value = true;
};

template <class TypeTag>
struct VtkWritePotentialGradients<TypeTag, TTag::CO2PTBaseProblem> {
static constexpr bool value = true;
Expand Down