oomph::AnnularDomain Class Reference

Annular domain. More...

#include <annular_domain.h>

+ Inheritance diagram for oomph::AnnularDomain:

Public Member Functions

 AnnularDomain (const double &azimuthal_fraction, const unsigned &ntheta, const unsigned &nr, const double &a, const double &h, const double &phi)
 
 AnnularDomain (const AnnularDomain &)=delete
 Broken copy constructor. More...
 
void operator= (const AnnularDomain &)=delete
 Broken assignment operator. More...
 
 ~AnnularDomain ()
 Destructor: Empty; cleanup done in base class. More...
 
void macro_element_boundary (const unsigned &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)
 
- Public Member Functions inherited from oomph::Domain
 Domain ()
 Constructor. More...
 
 Domain (const Domain &)=delete
 Broken copy constructor. More...
 
void operator= (const Domain &)=delete
 Broken assignment operator. More...
 
virtual ~Domain ()
 
MacroElementmacro_element_pt (const unsigned &i)
 Access to i-th macro element. More...
 
unsigned nmacro_element ()
 Number of macro elements in domain. More...
 
void output (const std::string &filename, const unsigned &nplot)
 Output macro elements. More...
 
void output (std::ostream &outfile, const unsigned &nplot)
 Output macro elements. More...
 
virtual void macro_element_boundary (const double &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)
 
void macro_element_boundary (const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)
 
void output_macro_element_boundaries (const std::string &filename, const unsigned &nplot)
 Output all macro element boundaries as tecplot zones. More...
 
void output_macro_element_boundaries (std::ostream &outfile, const unsigned &nplot)
 Output all macro element boundaries as tecplot zones. More...
 
virtual void dmacro_element_boundary (const unsigned &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)
 
virtual void dmacro_element_boundary (const double &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)
 
void dmacro_element_boundary (const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)
 
virtual void d2macro_element_boundary (const unsigned &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)
 
virtual void d2macro_element_boundary (const double &t, const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)
 
void d2macro_element_boundary (const unsigned &i_macro, const unsigned &i_direct, const Vector< double > &s, Vector< double > &f)
 

Private Attributes

double Azimuthal_fraction
 Azimuthal fraction. More...
 
double Inner_radius
 Inner radius. More...
 
double Thickness
 Thickness. More...
 
unsigned Ntheta
 Number of macro elements in azimuthal direction. More...
 
unsigned Nr
 Number of macro elements in radial direction. More...
 
double Phi
 Rotation angle. More...
 

Additional Inherited Members

- Protected Attributes inherited from oomph::Domain
Vector< MacroElement * > Macro_element_pt
 Vector of pointers to macro elements. More...
 

Detailed Description

Annular domain.

Constructor & Destructor Documentation

◆ AnnularDomain() [1/2]

oomph::AnnularDomain::AnnularDomain ( const double azimuthal_fraction,
const unsigned ntheta,
const unsigned nr,
const double a,
const double h,
const double phi 
)
inline

Constructor: Specify azimuthal fraction (1.0 is 360 degrees) number of macro elements in azimuthal and radial direction, inner radius and thickness. Rotate mesh by angle phi.

51  : Azimuthal_fraction(azimuthal_fraction),
52  Inner_radius(a),
53  Thickness(h),
54  Ntheta(ntheta),
55  Nr(nr),
56  Phi(phi)
57  {
58  const unsigned n_macro = ntheta * nr;
59  Macro_element_pt.resize(n_macro);
60 
61  // Create the macro elements
62  for (unsigned i = 0; i < n_macro; i++)
63  {
64  Macro_element_pt[i] = new QMacroElement<2>(this, i);
65  }
66  }
int i
Definition: BiCGSTAB_step_by_step.cpp:9
double Phi
Rotation angle.
Definition: annular_domain.h:105
unsigned Nr
Number of macro elements in radial direction.
Definition: annular_domain.h:102
double Thickness
Thickness.
Definition: annular_domain.h:96
double Inner_radius
Inner radius.
Definition: annular_domain.h:93
unsigned Ntheta
Number of macro elements in azimuthal direction.
Definition: annular_domain.h:99
double Azimuthal_fraction
Azimuthal fraction.
Definition: annular_domain.h:90
Vector< MacroElement * > Macro_element_pt
Vector of pointers to macro elements.
Definition: domain.h:301
const Scalar * a
Definition: level2_cplx_impl.h:32

References i, and oomph::Domain::Macro_element_pt.

◆ AnnularDomain() [2/2]

oomph::AnnularDomain::AnnularDomain ( const AnnularDomain )
delete

Broken copy constructor.

◆ ~AnnularDomain()

oomph::AnnularDomain::~AnnularDomain ( )
inline

Destructor: Empty; cleanup done in base class.

75 {}

Member Function Documentation

◆ macro_element_boundary()

void oomph::AnnularDomain::macro_element_boundary ( const unsigned t,
const unsigned imacro,
const unsigned idirect,
const Vector< double > &  s,
Vector< double > &  f 
)
virtual

