Flow123d  master-ae9ffcc
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 : public EquationBase {
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 {
62  : process(p), velocity_changed(false), velocity_time(0.0)
63  {}
64 
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  */
79 
80  /**
81  * Perform a single time step of flow model.
82  * Test if flow solution at @p requested_time is already available.
83  */
84  void flow_step(double requested_time);
85 
86  static const int registrar;
87 
88  ///
90 
91  /// mesh common to darcy flow and transport
93 
94  /// steady or unsteady water flow simulator based on MH scheme
95  std::shared_ptr<DarcyFlowInterface> water;
96 
97  /// solute transport with chemistry through operator splitting
99 
100  ///
102 
104 
107 };
108 
109 #endif /* HC_EXPLICIT_SEQUENTIAL_HH_ */
static Input::Type::Abstract & get_input_type()
Common abstract parent of all Field<...> classes.
Definition: field_common.hh:77
Class for solution of steady or unsteady flow with sequentially coupled explicit transport.
void advection_process_step(AdvectionData &pdata)
std::vector< AdvectionData > processes_
solute transport with chemistry through operator splitting
static const Input::Type::Record & get_input_type()
Mesh * mesh
mesh common to darcy flow and transport
AdvectionPtr make_advection_process(std::string process_key)
HC_ExplicitSequential(Input::Record in_record)
void flow_step(double requested_time)
std::shared_ptr< AdvectionProcessBase > AdvectionPtr
std::shared_ptr< DarcyFlowInterface > water
steady or unsteady water flow simulator based on MH scheme
Accessor to the data with type Type::Record.
Definition: accessors.hh:291
Class for declaration of polymorphic Record.
Record type proxy class.
Definition: type_record.hh:182
Definition: mesh.h:362
Abstract base class for equation clasess.