Block-Structured AMR Software Framework
Loading...
Searching...
No Matches
AMReX_MarchingCubes.H
Go to the documentation of this file.
1#ifndef AMREX_MARCHING_CUBES_H_
2#define AMREX_MARCHING_CUBES_H_
3
4#include <AMReX_FArrayBox.H>
5#include <AMReX_Geometry.H>
7
8#include <map>
9#include <memory>
10#include <string>
11
12namespace amrex::MC {
13
14void Initialize ();
15void Finalize ();
16
17struct Vertex
18{
20
21 void resize (int n);
22
23 GpuArray<Real*,6> dataPtrs () { return {x.data(), y.data(), z.data(), nx.data(), ny.data(), nz.data()}; }
24};
25
27{
28 Gpu::DeviceVector<int> v1, v2, v3; // vertex index
29
30 void resize (int n);
31
32 GpuArray<int*,3> dataPtrs () { return {v1.data(), v2.data(), v3.data()}; }
33};
34
35class MCFab
36{
37public:
38 // We will store more data here in the future
41};
42
43void marching_cubes (Geometry const& geom, FArrayBox& sdf_fab, MCFab& mc_fab);
44
45void write_stl (std::string const& filename, std::map<int,std::unique_ptr<MCFab>> const& mc_fabs);
46
47}
48
49#endif
A Fortran Array of REALs.
Definition AMReX_FArrayBox.H:231
Rectangular problem domain geometry.
Definition AMReX_Geometry.H:74
Definition AMReX_MarchingCubes.H:36
Vertex m_vertices
Definition AMReX_MarchingCubes.H:40
Triangle m_triangles
Definition AMReX_MarchingCubes.H:39
Dynamically allocated vector for trivially copyable data.
Definition AMReX_PODVector.H:308
Definition AMReX_MarchingCubes.cpp:23
void write_stl(std::string const &filename, std::map< int, std::unique_ptr< MCFab > > const &mc_fabs)
Definition AMReX_MarchingCubes.cpp:924
void marching_cubes(Geometry const &geom, FArrayBox &sdf_fab, MCFab &mc_fab)
Definition AMReX_MarchingCubes.cpp:693
void Finalize()
Definition AMReX_MarchingCubes.cpp:664
void Initialize()
Definition AMReX_MarchingCubes.cpp:651
Fixed-size array that can be used on GPU.
Definition AMReX_Array.H:41
Definition AMReX_MarchingCubes.H:27
GpuArray< int *, 3 > dataPtrs()
Definition AMReX_MarchingCubes.H:32
Gpu::DeviceVector< int > v1
Definition AMReX_MarchingCubes.H:28
Gpu::DeviceVector< int > v3
Definition AMReX_MarchingCubes.H:28
Gpu::DeviceVector< int > v2
Definition AMReX_MarchingCubes.H:28
void resize(int n)
Definition AMReX_MarchingCubes.cpp:686
Definition AMReX_MarchingCubes.H:18
void resize(int n)
Definition AMReX_MarchingCubes.cpp:676
Gpu::DeviceVector< Real > ny
Definition AMReX_MarchingCubes.H:19
Gpu::DeviceVector< Real > x
Definition AMReX_MarchingCubes.H:19
Gpu::DeviceVector< Real > nx
Definition AMReX_MarchingCubes.H:19
GpuArray< Real *, 6 > dataPtrs()
Definition AMReX_MarchingCubes.H:23
Gpu::DeviceVector< Real > y
Definition AMReX_MarchingCubes.H:19
Gpu::DeviceVector< Real > z
Definition AMReX_MarchingCubes.H:19
Gpu::DeviceVector< Real > nz
Definition AMReX_MarchingCubes.H:19