CoMMA 1.3.2
A geometric agglomerator for unstructured meshes
|
#include <algorithm>
#include <cassert>
#include <cmath>
#include <functional>
#include <iterator>
#include <map>
#include <numeric>
#include <queue>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <utility>
#include <vector>
#include "CoMMA/Args.h"
Go to the source code of this file.
Classes | |
struct | comma::CustomPairLessFunctor< PairT > |
Functor for pairs implementing a custom 'less than'. It relies on the 'less than' operator for the second elements and 'greater than' for the first ones. More... | |
struct | comma::CustomPairGreaterFunctor< PairT > |
Functor for pairs implementing a custom 'greater than'. It relies on the 'greater than' operator for the second elements and 'less than' for the first ones. More... | |
struct | comma::PairSecondBasedLessFunctor< PairT > |
Functor for pairs implementing a less operator based only on the second element of the pair. More... | |
class | comma::PairFindFirstBasedFunctor< PairT > |
Functor implementing an operator telling if a given value if the first one of pair. More... | |
Namespaces | |
namespace | comma |
Macros | |
#define | CoMMAUnused(var) (void)(var) |
Convenient function to avoid unused warnings. More... | |
Functions | |
template<typename T > | |
T constexpr | comma::_sq (const T x) |
Square. More... | |
template<typename T > | |
T constexpr | comma::_cb (const T x) |
Cube. More... | |
template<unsigned int p, typename T > | |
T constexpr | comma::int_power (const T x) |
Raise a quantity to an integer power. More... | |
template<typename T > | |
bool constexpr | comma::dot_deviate (const T dot) |
Tell whether the dot product given as input comes from two parallel vectors. Compared against deviate_thresh. More... | |
template<typename T > | |
T | comma::dot_product (const std::vector< T > &a, const std::vector< T > &b) |
Compute the dot product between two vectors. No check on size is performed. More... | |
template<typename T > | |
T | comma::get_direction (const std::vector< T > &a, const std::vector< T > &b, std::vector< T > &dir) |
Compute the direction from point a to point b and store it as unit vector in dir . More... | |
template<typename T > | |
T | comma::squared_euclidean_distance (const std::vector< T > &a, const std::vector< T > &b) |
Compute the squared Euclidean distance between two points seen as vectors. We use vectors because we can have both 2- and 3D points (also we can have 3D points even if the dimension given to CoMMA is 2D, e.g., with CODA pseudo-2D meshes). The dimension used as reference is the one of the first point. More... | |
template<typename CoMMAContainerPairType > | |
std::vector< typename CoMMAContainerPairType::value_type::first_type > | comma::vector_of_first_elements (const CoMMAContainerPairType &cont) |
Given a container of pairs, return a vector with first elements only. More... | |
template<typename KeyT , typename ValueT > | |
std::unordered_set< KeyT > | comma::d_keys_to_set (const std::unordered_map< KeyT, ValueT > &dict) |
Utility function for creating a set out of the keys of a map. More... | |
template<typename IndexT , typename IntT > | |
void | comma::filter_cells_by_n_edges (const std::vector< IndexT > &indices, const std::vector< IntT > &n_bnd_faces, const std::unordered_set< IntT > &allowed, std::vector< IndexT > &filtered) |
Given the connectivity of the graph, filter cells keeping only those with the desired number of edges / neighbours. More... | |
template<typename IndexT , typename DistT > | |
void | comma::compute_neighbourhood_based_wall_distance (const std::vector< IndexT > &neigh_idxs, const std::vector< IndexT > &neighs, const std::vector< IndexT > &wall, std::vector< DistT > &dist) |
Compute a neighbourhood-base wall-distance, that is, the distance of a given cell from a wall is the number of cells though which the minimum path starting from the cell and ending at the wall. For example, in a Cartesian grids this is equivalent to the minimum of the Manhattan distance. If the vector defining the wall is empty, return negative values. If a cell is unconnected to the domain with the wall, its distance will be negative. It takes a compressed version of the connectivity of the mesh. It uses a BFS algorithm to visit all the cells. More... | |
template<typename IndexT , typename RealT , typename IntT > | |
void | comma::build_coarse_graph (const std::vector< IndexT > &f2c, const std::vector< IndexT > &f_adj_idx, const std::vector< IndexT > &f_adj, const std::vector< RealT > &f_weights, const std::vector< RealT > &f_volumes, const std::vector< std::vector< RealT > > &f_centers, const std::vector< RealT > &f_priority, const std::vector< IntT > &f_n_bnd, std::vector< IndexT > &c_adj_idx, std::vector< IndexT > &c_adj, std::vector< RealT > &c_weights, std::vector< RealT > &c_volumes, std::vector< std::vector< RealT > > &c_centers, std::vector< RealT > &c_priority, std::vector< IntT > &c_n_bnd) |
Build a coarse graph from the fine graph and the result of a previous agglomeration. More... | |
Variables | |
constexpr double | comma::deviate_thresh = 0.9396926207859084 |
Threshold used in combination with a dot product to tell whether two vector deviate. It is set to . More... | |
#define CoMMAUnused | ( | var | ) | (void)(var) |
Convenient function to avoid unused warnings.