Nektar++
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Nektar::SpatialDomains::ZonePrescribe Struct Referencefinal

Prescribed zone: applies equation to every point. More...

#include <Zones.h>

Inheritance diagram for Nektar::SpatialDomains::ZonePrescribe:
[legend]

Public Member Functions

 ZonePrescribe (int id, const CompositeMap &domain, const int coordDim, LibUtilities::EquationSharedPtr xDeform, LibUtilities::EquationSharedPtr yDeform, LibUtilities::EquationSharedPtr zDeform)
 
virtual ~ZonePrescribe ()=default
 Default destructor. More...
 
NekDouble GetXDeform (NekDouble x, NekDouble y, NekDouble z, NekDouble t) const
 
NekDouble GetYDeform (NekDouble x, NekDouble y, NekDouble z, NekDouble t) const
 
NekDouble GetZDeform (NekDouble x, NekDouble y, NekDouble z, NekDouble t) const
 
- Public Member Functions inherited from Nektar::SpatialDomains::ZoneBase
 ZoneBase (MovementType type, int indx, CompositeMap domain, int coordDim)
 Constructor. More...
 
virtual ~ZoneBase ()=default
 Default destructor. More...
 
MovementType GetMovementType () const
 Returns the type of movement. More...
 
CompositeMap GetDomain () const
 Returns the domain the zone is on. More...
 
int & GetId ()
 Returns the zone ID. More...
 
bool Move (NekDouble time)
 Performs the movement of the zone at. More...
 
std::vector< GeometrySharedPtr > const & GetElements () const
 Returns all highest dimension elements in the zone. More...
 
bool & GetMoved ()
 Returns the flag which states if the zone has moved in this timestep. More...
 
void ClearBoundingBoxes ()
 Clears all bounding boxes associated with the zones elements. More...
 

Protected Member Functions

virtual bool v_Move (NekDouble time) final
 Virtual function for movement of the zone at. More...
 
virtual bool v_Move (NekDouble time)
 Virtual function for movement of the zone at. More...
 

Protected Attributes

LibUtilities::EquationSharedPtr m_xDeform
 Equation specifying prescribed motion in x-direction. More...
 
LibUtilities::EquationSharedPtr m_yDeform
 Equation specifying prescribed motion in y-direction. More...
 
LibUtilities::EquationSharedPtr m_zDeform
 Equation specifying prescribed motion in z-direction. More...
 
- Protected Attributes inherited from Nektar::SpatialDomains::ZoneBase
MovementType m_type = MovementType::eNone
 Type of zone movement. More...
 
int m_id
 Zone ID. More...
 
CompositeMap m_domain
 Zone domain. More...
 
std::vector< GeometrySharedPtrm_elements
 Vector of highest dimension zone elements. More...
 
bool m_moved = true
 Moved flag. More...
 
int m_coordDim
 Coordinate dimension. More...
 
std::vector< PointGeomSharedPtrm_verts
 Vector of all points in the zone. More...
 
std::vector< CurveSharedPtrm_curves
 Vector of all curves in the zone. More...
 
std::vector< PointGeomm_origVerts
 Vector of all points in the zone at initialisation. More...
 

Detailed Description

Prescribed zone: applies equation to every point.

Definition at line 213 of file Zones.h.

Constructor & Destructor Documentation

◆ ZonePrescribe()

Nektar::SpatialDomains::ZonePrescribe::ZonePrescribe ( int  id,
const CompositeMap domain,
const int  coordDim,
LibUtilities::EquationSharedPtr  xDeform,
LibUtilities::EquationSharedPtr  yDeform,
LibUtilities::EquationSharedPtr  zDeform 
)
inline

Constructor for prescribed zone

Parameters
idZone ID
domainDomain that the zone consists of
coordDimCoordinate dimension
xDeformEquation for prescribed motion of x-coordinate
yDeformEquation for prescribed motion of y-coordinate
zDeformEquation for prescribed motion of z-coordinate

Definition at line 225 of file Zones.h.

229 : ZoneBase(MovementType::ePrescribe, id, domain, coordDim),
230 m_xDeform(xDeform), m_yDeform(yDeform), m_zDeform(zDeform)
231 {
232 }
ZoneBase(MovementType type, int indx, CompositeMap domain, int coordDim)
Constructor.
Definition: Zones.cpp:47
LibUtilities::EquationSharedPtr m_zDeform
Equation specifying prescribed motion in z-direction.
Definition: Zones.h:288
LibUtilities::EquationSharedPtr m_yDeform
Equation specifying prescribed motion in y-direction.
Definition: Zones.h:286
LibUtilities::EquationSharedPtr m_xDeform
Equation specifying prescribed motion in x-direction.
Definition: Zones.h:284

