Skip to content
Snippets Groups Projects
Commit 6e648c2d authored by Stéphane Del Pino's avatar Stéphane Del Pino
Browse files

Store volume when detecting bad mesh

parent 26a05415
Branches
Tags
1 merge request!167Improve fluxing based remapping
...@@ -22,6 +22,7 @@ add_library( ...@@ -22,6 +22,7 @@ add_library(
MedianDualMeshBuilder.cpp MedianDualMeshBuilder.cpp
MeshBuilderBase.cpp MeshBuilderBase.cpp
MeshCellZone.cpp MeshCellZone.cpp
MeshData.cpp
MeshDataManager.cpp MeshDataManager.cpp
MeshEdgeBoundary.cpp MeshEdgeBoundary.cpp
MeshFaceBoundary.cpp MeshFaceBoundary.cpp
......
#include <mesh/MeshData.hpp>
#include <mesh/Connectivity.hpp>
#include <mesh/ItemValueVariant.hpp>
#include <mesh/Mesh.hpp>
#include <output/NamedItemValueVariant.hpp>
#include <output/VTKWriter.hpp>
#include <utils/Exceptions.hpp>
template <size_t Dimension>
void
MeshData<Dimension>::_storeBadMesh()
{
VTKWriter writer("bad_mesh");
writer.writeOnMesh(std::make_shared<MeshType>(m_mesh.shared_connectivity(), m_mesh.xr()),
{std::make_shared<NamedItemValueVariant>(std::make_shared<ItemValueVariant>(m_Vj), "volume")});
std::ostringstream error_msg;
error_msg << "mesh contains cells of non-positive volume (see " << rang::fgB::yellow << "bad_mesh.pvd"
<< rang::fg::reset << " file).";
throw NormalError(error_msg.str());
}
template void MeshData<1>::_storeBadMesh();
template void MeshData<2>::_storeBadMesh();
template void MeshData<3>::_storeBadMesh();
...@@ -5,14 +5,9 @@ ...@@ -5,14 +5,9 @@
#include <mesh/IMeshData.hpp> #include <mesh/IMeshData.hpp>
#include <mesh/ItemValue.hpp> #include <mesh/ItemValue.hpp>
#include <mesh/SubItemValuePerItem.hpp> #include <mesh/SubItemValuePerItem.hpp>
#include <utils/Exceptions.hpp>
#include <utils/Messenger.hpp> #include <utils/Messenger.hpp>
#include <utils/PugsUtils.hpp> #include <utils/PugsUtils.hpp>
#include <output/VTKWriter.hpp>
#include <map>
template <size_t Dimension> template <size_t Dimension>
class Connectivity; class Connectivity;
...@@ -49,6 +44,8 @@ class MeshData : public IMeshData ...@@ -49,6 +44,8 @@ class MeshData : public IMeshData
FaceValue<const double> m_ll; FaceValue<const double> m_ll;
EdgeValue<const Rd> m_xe; EdgeValue<const Rd> m_xe;
void _storeBadMesh();
PUGS_INLINE PUGS_INLINE
void void
_computeNl() _computeNl()
...@@ -537,12 +534,7 @@ class MeshData : public IMeshData ...@@ -537,12 +534,7 @@ class MeshData : public IMeshData
}(); }();
if (not parallel::allReduceAnd(is_valid)) { if (not parallel::allReduceAnd(is_valid)) {
VTKWriter writer("bad_mesh"); this->_storeBadMesh();
writer.writeMesh(m_mesh);
std::ostringstream error_msg;
error_msg << "mesh contains cells of non-positive volume (see " << rang::fgB::yellow << "bad_mesh.pvd"
<< rang::fg::reset << " file).";
throw NormalError(error_msg.str());
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment