integration.hpp
Go to the documentation of this file.
1 /*------------------------------- phasicFlow ---------------------------------
2  O C enter of
3  O O E ngineering and
4  O O M ultiscale modeling of
5  OOOOOOO F luid flow
6 ------------------------------------------------------------------------------
7  Copyright (C): www.cemf.ir
8  email: hamid.r.norouzi AT gmail.com
9 ------------------------------------------------------------------------------
10 Licence:
11  This file is part of phasicFlow code. It is a free software for simulating
12  granular and multiphase flows. You can redistribute it and/or modify it under
13  the terms of GNU General Public License v3 or any other later versions.
14 
15  phasicFlow is distributed to help others in their research in the field of
16  granular and multiphase flows, but WITHOUT ANY WARRANTY; without even the
17  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 
19 -----------------------------------------------------------------------------*/
20 
21 #ifndef __integration_hpp__
22 #define __integration_hpp__
23 
24 
25 #include "virtualConstructor.hpp"
26 #include "Vectors.hpp"
27 #include "pointStructure.hpp"
28 #include "repository.hpp"
29 
30 
31 namespace pFlow
32 {
33 
34 
36 {
37 protected:
38 
40 
41  const word baseName_;
42 
44 
45 public:
46 
47  // type info
48  TypeInfo("integration");
49 
52  const word& baseName,
54  const pointStructure& pStruct,
55  const word& method);
56 
57  virtual ~integration()=default;
58 
59  // - add a virtual constructor
62  word,
63  (const word& baseName,
65  const pointStructure& pStruct,
66  const word& method),
67  (baseName, owner, pStruct, method) );
68 
69 
71 
72  const auto& pStruct()const
73  {
74  return pStruct_;
75  }
76 
77  virtual bool predict(real dt, realx3Vector_D& y, realx3Vector_D& dy) = 0;
78 
79  virtual bool correct(real dt, realx3Vector_D& y, realx3Vector_D& dy) = 0;
80 
81  virtual bool setInitialVals(
82  const int32IndexContainer& newIndices,
83  const realx3Vector& y) = 0;
84 
85  virtual bool needSetInitialVals()const = 0;
86 
87  virtual uniquePtr<integration> clone()const=0;
88 
89  const word& baseName()const
90  {
91  return baseName_;
92  }
93 
95  {
96  return owner_;
97  }
98 
99  static
101  const word& baseName,
102  repository& owner,
103  const pointStructure& pStruct,
104  const word& method);
105 
106 };
107 
108 } // pFlow
109 
110 
111 #endif //__integration_hpp__
pFlow::integration::owner_
repository & owner_
Definition: integration.hpp:39
pFlow::real
float real
Definition: builtinTypes.hpp:46
pFlow::integration::baseName_
const word baseName_
Definition: integration.hpp:41
pFlow::integration
Definition: integration.hpp:35
pFlow::integration::pStruct
const auto & pStruct() const
Definition: integration.hpp:72
pFlow::integration::predict
virtual bool predict(real dt, realx3Vector_D &y, realx3Vector_D &dy)=0
pFlow::integration::setInitialVals
virtual bool setInitialVals(const int32IndexContainer &newIndices, const realx3Vector &y)=0
pFlow::integration::correct
virtual bool correct(real dt, realx3Vector_D &y, realx3Vector_D &dy)=0
pFlow::word
std::string word
Definition: builtinTypes.hpp:63
Vectors.hpp
pFlow::integration::baseName
const word & baseName() const
Definition: integration.hpp:89
pFlow::integration::clone
virtual uniquePtr< integration > clone() const =0
pFlow
Definition: demComponent.hpp:28
pFlow::integration::TypeInfo
TypeInfo("integration")
repository.hpp
pFlow::pointStructure
Definition: pointStructure.hpp:44
pFlow::integration::create_vCtor
create_vCtor(integration, word,(const word &baseName, repository &owner, const pointStructure &pStruct, const word &method),(baseName, owner, pStruct, method))
virtualConstructor.hpp
pFlow::VectorSingle
Definition: VectorSingle.hpp:45
pFlow::integration::create
static uniquePtr< integration > create(const word &baseName, repository &owner, const pointStructure &pStruct, const word &method)
Definition: integration.cpp:40
pFlow::integration::owner
repository & owner()
Definition: integration.hpp:94
pFlow::integration::~integration
virtual ~integration()=default
pFlow::uniquePtr
Definition: uniquePtr.hpp:44
pFlow::integration::integration
integration(const word &baseName, repository &owner, const pointStructure &pStruct, const word &method)
Definition: integration.cpp:24
pFlow::integration::pStruct_
const pointStructure & pStruct_
Definition: integration.hpp:43
pFlow::integration::needSetInitialVals
virtual bool needSetInitialVals() const =0
pFlow::repository
Definition: repository.hpp:34
pFlow::Vector< realx3 >
pointStructure.hpp
pFlow::indexContainer< int32 >