Program Listing for File metrics.h

↰ Return to documentation for file (include/immersx/vascularization/metrics.h)

// Copyright (C) 2026 by Luca Heltai
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#ifndef immersx_vascularization_metrics_h
#define immersx_vascularization_metrics_h

#include <immersx/vascularization/discretization.h>

namespace ImmersX::Vascularization
{
  struct MeshLengthScale;
  struct CoverageParameters
  {
    void
    validate() const;

    double       service_radius   = 0.;
    unsigned int quadrature_order = 2;
  };

  struct TissueMetrics
  {
    double background_volume    = 0.;
    double inside_vessel_volume = 0.;
    double volume_fraction      = 0.;
    double arterial_coverage = 0.;
    double venous_coverage   = 0.;
    double dual_coverage      = 0.;
    bool   coverage_evaluated = false;
    double coverage_quadrature_volume = 0.;
    double portal_coverage            = 0.;
    double triple_coverage = 0.;
  };

  TissueMetrics
  measure_tissue(const dealii::Triangulation<3> &background,
                 const dealii::Mapping<3>       &mapping,
                 const NetworkData              &network,
                 const DiscretizationResult     &discretization,
                 const CoverageParameters       &parameters,
                 MPI_Comm                        communicator);

  TissueMetrics
  measure_tissue(const dealii::Triangulation<3> &background,
                 const dealii::Mapping<3>       &mapping,
                 const NetworkData              &network,
                 const DiscretizationResult     &discretization,
                 const CoverageParameters       &parameters,
                 MPI_Comm                        communicator,
                 const MeshLengthScale          &scale);
} // namespace ImmersX::Vascularization
#endif