References Nektar::SpatialDomains::ePrescribe.

◆ ~ZonePrescribe()

virtual Nektar::SpatialDomains::ZonePrescribe::~ZonePrescribe ( )
virtualdefault

Default destructor.

Member Function Documentation

◆ GetXDeform()

NekDouble Nektar::SpatialDomains::ZonePrescribe::GetXDeform ( NekDouble  x,
NekDouble  y,
NekDouble  z,
NekDouble  t 
) const
inline

Returns point

Parameters
x

param y

Parameters
zdeformation in the x direction at time
t
xx-coordinate
yy-coordinate
zz-coordinate
ttime
Returns
deformation in x direction

Definition at line 246 of file Zones.h.

248 {
249 return m_xDeform->Evaluate(x, y, z, t);
250 }
std::vector< double > z(NPUPPER)

References m_xDeform, and Nektar::UnitTests::z().

◆ GetYDeform()

NekDouble Nektar::SpatialDomains::ZonePrescribe::GetYDeform ( NekDouble  x,
NekDouble  y,
NekDouble  z,
NekDouble  t 
) const
inline

Returns point

Parameters
x

param y

Parameters
zdeformation in the y direction at time
t
xx-coordinate
yy-coordinate
zz-coordinate
ttime
Returns
deformation in y direction

Definition at line 261 of file Zones.h.

263 {
264 return m_yDeform->Evaluate(x, y, z, t);
265 }

References m_yDeform, and Nektar::UnitTests::z().

◆ GetZDeform()

NekDouble Nektar::SpatialDomains::ZonePrescribe::GetZDeform ( NekDouble  x,
NekDouble  y,
NekDouble  z,
NekDouble  t 
) const
inline

Returns point

Parameters
x

param y

Parameters
zdeformation in the z direction at time
t
xx-coordinate
yy-coordinate
zz-coordinate
ttime
Returns
deformation in z direction

Definition at line 276 of file Zones.h.

278 {
279 return m_zDeform->Evaluate(x, y, z, t);
280 }

References m_zDeform, and Nektar::UnitTests::z().

◆ v_Move()

bool Nektar::SpatialDomains::ZonePrescribe::v_Move ( NekDouble  time)
finalprotectedvirtual

Virtual function for movement of the zone at.

Parameters
time

Reimplemented from Nektar::SpatialDomains::ZoneBase.

Definition at line 285 of file Zones.cpp.

286{
287 int cnt = 0;
288 for (auto &vert : m_verts)
289 {
290 auto pnt = m_origVerts[cnt++];
291
292 Array<OneD, NekDouble> coords(3, 0.0);
293 vert->GetCoords(coords);
294
295 Array<OneD, NekDouble> newLoc(3, 0.0);
296 newLoc[0] =
297 m_xDeform->Evaluate(coords[0], coords[1], coords[2], time) + pnt(0);
298 newLoc[1] =
299 m_yDeform->Evaluate(coords[0], coords[1], coords[2], time) + pnt(1);
300 newLoc[2] =
301 m_zDeform->Evaluate(coords[0], coords[1], coords[2], time) + pnt(2);
302
303 vert->UpdatePosition(newLoc[0], newLoc[1], newLoc[2]);
304 }
305
307
308 return true;
309}
std::vector< PointGeomSharedPtr > m_verts
Vector of all points in the zone.
Definition: Zones.h:123
void ClearBoundingBoxes()
Clears all bounding boxes associated with the zones elements.
Definition: Zones.cpp:158
std::vector< PointGeom > m_origVerts
Vector of all points in the zone at initialisation.
Definition: Zones.h:127

References Nektar::SpatialDomains::ZoneBase::ClearBoundingBoxes(), Nektar::SpatialDomains::ZoneBase::m_origVerts, Nektar::SpatialDomains::ZoneBase::m_verts, m_xDeform, m_yDeform, and m_zDeform.

Member Data Documentation

◆ m_xDeform

LibUtilities::EquationSharedPtr Nektar::SpatialDomains::ZonePrescribe::m_xDeform
protected

Equation specifying prescribed motion in x-direction.

Definition at line 284 of file Zones.h.

Referenced by GetXDeform(), and v_Move().

◆ m_yDeform

LibUtilities::EquationSharedPtr Nektar::SpatialDomains::ZonePrescribe::m_yDeform
protected

Equation specifying prescribed motion in y-direction.

Definition at line 286 of file Zones.h.

Referenced by GetYDeform(), and v_Move().

◆ m_zDeform

LibUtilities::EquationSharedPtr Nektar::SpatialDomains::ZonePrescribe::m_zDeform
protected

Equation specifying prescribed motion in z-direction.

Definition at line 288 of file Zones.h.

Referenced by GetZDeform(), and v_Move().