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
No related branches found
No related tags found
1 merge request!167Improve fluxing based remapping
......@@ -22,6 +22,7 @@ add_library(
MedianDualMeshBuilder.cpp
MeshBuilderBase.cpp
MeshCellZone.cpp
MeshData.cpp
MeshDataManager.cpp
MeshEdgeBoundary.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 @@
#include <mesh/IMeshData.hpp>
#include <mesh/ItemValue.hpp>
#include <mesh/SubItemValuePerItem.hpp>
#include <utils/Exceptions.hpp>
#include <utils/Messenger.hpp>
#include <utils/PugsUtils.hpp>
#include <output/VTKWriter.hpp>
#include <map>
template <size_t Dimension>
class Connectivity;
......@@ -49,6 +44,8 @@ class MeshData : public IMeshData
FaceValue<const double> m_ll;
EdgeValue<const Rd> m_xe;
void _storeBadMesh();
PUGS_INLINE
void
_computeNl()
......@@ -537,12 +534,7 @@ class MeshData : public IMeshData
}();
if (not parallel::allReduceAnd(is_valid)) {
VTKWriter writer("bad_mesh");
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());
this->_storeBadMesh();
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment