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 "MooseMesh.h" 13 : 14 : /** 15 : * Mesh generated from parameters 16 : */ 17 : class SpiralAnnularMesh : public MooseMesh 18 : { 19 : public: 20 : static InputParameters validParams(); 21 : 22 : SpiralAnnularMesh(const InputParameters & parameters); 23 0 : SpiralAnnularMesh(const SpiralAnnularMesh & /* other_mesh */) = default; 24 : 25 : // No copy 26 : SpiralAnnularMesh & operator=(const SpiralAnnularMesh & other_mesh) = delete; 27 : 28 : virtual std::unique_ptr<MooseMesh> safeClone() const override; 29 : 30 : virtual void buildMesh() override; 31 : 32 : protected: 33 : /// Radius of the inner circle 34 : const Real _inner_radius; 35 : 36 : /// Radius of the outer circle. Logically, it's bigger that inner_radius. 37 : const Real _outer_radius; 38 : 39 : /// Factor to increase initial_delta_r for each ring. 40 : /// For a uniform grid : radial_bias = 1.0 41 : Real _radial_bias; 42 : 43 : /// Number of nodes on each ring. 44 : const unsigned int _nodes_per_ring; 45 : 46 : /// Generate mesh of TRI6 elements instead of TRI3 elements. 47 : const bool _use_tri6; 48 : 49 : /// Number of rings.You can't specify 50 : /// both the number of rings and the radial bias if you want to match 51 : /// a specified outer radius exactly... you have to leave one of 52 : /// those parameters free so that it can be determined. 53 : unsigned int _num_rings; 54 : 55 : /// The boundary id to use for the cylinder. 56 : const boundary_id_type _cylinder_bid, _exterior_bid; 57 : 58 : // Width of the initial layer of elements around the cylinder. 59 : // This number should be approximately 2 * pi * inner_radius / nodes_per_ring 60 : // to ensure that the initial layer of elements is almost 61 : // equilateral 62 : const Real _initial_delta_r; 63 : };