Block-Structured AMR Software Framework
Loading...
Searching...
No Matches
AMReX_EBToPVD.H
Go to the documentation of this file.
1#ifndef AMReX_EBToPVD_H_
2#define AMReX_EBToPVD_H_
3#include <AMReX_Config.H>
4#include <AMReX_EBCellFlag.H>
5#include <AMReX_Array.H>
6#include <AMReX_Box.H>
7
8#include <vector>
9#include <array>
10#include <iosfwd>
11
18namespace amrex {
19
21class EBToPVD {
22
23public:
24 EBToPVD() = default;
25
36 void EBToPolygon(const Real* problo, const Real* dx,
37 const Box & bx, Array4<EBCellFlag const> const& flag,
38 Array4<Real const> const& bcent,
40
42 void WriteEBVTP(int myID) const;
44 static void WritePVTP(int nProcs) ;
45
49 void EBGridCoverage(int myID, const Real* problo, const Real* dx,
50 const Box &bx, Array4<EBCellFlag const> const& flag);
51
52private:
54 void reorder_polygon(const std::vector<std::array<Real,3>>& lpoints, std::array<int,7>& lconnect,
55 const std::array<Real,3>& lnormal);
56
57 // Calculates the Hesse Normal FOrm corresponding to normal and centroid
58 static void calc_hesse(Real& distance, std::array<Real,3>& n0, Real& p,
59 const std::array<Real,3>& normal, const std::array<Real,3>& centroid) ;
60
61 // Fills the alpha vector
62 static void calc_alpha(std::array<Real,12>& alpha,
63 const std::array<Real,3>& n0, Real p,
64 const std::array<std::array<Real,3>,8>& vertex,
65 const Real* dx) ;
66
67 // Fills count and flags selecting the alphas which are in (0,1)
68 static void calc_intersects(int& int_count, std::array<bool,12>& intersects_flags,
69 const std::array<Real,12>& alpha) ;
70
71 void print_points(std::ofstream& myfile) const;
72 void print_connectivity(std::ofstream& myfile) const;
73 void print_grids(std::ofstream& myfile) const;
74
75 std::vector<std::array<Real,3>> m_points;
76 std::vector<std::array<int,7>> m_connectivity;
77 int m_grid{0};
78
79};
80
81}
82
83#endif
Helper that converts EB surfaces into polygonal PVD files.
Definition AMReX_EBToPVD.H:21
void WriteEBVTP(int myID) const
Write the accumulated EB polygons for rank myID into a VTP file.
Definition AMReX_EBToPVD.cpp:191
void EBGridCoverage(int myID, const Real *problo, const Real *dx, const Box &bx, Array4< EBCellFlag const > const &flag)
Record which cells are cut/covered to visualize grid coverage.
Definition AMReX_EBToPVD.cpp:430
static void WritePVTP(int nProcs)
Write a PVD file referencing per-rank outputs.
Definition AMReX_EBToPVD.cpp:218
void EBToPolygon(const Real *problo, const Real *dx, const Box &bx, Array4< EBCellFlag const > const &flag, Array4< Real const > const &bcent, Array4< Real const > const &apx, Array4< Real const > const &apy, Array4< Real const > const &apz)
Convert EB data in bx into polygons stored internally.
Definition AMReX_EBToPVD.cpp:27
EBToPVD()=default
amrex_real Real
Floating Point Type for Fields.
Definition AMReX_REAL.H:79
Definition AMReX_Amr.cpp:49
A multidimensional array accessor.
Definition AMReX_Array4.H:283