https://mooseframework.inl.gov
CSGSphere.C
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 #include "CSGSphere.h"
11 
12 namespace CSG
13 {
14 
15 CSGSphere::CSGSphere(const std::string & name, const Point & center, const Real r)
17  _x0(center(0)),
18  _y0(center(1)),
19  _z0(center(2)),
20  _r(r)
21 {
22  checkRadius();
23 }
24 
25 CSGSphere::CSGSphere(const std::string & name, const Real r)
26  : CSGSurface(name, MooseUtils::prettyCppType<CSGSphere>()), _x0(0.0), _y0(0.0), _z0(0.0), _r(r)
27 {
28  checkRadius();
29 }
30 
31 std::unordered_map<std::string, Real>
33 {
34  std::unordered_map<std::string, Real> coeffs = {{"x0", _x0}, {"y0", _y0}, {"z0", _z0}, {"r", _r}};
35  return coeffs;
36 }
37 
38 Real
40 {
41  // Compute distance from the sphere center to determine if inside (< r^2)
42  // or outside (> r^2) the sphere
43  const Real dist_sq =
44  Utility::pow<2>((p(0) - _x0)) + Utility::pow<2>((p(1) - _y0)) + Utility::pow<2>((p(2) - _z0));
45 
46  return dist_sq - Utility::pow<2>(_r);
47 }
48 
49 void
51 {
52  if (_r <= 0.0)
53  mooseError("Radius of sphere must be positive.");
54 }
55 
56 } // namespace CSG
std::string name(const ElemQuality q)
void checkRadius() const
Definition: CSGSphere.C:50
void mooseError(Args &&... args)
Emit an error message with the given stringified, concatenated args and terminate the application...
Definition: MooseError.h:323
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
Real _r
Value of r in equation of sphere.
Definition: CSGSphere.h:78
Real _z0
Value of z0 in equation of sphere.
Definition: CSGSphere.h:75
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
Real _x0
Value of x0 in equation of sphere.
Definition: CSGSphere.h:69
CSGSurface creates an internal representation of a Constructive Solid Geometry (CSG) surface...
Definition: CSGSurface.h:26
Real _y0
Value of y0 in equation of sphere.
Definition: CSGSphere.h:72
CTSub CT_OPERATOR_BINARY CTMul CTCompareLess CTCompareGreater CTCompareEqual _arg template pow< 2 >(tan(_arg))+1.0) *_arg.template D< dtag >()) CT_SIMPLE_UNARY_FUNCTION(sqrt
std::string prettyCppType(const std::string &cpp_type)
Definition: MooseUtils.C:1151