Flow123d  release_3.0.0-1111-g6aae175
hc_explicit_sequential.hh
Go to the documentation of this file.
1 /*!
2  *
3  * Copyright (C) 2015 Technical University of Liberec. All rights reserved.
4  *
5  * This program is free software; you can redistribute it and/or modify it under
6  * the terms of the GNU General Public License version 3 as published by the
7  * Free Software Foundation. (http://www.gnu.org/licenses/gpl-3.0.en.html)
8  *
9  * This program is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11  * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12  *
13  *
14  * @file hc_explicit_sequential.hh
15  * @brief
16  * @author Jan Brezina
17  */
18 
19 #ifndef HC_EXPLICIT_SEQUENTIAL_HH_
20 #define HC_EXPLICIT_SEQUENTIAL_HH_
21 
22 #include <memory>
23 #include <string>
24 #include <vector>
27 #include "coupling/equation.hh"
28 
29 class DarcyFlowInterface;
30 class Mesh;
32 class FieldCommon;
33 
34 
35 /**
36  * TODO: should be derived from EquationBase in order to chain couplings
37  */
38 class CouplingBase {
39 public:
41 
42 };
43 
44 
45 /**
46  * @brief Class for solution of steady or unsteady flow with sequentially coupled explicit transport.
47  *
48  */
50 public:
51  static const Input::Type::Record & get_input_type();
52 
54  void run_simulation();
56 
57 private:
58  typedef std::shared_ptr<AdvectionProcessBase> AdvectionPtr;
59 
60  struct AdvectionData {
61  AdvectionData(AdvectionPtr p)
62  : process(p), velocity_changed(false), velocity_time(0.0)
63  {}
64 
65  AdvectionPtr process;
67  double velocity_time;
68  };
69 
70  /**
71  * Create an advection process for given input key.
72  */
73  AdvectionPtr make_advection_process(std::string process_key);
74 
75  /**
76  * Perform a single time step of given advection process.
77  */
78  void advection_process_step(AdvectionData &pdata);
79 
80  static const int registrar;
81 
82  ///
84 
85  /// mesh common to darcy flow and transport
87 
88  /// steady or unsteady water flow simulator based on MH scheme
89  std::shared_ptr<DarcyFlowInterface> water;
90 
91  /// solute transport with chemistry through operator splitting
93 
94  ///
96 
98 
101 };
102 
103 #endif /* HC_EXPLICIT_SEQUENTIAL_HH_ */
Mesh * mesh
mesh common to darcy flow and transport
Abstract base class for equation clasess.
Common abstract parent of all Field<...> classes.
Definition: field_common.hh:73
static Input::Type::Abstract & get_input_type()
Definition: mesh.h:76
std::vector< AdvectionData > processes_
solute transport with chemistry through operator splitting
Accessor to the data with type Type::Record.
Definition: accessors.hh:292
std::shared_ptr< DarcyFlowInterface > water
steady or unsteady water flow simulator based on MH scheme
FieldCommon * water_content_saturated_
Class for declaration of polymorphic Record.
std::shared_ptr< AdvectionProcessBase > AdvectionPtr
Record type proxy class.
Definition: type_record.hh:182
Class for solution of steady or unsteady flow with sequentially coupled explicit transport.