Advanced Multi-Physics (AMP)
On-Line Documentation
Public Member Functions | Static Public Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
AMP::Geometry::RotationalGeometry Class Referencefinalabstract

A geometry to rotate a geometry object about the centroid. More...

#include <RotationalGeometry.h>

Inheritance diagram for AMP::Geometry::RotationalGeometry:
Inheritance graph
[legend]

Public Member Functions

std::pair< Point, Pointbox () const override final
 Return the bounding box.
 
Point centroid () const override final
 Return the centroid.
 
std::unique_ptr< AMP::Geometry::Geometryclone () const override final
 Clone the object.
 
void displace (const double *x) override final
 Displace the entire geometry.
 
double distance (const Point &x, const Point &dir) const
 Calculate the distance to the object given a ray.
 
uint8_t getDim () const
 Get the number of dimensions for the object.
 
AMP::Mesh::GeomType getGeomType () const override final
 Get the geometric type for the geometry.
 
virtual uint64_t getID () const
 Return a unique hash id.
 
uint8_t getLogicalDim () const
 Return the number of logical dimensions.
 
virtual ArraySize getLogicalGridSize (const ArraySize &x) const =0
 Return the logical grid size.
 
virtual std::vector< int > getLogicalGridSize (const std::vector< double > &res) const override final
 Return the logical grid size.
 
std::vector< int > getLogicalGridSize (const std::vector< int > &x) const override final
 
const auto & getLogicalSurfaceIds () const
 Return the surface ids for the logical boundaries.
 
std::string getName () const
 Get the name of the geometry.
 
std::array< bool, 3 > getPeriodicDim () const
 Return the logical grid periodic dimensions.
 
bool inside (const Point &x) const
 Is the point in the geometry.
 
bool isConvex () const
 Is the object convex.
 
Point logical (const Point &x) const final
 Return the logical position.
 
Point nearest (const Point &x) const
 Calculate the nearest point on the surface.
 
int NSurface () const
 Get the number of surfaces.
 
bool operator!= (const Geometry &rhs) const
 Check if two geometries are not equal.
 
virtual bool operator== (const Geometry &rhs) const =0
 Check if two geometries are equal.
 
Point physical (const Point &x) const override final
 Return the physical position.
 
virtual void registerChildObjects (AMP::IO::RestartManager *manager) const
 Register child objects.
 
 RotationalGeometry (std::shared_ptr< LogicalGeometry > geom)
 Construct a RotationalGeometry geometry.
 
int surface (const Point &x) const
 Get the surface id.
 
Point surfaceNorm (const Point &x) const
 Return the outward normal to a surface.
 
double volume () const override final
 Return the volume.
 
void writeRestart (int64_t fid) const override
 Write restart data to file.
 

Static Public Member Functions

static std::shared_ptr< AMP::Geometry::GeometrybuildGeometry (std::shared_ptr< const AMP::Database > db)
 Create a geometry.
 

Protected Attributes

const std::array< int, 6 > d_ids
 
const uint8_t d_logicalDim
 
const uint8_t d_physicalDim
 

Private Member Functions

Point in (const Point &x)
 
Point out (const Point &x)
 
Point rotateDir (const Point &dir)
 
 RotationalGeometry ()
 

Private Attributes

std::shared_ptr< LogicalGeometryd_geom
 

Detailed Description

A geometry to rotate a geometry object about the centroid.

This class provides routines for reading, accessing and writing geometries.

Definition at line 15 of file RotationalGeometry.h.

Constructor & Destructor Documentation

◆ RotationalGeometry() [1/2]

AMP::Geometry::RotationalGeometry::RotationalGeometry ( std::shared_ptr< LogicalGeometry geom)
inlineexplicit

Construct a RotationalGeometry geometry.

Parameters
geomInput geometry object

Definition at line 22 of file RotationalGeometry.h.

References AMP::Geometry::LogicalGeometry::d_ids, and AMP::Geometry::LogicalGeometry::d_logicalDim.

◆ RotationalGeometry() [2/2]

AMP::Geometry::RotationalGeometry::RotationalGeometry ( )
private

Member Function Documentation

