ASL  0.1.7
Advanced Simulation Library
aslFDAdvectionDiffusionExtended.h
Go to the documentation of this file.
1 /*
2  * Advanced Simulation Library <http://asl.org.il>
3  *
4  * Copyright 2015 Avtech Scientific <http://avtechscientific.com>
5  *
6  *
7  * This file is part of Advanced Simulation Library (ASL).
8  *
9  * ASL is free software: you can redistribute it and/or modify it
10  * under the terms of the GNU Affero General Public License as
11  * published by the Free Software Foundation, version 3 of the License.
12  *
13  * ASL is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU Affero General Public License for more details.
17  *
18  * You should have received a copy of the GNU Affero General Public License
19  * along with ASL. If not, see <http://www.gnu.org/licenses/>.
20  *
21  */
22 
23 
24 #ifndef ASLFDADVECTIONDIFFUSION_H
25 #define ASLFDADVECTIONDIFFUSION_H
26 
27 #include "../num/aslNumMethod.h"
28 
29 
30 namespace acl{
31  class Kernel;
32  class VectorOfElementsData;
33 }
34 
35 namespace asl
36 {
37  class VectorTemplate;
38  template <typename V> class DataWithGhostNodes;
39  typedef DataWithGhostNodes<acl::VectorOfElementsData> DataWithGhostNodesACLData;
40  typedef std::shared_ptr<DataWithGhostNodesACLData> SPDataWithGhostNodesACLData;
41  class AbstractDataWithGhostNodes;
42  typedef std::shared_ptr<AbstractDataWithGhostNodes> SPAbstractDataWithGhostNodes;
43 
45 
61  {
62  public:
65  private:
66  std::unique_ptr<acl::Kernel> kernel;
67 
68  std::vector<Data> cData;
69  std::vector<Data> cInternalData;
70 
71  bool electricField;
72  ScalarField efPhi;
73  ScalarField efFactor1;
74  ScalarField efFactor2;
75  std::vector<ScalarField> efChargeAnd;
76 
77  const VectorTemplate* vectorTemplate;
78 
79  int t;
80  std::vector<double> diffusionCoefficient;
81  public:
84  void setDiffusionCoefficient(double d, unsigned int i=0);
85  double getDiffusionCoefficient(unsigned int i=0);
89  virtual void init();
90  virtual void execute();
91  void addComponent(Data c, double dC);
92  void addComponent(Data c, double dC, ScalarField qAnd);
93 
94  };
95 
96  typedef std::shared_ptr<FDAdvectionDiffusionExtended> SPFDAdvectionDiffusionExtended;
97 
98 
99 } // asl
100 #endif // ASLFDADVECTIONDIFFUSION_H
Numerical method which computes multicomponent transport processes.
virtual void execute()
Executes the numerical procedure.
double getDiffusionCoefficient(unsigned int i=0)
void setDiffusionCoefficient(double d, unsigned int i=0)
void setVectorTemplate(VectorTemplate *vT)
VectorTemplate setVectorTemplate(const VectorTemplate *vT)
FDAdvectionDiffusionExtended(Data c, double dC, const VectorTemplate *vT)
void setElectricFieldParameters(ScalarField phi, ScalarField f1, ScalarField f2, ScalarField qAnd)
virtual void init()
Builds the necesery internal data and kernels.
void addComponent(Data c, double dC, ScalarField qAnd)
void addComponent(Data c, double dC)
Defines set of vectros with several properties.
Definition: aslTemplates.h:88
Advanced Computational Language.
Definition: acl.h:41
Advanced Simulation Library.
Definition: aslDataInc.h:31
DataWithGhostNodes< acl::VectorOfElementsData > DataWithGhostNodesACLData
Definition: aslGenerators.h:45
std::shared_ptr< FDAdvectionDiffusionExtended > SPFDAdvectionDiffusionExtended
std::shared_ptr< AbstractDataWithGhostNodes > SPAbstractDataWithGhostNodes
Definition: aslGenerators.h:50
std::shared_ptr< DataWithGhostNodesACLData > SPDataWithGhostNodesACLData
Definition: aslGenerators.h:47