Line data Source code
1 : //* This file is part of the MOOSE framework 2 : //* https://mooseframework.inl.gov 3 : //* 4 : //* All rights reserved, see COPYRIGHT for full restrictions 5 : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT 6 : //* 7 : //* Licensed under LGPL 2.1, please see LICENSE for details 8 : //* https://www.gnu.org/licenses/lgpl-2.1.html 9 : 10 : #pragma once 11 : 12 : #include "MeshAlignmentOneToMany.h" 13 : 14 : class Assembly; 15 : 16 : /** 17 : * Builds mapping between a 1D subdomain and a 3D boundary 18 : * 19 : * The "primary" mesh is the 1D subdomain, and the "secondary" mesh is the 3D boundary. 20 : */ 21 0 : class MeshAlignment1D3D : public MeshAlignmentOneToMany 22 : { 23 : public: 24 : /** 25 : * Constructor 26 : * 27 : * @param mesh[in] mesh Mesh 28 : */ 29 : MeshAlignment1D3D(const MooseMesh & mesh); 30 : 31 : /** 32 : * Extracts mesh information and builds the mapping 33 : * 34 : * @param primary_elem_ids[in] List of primary element IDs 35 : * @param secondary_boundary_info[in] List of tuples (elem_id, side_id) of the secondary side 36 : */ 37 : void initialize( 38 : const std::vector<dof_id_type> & primary_elem_ids, 39 : const std::vector<std::tuple<dof_id_type, unsigned short int>> & secondary_boundary_info); 40 : 41 : /** 42 : * Builds the map used for getting the coupled quadrature point index 43 : * 44 : * This method needs the assembly object, so it needs to be called from an 45 : * object that has assembly access (components do not). 46 : * 47 : * @param assembly The assembly object 48 : */ 49 : void buildCoupledElemQpIndexMap(Assembly & assembly); 50 : };