Nektar++
Public 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
 
virtual bool v_Move (NekDouble time) final
 Virtual function for movement of the zone at. More...
 
- 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 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:291
LibUtilities::EquationSharedPtr m_yDeform
Equation specifying prescribed motion in y-direction.
Definition: Zones.h:289
LibUtilities::EquationSharedPtr m_xDeform
Equation specifying prescribed motion in x-direction.
Definition: Zones.h:287

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

Definition at line 246 of file Zones.h.

248  {
249  return m_xDeform->Evaluate(x, y, z, t);
250  }

References m_xDeform.

◆ GetYDeform()

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

Returns point

Parameters
x

Definition at line 261 of file Zones.h.

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

References m_yDeform.

◆ GetZDeform()

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

Returns point

Parameters
x

Definition at line 276 of file Zones.h.

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

References m_zDeform.

◆ v_Move()

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

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:130
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:134

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 287 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 289 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 291 of file Zones.h.

Referenced by GetZDeform(), and v_Move().