26#ifndef OOMPH_GEOM_OBJ_WITH_BOUNDARY_HEADER
27#define OOMPH_GEOM_OBJ_WITH_BOUNDARY_HEADER
32#include <oomph-lib-config.h>
98 std::ostringstream error_message;
99 error_message <<
"You must create a <1,2> Geom Object that provides a\n"
100 <<
"mapping from the 1D boundary coordinate to the 2D\n"
101 <<
"intrinsic Lagrangian coordinate of disk-like object\n"
109 std::ostringstream error_message;
110 error_message <<
"Boundary_parametrising_geom_object_pt must point to\n"
111 <<
"GeomObject with one Lagrangian coordinate. Yours has "
120 std::ostringstream error_message;
121 error_message <<
"Boundary_parametrising_geom_object_pt must point to\n"
122 <<
"GeomObject with two Eulerian coordinates. Yours has "
166 std::ostringstream error_message;
167 error_message <<
"Broken virtual function; please implement for your\n"
168 <<
"derived version of this class!" << std::endl;
212 for (
unsigned b = 0; b <
nb; b++)
223 for (
unsigned i = 0;
i <
n;
i++)
240 <<
tangent[2] <<
" " << std::endl;
244 <<
normal[2] <<
" " << std::endl;
262 std::ostringstream error_message;
264 <<
"Please use another region id different from zero.\n"
265 <<
"It is internally used as the default region number.\n";
274 std::ostringstream error_message;
275 error_message <<
"Vector specifying zeta coordinates of point in\n"
276 <<
"region has be length 2; yours has length " <<
n
284 std::map<unsigned, Vector<double>>::iterator
it;
290 std::ostringstream error_message;
291 error_message <<
"The region id (" <<
r <<
") that you are using for"
293 <<
"your region is already in use. Use another\n"
294 <<
"region id and verify that you are not re-using\n"
295 <<
" previously defined regions ids.\n"
388 for (
unsigned b = 0; b <
n; b++)
469 double w(
const double&
r,
const double&
phi)
const
475 double dwdr(
const double&
r,
const double&
phi)
const
Base class for upgraded disk-like GeomObject (i.e. 2D surface in 3D space) with specification of boun...
void add_region_coordinates(const unsigned &r, Vector< double > &zeta_in_region)
Specify intrinsic coordinates of a point within a specified region – region ID, r,...
GeomObject * boundary_parametrising_geom_object_pt(const unsigned &b) const
Pointer to GeomObject<1,2> that parametrises intrinisc coordinates along boundary b.
Vector< double > Zeta_boundary_start
Storage for initial value of 1D boundary coordinate on boundary b:
void position_on_boundary(const unsigned &b, const double &zeta_bound, Vector< double > &r) const
Compute 3D vector of Eulerian coordinates at 1D boundary coordinate zeta_bound on boundary b:
std::map< unsigned, Vector< double > > zeta_in_region() const
Return map that stores zeta coordinates of points that identify regions.
void output_boundaries_and_triads(const unsigned &nplot, std::ofstream &two_d_boundaries_file, std::ofstream &three_d_boundaries_file, std::ofstream &boundaries_tangent_file, std::ofstream &boundaries_normal_file, std::ofstream &boundaries_binormal_file)
Output boundaries and triad at nplot plot points. Streams:
std::map< unsigned, Vector< double > > Zeta_in_region
Map to store zeta coordinates of points that identify regions.
Vector< GeomObject * > Boundary_parametrising_geom_object_pt
Pointer to GeomObject<1,2> that parametrises intrinisc coordinates along boundary b; essentially prov...
DiskLikeGeomObjectWithBoundaries()
Constructor.
double zeta_boundary_end(const unsigned &b) const
Final value of 1D boundary coordinate zeta_bound on boundary b:
virtual void boundary_triad(const unsigned &b, const double &zeta_bound, Vector< double > &r, Vector< double > &tangent, Vector< double > &normal, Vector< double > &binormal)
Boundary triad on boundary b at boundary coordinate zeta_bound. Broken virtual.
unsigned nboundary() const
How many boundaries do we have?
void zeta_on_boundary(const unsigned &b, const double &zeta_bound, Vector< double > &zeta) const
Compute 2D vector of intrinsic coordinates at 1D boundary coordinate zeta_bound on boundary b:
void output_boundaries(const unsigned &nplot, std::ofstream &two_d_boundaries_file, std::ofstream &three_d_boundaries_file)
Output boundaries at nplot plot points. Streams:
double zeta_boundary_start(const unsigned &b) const
Initial value of 1D boundary coordinate zeta_bound on boundary b:
Vector< double > Zeta_boundary_end
Storage for final value of 1D boundary coordinate on boundary b:
Steady ellipse with half axes A and B as geometric object:
void position(const Vector< double > &zeta, Vector< double > &r) const
Return the parametrised position of the FiniteElement in its incarnation as a GeomObject,...
double size() const
Calculate the size of the element (length, area, volume,...) in Eulerian computational coordinates....
A geometric object is an object that provides a parametrised description of its shape via the functio...
unsigned ndim() const
Access function to # of Eulerian coordinates.
virtual void position(const Vector< double > &zeta, Vector< double > &r) const =0
Parametrised position on object at current time: r(zeta).
unsigned nlagrangian() const
Access function to # of Lagrangian coordinates.
An OomphLibError object which should be thrown when an run-time error is encountered....
An OomphLibWarning object which should be created as a temporary object to issue a warning....
TAdvectionDiffusionReactionElement<NREAGENT,DIM,NNODE_1D> elements are isoparametric triangular DIM-d...
Warped disk in 3d: zeta[0]=x; zeta[1]=y (so it doesn't have coordinate singularities),...
virtual ~WarpedCircularDiskWithAnnularInternalBoundary()
Destructor (empty; cleanup happens in base class)
double H_annulus
Thickness of annular region (distance of internal boundary from outer edge of unit circle)
WarpedCircularDiskWithAnnularInternalBoundary(const WarpedCircularDiskWithAnnularInternalBoundary &dummy)=delete
Broken copy constructor.
void operator=(const WarpedCircularDiskWithAnnularInternalBoundary &)=delete
Broken assignment operator.
WarpedCircularDiskWithAnnularInternalBoundary(const double &h_annulus, const double &epsilon, const unsigned &n, const double &z_offset=0.0)
Constructor. Pass amplitude and azimuthal wavenumber of warping as arguments. Can specify vertical of...
double h_annulus() const
Thickness of annular region (distance of internal boundary from outer edge of unit circle)
Warped disk in 3d: zeta[0]=x; zeta[1]=y (so it doesn't have coordinate singularities),...
double dwdphi(const double &r, const double &phi) const
Deriv of vertical deflection w.r.t. angle.
void operator=(const WarpedCircularDisk &)=delete
Broken assignment operator.
double Epsilon
Amplitude of non-axisymmetric deformation.
void position(const Vector< double > &zeta, Vector< double > &r) const
Position Vector at Lagrangian coordinate zeta.
WarpedCircularDisk(const WarpedCircularDisk &dummy)=delete
Broken copy constructor.
WarpedCircularDisk()
Empty default constructor.
WarpedCircularDisk(const double &epsilon, const unsigned &n, const double &z_offset=0.0)
Constructor. Pass amplitude and azimuthal wavenumber of warping as arguments. Can specify vertical of...
double Z_offset
Vertical offset.
double & epsilon()
Access fct to amplitude of disk warping.
void boundary_triad(const unsigned &b, const double &zeta_bound, Vector< double > &r, Vector< double > &tangent, Vector< double > &normal, Vector< double > &binormal)
Boundary triad on boundary b at boundary coordinate zeta_bound.
unsigned N
Wavenumber of non-axisymmetric deformation.
double w(const double &r, const double &phi) const
Vertical deflection.
virtual ~WarpedCircularDisk()
Destructor.
double dwdr(const double &r, const double &phi) const
Deriv of vertical deflection w.r.t. radius.
void position(const unsigned &t, const Vector< double > &zeta, Vector< double > &r) const
Parametrised position on object: r(zeta). Evaluated at previous timestep. t=0: current time; t>0: pre...
const double Pi
50 digits from maple
DRAIG: Change all instances of (SPATIAL_DIM) to (DIM-1).