Nektar++
|
This processing module calculates the wall shear stress and adds it as an extra-field to the output file, and writes it to a surface output file. More...
#include <ProcessWallNormalData.h>
Static Public Member Functions | |
static std::shared_ptr< Module > | create (FieldSharedPtr f) |
Creates an instance of this class. More... | |
Static Public Member Functions inherited from Nektar::FieldUtils::ProcessBoundaryExtract | |
static std::shared_ptr< Module > | create (FieldSharedPtr f) |
Creates an instance of this class. More... | |
Static Public Attributes | |
static ModuleKey | className |
Static Public Attributes inherited from Nektar::FieldUtils::ProcessBoundaryExtract | |
static ModuleKey | className |
Protected Member Functions | |
void | v_Process (po::variables_map &vm) override |
Write mesh to output file. More... | |
std::string | v_GetModuleName () override |
std::string | v_GetModuleDescription () override |
Protected Member Functions inherited from Nektar::FieldUtils::ProcessBoundaryExtract | |
void | v_Process (po::variables_map &vm) override |
std::string | v_GetModuleName () override |
std::string | v_GetModuleDescription () override |
ModulePriority | v_GetModulePriority () override |
Protected Member Functions inherited from Nektar::FieldUtils::Module | |
Module () | |
virtual void | v_Process (po::variables_map &vm) |
virtual std::string | v_GetModuleName () |
virtual std::string | v_GetModuleDescription () |
virtual ModulePriority | v_GetModulePriority () |
virtual std::vector< ModuleKey > | v_GetModulePrerequisites () |
Private Member Functions | |
void | ProjectPoint (const Array< OneD, const NekDouble > &gloCoord, const Array< OneD, const NekDouble > &projDir, const NekDouble distToOrig, Array< OneD, NekDouble > &projGloCoord) |
Project a single point along the given direction to a plane. More... | |
void | ProjectVertices (const Array< OneD, const Array< OneD, NekDouble > > &pts, const Array< OneD, const NekDouble > &projDir, const NekDouble distToOrig, Array< OneD, Array< OneD, NekDouble > > &projPts) |
Project a single point along the given direction to a plane. More... | |
bool | isInProjectedArea2D (const Array< OneD, const NekDouble > &projGloCoord, const Array< OneD, const Array< OneD, NekDouble > > &projPts, const NekDouble paralTol=1.0e-12) |
Determine if the projected point is inside the projected element. More... | |
bool | isInProjectedArea3D (const Array< OneD, const NekDouble > &projGloCoord, const Array< OneD, const Array< OneD, NekDouble > > &projPts, const Array< OneD, const NekDouble > &projDir, const NekDouble paralTol=1.0e-12, const NekDouble angleTol=1.0e-6) |
bool | BisectionForLocCoordOnBndElmt (SpatialDomains::GeometrySharedPtr bndGeom, const Array< OneD, const NekDouble > &gloCoord, const Array< OneD, const Array< OneD, NekDouble > > &pts, const Array< OneD, const int > &dirUse, Array< OneD, NekDouble > &locCoord, const NekDouble iterTol=1.0e-8, const int iterMax=51) |
Use iteration to get the locCoord. This routine should be used after we have checked the projected point is inside the projected element. More... | |
bool | NewtonIterForLocCoordOnBndElmt (SpatialDomains::GeometrySharedPtr bndGeom, const Array< OneD, const NekDouble > &gloCoord, const Array< OneD, const Array< OneD, NekDouble > > &pts, const Array< OneD, const int > &dirUse, Array< OneD, NekDouble > &locCoord, NekDouble &dist, const NekDouble iterTol=1.0e-8, const int iterMax=51) |
bool | BndElmtContainsPoint (SpatialDomains::GeometrySharedPtr bndGeom, const Array< OneD, const NekDouble > &gloCoord, const Array< OneD, const NekDouble > &projDir, Array< OneD, NekDouble > &locCoord, NekDouble &projDist, const NekDouble maxDist=1.0, const NekDouble iterTol=1.0e-8) |
Check if a point can be projected onto an oundary element in a given direction. If yes, give the local coordinates of the projected point. we have checked the projected point is inside the projected element. More... | |
Private Attributes | |
int | m_spacedim |
Additional Inherited Members | |
Public Attributes inherited from Nektar::FieldUtils::Module | |
FieldSharedPtr | m_f |
Field object. More... | |
Protected Attributes inherited from Nektar::FieldUtils::Module | |
std::map< std::string, ConfigOption > | m_config |
List of configuration values. More... | |
std::set< std::string > | m_allowedFiles |
List of allowed file formats. More... | |
This processing module calculates the wall shear stress and adds it as an extra-field to the output file, and writes it to a surface output file.
Definition at line 47 of file ProcessWallNormalData.h.
Nektar::FieldUtils::ProcessWallNormalData::ProcessWallNormalData | ( | FieldSharedPtr | f | ) |
Definition at line 57 of file ProcessWallNormalData.cpp.
References Nektar::FieldUtils::Module::m_config.
|
override |
Definition at line 92 of file ProcessWallNormalData.cpp.
|
private |
Use iteration to get the locCoord. This routine should be used after we have checked the projected point is inside the projected element.
bndGeom | Geometry to get the xmap. |
gloCoord | Global coordinate of the point. size=3. |
pts | Global coordinate of the vertices of the elmt. size=2/3. |
dieUse | The main direction(s) used to compute local coordinate |
locCoord | Iteration results for local coordinate(s) |
dist | Returned distance in physical space if the collapsed locCoord is out of range [-1,1]. |
iterTol | Tolerence for iteration. |
iterMax | Maximum iteration steps |
Definition at line 591 of file ProcessWallNormalData.cpp.
References WARNINGL1.
Referenced by BndElmtContainsPoint().
|
private |
Check if a point can be projected onto an oundary element in a given direction. If yes, give the local coordinates of the projected point. we have checked the projected point is inside the projected element.
bndGeom | Pointer to the geometry of the boundary element. |
gloCoord | Global coordinate of the point. size=3. |
projDir | Projection direction, which is used as the reference direction in the 3D routine. size=3, norm=1. |
locCoord | Iteration results for local coordinates (if inside). |
projDist | Projection distance betweem the point to the wall point. |
maxDist | Disntance to check if the wall point is desired. |
iterTol | Tolerence for iteration. |
Definition at line 796 of file ProcessWallNormalData.cpp.
References BisectionForLocCoordOnBndElmt(), Vmath::Dot(), isInProjectedArea2D(), isInProjectedArea3D(), Nektar::FieldUtils::Module::m_f, NewtonIterForLocCoordOnBndElmt(), ProjectPoint(), ProjectVertices(), and WARNINGL1.
Referenced by v_Process().
|
inlinestatic |
Creates an instance of this class.
Definition at line 51 of file ProcessWallNormalData.h.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr().
void Nektar::FieldUtils::ProcessWallNormalData::GetNormals | ( | SpatialDomains::GeometrySharedPtr | bndGeom, |
const Array< OneD, const NekDouble > & | locCoord, | ||
Array< OneD, NekDouble > & | normals | ||
) |
Get the normals for a given locCoord.
bndGeom | Pointer to the geometry of the boundary element. |
locCoord | Iteration results for local coordinates (if inside). |
normals | Wall normal as the result |
Definition at line 947 of file ProcessWallNormalData.cpp.
References Nektar::FieldUtils::Module::m_f, m_spacedim, and tinysimd::sqrt().
Referenced by Nektar::FieldUtils::ProcessBodyFittedVelocity::GenPntwiseBodyFittedCoordSys(), and v_Process().
|
private |
Determine if the projected point is inside the projected element.
projGloCoord | The global coordinate of the projected single point. |
projPts | The global coordinate of the projected vertices,size=2/3 |
projDir | Projection direction, which is used as the reference direction. size=3, norm=1. |
paralTol | Tolerence to check if two vectors are parallel. |
angleTol | Tolerence to check if the total angle is 2*pi. |
projGloCoord | The global coordinate of the projected single point. |
projPts | The global coordinate of the projected vertices,size=2/3 |
projDir | Projection direction, which is used as the reference direction in the 3D routine. size=3, norm=1. |
paralTol | Tolerence to check if two vectors are parallel. |
angleTol | Tolerence to check if the total angle is 2*pi. |
Definition at line 444 of file ProcessWallNormalData.cpp.
References Vmath::Dot(), Vmath::Smul(), and tinysimd::sqrt().
Referenced by BndElmtContainsPoint().
|
private |
Definition at line 474 of file ProcessWallNormalData.cpp.
References Vmath::Dot(), Vmath::Smul(), and tinysimd::sqrt().
Referenced by BndElmtContainsPoint().
|
private |
Definition at line 642 of file ProcessWallNormalData.cpp.
References tinysimd::sqrt(), Vmath::Vsum(), and WARNINGL1.
Referenced by BndElmtContainsPoint().
|
private |
Project a single point along the given direction to a plane.
gloCoord | Global coordinate of the point. size=3. |
projDir | Projection direction, which is also the normal vector of the target plane. size=3, norm=1. |
distToOrig | The distance from the origin (0,0,0) to the target plane. |
projGloCoord | The global coordinate of the projecion result. |
gloCoord | Global coordinate of the point. size=3. |
projDir | Projection direction, which is also the normal vector of the target plane. size=3, norm=1. |
distToOrig | The distance from the origin (0,0,0) to the target plane |
projGloCoord | The global coordinate of the projecion result. |
Definition at line 380 of file ProcessWallNormalData.cpp.
References Vmath::Dot(), Vmath::Smul(), and Vmath::Vadd().
Referenced by BndElmtContainsPoint().
|
private |
Project a single point along the given direction to a plane.
Project the vertices of the elmt along the given direction to a plane.
pts | Global coordinate of the vertices of the elmt. size=2/3. |
projDir | Projection direction, which is also the normal vector of the target plane. size=3, norm=1. |
distToOrig | The distance from the origin (0,0,0) to the target plane. |
projPts | The global coordinate of the projecion result. |
Definition at line 402 of file ProcessWallNormalData.cpp.
References Vmath::Dot(), Vmath::Smul(), and Vmath::Vadd().
Referenced by BndElmtContainsPoint().
|
inlineoverrideprotectedvirtual |
Reimplemented from Nektar::FieldUtils::ProcessBoundaryExtract.
Definition at line 79 of file ProcessWallNormalData.h.
|
inlineoverrideprotectedvirtual |
Reimplemented from Nektar::FieldUtils::ProcessBoundaryExtract.
Definition at line 74 of file ProcessWallNormalData.h.
|
overrideprotectedvirtual |
Write mesh to output file.
Reimplemented from Nektar::FieldUtils::ProcessBoundaryExtract.
Definition at line 117 of file ProcessWallNormalData.cpp.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), ASSERTL0, BndElmtContainsPoint(), Vmath::Dot(), Nektar::ParseUtils::GenerateVector(), Nektar::SpatialDomains::BoundaryConditions::GetBoundaryRegions(), GetNormals(), Nektar::FieldUtils::Interpolator< T >::Interpolate(), Nektar::NekConstants::kNekUnsetDouble, Nektar::FieldUtils::Module::m_config, Nektar::FieldUtils::Module::m_f, m_spacedim, Vmath::Neg(), Nektar::LibUtilities::NullPtsInfoMap, Vmath::Smul(), tinysimd::sqrt(), and Nektar::FieldUtils::ProcessBoundaryExtract::v_Process().
|
static |
Definition at line 55 of file ProcessWallNormalData.h.
|
private |
Definition at line 85 of file ProcessWallNormalData.h.
Referenced by GetNormals(), and v_Process().