https://mooseframework.inl.gov
CSGSphere.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
12 #include "CSGSurface.h"
13 
14 #include "libmesh/point.h"
15 
16 namespace CSG
17 {
18 
23 class CSGSphere : public CSGSurface
24 {
25 public:
33  CSGSphere(const std::string & name, const Point & center, const Real r);
34 
41  CSGSphere(const std::string & name, const Real r);
42 
46  virtual ~CSGSphere() = default;
47 
54  virtual std::unordered_map<std::string, Real> getCoeffs() const override;
55 
62  virtual Real evaluateSurfaceEquationAtPoint(const Point & p) const override;
63 
64 protected:
70  virtual std::unique_ptr<CSGSurface> clone() const override
71  {
72  return std::make_unique<CSGSphere>(_name, Point(_x0, _y0, _z0), _r);
73  }
74 
75  // check that radius is positive
76  void checkRadius() const;
77 
80 
83 
86 
89 };
90 } // namespace CSG
std::string name(const ElemQuality q)
void checkRadius() const
Definition: CSGSphere.C:50
CSGSphere(const std::string &name, const Point &center, const Real r)
Construct a new CSGSphere surface.
Definition: CSGSphere.C:15
virtual std::unordered_map< std::string, Real > getCoeffs() const override
Get the coefficients (x0, y0, z0, r) for the equation of a sphere (x - x0)^2 + (y - y0)^2 + (z - z0)^...
Definition: CSGSphere.C:32
virtual Real evaluateSurfaceEquationAtPoint(const Point &p) const override
given a point, determine its evaluation based on the equation of the sphere
Definition: CSGSphere.C:39
virtual std::unique_ptr< CSGSurface > clone() const override
create clone of CSGSphere object
Definition: CSGSphere.h:70
Real _r
Value of r in equation of sphere.
Definition: CSGSphere.h:88
Real _z0
Value of z0 in equation of sphere.
Definition: CSGSphere.h:85
CSGSphere creates an internal representation of a Constructive Solid Geometry (CSG) sphere...
Definition: CSGSphere.h:23
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
std::string _name
Name of surface.
Definition: CSGSurface.h:116
Real _x0
Value of x0 in equation of sphere.
Definition: CSGSphere.h:79
CSGSurface creates an internal representation of a Constructive Solid Geometry (CSG) surface...
Definition: CSGSurface.h:26
virtual ~CSGSphere()=default
Destructor.
Real _y0
Value of y0 in equation of sphere.
Definition: CSGSphere.h:82