aslFDAdvectionDiffusion.h
Go to the documentation of this file.
/*
* Advanced Simulation Library <http://asl.org.il>
*
* Copyright 2015 Avtech Scientific <http://avtechscientific.com>
*
*
* This file is part of Advanced Simulation Library (ASL).
*
* ASL is free software: you can redistribute it and/or modify it
* under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, version 3 of the License.
*
* ASL is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with ASL. If not, see <http://www.gnu.org/licenses/>.
*
*/
#ifndef ASLFDADVECTIONDIFFUSION_H
#define ASLFDADVECTIONDIFFUSION_H
#include "aslSingleKernelNM.h"
namespace acl
{
class VectorOfElementsData;
class VectorOfElements;
}
namespace asl
{
class VectorTemplate;
template <typename V> class DataWithGhostNodes;
typedef DataWithGhostNodes<acl::VectorOfElementsData> DataWithGhostNodesACLData;
typedef std::shared_ptr<DataWithGhostNodesACLData> SPDataWithGhostNodesACLData;
class AbstractDataWithGhostNodes;
typedef std::shared_ptr<AbstractDataWithGhostNodes> SPAbstractDataWithGhostNodes;
class FDAdvectionDiffusion: public SingleKernelNM
{
public:
typedef SPDataWithGhostNodesACLData Data;
typedef SPAbstractDataWithGhostNodes Field;
private:
std::vector<Data> cData;
std::vector<Data> cInternalData;
bool electricField;
Field efPhi;
Field efFactor1;
Field efFactor2;
std::vector<Field> efChargeAnd;
Field velocity;
Field distributionFunction;
bool compressibilityCorrectionFlag;
const VectorTemplate* vectorTemplate;
int t;
std::vector<acl::VectorOfElements> diffusionCoefficient;
virtual void init0();
virtual void postProcessing();
public:
FDAdvectionDiffusion();
FDAdvectionDiffusion(Data c,
const acl::VectorOfElements & dC,
const VectorTemplate* vT);
void setDiffusionCoefficient(acl::VectorOfElements d,
unsigned int i = 0);
inline const acl::VectorOfElements & getDiffusionCoefficient(unsigned int i=0) const;
void setVectorTemplate(VectorTemplate* vT);
inline const VectorTemplate* getVectorTemplate() const;
void setElectricFieldParameters(Field phi,
Field f1,
Field f2,
Field qAnd);
void setVelocity(Field v, bool compressibilityCorrection=false);
void setDistributionFunction(Field f);
inline Field getVelocity();
inline Field getDistributionFunction();
inline std::vector<Data> & getData();
void addComponent(Data c, acl::VectorOfElements & dC);
void addComponent(Data c, acl::VectorOfElements & dC, Field qAnd);
};
typedef std::shared_ptr<FDAdvectionDiffusion> SPFDAdvectionDiffusion;
SPFDAdvectionDiffusion generateFDAdvectionDiffusion(SPDataWithGhostNodesACLData c,
double diffustionCoeff,
SPAbstractDataWithGhostNodes v,
const VectorTemplate* vt,
bool compressibilityCorrection = false);
SPFDAdvectionDiffusion generateFDAdvectionDiffusion(SPDataWithGhostNodesACLData c,
double diffustionCoeff,
const VectorTemplate* vt);
// ------------------------- Implementation ------------------------
inline FDAdvectionDiffusion::Field FDAdvectionDiffusion::getVelocity()
{
return velocity;
}
inline FDAdvectionDiffusion::Field FDAdvectionDiffusion::getDistributionFunction()
{
return distributionFunction;
}
inline std::vector<FDAdvectionDiffusion::Data> & FDAdvectionDiffusion::getData()
{
return cData;
}
inline const VectorTemplate* FDAdvectionDiffusion::getVectorTemplate() const
{
return vectorTemplate;
}
inline const acl::VectorOfElements &
FDAdvectionDiffusion::getDiffusionCoefficient(unsigned int i) const
{
return diffusionCoefficient[i];
}
} // asl
#endif // ASLFDADVECTIONDIFFUSION_H
acl::VectorOfElements
The class represents several Element.
Definition: aclVectorOfElementsDef.h:92
asl::FDAdvectionDiffusion
Numerical method which computes multicomponent transport processes.
Definition: aslFDAdvectionDiffusion.h:61
asl::FDAdvectionDiffusion::setVectorTemplate
void setVectorTemplate(VectorTemplate *vT)
asl::FDAdvectionDiffusion::getDistributionFunction
Field getDistributionFunction()
Definition: aslFDAdvectionDiffusion.h:151
asl::FDAdvectionDiffusion::addComponent
void addComponent(Data c, acl::VectorOfElements &dC)
asl::FDAdvectionDiffusion::getVelocity
Field getVelocity()
Definition: aslFDAdvectionDiffusion.h:146
asl::FDAdvectionDiffusion::FDAdvectionDiffusion
FDAdvectionDiffusion(Data c, const acl::VectorOfElements &dC, const VectorTemplate *vT)
asl::FDAdvectionDiffusion::setDistributionFunction
void setDistributionFunction(Field f)
asl::FDAdvectionDiffusion::FDAdvectionDiffusion
FDAdvectionDiffusion()
asl::FDAdvectionDiffusion::Field
SPAbstractDataWithGhostNodes Field
Definition: aslFDAdvectionDiffusion.h:64
asl::FDAdvectionDiffusion::getVectorTemplate
const VectorTemplate * getVectorTemplate() const
Definition: aslFDAdvectionDiffusion.h:161
asl::FDAdvectionDiffusion::addComponent
void addComponent(Data c, acl::VectorOfElements &dC, Field qAnd)
asl::FDAdvectionDiffusion::setVelocity
void setVelocity(Field v, bool compressibilityCorrection=false)
asl::FDAdvectionDiffusion::getData
std::vector< Data > & getData()
Definition: aslFDAdvectionDiffusion.h:156
asl::FDAdvectionDiffusion::Data
SPDataWithGhostNodesACLData Data
Definition: aslFDAdvectionDiffusion.h:63
asl::FDAdvectionDiffusion::setDiffusionCoefficient
void setDiffusionCoefficient(acl::VectorOfElements d, unsigned int i=0)
asl::FDAdvectionDiffusion::setElectricFieldParameters
void setElectricFieldParameters(Field phi, Field f1, Field f2, Field qAnd)
asl::FDAdvectionDiffusion::getDiffusionCoefficient
const acl::VectorOfElements & getDiffusionCoefficient(unsigned int i=0) const
Definition: aslFDAdvectionDiffusion.h:167
asl::SingleKernelNM
Definition: aslSingleKernelNM.h:47
asl::VectorTemplate
Defines set of vectros with several properties.
Definition: aslTemplates.h:88
asl::generateFDAdvectionDiffusion
SPFDAdvectionDiffusion generateFDAdvectionDiffusion(SPDataWithGhostNodesACLData c, double diffustionCoeff, SPAbstractDataWithGhostNodes v, const VectorTemplate *vt, bool compressibilityCorrection=false)
acl
Advanced Computational Language.
Definition: acl.h:41
asl
Advanced Simulation Library.
Definition: aslDataInc.h:31
asl::DataWithGhostNodesACLData
DataWithGhostNodes< acl::VectorOfElementsData > DataWithGhostNodesACLData
Definition: aslGenerators.h:45
asl::SPAbstractDataWithGhostNodes
std::shared_ptr< AbstractDataWithGhostNodes > SPAbstractDataWithGhostNodes
Definition: aslGenerators.h:50
asl::SPDataWithGhostNodesACLData
std::shared_ptr< DataWithGhostNodesACLData > SPDataWithGhostNodesACLData
Definition: aslGenerators.h:47
asl::SPFDAdvectionDiffusion
std::shared_ptr< FDAdvectionDiffusion > SPFDAdvectionDiffusion
Definition: aslFDAdvectionDiffusion.h:113
aslSingleKernelNM.h