Block-Structured AMR Software Framework
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Loading...
Searching...
No Matches
AMReX_Bittree.H
Go to the documentation of this file.
1#ifndef BL_BITTREE_H_
2#define BL_BITTREE_H_
3
4#include <AMReX_IntVect.H>
5#include <AMReX_BoxArray.H>
7#include <Bittree_BittreeAmr.h>
8
9namespace amrex {
10
11/*
12Include in Make.local:
13BITTREE_PATH = /path/to/bittree/installation
14INCLUDE_LOCATIONS += $(BITTREE_PATH)/include
15LIBRARY_LOCATIONS += $(BITTREE_PATH)/lib
16LIBRARIES += -lbittree
17
18Include in inputs:
19amr.use_bittree = true
20*/
21class btUnit {
22 // Functions used in AmrMesh
23 public:
24 static int btRefine (bittree::BittreeAmr* mesh,
25 std::vector<int>& btTags,
26 int max_crse, int lbase,
28 MPI_Comm comm);
29 static void btCalculateGrids (bittree::BittreeAmr* mesh,
30 int lbase,
31 int& new_finest,
32 Vector<BoxArray>& new_grids,
33 Vector<IntVect> const& max_grid_size);
34 static void btCalculateLevel (bittree::BittreeAmr* mesh,
35 int lev,
36 BoxArray& ba,
37 IntVect const& max_grid_size);
38 // Utils
39 static int getBitid (bittree::BittreeAmr* mesh, bool updated,
40 int lev, int idx_on_lev);
41 static int getIndex (bittree::BittreeAmr* mesh, bool updated,
42 int lev, int bitid);
43
44 // Functions to implement strict octree logic
45 private:
46 static void btCheckRefine (bittree::BittreeAmr* mesh,
47 std::vector<int>& btTags,
48 int max_crse, int lbase,
50 MPI_Comm comm);
51
52 static void btCheckDerefine (bittree::BittreeAmr* mesh,
53 std::vector<int>& btTags,
54 int max_crse, int lbase,
56 MPI_Comm comm);
57
58 // Utility Functions
59 static bool checkNeighborsRefine (bittree::BittreeAmr* mesh,
60 bittree::MortonTree::Block b);
61 static std::vector<int> neighIntCoords (bittree::BittreeAmr* mesh,
62 unsigned lev, unsigned const* lcoord,
63 int const* gCell);
64
65 public:
66 // Represents whether domain has periodic BC in each direction
67 // true = Periodic, false = Non-Periodic
68 static bool bcPeriodic[AMREX_SPACEDIM];
69};
70
71
72}
73#endif
int MPI_Comm
Definition AMReX_ccse-mpi.H:47
A collection of Boxes stored in an Array.
Definition AMReX_BoxArray.H:550
This class is a thin wrapper around std::vector. Unlike vector, Vector::operator[] provides bound che...
Definition AMReX_Vector.H:27
Definition AMReX_Bittree.H:21
static void btCheckDerefine(bittree::BittreeAmr *mesh, std::vector< int > &btTags, int max_crse, int lbase, Vector< BoxArray > &grids, Vector< DistributionMapping > &dmap, MPI_Comm comm)
Definition AMReX_Bittree.cpp:225
static int btRefine(bittree::BittreeAmr *mesh, std::vector< int > &btTags, int max_crse, int lbase, Vector< BoxArray > &grids, Vector< DistributionMapping > &dmap, MPI_Comm comm)
Definition AMReX_Bittree.cpp:33
static bool checkNeighborsRefine(bittree::BittreeAmr *mesh, bittree::MortonTree::Block b)
Definition AMReX_Bittree.cpp:289
static int getIndex(bittree::BittreeAmr *mesh, bool updated, int lev, int bitid)
Definition AMReX_Bittree.cpp:143
static std::vector< int > neighIntCoords(bittree::BittreeAmr *mesh, unsigned lev, unsigned const *lcoord, int const *gCell)
Definition AMReX_Bittree.cpp:348
static int getBitid(bittree::BittreeAmr *mesh, bool updated, int lev, int idx_on_lev)
Definition AMReX_Bittree.cpp:137
static bool bcPeriodic[AMREX_SPACEDIM]
Definition AMReX_Bittree.H:68
static void btCalculateGrids(bittree::BittreeAmr *mesh, int lbase, int &new_finest, Vector< BoxArray > &new_grids, Vector< IntVect > const &max_grid_size)
Definition AMReX_Bittree.cpp:82
static void btCalculateLevel(bittree::BittreeAmr *mesh, int lev, BoxArray &ba, IntVect const &max_grid_size)
Definition AMReX_Bittree.cpp:102
static void btCheckRefine(bittree::BittreeAmr *mesh, std::vector< int > &btTags, int max_crse, int lbase, Vector< BoxArray > &grids, Vector< DistributionMapping > &dmap, MPI_Comm comm)
Definition AMReX_Bittree.cpp:159
Definition AMReX_Amr.cpp:49