NuTo
Numerics Tool
GmshWriter.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <iosfwd>
4 #include <string>
5 #include <Eigen/Core>
6 
7 namespace NuTo
8 {
9 
31 {
32 public:
34  struct Box2D
35  {
36  Box2D(double lx, double ly)
37  : mStart(Eigen::Vector2d::Zero())
38  , mEnd(Eigen::Vector2d(lx, ly))
39  {
40  }
41  Box2D(Eigen::Vector2d start, Eigen::Vector2d end)
42  : mStart(start)
43  , mEnd(end)
44  {
45  }
46 
47  Eigen::Vector2d mStart;
48  Eigen::Vector2d mEnd;
49  };
50 
52  struct Box3D
53  {
54  Box3D(double lx, double ly, double lz)
55  : mStart(Eigen::Vector3d::Zero())
56  , mEnd(Eigen::Vector3d(lx, ly, lz))
57  {
58  }
59  Box3D(Eigen::Vector3d start, Eigen::Vector3d end)
60  : mStart(start)
61  , mEnd(end)
62  {
63  }
64 
65  Eigen::Vector3d mStart;
66  Eigen::Vector3d mEnd;
67  };
68 
71  struct Cylinder
72  {
73  double mRadius;
74  double mHeight;
75  };
76 
80  struct Options
81  {
82  Options(double meshSizeAggregates, double meshSizeMatrix, double interfaceThickness = 0.)
83  : interfaceThickness(interfaceThickness)
84  , meshSizeAggregates(meshSizeAggregates)
85  , meshSizeMatrix(meshSizeMatrix)
86  {
87  }
88 
89  double interfaceThickness = 0;
90  double meshSizeAggregates = 1;
91  double meshSizeMatrix = 1;
92 
93  int meshAlg = 6;
94  int meshAlg3D = 4;
95  int meshRecombinationAlgorithm = 0;
96  int meshOptimize = 2;
97  int meshSmoothing = 2;
98 
99  std::string physicalGroupMatrix = "Matrix";
100  std::string physicalGroupAggregates = "Aggregates";
101  std::string physicalGroupInterfaces = "Interfaces";
102  std::string additionalOptions = "";
103  };
104 
105  // Write to output stream
106 
107  static void Write(std::ostream& out, Box2D box, const Eigen::MatrixX3d& aggregates, Options opt);
108  static void Write(std::ostream& out, Box3D box, const Eigen::MatrixX4d& aggregates, Options opt);
109  static void Write(std::ostream& out, Cylinder cylinder, const Eigen::MatrixX4d& aggregates, Options opt);
110 
111  // Write to file
112 
113  static void Write(std::string filename, Box2D box, const Eigen::MatrixX3d& aggregates, Options opt);
114  static void Write(std::string filename, Box3D box, const Eigen::MatrixX4d& aggregates, Options opt);
115  static void Write(std::string filename, Cylinder cylinder, const Eigen::MatrixX4d& aggregates, Options opt);
116 };
117 } /* NuTo */
Box3D(Eigen::Vector3d start, Eigen::Vector3d end)
Definition: GmshWriter.h:59
Simple 3D cylinder geometry.
Definition: GmshWriter.h:71
Options(double meshSizeAggregates, double meshSizeMatrix, double interfaceThickness=0.)
Definition: GmshWriter.h:82
Box2D(Eigen::Vector2d start, Eigen::Vector2d end)
Definition: GmshWriter.h:41
Box2D(double lx, double ly)
Definition: GmshWriter.h:36
Definition: SerializeStreamOut.h:6
static void Write(std::ostream &out, Box2D box, const Eigen::MatrixX3d &aggregates, Options opt)
Definition: GmshWriter.cpp:313
Writes a mesoscale concrete geometry, consisting of a matrix, several aggregates and interfaces aroun...
Definition: GmshWriter.h:30
Eigen::Vector3d mStart
Definition: GmshWriter.h:65
Box3D(double lx, double ly, double lz)
Definition: GmshWriter.h:54
Gmsh options that are defaulted to well working parameters.
Definition: GmshWriter.h:80
Eigen::Vector2d mEnd
Definition: GmshWriter.h:48
Simple 2D box geometry.
Definition: GmshWriter.h:34
Simple 3D box geometry.
Definition: GmshWriter.h:52
Eigen::Vector3d mEnd
Definition: GmshWriter.h:66
Definition: Exception.h:6
double mRadius
Definition: GmshWriter.h:73
Eigen::Vector2d mStart
Definition: GmshWriter.h:47
double mHeight
Definition: GmshWriter.h:74