Vector representation of the i_macro-th macro element boundary i_direct (N/S/W/E) at time level t (t=0: present; t>0: previous): f(s).

////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// Vector representation of the imacro-th macro element boundary idirect (N/S/W/E) at time level t (t=0: present; t>0: previous): f(s)

Implements oomph::Domain.

124  {
125  using namespace QuadTreeNames;
126 
127  // Get coordinates of macro element
128  unsigned i_theta = imacro % Ntheta;
129  unsigned i_r = (imacro - i_theta) / Ntheta;
130 
131  // Angle and radius limits
132  double theta_lo = Azimuthal_fraction * 2.0 * MathematicalConstants::Pi *
133  double(i_theta) / double(Ntheta);
134 
135  double theta_hi = Azimuthal_fraction * 2.0 * MathematicalConstants::Pi *
136  double(i_theta + 1) / double(Ntheta);
137 
138  // Revert direction (convoluted -- don't ask. It mirrors what happens
139  // in the mesh...
140  theta_lo = -MathematicalConstants::Pi +
142  theta_hi = -MathematicalConstants::Pi +
144 
145  double r_lo = Inner_radius + Thickness * double(i_r) / double(Nr);
146  double r_hi = Inner_radius + Thickness * double(i_r + 1) / double(Nr);
147 
148  // Actual radius and angle
149  double r = 0.0;
150  double theta = 0.0;
151 
152  // Which direction?
153  switch (idirect)
154  {
155  case N:
156 
157  theta = theta_lo + 0.5 * (s[0] + 1.0) * (theta_hi - theta_lo);
158  r = r_hi;
159 
160  break;
161 
162  case S:
163 
164  theta = theta_lo + 0.5 * (s[0] + 1.0) * (theta_hi - theta_lo);
165  r = r_lo;
166 
167  break;
168 
169  case W:
170 
171  theta = theta_lo;
172  r = r_lo + 0.5 * (s[0] + 1.0) * (r_hi - r_lo);
173 
174  break;
175 
176  case E:
177 
178  theta = theta_hi;
179  r = r_lo + 0.5 * (s[0] + 1.0) * (r_hi - r_lo);
180 
181  break;
182 
183  default:
184  std::ostringstream error_stream;
185  error_stream << "idirect is " << idirect << " not one of N, S, W, E"
186  << std::endl;
187 
188  throw OomphLibError(
189  error_stream.str(), OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION);
190  }
191 
192  f[0] = r * cos(theta + Phi);
193  f[1] = r * sin(theta + Phi);
194  }
AnnoyingScalar cos(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:136
AnnoyingScalar sin(const AnnoyingScalar &x)
Definition: AnnoyingScalar.h:137
@ N
Definition: constructor.cpp:22
static int f(const TensorMap< Tensor< int, 3 > > &tensor)
Definition: cxx11_tensor_map.cpp:237
RealScalar s
Definition: level1_cplx_impl.h:130
double theta
Definition: two_d_biharmonic.cc:236
double E
Elastic modulus.
Definition: TwenteMeshGluing.cpp:68
r
Definition: UniformPSDSelfTest.py:20
const double Pi
50 digits from maple
Definition: oomph_utilities.h:157
@ S
Definition: quadtree.h:62
@ W
Definition: quadtree.h:63
#define OOMPH_EXCEPTION_LOCATION
Definition: oomph_definitions.h:61
#define OOMPH_CURRENT_FUNCTION
Definition: oomph_definitions.h:86

References Azimuthal_fraction, cos(), Global_Physical_Variables::E, f(), Inner_radius, N, Nr, Ntheta, OOMPH_CURRENT_FUNCTION, OOMPH_EXCEPTION_LOCATION, Phi, oomph::MathematicalConstants::Pi, UniformPSDSelfTest::r, s, oomph::QuadTreeNames::S, sin(), BiharmonicTestFunctions2::theta, Thickness, and oomph::QuadTreeNames::W.

◆ operator=()

void oomph::AnnularDomain::operator= ( const AnnularDomain )
delete

Broken assignment operator.

Member Data Documentation

◆ Azimuthal_fraction

double oomph::AnnularDomain::Azimuthal_fraction
private

Azimuthal fraction.

Referenced by macro_element_boundary().

◆ Inner_radius

double oomph::AnnularDomain::Inner_radius
private

Inner radius.

Referenced by macro_element_boundary().

◆ Nr

unsigned oomph::AnnularDomain::Nr
private

Number of macro elements in radial direction.

Referenced by macro_element_boundary().

◆ Ntheta

unsigned oomph::AnnularDomain::Ntheta
private

Number of macro elements in azimuthal direction.

Referenced by macro_element_boundary().

◆ Phi

double oomph::AnnularDomain::Phi
private

Rotation angle.

Referenced by macro_element_boundary().

◆ Thickness

double oomph::AnnularDomain::Thickness
private

Thickness.

Referenced by macro_element_boundary().


The documentation for this class was generated from the following file: