Program Listing for File discretization.h¶
↰ Return to documentation for file (include/immersx/vascularization/discretization.h)
// Copyright (C) 2026 by Luca Heltai
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#ifndef immersx_vascularization_discretization_h
#define immersx_vascularization_discretization_h
#include <deal.II/base/mpi.h>
#include <deal.II/fe/mapping.h>
#include <deal.II/grid/cell_id.h>
#include <deal.II/grid/tria.h>
#include <immersx/vascularization/growth_work.h>
#include <immersx/vascularization/network.h>
#include <functional>
#include <set>
namespace ImmersX::Vascularization
{
struct DiscretizationParameters
{
void
validate() const;
double target_factor = 1.;
double lower_factor = .5;
double upper_factor = 2.;
double exterior_length = 0.;
unsigned int cell_budget = 1000000;
};
struct DiscretizationCell
{
VesselCell reference;
double h_min = 0.;
double h_max = 0.;
dealii::types::subdomain_id owner = 0;
bool inside = false;
bool short_cell = false;
};
struct DiscretizationResult
{
GrowthWork work;
std::vector<DiscretizationCell> cells;
ValidationReport validation;
double inside_volume = 0.;
unsigned int short_cells = 0;
unsigned int exterior_cells = 0;
};
DiscretizationResult
discretize(const dealii::Triangulation<3> &background,
const dealii::Mapping<3> &mapping,
const NetworkData &network,
const DiscretizationParameters ¶meters,
MPI_Comm communicator);
using CellVessels = std::map<dealii::types::coarse_cell_id, VesselCell>;
CellVessels
create_triangulation(const NetworkData &network,
const DiscretizationResult &discretization,
dealii::Triangulation<1, 3> &triangulation);
CellVessels
create_triangulation(
const NetworkData &network,
const DiscretizationResult &discretization,
dealii::Triangulation<1, 3> &triangulation,
const std::set<Id> &reversed_vessels,
const std::function<std::array<dealii::types::boundary_id, 2>(
const VesselCell &,
const Vessel &)> &boundary_ids = {});
VesselCell
physical_reference(const dealii::CellId &cell,
const CellVessels &coarse_cells);
} // namespace ImmersX::Vascularization
#endif