HArD::Core3D
Hybrid Arbitrary Degree::Core 3D - Library to implement 3D schemes with vertex, edge, face and cell polynomials as unknowns
Loading...
Searching...
No Matches
Classes | Namespaces | Functions
parallel_for.hpp File Reference
#include <thread>
#include <Eigen/Sparse>
Include dependency graph for parallel_for.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  HArDCore3D::SystemVectors< MatrixType >
 Struct to store the systems and vector. More...
 

Namespaces

namespace  HArDCore3D
 

Functions

static std::pair< std::vector< int >, std::vector< int > > HArDCore3D::distributeLoad (size_t nb_elements, unsigned nb_threads)
 Function to distribute elements (considered as jobs) over threads. It returns a pair of vectors indicating the start and end element of each thread.
 
static void HArDCore3D::parallel_for (unsigned nb_elements, std::function< void(size_t start, size_t end)> functor, bool use_threads=true)
 Generic function to execute threaded processes.
 
static SystemVectors< Eigen::SparseMatrix< double > > HArDCore3D::parallel_assembly_system (size_t nb_elements, std::vector< std::pair< size_t, size_t > > size_systems, std::vector< size_t > size_vectors, std::function< void(size_t start, size_t end, std::vector< std::list< Eigen::Triplet< double > > > *triplets, std::vector< Eigen::VectorXd > *vecs)> batch_local_assembly, bool use_threads=true)
 Function to assemble global matrices from a procedure that compute local triplets.
 
static std::pair< Eigen::SparseMatrix< double >, Eigen::VectorXd > HArDCore3D::parallel_assembly_system (size_t nb_elements, size_t size_system, std::function< void(size_t start, size_t end, std::list< Eigen::Triplet< double > > *triplets, Eigen::VectorXd *rhs)> batch_local_assembly, bool use_threads=true)
 Function to assemble a global matrix and right-hand side from a procedure that compute local triplets and rhs contributions (a wrapper for the more general function that can assemble several matrices and vectors)
 
static std::tuple< Eigen::SparseMatrix< double >, Eigen::VectorXd, Eigen::SparseMatrix< double >, Eigen::VectorXd > HArDCore3D::parallel_assembly_system (size_t nb_elements, size_t size_system1, std::pair< size_t, size_t > size_Mat2, size_t size_b2, std::function< void(size_t start, size_t end, std::list< Eigen::Triplet< double > > *triplets1, Eigen::VectorXd *vec1, std::list< Eigen::Triplet< double > > *triplets2, Eigen::VectorXd *vec2)> batch_local_assembly, bool use_threads=true)
 Function to assemble two global matrices and vectors (such as: system and static condensation operator, or system and matrix for BC) from a procedure that compute local triplets and rhs contributions (a wrapper for the more general function that can assemble several matrices and vectors)