https://mooseframework.inl.gov
BoundaryLayerUtils.h
Go to the documentation of this file.
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 "libmesh/replicated_mesh.h"
13 #include "libmesh/mesh_triangle_holes.h"
14 
15 #include "MooseTypes.h"
16 #include "MeshGenerator.h"
17 
19 {
20 
40 std::unique_ptr<MeshBase> buildBoundaryLayerRing(MeshGenerator & mg,
41  MeshBase & input_mesh,
42  const std::vector<BoundaryName> & boundary_names,
43  unsigned int num_layers,
44  Real thickness,
45  Real layer_bias,
46  bool outward,
47  const MooseEnum & tri_elem_type,
48  SubdomainID output_subdomain_id,
49  const SubdomainName & output_subdomain_name);
50 
66 std::vector<Point> generateOffsetPolyline(MeshGenerator * mg,
67  std::unique_ptr<libMesh::UnstructuredMesh> & ply_mesh_u,
68  std::vector<Point> & points,
69  std::vector<Point> & mid_points,
70  const bool outward,
71  const Real thickness);
72 
84  std::vector<Point> & points,
85  std::vector<Point> & mid_points,
86  const bool skip_node_reduction = false);
87 
95 Point getKeyNormal(const Elem * elem, const unsigned int s, const unsigned int node_index);
96 }
This is a "smart" enum class intended to replace many of the shortcomings in the C++ enum type It sho...
Definition: MooseEnum.h:54
std::vector< Point > generateOffsetPolyline(MeshGenerator *mg, std::unique_ptr< libMesh::UnstructuredMesh > &ply_mesh_u, std::vector< Point > &points, std::vector< Point > &mid_points, const bool outward, const Real thickness)
Generates a list of points offset from the input boundary polyline by a specified thickness in either...
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Point getKeyNormal(const Elem *elem, const unsigned int s, const unsigned int node_index)
Extracts the normal vector of the EDGE3 side of a quadratic element at a given node index...
void collectExteriorVertexPointsFromMesh(libMesh::TriangulatorInterface::MeshedHole &bdry_mh, std::vector< Point > &points, std::vector< Point > &mid_points, const bool skip_node_reduction=false)
Collects key vertex points (and optional midpoints) from a meshed hole, optionally discarding colinea...
std::unique_ptr< MeshBase > buildBoundaryLayerRing(MeshGenerator &mg, MeshBase &input_mesh, const std::vector< BoundaryName > &boundary_names, unsigned int num_layers, Real thickness, Real layer_bias, bool outward, const MooseEnum &tri_elem_type, SubdomainID output_subdomain_id, const SubdomainName &output_subdomain_name)
Builds a conformal boundary-layer ring of triangulated annuli along a boundary of an input 2D mesh (o...
MeshGenerators are objects that can modify or add to an existing mesh.
Definition: MeshGenerator.h:33