https://mooseframework.inl.gov
Loading...
Searching...
No Matches
PolygonMeshGeneratorBase.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 "MeshGenerator.h"
13#include "MooseEnum.h"
14#include "CastUniquePointer.h"
15#include "MooseMeshUtils.h"
16#include "libmesh/replicated_mesh.h"
17#include "libmesh/mesh_modification.h"
18#include "libmesh/face_quad4.h"
19#include "libmesh/face_quad8.h"
20#include "libmesh/face_quad9.h"
21#include "libmesh/face_tri3.h"
22#include "libmesh/face_tri6.h"
23#include "libmesh/face_tri7.h"
24#include "libmesh/serial_mesh.h"
25#include "libmesh/boundary_info.h"
26#include "libmesh/utility.h"
27
32{
33public:
35
37
38 virtual std::unique_ptr<MeshBase> generate() override;
39
42 {
43 apothem,
44 radius
45 };
46
53
59
60 enum INTRISIC_SUBDOMAIN_ID : subdomain_id_type
61 {
64 };
65 // boundary_id_type is short int so max is 32,767
66 enum INTRINSIC_SIDESET_ID : boundary_id_type
67 {
70 SLICE_BEGIN = 30000,
71 SLICE_END = 31000,
72 SLICE_ALT = 30500
73 };
74
80
81 enum class TRI_ELEM_TYPE
82 {
83 TRI3,
84 TRI6,
85 TRI7
86 };
87
88 enum class QUAD_ELEM_TYPE
89 {
90 QUAD4,
91 QUAD8,
92 QUAD9
93 };
94
97 {
98 std::vector<Real> widths;
99 std::vector<Real> fractions;
100 std::vector<unsigned int> intervals;
101 std::vector<Real> biases;
102 };
105 {
106 Real width;
108 unsigned int intervals;
109 Real bias;
110 };
111
112protected:
158 std::unique_ptr<ReplicatedMesh>
159 buildSimpleSlice(std::vector<Real> ring_radii,
160 const std::vector<unsigned int> ring_layers,
161 const std::vector<Real> ring_radial_biases,
162 const multiBdryLayerParams & ring_inner_boundary_layer_params,
163 const multiBdryLayerParams & ring_outer_boundary_layer_params,
164 std::vector<Real> ducts_center_dist,
165 const std::vector<unsigned int> ducts_layers,
166 const std::vector<Real> duct_radial_biases,
167 const multiBdryLayerParams & duct_inner_boundary_layer_params,
168 const multiBdryLayerParams & duct_outer_boundary_layer_params,
169 const Real pitch,
170 const unsigned int num_sectors_per_side,
171 const unsigned int background_intervals,
172 const Real background_radial_bias,
173 const singleBdryLayerParams & background_inner_boundary_layer_params,
174 const singleBdryLayerParams & background_outer_boundary_layer_params,
175 dof_id_type & node_id_background_meta,
176 const unsigned int side_number,
177 const unsigned int side_index,
178 const std::vector<Real> azimuthal_tangent = std::vector<Real>(),
179 const subdomain_id_type block_id_shift = 0,
180 const bool quad_center_elements = false,
181 const Real center_quad_factor = 0.0,
182 const bool create_inward_interface_boundaries = false,
183 const bool create_outward_interface_boundaries = true,
184 const boundary_id_type boundary_id_shift = 0,
185 const bool generate_side_specific_boundaries = true,
186 const TRI_ELEM_TYPE tri_elem_type = TRI_ELEM_TYPE::TRI3,
187 const QUAD_ELEM_TYPE quad_elem_type = QUAD_ELEM_TYPE::QUAD4);
188
230 std::unique_ptr<ReplicatedMesh>
231 buildGeneralSlice(std::vector<Real> ring_radii,
232 const std::vector<unsigned int> ring_layers,
233 const std::vector<Real> ring_radial_biases,
234 const multiBdryLayerParams & ring_inner_boundary_layer_params,
235 const multiBdryLayerParams & ring_outer_boundary_layer_params,
236 std::vector<Real> ducts_center_dist,
237 const std::vector<unsigned int> ducts_layers,
238 const std::vector<Real> duct_radial_biases,
239 const multiBdryLayerParams & duct_inner_boundary_layer_params,
240 const multiBdryLayerParams & duct_outer_boundary_layer_params,
241 const Real primary_side_length,
242 const Real secondary_side_length,
243 const unsigned int num_sectors_per_side,
244 const unsigned int background_intervals,
245 const Real background_radial_bias,
246 const singleBdryLayerParams & background_inner_boundary_layer_params,
247 const singleBdryLayerParams & background_outer_boundary_layer_params,
248 dof_id_type & node_id_background_meta,
249 const Real azimuthal_angle,
250 const std::vector<Real> azimuthal_tangent,
251 const unsigned int side_index,
252 const bool quad_center_elements,
253 const Real center_quad_factor,
254 const Real rotation_angle,
255 const bool generate_side_specific_boundaries = true);
256
305 std::unique_ptr<ReplicatedMesh>
306 buildSlice(std::vector<Real> ring_radii,
307 const std::vector<unsigned int> ring_layers,
308 const std::vector<Real> ring_radial_biases,
309 const multiBdryLayerParams & ring_inner_boundary_layer_params,
310 const multiBdryLayerParams & ring_outer_boundary_layer_params,
311 std::vector<Real> ducts_center_dist,
312 const std::vector<unsigned int> ducts_layers,
313 const std::vector<Real> duct_radial_biases,
314 const multiBdryLayerParams & duct_inner_boundary_layer_params,
315 const multiBdryLayerParams & duct_outer_boundary_layer_params,
316 const Real pitch,
317 const unsigned int num_sectors_per_side,
318 const unsigned int background_intervals,
319 const Real background_radial_bias,
320 const singleBdryLayerParams & background_inner_boundary_layer_params,
321 const singleBdryLayerParams & background_outer_boundary_layer_params,
322 dof_id_type & node_id_background_meta,
323 const Real virtual_side_number,
324 const unsigned int side_index,
325 const std::vector<Real> azimuthal_tangent = std::vector<Real>(),
326 const subdomain_id_type block_id_shift = 0,
327 const bool quad_center_elements = false,
328 const Real center_quad_factor = 0.0,
329 const bool create_inward_interface_boundaries = false,
330 const bool create_outward_interface_boundaries = true,
331 const boundary_id_type boundary_id_shift = 0,
332 const Real pitch_scale_factor = 1.0,
333 const bool generate_side_specific_boundaries = true,
334 const TRI_ELEM_TYPE tri_elem_type = TRI_ELEM_TYPE::TRI3,
335 const QUAD_ELEM_TYPE quad_elem_type = QUAD_ELEM_TYPE::QUAD4);
336
346 void centerNodes(ReplicatedMesh & mesh,
347 const Real virtual_side_number,
348 const unsigned int div_num,
349 const Real ring_radii_0,
350 std::vector<std::vector<Node *>> & nodes) const;
351
364 void ringNodes(ReplicatedMesh & mesh,
365 const std::vector<Real> ring_radii,
366 const std::vector<unsigned int> ring_layers,
367 const std::vector<std::vector<Real>> biased_terms,
368 const unsigned int num_sectors_per_side,
369 const Real corner_p[2][2],
370 const Real corner_to_corner,
371 const std::vector<Real> azimuthal_tangent = std::vector<Real>()) const;
372
389 void backgroundNodes(ReplicatedMesh & mesh,
390 const unsigned int num_sectors_per_side,
391 const unsigned int background_intervals,
392 const std::vector<Real> biased_terms,
393 const Real background_corner_distance,
394 const Real background_corner_radial_interval_length,
395 const Real corner_p[2][2],
396 const Real corner_to_corner,
397 const Real background_in,
398 const std::vector<Real> azimuthal_tangent = std::vector<Real>()) const;
399
412 void ductNodes(ReplicatedMesh & mesh,
413 std::vector<Real> * const ducts_center_dist,
414 const std::vector<unsigned int> ducts_layers,
415 const std::vector<std::vector<Real>> biased_terms,
416 const unsigned int num_sectors_per_side,
417 const Real corner_p[2][2],
418 const Real corner_to_corner,
419 const std::vector<Real> azimuthal_tangent = std::vector<Real>()) const;
420
436 void cenQuadElemDef(ReplicatedMesh & mesh,
437 const unsigned int div_num,
438 const subdomain_id_type block_id_shift,
439 const bool create_outward_interface_boundaries,
440 const boundary_id_type boundary_id_shift,
441 std::vector<std::vector<Node *>> & nodes,
442 const bool assign_external_boundary = false,
443 const unsigned int side_index = 0,
444 const bool generate_side_specific_boundaries = true,
445 const QUAD_ELEM_TYPE quad_elem_type = QUAD_ELEM_TYPE::QUAD4) const;
446
463 void cenTriElemDef(ReplicatedMesh & mesh,
464 const unsigned int num_sectors_per_side,
465 const std::vector<Real> azimuthal_tangent = std::vector<Real>(),
466 const subdomain_id_type block_id_shift = 0,
467 const bool create_outward_interface_boundaries = true,
468 const boundary_id_type boundary_id_shift = 0,
469 const bool assign_external_boundary = false,
470 const unsigned int side_index = 0,
471 const bool generate_side_specific_boundaries = true,
472 const TRI_ELEM_TYPE tri_elem_type = TRI_ELEM_TYPE::TRI3) const;
473
493 void quadElemDef(ReplicatedMesh & mesh,
494 const unsigned int num_sectors_per_side,
495 const std::vector<unsigned int> subdomain_rings,
496 const unsigned int side_index,
497 const std::vector<Real> azimuthal_tangent = std::vector<Real>(),
498 const subdomain_id_type block_id_shift = 0,
499 const dof_id_type nodeid_shift = 0,
500 const bool create_inward_interface_boundaries = false,
501 const bool create_outward_interface_boundaries = true,
502 const boundary_id_type boundary_id_shift = 0,
503 const bool generate_side_specific_boundaries = true,
504 const QUAD_ELEM_TYPE quad_elem_type = QUAD_ELEM_TYPE::QUAD4) const;
505
525 std::unique_ptr<ReplicatedMesh>
526 buildSimplePeripheral(const unsigned int num_sectors_per_side,
527 const unsigned int peripheral_invervals,
528 const std::vector<std::pair<Real, Real>> & position_inner,
529 const std::vector<std::pair<Real, Real>> & d_position_outer,
530 const subdomain_id_type id_shift,
531 const QUAD_ELEM_TYPE quad_elem_type,
532 const bool create_inward_interface_boundaries = false,
533 const bool create_outward_interface_boundaries = true);
534
541 void adjustPeripheralQuadraticElements(MeshBase & out_mesh,
542 const QUAD_ELEM_TYPE boundary_quad_elem_type) const;
543
560 std::pair<Real, Real> pointInterpolate(const Real pi_1_x,
561 const Real pi_1_y,
562 const Real po_1_x,
563 const Real po_1_y,
564 const Real pi_2_x,
565 const Real pi_2_y,
566 const Real po_2_x,
567 const Real po_2_y,
568 const unsigned int i,
569 const unsigned int j,
570 const unsigned int num_sectors_per_side,
571 const unsigned int peripheral_intervals) const;
572
580 void nodeCoordRotate(Real & x, Real & y, const Real theta) const;
581
595 void cutOffPolyDeform(MeshBase & mesh,
596 const Real orientation,
597 const Real y_max_0,
598 const Real y_max_n,
599 const Real y_min,
600 const unsigned int mesh_type,
601 const Real unit_angle = 60.0,
602 const Real tols = 1E-5) const;
603
612 std::pair<Real, Real> fourPointIntercept(const std::pair<Real, Real> & p1,
613 const std::pair<Real, Real> & p2,
614 const std::pair<Real, Real> & p3,
615 const std::pair<Real, Real> & p4) const;
616
634 std::vector<Real> azimuthalAnglesCollector(ReplicatedMesh & mesh,
635 std::vector<Point> & boundary_points,
636 const Real lower_azi = -30.0,
637 const Real upper_azi = 30.0,
638 const unsigned int return_type = ANGLE_TANGENT,
639 const unsigned int num_sides = 6,
640 const boundary_id_type bid = OUTER_SIDESET_ID,
641 const bool calculate_origin = true,
642 const Real input_origin_x = 0.0,
643 const Real input_origin_y = 0.0,
644 const Real tol = 1.0E-10) const;
645
661 std::vector<Real> azimuthalAnglesCollector(ReplicatedMesh & mesh,
662 const Real lower_azi = -30.0,
663 const Real upper_azi = 30.0,
664 const unsigned int return_type = ANGLE_TANGENT,
665 const unsigned int num_sides = 6,
666 const boundary_id_type bid = OUTER_SIDESET_ID,
667 const bool calculate_origin = true,
668 const Real input_origin_x = 0.0,
669 const Real input_origin_y = 0.0,
670 const Real tol = 1.0E-10) const;
671
683 std::vector<std::vector<Real>>
684 biasTermsCalculator(const std::vector<Real> radial_biases,
685 const std::vector<unsigned int> intervals,
686 const multiBdryLayerParams inner_boundary_layer_params,
687 const multiBdryLayerParams outer_boundary_layer_params) const;
688
700 std::vector<Real> biasTermsCalculator(
701 const Real radial_bias,
702 const unsigned int intervals,
703 const singleBdryLayerParams inner_boundary_layer_params = {0.0, 0.0, 0, 1.0},
704 const singleBdryLayerParams outer_boundary_layer_params = {0.0, 0.0, 0, 1.0}) const;
705
710 static void addRingAndSectorIDParams(InputParameters & params);
711
719 void setSectorExtraIDs(MeshBase & mesh,
720 const std::string id_name,
721 const unsigned int num_sides,
722 const std::vector<unsigned int> num_sectors_per_side);
723
734 void setRingExtraIDs(MeshBase & mesh,
735 const std::string id_name,
736 const unsigned int num_sides,
737 const std::vector<unsigned int> num_sectors_per_side,
738 const std::vector<unsigned int> ring_intervals,
739 const bool ring_wise_id,
740 const bool quad_center_elements);
741
749 void reassignBoundaryIDs(MeshBase & mesh,
750 const boundary_id_type id_shift,
751 const std::set<boundary_id_type> & boundary_ids,
752 const bool reverse = false);
753
768 std::set<boundary_id_type> getInterfaceBoundaryIDs(
769 const std::vector<std::vector<unsigned int>> & pattern,
770 const std::vector<std::vector<boundary_id_type>> & interface_boundary_id_shift_pattern,
771 const std::set<boundary_id_type> & boundary_ids,
772 const std::vector<std::set<boundary_id_type>> & input_interface_boundary_ids,
773 const bool use_interface_boundary_id_shift,
774 const bool create_interface_boundary_id,
775 const unsigned int num_extra_layers) const;
776
784 multiBdryLayerParams
785 modifiedMultiBdryLayerParamsCreator(const multiBdryLayerParams & original_multi_bdry_layer_params,
786 const unsigned int order) const;
787
795 singleBdryLayerParams modifiedSingleBdryLayerParamsCreator(
796 const singleBdryLayerParams & original_single_bdry_layer_params,
797 const unsigned int order) const;
798
807 std::string pitchMetaDataErrorGenerator(const std::vector<MeshGeneratorName> & input_names,
808 const std::vector<Real> & metadata_vals,
809 const std::string & metadata_name) const;
810};
const std::vector< double > y
const double tol
const std::vector< double > x
const InputParameters & parameters() const
A base class that contains common members for Reactor module mesh generators.
std::vector< Real > azimuthalAnglesCollector(ReplicatedMesh &mesh, std::vector< Point > &boundary_points, const Real lower_azi=-30.0, const Real upper_azi=30.0, const unsigned int return_type=ANGLE_TANGENT, const unsigned int num_sides=6, const boundary_id_type bid=OUTER_SIDESET_ID, const bool calculate_origin=true, const Real input_origin_x=0.0, const Real input_origin_y=0.0, const Real tol=1.0E-10) const
Collects sorted azimuthal angles of the external boundary.
void cenTriElemDef(ReplicatedMesh &mesh, const unsigned int num_sectors_per_side, const std::vector< Real > azimuthal_tangent=std::vector< Real >(), const subdomain_id_type block_id_shift=0, const bool create_outward_interface_boundaries=true, const boundary_id_type boundary_id_shift=0, const bool assign_external_boundary=false, const unsigned int side_index=0, const bool generate_side_specific_boundaries=true, const TRI_ELEM_TYPE tri_elem_type=TRI_ELEM_TYPE::TRI3) const
Defines triangular elements in the very central region of the polygon.
void setRingExtraIDs(MeshBase &mesh, const std::string id_name, const unsigned int num_sides, const std::vector< unsigned int > num_sectors_per_side, const std::vector< unsigned int > ring_intervals, const bool ring_wise_id, const bool quad_center_elements)
assign ring extra ids to polygon mesh
std::set< boundary_id_type > getInterfaceBoundaryIDs(const std::vector< std::vector< unsigned int > > &pattern, const std::vector< std::vector< boundary_id_type > > &interface_boundary_id_shift_pattern, const std::set< boundary_id_type > &boundary_ids, const std::vector< std::set< boundary_id_type > > &input_interface_boundary_ids, const bool use_interface_boundary_id_shift, const bool create_interface_boundary_id, const unsigned int num_extra_layers) const
returns a list of interface boundary IDs on the mesh generated by this mesh generator
PolygonSizeStyle
An enum class for style of input polygon size.
void cutOffPolyDeform(MeshBase &mesh, const Real orientation, const Real y_max_0, const Real y_max_n, const Real y_min, const unsigned int mesh_type, const Real unit_angle=60.0, const Real tols=1E-5) const
Deforms peripheral region when the external side of a polygon assembly of stitched meshes cuts off th...
static void addRingAndSectorIDParams(InputParameters &params)
Add InputParameters which are used by ring and sector IDs.
void backgroundNodes(ReplicatedMesh &mesh, const unsigned int num_sectors_per_side, const unsigned int background_intervals, const std::vector< Real > biased_terms, const Real background_corner_distance, const Real background_corner_radial_interval_length, const Real corner_p[2][2], const Real corner_to_corner, const Real background_in, const std::vector< Real > azimuthal_tangent=std::vector< Real >()) const
Creates nodes for the ring-to-polygon transition region (i.e., background) of a single slice.
std::unique_ptr< ReplicatedMesh > buildSimplePeripheral(const unsigned int num_sectors_per_side, const unsigned int peripheral_invervals, const std::vector< std::pair< Real, Real > > &position_inner, const std::vector< std::pair< Real, Real > > &d_position_outer, const subdomain_id_type id_shift, const QUAD_ELEM_TYPE quad_elem_type, const bool create_inward_interface_boundaries=false, const bool create_outward_interface_boundaries=true)
Creates peripheral area mesh for the patterned hexagon mesh.
std::unique_ptr< ReplicatedMesh > buildSlice(std::vector< Real > ring_radii, const std::vector< unsigned int > ring_layers, const std::vector< Real > ring_radial_biases, const multiBdryLayerParams &ring_inner_boundary_layer_params, const multiBdryLayerParams &ring_outer_boundary_layer_params, std::vector< Real > ducts_center_dist, const std::vector< unsigned int > ducts_layers, const std::vector< Real > duct_radial_biases, const multiBdryLayerParams &duct_inner_boundary_layer_params, const multiBdryLayerParams &duct_outer_boundary_layer_params, const Real pitch, const unsigned int num_sectors_per_side, const unsigned int background_intervals, const Real background_radial_bias, const singleBdryLayerParams &background_inner_boundary_layer_params, const singleBdryLayerParams &background_outer_boundary_layer_params, dof_id_type &node_id_background_meta, const Real virtual_side_number, const unsigned int side_index, const std::vector< Real > azimuthal_tangent=std::vector< Real >(), const subdomain_id_type block_id_shift=0, const bool quad_center_elements=false, const Real center_quad_factor=0.0, const bool create_inward_interface_boundaries=false, const bool create_outward_interface_boundaries=true, const boundary_id_type boundary_id_shift=0, const Real pitch_scale_factor=1.0, const bool generate_side_specific_boundaries=true, const TRI_ELEM_TYPE tri_elem_type=TRI_ELEM_TYPE::TRI3, const QUAD_ELEM_TYPE quad_elem_type=QUAD_ELEM_TYPE::QUAD4)
Generates a mesh of a polygon slice, which is the foundation of both buildGeneralSlice and buildSimpl...
void nodeCoordRotate(Real &x, Real &y, const Real theta) const
Calculates x and y coordinates after rotating by theta angle.
void setSectorExtraIDs(MeshBase &mesh, const std::string id_name, const unsigned int num_sides, const std::vector< unsigned int > num_sectors_per_side)
assign sector extra ids to polygon mesh
virtual std::unique_ptr< MeshBase > generate() override
std::unique_ptr< ReplicatedMesh > buildGeneralSlice(std::vector< Real > ring_radii, const std::vector< unsigned int > ring_layers, const std::vector< Real > ring_radial_biases, const multiBdryLayerParams &ring_inner_boundary_layer_params, const multiBdryLayerParams &ring_outer_boundary_layer_params, std::vector< Real > ducts_center_dist, const std::vector< unsigned int > ducts_layers, const std::vector< Real > duct_radial_biases, const multiBdryLayerParams &duct_inner_boundary_layer_params, const multiBdryLayerParams &duct_outer_boundary_layer_params, const Real primary_side_length, const Real secondary_side_length, const unsigned int num_sectors_per_side, const unsigned int background_intervals, const Real background_radial_bias, const singleBdryLayerParams &background_inner_boundary_layer_params, const singleBdryLayerParams &background_outer_boundary_layer_params, dof_id_type &node_id_background_meta, const Real azimuthal_angle, const std::vector< Real > azimuthal_tangent, const unsigned int side_index, const bool quad_center_elements, const Real center_quad_factor, const Real rotation_angle, const bool generate_side_specific_boundaries=true)
Creates a mesh of a general polygon slice with a triangular shape and circular regions on one of its ...
singleBdryLayerParams modifiedSingleBdryLayerParamsCreator(const singleBdryLayerParams &original_single_bdry_layer_params, const unsigned int order) const
Modifies the input single boundary layer parameters for node generation, especially for the quadratic...
static InputParameters validParams()
multiBdryLayerParams modifiedMultiBdryLayerParamsCreator(const multiBdryLayerParams &original_multi_bdry_layer_params, const unsigned int order) const
Modifies the input multi boundary layer parameters for node generation, especially for the quadratic ...
std::pair< Real, Real > fourPointIntercept(const std::pair< Real, Real > &p1, const std::pair< Real, Real > &p2, const std::pair< Real, Real > &p3, const std::pair< Real, Real > &p4) const
Finds the center of a quadrilateral based on four vertices.
void ringNodes(ReplicatedMesh &mesh, const std::vector< Real > ring_radii, const std::vector< unsigned int > ring_layers, const std::vector< std::vector< Real > > biased_terms, const unsigned int num_sectors_per_side, const Real corner_p[2][2], const Real corner_to_corner, const std::vector< Real > azimuthal_tangent=std::vector< Real >()) const
Creates nodes for the ring-geometry region of a single slice.
std::unique_ptr< ReplicatedMesh > buildSimpleSlice(std::vector< Real > ring_radii, const std::vector< unsigned int > ring_layers, const std::vector< Real > ring_radial_biases, const multiBdryLayerParams &ring_inner_boundary_layer_params, const multiBdryLayerParams &ring_outer_boundary_layer_params, std::vector< Real > ducts_center_dist, const std::vector< unsigned int > ducts_layers, const std::vector< Real > duct_radial_biases, const multiBdryLayerParams &duct_inner_boundary_layer_params, const multiBdryLayerParams &duct_outer_boundary_layer_params, const Real pitch, const unsigned int num_sectors_per_side, const unsigned int background_intervals, const Real background_radial_bias, const singleBdryLayerParams &background_inner_boundary_layer_params, const singleBdryLayerParams &background_outer_boundary_layer_params, dof_id_type &node_id_background_meta, const unsigned int side_number, const unsigned int side_index, const std::vector< Real > azimuthal_tangent=std::vector< Real >(), const subdomain_id_type block_id_shift=0, const bool quad_center_elements=false, const Real center_quad_factor=0.0, const bool create_inward_interface_boundaries=false, const bool create_outward_interface_boundaries=true, const boundary_id_type boundary_id_shift=0, const bool generate_side_specific_boundaries=true, const TRI_ELEM_TYPE tri_elem_type=TRI_ELEM_TYPE::TRI3, const QUAD_ELEM_TYPE quad_elem_type=QUAD_ELEM_TYPE::QUAD4)
Creates a mesh of a slice that corresponds to a single side of the polygon to be generated.
void reassignBoundaryIDs(MeshBase &mesh, const boundary_id_type id_shift, const std::set< boundary_id_type > &boundary_ids, const bool reverse=false)
reassign interface boundary IDs on the input mesh by applying the boundary ID shift
std::pair< Real, Real > pointInterpolate(const Real pi_1_x, const Real pi_1_y, const Real po_1_x, const Real po_1_y, const Real pi_2_x, const Real pi_2_y, const Real po_2_x, const Real po_2_y, const unsigned int i, const unsigned int j, const unsigned int num_sectors_per_side, const unsigned int peripheral_intervals) const
Calculates the point coordinates of within a parallelogram region using linear interpolation.
void quadElemDef(ReplicatedMesh &mesh, const unsigned int num_sectors_per_side, const std::vector< unsigned int > subdomain_rings, const unsigned int side_index, const std::vector< Real > azimuthal_tangent=std::vector< Real >(), const subdomain_id_type block_id_shift=0, const dof_id_type nodeid_shift=0, const bool create_inward_interface_boundaries=false, const bool create_outward_interface_boundaries=true, const boundary_id_type boundary_id_shift=0, const bool generate_side_specific_boundaries=true, const QUAD_ELEM_TYPE quad_elem_type=QUAD_ELEM_TYPE::QUAD4) const
Defines general quad elements for the polygon.
void adjustPeripheralQuadraticElements(MeshBase &out_mesh, const QUAD_ELEM_TYPE boundary_quad_elem_type) const
Adjusts the mid-edge node locations in boundary regions when using quadratic elements with uniform bo...
std::vector< std::vector< Real > > biasTermsCalculator(const std::vector< Real > radial_biases, const std::vector< unsigned int > intervals, const multiBdryLayerParams inner_boundary_layer_params, const multiBdryLayerParams outer_boundary_layer_params) const
Creates bias terms for multiple blocks.
void centerNodes(ReplicatedMesh &mesh, const Real virtual_side_number, const unsigned int div_num, const Real ring_radii_0, std::vector< std::vector< Node * > > &nodes) const
Creates nodes of the very central mesh layer of the polygon for quad central elements.
std::string pitchMetaDataErrorGenerator(const std::vector< MeshGeneratorName > &input_names, const std::vector< Real > &metadata_vals, const std::string &metadata_name) const
Generate a string that contains the detailed metadata information for inconsistent input mesh metadat...
void ductNodes(ReplicatedMesh &mesh, std::vector< Real > *const ducts_center_dist, const std::vector< unsigned int > ducts_layers, const std::vector< std::vector< Real > > biased_terms, const unsigned int num_sectors_per_side, const Real corner_p[2][2], const Real corner_to_corner, const std::vector< Real > azimuthal_tangent=std::vector< Real >()) const
Creates nodes for the duct-geometry region of a single slice.
void cenQuadElemDef(ReplicatedMesh &mesh, const unsigned int div_num, const subdomain_id_type block_id_shift, const bool create_outward_interface_boundaries, const boundary_id_type boundary_id_shift, std::vector< std::vector< Node * > > &nodes, const bool assign_external_boundary=false, const unsigned int side_index=0, const bool generate_side_specific_boundaries=true, const QUAD_ELEM_TYPE quad_elem_type=QUAD_ELEM_TYPE::QUAD4) const
Defines quad elements in the very central region of the polygon.
Contains multiple blocks's boundary layer related parameters.
Contains a single block's boundary layer related parameters.