◆ box()

std::pair< Point, Point > AMP::Geometry::RotationalGeometry::box ( ) const
finaloverridevirtual

Return the bounding box.

This function will return the bounding box of the object

Returns
Returns the bounding box [lb,ub]

Implements AMP::Geometry::Geometry.

◆ buildGeometry()

static std::shared_ptr< AMP::Geometry::Geometry > AMP::Geometry::Geometry::buildGeometry ( std::shared_ptr< const AMP::Database db)
staticinherited

Create a geometry.

This function will create a geometry based on the input database.

Parameters
[in]dbParameters for constructing a geometry from an input database

◆ centroid()

Point AMP::Geometry::RotationalGeometry::centroid ( ) const
inlinefinaloverridevirtual

Return the centroid.

This function will return the centroid of the object. The centroid is equivalent to the center of mass of object of uniform density.

Returns
Returns the physical coordinates

Implements AMP::Geometry::Geometry.

Definition at line 45 of file RotationalGeometry.h.

References d_geom, and out().

◆ clone()

std::unique_ptr< AMP::Geometry::Geometry > AMP::Geometry::RotationalGeometry::clone ( ) const
inlinefinaloverridevirtual

Clone the object.

Implements AMP::Geometry::Geometry.

Definition at line 55 of file RotationalGeometry.h.

References d_geom.

◆ displace()

void AMP::Geometry::RotationalGeometry::displace ( const double *  x)
finaloverridevirtual

Displace the entire geometry.

This function will displace the entire geometry by a scalar value. The displacement vector should be the size of the physical dimension.

Parameters
[in]xDisplacement vector

Implements AMP::Geometry::Geometry.

◆ distance()

double AMP::Geometry::RotationalGeometry::distance ( const Point pos,
const Point dir 
) const
inlinevirtual

Calculate the distance to the object given a ray.

This function computes the distance to the object given a ray. If the ray is inside the object, this distance is negitive. If the ray will never intersect the object, this distance is inf.

Parameters
[in]posCurrent position of ray
[in]dirDirection of ray (should be normalized for most uses)
Returns
Returns the distance to the nearest surface (intersection = pos + dir*distance)

Implements AMP::Geometry::Geometry.

Definition at line 33 of file RotationalGeometry.h.

References d_geom, and rotateDir().

◆ getDim()

uint8_t AMP::Geometry::Geometry::getDim ( ) const
inlineinherited

Get the number of dimensions for the object.

This function returns the number of physical dimensions for the geometry

Returns
Returns the number of physical dimensions

Definition at line 42 of file Geometry.h.

References AMP::Geometry::Geometry::d_physicalDim.

◆ getGeomType()

AMP::Mesh::GeomType AMP::Geometry::LogicalGeometry::getGeomType ( ) const
finaloverridevirtualinherited

Get the geometric type for the geometry.

This function returns the largest geometric type supported by the geometry

Returns
Returns the geometric dimensions

Reimplemented from AMP::Geometry::Geometry.

◆ getID()

virtual uint64_t AMP::Geometry::Geometry::getID ( ) const
virtualinherited

Return a unique hash id.

◆ getLogicalDim()

uint8_t AMP::Geometry::LogicalGeometry::getLogicalDim ( ) const
inlineinherited

Return the number of logical dimensions.

This function will return the number of logical dimensions of the underlying geometry. If the geometry is not logically rectangular this function should return 0.

Definition at line 44 of file LogicalGeometry.h.

References AMP::Geometry::LogicalGeometry::d_logicalDim.

◆ getLogicalGridSize() [1/3]

virtual ArraySize AMP::Geometry::LogicalGeometry::getLogicalGridSize ( const ArraySize x) const
pure virtualinherited

Return the logical grid size.

This function will return the dimensions of a logical grid given a size that makes sense for the object.

Parameters
[in]xInput size
Returns
Return the logical grid size

