LCOV - code coverage report
Current view: top level - include/mesh - NekBoundaryCoupling.h (source / functions) Hit Total Coverage
Test: neams-th-coe/cardinal: be601f Lines: 1 1 100.0 %
Date: 2025-07-15 20:50:38 Functions: 0 0 -
Legend: Lines: hit not hit

          Line data    Source code
       1             : /********************************************************************/
       2             : /*                  SOFTWARE COPYRIGHT NOTIFICATION                 */
       3             : /*                             Cardinal                             */
       4             : /*                                                                  */
       5             : /*                  (c) 2021 UChicago Argonne, LLC                  */
       6             : /*                        ALL RIGHTS RESERVED                       */
       7             : /*                                                                  */
       8             : /*                 Prepared by UChicago Argonne, LLC                */
       9             : /*               Under Contract No. DE-AC02-06CH11357               */
      10             : /*                With the U. S. Department of Energy               */
      11             : /*                                                                  */
      12             : /*             Prepared by Battelle Energy Alliance, LLC            */
      13             : /*               Under Contract No. DE-AC07-05ID14517               */
      14             : /*                With the U. S. Department of Energy               */
      15             : /*                                                                  */
      16             : /*                 See LICENSE for full restrictions                */
      17             : /********************************************************************/
      18             : 
      19             : #pragma once
      20             : 
      21             : #include "CardinalUtils.h"
      22             : 
      23             : /**
      24             :  * Store the geometry and parallel information related to the surface mesh coupling.
      25             :  * Unless otherwise noted, all information in here is indexed according to the
      26             :  * NekRS mesh, and *not* the mesh mirror (this is only relevant for 'exact' mesh mirrors,
      27             :  * where we build N^2 or N^3 MOOSE elements for each NekRS element).
      28             :  */
      29             : class NekBoundaryCoupling
      30             : {
      31             : public:
      32             :   /**
      33             :    * nekRS process owning the global element in the data transfer mesh
      34             :    * @param[in] elem_id element ID
      35             :    * @return nekRS process ID
      36             :    */
      37     2293682 :   int processor_id(const int elem_id) const { return process[elem_id]; }
      38             : 
      39             :   // process-local element IDS on the boundary of interest (for all ranks)
      40             :   std::vector<int> element;
      41             : 
      42             :   // element-local face IDs on the boundary of interest (for all ranks)
      43             :   std::vector<int> face;
      44             : 
      45             :   // problem-global boundary ID for each element (for all ranks)
      46             :   std::vector<int> boundary_id;
      47             : 
      48             :   // process owning each face (for all faces)
      49             :   std::vector<int> process;
      50             : 
      51             :   // number of faces owned by each process
      52             :   std::vector<int> counts;
      53             : 
      54             :   // number of MOOSE mirror faces owned by each process
      55             :   std::vector<int> mirror_counts;
      56             : 
      57             :   // number of coupling elements owned by this process
      58             :   int n_faces = 0;
      59             : 
      60             :   // total number of coupling elements
      61             :   int total_n_faces = 0;
      62             : 
      63             :   // offset into the element, face, and process arrays where this rank's data begins
      64             :   int offset = 0;
      65             : };

Generated by: LCOV version 1.14