36#ifndef FINECOARSEMESHPAIR_HPP_
37#define FINECOARSEMESHPAIR_HPP_
39#include "AbstractTetrahedralMesh.hpp"
40#include "DistributedBoxCollection.hpp"
41#include "QuadraturePointsGroup.hpp"
42#include "GaussianQuadratureRule.hpp"
43#include "Warnings.hpp"
44#include "CommandLineArguments.hpp"
105template <
unsigned DIM>
108friend class TestFineCoarseMeshPair;
181 unsigned boxForThisPoint,
193 unsigned boxForThisPoint);
221 std::set<unsigned>& rElementIndices);
234 std::set<unsigned>& rElementIndices);
std::vector< unsigned > & rGetCoarseElementsForFineNodes()
void SetUpBoxesOnFineMesh(double boxWidth=-1)
AbstractTetrahedralMesh< DIM, DIM > & mrCoarseMesh
std::vector< unsigned > mStatisticsCounters
void CollectElementsInContainingBox(DistributedBoxCollection< DIM > *&rpBoxCollection, unsigned boxIndex, std::set< unsigned > &rElementIndices)
std::vector< unsigned > & rGetCoarseElementsForFineElementCentroids()
void ComputeFineElementsAndWeightsForCoarseQuadPoints(GaussianQuadratureRule< DIM > &rQuadRule, bool safeMode)
void SetUpBoxes(AbstractTetrahedralMesh< DIM, DIM > &rMesh, double boxWidth, DistributedBoxCollection< DIM > *&rpBoxCollection)
const AbstractTetrahedralMesh< DIM, DIM > & GetCoarseMesh() const
void SetUpBoxesOnCoarseMesh(double boxWidth=-1)
const AbstractTetrahedralMesh< DIM, DIM > & GetFineMesh() const
DistributedBoxCollection< DIM > * mpFineMeshBoxCollection
std::vector< unsigned > mCoarseElementsForFineNodes
void ComputeFineElementsAndWeightsForCoarseNodes(bool safeMode)
unsigned ComputeCoarseElementForGivenPoint(ChastePoint< DIM > &rPoint, bool safeMode, unsigned boxForThisPoint)
std::vector< unsigned > mCoarseElementsForFineElementCentroids
void DeleteCoarseBoxCollection()
void ComputeCoarseElementsForFineNodes(bool safeMode)
void ComputeCoarseElementsForFineElementCentroids(bool safeMode)
DistributedBoxCollection< DIM > * mpCoarseMeshBoxCollection
void CollectElementsInLocalBoxes(DistributedBoxCollection< DIM > *&rpBoxCollection, unsigned boxIndex, std::set< unsigned > &rElementIndices)
std::vector< ElementAndWeights< DIM > > & rGetElementsAndWeights()
void ResetStatisticsVariables()
void DeleteFineBoxCollection()
void ComputeFineElementAndWeightForGivenPoint(ChastePoint< DIM > &rPoint, bool safeMode, unsigned boxForThisPoint, unsigned index)
std::vector< c_vector< double, DIM+1 > > mNotInMeshNearestElementWeights
std::vector< ElementAndWeights< DIM > > mFineMeshElementsAndWeights
void ShareFineElementData()
std::vector< unsigned > mNotInMesh
void ShareCoarseElementData()
AbstractTetrahedralMesh< DIM, DIM > & mrFineMesh
c_vector< double, DIM+1 > Weights