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 AnnularMesh : public MooseMesh 18 : { 19 : public: 20 : static InputParameters validParams(); 21 : 22 : AnnularMesh(const InputParameters & parameters); 23 0 : AnnularMesh(const AnnularMesh & /* other_mesh */) = default; 24 : 25 : // No copy 26 : AnnularMesh & operator=(const AnnularMesh & other_mesh) = delete; 27 : 28 : virtual std::unique_ptr<MooseMesh> safeClone() const override; 29 : 30 : virtual void buildMesh() override; 31 : virtual Real getMinInDimension(unsigned int component) const override; 32 : virtual Real getMaxInDimension(unsigned int component) const override; 33 : virtual void prepared(bool state) override; 34 : 35 : protected: 36 : /// Number of elements in radial direction 37 : const unsigned _nr; 38 : 39 : /// Number of elements in angular direction 40 : const unsigned _nt; 41 : 42 : /// Minimum radius 43 : const Real _rmin; 44 : 45 : /// Maximum radius 46 : const Real _rmax; 47 : 48 : /// Minimum angle in degrees 49 : const Real _dmin; 50 : 51 : /// Maximum angle in degrees 52 : const Real _dmax; 53 : 54 : /// Bool to check if radians are given in the input file 55 : const bool _radians; 56 : 57 : /// Bias on radial meshing 58 : const Real _growth_r; 59 : 60 : /// rmax = rmin + len + len*g + len*g^2 + len*g^3 + ... + len*g^(nr-1) = rmin + len*(1 - g^nr)/(1 - g) 61 : const Real _len; 62 : 63 : /// Whether a full annulus (as opposed to a sector) will needs to generate 64 : const bool _full_annulus; 65 : 66 : /// Subdomain ID of created quad elements 67 : const SubdomainID _quad_subdomain_id; 68 : 69 : /// Subdomain ID of created tri elements (that only exist if rmin=0) 70 : const SubdomainID _tri_subdomain_id; 71 : 72 : /// Boolean to indicate that dimensions may have changed 73 : bool _dims_may_have_changed; 74 : };