Program Listing for File mesh_scale.h¶
↰ Return to documentation for file (include/immersx/vascularization/mesh_scale.h)
// Copyright (C) 2026 by Luca Heltai
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#ifndef immersx_vascularization_mesh_scale_h
#define immersx_vascularization_mesh_scale_h
#include <deal.II/base/mpi.h>
#include <deal.II/fe/mapping.h>
#include <deal.II/grid/tria.h>
#include <immersx/vascularization/network.h>
namespace ImmersX::Vascularization
{
enum class LengthScalePolicy
{
meter,
local_mesh_size,
min_mesh_size,
max_mesh_size
};
struct MeshLengthScale
{
LengthScalePolicy policy = LengthScalePolicy::meter;
double mesh_minimum = 1., mesh_maximum = 1.;
void
validate() const;
double
value(double local_diameter) const;
double
minimum() const;
double
maximum() const;
double
physical_length(double coefficient, double local_diameter) const;
std::string
name() const;
};
MeshLengthScale
mesh_length_scale(const dealii::Triangulation<3> &background,
const std::string &policy,
MPI_Comm communicator);
struct ScaledVesselMeasure
{
double normalized_length = 0., inside_length = 0., exterior_length = 0.;
double minimum_scale = 0., maximum_scale = 0.;
double minimum_normalized_radius = 0., maximum_normalized_radius = 0.;
bool has_normalized_part = false;
bool complete = true;
};
std::map<Id, ScaledVesselMeasure>
measure_scaled_vessels(const dealii::Triangulation<3> &background,
const dealii::Mapping<3> &mapping,
const NetworkData &network,
const MeshLengthScale &scale,
MPI_Comm communicator);
} // namespace ImmersX::Vascularization
#endif