Program Listing for File coupling_point.h

Return to documentation for file (include/immersx/coupling/detail/coupling_point.h)

// ---------------------------------------------------------------------
//
// Copyright (C) 2026 by Luca Heltai
//
// This file is part of the ImmersX application, based on the deal.II
// library.
//
// ---------------------------------------------------------------------

#ifndef immersx_coupling_detail_coupling_point_h
#define immersx_coupling_detail_coupling_point_h

#include <deal.II/base/point.h>
#include <deal.II/base/tensor.h>
#include <deal.II/base/types.h>

#include <cstdint>
#include <limits>
#include <vector>

namespace ImmersX::detail
{
  template <int spacedim, typename ValueType = double>
  struct CouplingPoint
  {
    using value_type = ValueType;

    dealii::Point<spacedim>          point;
    dealii::Point<spacedim>          representative_point;
    double                           weight = 0.;
    dealii::types::global_cell_index source_entity_id =
      dealii::numbers::invalid_unsigned_int;
    unsigned int  representative_qpoint = dealii::numbers::invalid_unsigned_int;
    unsigned int  section_qpoint        = dealii::numbers::invalid_unsigned_int;
    std::uint64_t stable_id = std::numeric_limits<std::uint64_t>::max();
    std::vector<dealii::types::global_dof_index> dof_indices;
    std::vector<ValueType>                       basis_values;
    std::vector<double>                          source_basis_values;
    std::vector<double>                          mode_values;
    dealii::Tensor<1, spacedim>                  mode_vector;
  };
} // namespace ImmersX::detail

#endif // immersx_coupling_detail_coupling_point_h