Nektar++
Public Member Functions | Public Attributes | List of all members
Nektar::NekMeshUtils::linesource Struct Reference

#include <Octree.h>

Public Member Functions

 linesource (Array< OneD, NekDouble > p1, Array< OneD, NekDouble > p2, NekDouble r, NekDouble d)
 
bool withinRange (Array< OneD, NekDouble > p)
 
NekDouble Length ()
 

Public Attributes

Array< OneD, NekDoublex1
 
Array< OneD, NekDoublex2
 
NekDouble R
 
NekDouble delta
 

Detailed Description

Definition at line 50 of file Octree.h.

Constructor & Destructor Documentation

◆ linesource()

Nektar::NekMeshUtils::linesource::linesource ( Array< OneD, NekDouble p1,
Array< OneD, NekDouble p2,
NekDouble  r,
NekDouble  d 
)
inline

Definition at line 54 of file Octree.h.

58  : x1(p1), x2(p2), R(r), delta(d)
59  {
60  }
Array< OneD, NekDouble > x1
Definition: Octree.h:52
Array< OneD, NekDouble > x2
Definition: Octree.h:52

Member Function Documentation

◆ Length()

NekDouble Nektar::NekMeshUtils::linesource::Length ( )
inline

Definition at line 92 of file Octree.h.

Referenced by withinRange().

93  {
94  return sqrt((x1[0] - x2[0]) * (x1[0] - x2[0]) +
95  (x1[1] - x2[1]) * (x1[1] - x2[1]) +
96  (x1[2] - x2[2]) * (x1[2] - x2[2]));
97  }
Array< OneD, NekDouble > x1
Definition: Octree.h:52
Array< OneD, NekDouble > x2
Definition: Octree.h:52

◆ withinRange()

bool Nektar::NekMeshUtils::linesource::withinRange ( Array< OneD, NekDouble p)
inline

Definition at line 62 of file Octree.h.

References Length().

63  {
64  Array<OneD, NekDouble> Le(3), Re(3), s(3);
65  for (int i = 0; i < 3; i++)
66  {
67  Le[i] = p[i] - x1[i];
68  Re[i] = p[i] - x2[i];
69  s[i] = x2[i] - x1[i];
70  }
71  Array<OneD, NekDouble> dev(3);
72  dev[0] = Le[1] * Re[2] - Re[1] * Le[2];
73  dev[1] = Le[2] * Re[0] - Re[2] * Le[0];
74  dev[2] = Le[0] * Re[1] - Re[0] * Le[1];
75 
76  NekDouble dist =
77  sqrt(dev[0] * dev[0] + dev[1] * dev[1] + dev[2] * dev[2]) / Length();
78 
79  NekDouble t = -1.0 * ((x1[0] - p[0]) * s[0] + (x1[1] - p[1]) * s[1] +
80  (x1[2] - p[2]) * s[2]) / Length() / Length();
81 
82  if (dist < R && !(t > 1) && !(t < 0))
83  {
84  return true;
85  }
86  else
87  {
88  return false;
89  }
90  }
Array< OneD, NekDouble > x1
Definition: Octree.h:52
Array< OneD, NekDouble > x2
Definition: Octree.h:52
double NekDouble

Member Data Documentation

◆ delta

NekDouble Nektar::NekMeshUtils::linesource::delta

Definition at line 53 of file Octree.h.

◆ R

NekDouble Nektar::NekMeshUtils::linesource::R

Definition at line 53 of file Octree.h.

◆ x1

Array<OneD, NekDouble> Nektar::NekMeshUtils::linesource::x1

Definition at line 52 of file Octree.h.

◆ x2

Array<OneD, NekDouble> Nektar::NekMeshUtils::linesource::x2

Definition at line 52 of file Octree.h.