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 : /** 13 : * Veneer to build userobjects that generate a uniformly distributed random 14 : * number in the interval [-1:1] once per timestep for every quadrature point 15 : * in a way that the integral over all random numbers is zero. 16 : * 17 : * \see ConservedUniformNoise 18 : * \see ConservedMaskedUniformNoise 19 : */ 20 : template <class T> 21 : class ConservedUniformNoiseVeneer : public T 22 : { 23 : public: 24 : ConservedUniformNoiseVeneer(const InputParameters & parameters); 25 : 26 : protected: 27 : Real getQpRandom(); 28 : }; 29 : 30 : template <class T> 31 24 : ConservedUniformNoiseVeneer<T>::ConservedUniformNoiseVeneer(const InputParameters & parameters) 32 24 : : T(parameters) 33 : { 34 24 : } 35 : 36 : template <class T> 37 : Real 38 34400 : ConservedUniformNoiseVeneer<T>::getQpRandom() 39 : { 40 34400 : return 2.0 * this->getRandomReal() - 1.0; 41 : }