Implemented in AMP::Geometry::Box< NDIM >, AMP::Geometry::Circle, AMP::Geometry::CircleFrustum, AMP::Geometry::CircleSurface, AMP::Geometry::Cylinder, AMP::Geometry::Parallelepiped, AMP::Geometry::RegularPolygon, AMP::Geometry::Shell, AMP::Geometry::Sphere, AMP::Geometry::SphereSurface, AMP::Geometry::SquareFrustum, and AMP::Geometry::Tube.

◆ getLogicalGridSize() [2/3]

virtual std::vector< int > AMP::Geometry::RotationalGeometry::getLogicalGridSize ( const std::vector< double > &  res) const
inlinefinaloverridevirtual

Return the logical grid size.

This function will return the dimensions of a logical grid given a desired resolution

Parameters
[in]resDesired resolution
Returns
Return the logical grid size

Implements AMP::Geometry::LogicalGeometry.

Definition at line 51 of file RotationalGeometry.h.

References d_geom.

◆ getLogicalGridSize() [3/3]

std::vector< int > AMP::Geometry::RotationalGeometry::getLogicalGridSize ( const std::vector< int > &  x) const
finaloverride

◆ getLogicalSurfaceIds()

const auto & AMP::Geometry::LogicalGeometry::getLogicalSurfaceIds ( ) const
inlineinherited

Return the surface ids for the logical boundaries.

This function will return the surface ids for each logical boundary. If a logical boundary is periodic, it will return -1. If a logical boundary maps to another point on the boundary, it will return -2. If a logical boundary is not periodic, is not physical, and does not map to another point on the boundary (i.e. unused dimensions), it will return -3. Note: The returned array may be larger than the number of dimensions

Returns
Return the logical boundary ids (2*logicalDim)

Definition at line 83 of file LogicalGeometry.h.

References AMP::Geometry::LogicalGeometry::d_ids.

◆ getName()

std::string AMP::Geometry::RotationalGeometry::getName ( ) const
inlinevirtual

Get the name of the geometry.

Implements AMP::Geometry::Geometry.

Definition at line 30 of file RotationalGeometry.h.

References d_geom.

◆ getPeriodicDim()

std::array< bool, 3 > AMP::Geometry::LogicalGeometry::getPeriodicDim ( ) const
inherited

Return the logical grid periodic dimensions.

This function will return a vector indicating which logical grid dimensions are periodic. Note: The returned array may be larger than the number of dimensions

Returns
Return the periodic dimensions

◆ in()

Point AMP::Geometry::RotationalGeometry::in ( const Point x)
private

◆ inside()

bool AMP::Geometry::RotationalGeometry::inside ( const Point pos) const
inlinevirtual

Is the point in the geometry.

This function checks if the ray is in the geometry. If it is on the surface, it will return true.

Parameters
[in]posCurrent position
Returns
Returns true if the point is inside the geometry (or on the surface)

Implements AMP::Geometry::Geometry.

Definition at line 37 of file RotationalGeometry.h.

References d_geom.

◆ isConvex()

bool AMP::Geometry::RotationalGeometry::isConvex ( ) const
inlinevirtual

Is the object convex.

Check if the geometric object is convex

Returns
Returns true if the object is convex

Implements AMP::Geometry::Geometry.

Definition at line 31 of file RotationalGeometry.h.

References d_geom.

◆ logical()

Point AMP::Geometry::RotationalGeometry::logical ( const Point x) const
inlinefinalvirtual

Return the logical position.

This function will return logical coordinate given the physical coordinates

Parameters
[in]xPhysical coordinate of the point
Returns
Returns the logical coordinates

Implements AMP::Geometry::LogicalGeometry.

Definition at line 41 of file RotationalGeometry.h.

References d_geom, and out().

◆ nearest()

Point AMP::Geometry::RotationalGeometry::nearest ( const Point pos) const
inlinevirtual

Calculate the nearest point on the surface.

This function computes the nearest point on the surface

Parameters
[in]posCurrent position of ray
Returns
Returns the nearest surface point

Implements AMP::Geometry::Geometry.

Definition at line 32 of file RotationalGeometry.h.

References d_geom, and out().

◆ NSurface()

int AMP::Geometry::RotationalGeometry::NSurface ( ) const
inlinevirtual

Get the number of surfaces.

This function will return the number of unique surfaces

