ASL 0.1.7
Advanced Simulation Library
Loading...
Searching...
No Matches
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
30namespace acl{
31 class Kernel;
32 class VectorOfElementsData;
33}
34
35namespace asl
36{
37 class VectorTemplate;
38 template <typename V> class DataWithGhostNodes;
40 typedef std::shared_ptr<DataWithGhostNodesACLData> SPDataWithGhostNodesACLData;
41 class AbstractDataWithGhostNodes;
42 typedef std::shared_ptr<AbstractDataWithGhostNodes> SPAbstractDataWithGhostNodes;
43
45
60 class FDAdvectionDiffusionExtended: public NumMethod
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
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.
SPDataWrapperACLData generateDataContainerACL_SP(const Block &b, unsigned int n=1)
generates pointer to ACL Data field with n components
Advanced Computational Language.
Definition acl.h:41
Advanced Simulation Library.
Definition aslDataInc.h:31
DataWithGhostNodes< acl::VectorOfElementsData > DataWithGhostNodesACLData
std::shared_ptr< FDAdvectionDiffusionExtended > SPFDAdvectionDiffusionExtended
std::shared_ptr< AbstractDataWithGhostNodes > SPAbstractDataWithGhostNodes
std::shared_ptr< DataWithGhostNodesACLData > SPDataWithGhostNodesACLData