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 : // MOOSE includes 13 : #include "UserObject.h" 14 : #include "BlockRestrictable.h" 15 : #include "BoundaryRestrictable.h" 16 : #include "CoupleableMooseVariableDependencyIntermediateInterface.h" 17 : #include "TransientInterface.h" 18 : #include "RandomInterface.h" 19 : 20 : /** 21 : * A user object that runs over all the nodes and does an aggregation 22 : * step to compute a single value. 23 : */ 24 : class NodalUserObject : public UserObject, 25 : public BlockRestrictable, 26 : public BoundaryRestrictable, 27 : public CoupleableMooseVariableDependencyIntermediateInterface, 28 : public TransientInterface, 29 : public RandomInterface 30 : { 31 : public: 32 : static InputParameters validParams(); 33 : 34 : NodalUserObject(const InputParameters & parameters); 35 : 36 : virtual void subdomainSetup() override /*final*/; 37 : 38 1239345 : bool isUniqueNodeExecute() { return _unique_node_execute; } 39 : 40 : protected: 41 : /// The mesh that is being iterated over 42 : MooseMesh & _mesh; 43 : 44 : /// Quadrature point index 45 : const unsigned int _qp; 46 : 47 : /// Reference to current node pointer 48 : const Node * const & _current_node; 49 : 50 : // Flag for enable/disabling multiple execute calls on nodes that share block ids 51 : const bool & _unique_node_execute; 52 : };