Returns
Returns the number of unique surfaces

Implements AMP::Geometry::Geometry.

Definition at line 38 of file RotationalGeometry.h.

References d_geom.

◆ operator!=()

bool AMP::Geometry::Geometry::operator!= ( const Geometry rhs) const
inlineinherited

Check if two geometries are not equal.

Definition at line 151 of file Geometry.h.

References AMP::Geometry::Geometry::operator==().

◆ operator==()

virtual bool AMP::Geometry::Geometry::operator== ( const Geometry rhs) const
pure virtualinherited

◆ out()

Point AMP::Geometry::RotationalGeometry::out ( const Point x)
private

◆ physical()

Point AMP::Geometry::RotationalGeometry::physical ( const Point x) const
inlinefinaloverridevirtual

Return the physical position.

This function will return physical coordinate given the logical coordinates

Parameters
[in]xLogical coordinate of the point
Returns
Returns the physical coordinates

Implements AMP::Geometry::LogicalGeometry.

Definition at line 42 of file RotationalGeometry.h.

References d_geom, and out().

◆ registerChildObjects()

virtual void AMP::Geometry::Geometry::registerChildObjects ( AMP::IO::RestartManager manager) const
virtualinherited

Register child objects.

This function register child objects if necessary

Parameters
managerRestart manager

Reimplemented in AMP::Geometry::MultiGeometry.

◆ rotateDir()

Point AMP::Geometry::RotationalGeometry::rotateDir ( const Point dir)
private

Referenced by distance().

◆ surface()

int AMP::Geometry::RotationalGeometry::surface ( const Point x) const
inlinevirtual

Get the surface id.

This function will return the surface id closest to the point

Parameters
[in]xCurrent position
Returns
Returns the surface id (0:NSurface-1)

Implements AMP::Geometry::Geometry.

Definition at line 39 of file RotationalGeometry.h.

References d_geom.

◆ surfaceNorm()

Point AMP::Geometry::RotationalGeometry::surfaceNorm ( const Point x) const
inlinevirtual

Return the outward normal to a surface.

This function will return the surface id and outward normal to the surface at the given point

Parameters
[in]xCurrent position
Returns
Returns the surface normal

Implements AMP::Geometry::Geometry.

Definition at line 40 of file RotationalGeometry.h.

References d_geom, and out().

◆ volume()

double AMP::Geometry::RotationalGeometry::volume ( ) const
inlinefinaloverridevirtual

Return the volume.

This function will return the interior volume of the object

Returns
Returns the volume

Implements AMP::Geometry::Geometry.

Definition at line 47 of file RotationalGeometry.h.

References d_geom.

◆ writeRestart()

void AMP::Geometry::LogicalGeometry::writeRestart ( int64_t  fid) const
overridevirtualinherited

Write restart data to file.

This function will write the mesh to an HDF5 file

Parameters
fidFile identifier to write

Reimplemented from AMP::Geometry::Geometry.

Reimplemented in AMP::Geometry::Parallelepiped, AMP::Geometry::RegularPolygon, AMP::Geometry::Shell, AMP::Geometry::Sphere, AMP::Geometry::SphereSurface, AMP::Geometry::SquareFrustum, and AMP::Geometry::Tube.

Member Data Documentation

◆ d_geom

std::shared_ptr<LogicalGeometry> AMP::Geometry::RotationalGeometry::d_geom
private

◆ d_ids

const std::array<int, 6> AMP::Geometry::LogicalGeometry::d_ids
protectedinherited

◆ d_logicalDim

const uint8_t AMP::Geometry::LogicalGeometry::d_logicalDim
protectedinherited

◆ d_physicalDim

const uint8_t AMP::Geometry::Geometry::d_physicalDim
protectedinherited

Definition at line 200 of file Geometry.h.

Referenced by AMP::Geometry::Geometry::getDim().


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



Advanced Multi-Physics (AMP)
Oak Ridge National Laboratory
Idaho National Laboratory
Los Alamos National Laboratory
This page automatically produced from the
source code by doxygen
Last updated: Tue Mar 10 2026 13:06:42.
Comments on this page