NEMoSys  0.63.0
A modular, extensible resource with robust automated mesh generation, mesh quality analysis, adaptive mesh refinement, and data transfer between arbitrary meshes.
rocPackShape.H
Go to the documentation of this file.
1 /*******************************************************************************
2 * Promesh *
3 * Copyright (C) 2022, IllinoisRocstar LLC. All rights reserved. *
4 * *
5 * Promesh is the property of IllinoisRocstar LLC. *
6 * *
7 * IllinoisRocstar LLC *
8 * Champaign, IL *
9 * www.illinoisrocstar.com *
10 * promesh@illinoisrocstar.com *
11 *******************************************************************************/
12 /*******************************************************************************
13 * This file is part of Promesh *
14 * *
15 * This version of Promesh is free software: you can redistribute it and/or *
16 * modify it under the terms of the GNU Lesser General Public License as *
17 * published by the Free Software Foundation, either version 3 of the License, *
18 * or (at your option) any later version. *
19 * *
20 * Promesh is distributed in the hope that it will be useful, but WITHOUT ANY *
21 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS *
22 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more *
23 * details. *
24 * *
25 * You should have received a copy of the GNU Lesser General Public License *
26 * along with this program. If not, see <https://www.gnu.org/licenses/>. *
27 * *
28 *******************************************************************************/
29 #ifndef NEMOSYS_ROCPACKSHAPE_H_
30 #define NEMOSYS_ROCPACKSHAPE_H_
31 
32 #include <iostream>
33 #include <memory>
34 #include <string>
35 #include <vector>
36 
37 #include "nemosys_export.h"
38 
39 namespace NEM {
40 
41 namespace GEO {
42 
43 /** @brief This is an abstract class for all shapes supported by RocPack
44  utility. This class contains abstract methods used for defining
45  various shapes. All methods are defined in various shape classes
46  under NEM::GEO namespace.
47 
48  # The shapes currently supported are,
49  > * HMX (Octogen crystal)
50  > * PETN (Pentaerythritol tetranitrate crystal)
51  > * ICOSIDODECAHEDRON
52 **/
53 class NEMOSYS_EXPORT rocPackShape {
54  // Constructor & Deconstructor
55  public:
56  /** @brief Default constructor
57  **/
59 
60  /** @brief Standard Deconstructor
61  **/
62  virtual ~rocPackShape() {
63  std::cout << "rocPackShape class destroyed!" << std::endl;
64  }
65 
66  // Access
67  // public:
68  /** @brief Creates shape object for requsted shape
69  @param shapeName Name of shape requested
70  @retun Shape pointer
71  **/
72  static std::shared_ptr<rocPackShape> getShape(const std::string &shapeName);
73 
74  // Access
75  public:
76  /** @brief Gets vertices of pack shapes
77  **/
78  virtual std::vector<std::vector<double>> getVertices() = 0;
79 
80  /** @brief Gets faces of pack shapes
81  **/
82  virtual std::vector<std::vector<int>> getFaces() = 0;
83 };
84 
85 } // namespace GEO
86 
87 } // namespace NEM
88 
89 #endif // NEMOSYS_ROCPACKSHAPE_H_
rocPackShape()
Default constructor.
Definition: rocPackShape.H:58
virtual ~rocPackShape()
Standard Deconstructor.
Definition: rocPackShape.H:62
This is an abstract class for all shapes supported by RocPack utility.
Definition: rocPackShape.H:53