GEOS
FlowProppantTransportSolver.hpp
Go to the documentation of this file.
1 /*
2  * ------------------------------------------------------------------------------------------------------------
3  * SPDX-License-Identifier: LGPL-2.1-only
4  *
5  * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
6  * Copyright (c) 2018-2024 TotalEnergies
7  * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
8  * Copyright (c) 2023-2024 Chevron
9  * Copyright (c) 2019- GEOS/GEOSX Contributors
10  * All rights reserved
11  *
12  * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
13  * ------------------------------------------------------------------------------------------------------------
14  */
15 
20 #ifndef GEOS_PHYSICSSOLVERS_MULTIPHYSICS_FLOWPROPPANTTRANSPORTSOLVER_HPP_
21 #define GEOS_PHYSICSSOLVERS_MULTIPHYSICS_FLOWPROPPANTTRANSPORTSOLVER_HPP_
22 
24 
25 namespace geos
26 {
27 
28 class ProppantTransport;
29 class FlowSolverBase;
30 
31 class FlowProppantTransportSolver : public CoupledSolver< ProppantTransport,
32  FlowSolverBase >
33 {
34 public:
35 
37  using Base::m_solvers;
38  using Base::m_dofManager;
39  using Base::m_localMatrix;
40  using Base::m_rhs;
41  using Base::m_solution;
42 
43  enum class SolverType : integer
44  {
46  Flow = 1
47  };
48 
54  FlowProppantTransportSolver( const string & name,
55  Group * const parent );
56 
59 
64  static string catalogName() { return "FlowProppantTransport"; }
68  string getCatalogName() const override { return catalogName(); }
69 
75  {
76  return std::get< toUnderlying( SolverType::ProppantTransport ) >( m_solvers );
77  }
78 
84  {
85  return std::get< toUnderlying( SolverType::Flow ) >( m_solvers );
86  }
87 
90 private:
91 
92  real64 sequentiallyCoupledSolverStep( real64 const & time_n,
93  real64 const & dt,
94  int const cycleNumber,
95  DomainPartition & domain ) override final;
96 
103  void preStepUpdate( real64 const & time_n,
104  real64 const & dt,
105  DomainPartition & domain );
106 
113  void postStepUpdate( real64 const & time_n,
114  real64 const & dt,
115  DomainPartition & domain );
116 
117 };
118 
119 } /* namespace geos */
120 
121 #endif /* GEOS_PHYSICSSOLVERS_MULTIPHYSICS_FLOWPROPPANTTRANSPORTSOLVER_HPP_ */
std::tuple< SOLVERS *... > m_solvers
Pointers of the single-physics solvers.
Partition of the decomposed physical domain. It also manages the connexion information to its neighbo...
ProppantTransport * proppantTransportSolver() const
accessor for the pointer to the proppant transport solver
FlowSolverBase * flowSolver() const
accessor for the pointer to the flow solver
~FlowProppantTransportSolver() override
Destructor for the class.
static string catalogName()
name of the node manager in the object catalog
FlowProppantTransportSolver(const string &name, Group *const parent)
main constructor for FlowProppantTransportSolver Objects
CRSMatrix< real64, globalIndex > m_localMatrix
Local system matrix and rhs.
DofManager m_dofManager
Data structure to handle degrees of freedom.
ParallelVector m_solution
System solution vector.
ParallelVector m_rhs
System right-hand side vector.
double real64
64-bit floating point type.
Definition: DataTypes.hpp:99
std::int32_t integer
Signed integer type.
Definition: DataTypes.hpp:82