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 "Action.h" 13 : #include "MooseEnum.h" 14 : 15 : // libMesh 16 : #include "libmesh/enum_order.h" 17 : #include "libmesh/enum_quadrature_type.h" 18 : 19 : /** 20 : * Sets the quadrature 21 : */ 22 : class SetupQuadratureAction : public Action 23 : { 24 : public: 25 : static InputParameters validParams(); 26 : 27 : SetupQuadratureAction(const InputParameters & parameters); 28 : 29 : virtual void act() override; 30 : 31 : /// Return the possible selections for the type of the quadrature 32 69099 : static MooseEnum getQuadratureTypesEnum() 33 : { 34 276396 : return MooseEnum("CLOUGH CONICAL GAUSS GRID MONOMIAL SIMPSON TRAP GAUSS_LOBATTO", "GAUSS"); 35 : } 36 : /// Return the potential selections for the order of the quadrature, with an 'auto' default 37 204156 : static MooseEnum getQuadratureOrderEnum() 38 : { 39 : return MooseEnum( 40 : "AUTO CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH " 41 : "ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH " 42 : "EIGHTTEENTH NINTEENTH TWENTIETH", 43 816624 : "AUTO"); 44 : } 45 : /// A MultiMooseEnum for selecting multiple quadrature orders 46 65990 : static MultiMooseEnum getQuadratureOrdersMultiEnum() 47 : { 48 : return MultiMooseEnum( 49 : "CONSTANT FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH NINTH TENTH " 50 : "ELEVENTH TWELFTH THIRTEENTH FOURTEENTH FIFTEENTH SIXTEENTH SEVENTEENTH " 51 131980 : "EIGHTTEENTH NINTEENTH TWENTIETH"); 52 : } 53 : /// A MultiMooseEnum for selecting multiple quadrature types (one per custom block) 54 65990 : static MultiMooseEnum getQuadratureTypesMultiEnum() 55 : { 56 131980 : return MultiMooseEnum("CLOUGH CONICAL GAUSS GRID MONOMIAL SIMPSON TRAP GAUSS_LOBATTO"); 57 : } 58 : 59 : protected: 60 : libMesh::QuadratureType _type; 61 : Order _order; 62 : Order _element_order; 63 : Order _side_order; 64 : const std::vector<std::pair<SubdomainID, MooseEnumItem>> _custom_block_orders; 65 : /// Per-block quadrature types, parallel to _custom_block_orders. Falls back to _type if empty. 66 : std::vector<libMesh::QuadratureType> _custom_block_types; 67 : const bool _allow_negative_qweights; 68 : };