diff options
author | 2021-01-26 23:40:30 -0800 | |
---|---|---|
committer | 2021-01-26 23:40:30 -0800 | |
commit | 75931e8a5527f77515657260883f1ad9767210fa (patch) | |
tree | 030efad0a9b17a79c185c54b00d241c5609b1461 /Source/Parallelization/GuardCellManager.cpp | |
parent | a54fdb407d1f9171c7e0c71350f31bba55552d2c (diff) | |
download | WarpX-75931e8a5527f77515657260883f1ad9767210fa.tar.gz WarpX-75931e8a5527f77515657260883f1ad9767210fa.tar.zst WarpX-75931e8a5527f77515657260883f1ad9767210fa.zip |
Start Embedded Boundary development (#1641)
* Start Embedded Boundary development
Modify the build system for embedded boundary (EB) support. Currently EB is
a compile time option that must be explicitly enabled. For GNU Make, one
can enable it with `USE_EB=TRUE`, whereas for CMake, `-DAMReX_EB=ON`. Later
we could decide to enable EB by default with all regular geometry.
Add a simple geometry initialization function, WarpX::InitEB. By default,
the geometry is all regular. A few basic types such as box, cylinder,
plane, sphere, etc. are supported via ParmParse runtime parameters. See
`amrex/Src/EB/AMReX_EB2.cpp` for more details. Later, we could build more
complex geometry using constructive solid geometry (CSG). (
https://en.wikipedia.org/wiki/Constructive_solid_geometry ) See
`amrex/Tutorials/EB/GeometryGeneration` for an example of CSG. There is
also a STL ( https://en.wikipedia.org/wiki/STL_(file_format) ) approach
under development in AMReX.
Add a new member, m_factory, to WarpX class. This object can be used to
obtain geometry information such as whether a cell is cut, edge centroids,
etc. Currently we are not using these factories to build MultiFabs for
field data to embed the geometry information into the data containers. We
could do that later if it is needed or it makes things more convenient.
Nevertheless, this should be sufficient to start the EB development of the
field solver.
It's not clear to me yet how many ghost cells are needed for the geometry
information. It's currently one, and can be adjusted.
In the future, when particle and embedded boundary interaction is
considered, we can use `amrex::FillSignedDistance` function to obtain signed
distance function on the nodes. With that information, one should be able
to determine where and when a particle collides with the embedded boundary.
* resize factory vector
* CMake: Require AMReX_EB
for embedded boundaries
* Add AMReX_Config.H et al.
Explicit includes are most robust to make sure defines are set with
future refactorings.
* rename Factory fieldFactory
Co-authored-by: Axel Huebl <axel.huebl@plasma.ninja>
Diffstat (limited to 'Source/Parallelization/GuardCellManager.cpp')
0 files changed, 0 insertions, 0 deletions