LCOV - code coverage report
Current view: top level - src/interfaces - RandomInterface.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 2bf808 Lines: 35 39 89.7 %
Date: 2025-07-17 01:28:37 Functions: 7 8 87.5 %
Legend: Lines: hit not hit

          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             : #include "Moose.h"
      11             : #include "RandomInterface.h"
      12             : #include "RandomData.h"
      13             : #include "MooseRandom.h"
      14             : #include "FEProblemBase.h"
      15             : #include "Assembly.h"
      16             : 
      17             : InputParameters
      18    11949635 : RandomInterface::validParams()
      19             : {
      20             : 
      21    11949635 :   InputParameters params = emptyInputParameters();
      22    11949635 :   params.addParam<unsigned int>("seed", 0, "The seed for the master random number generator");
      23             : 
      24    11949635 :   params.addParamNamesToGroup("seed", "Advanced");
      25    11949635 :   return params;
      26           0 : }
      27             : 
      28      320569 : RandomInterface::RandomInterface(const InputParameters & parameters,
      29             :                                  FEProblemBase & problem,
      30             :                                  THREAD_ID tid,
      31      320569 :                                  bool is_nodal)
      32      320569 :   : _random_data(nullptr),
      33      320569 :     _generator(nullptr),
      34      320569 :     _ri_problem(problem),
      35      320569 :     _ri_name(parameters.get<std::string>("_object_name")),
      36      320569 :     _master_seed(parameters.get<unsigned int>("seed")),
      37      320569 :     _is_nodal(is_nodal),
      38      320569 :     _reset_on(EXEC_LINEAR),
      39      320569 :     _curr_node(problem.assembly(tid, 0).node()),
      40      320569 :     _curr_element(problem.assembly(tid, 0).elem())
      41             : {
      42      320569 : }
      43             : 
      44      306228 : RandomInterface::~RandomInterface() {}
      45             : 
      46             : void
      47         419 : RandomInterface::setRandomResetFrequency(ExecFlagType exec_flag)
      48             : {
      49         419 :   _reset_on = exec_flag;
      50         419 :   _ri_problem.registerRandomInterface(*this, _ri_name);
      51         419 : }
      52             : 
      53             : void
      54         419 : RandomInterface::setRandomDataPointer(RandomData * random_data)
      55             : {
      56         419 :   _random_data = random_data;
      57         419 :   _generator = &_random_data->getGenerator();
      58         419 : }
      59             : 
      60             : unsigned int
      61           0 : RandomInterface::getSeed(std::size_t id)
      62             : {
      63             :   mooseAssert(_random_data, "RandomData object is NULL!");
      64             : 
      65           0 :   return _random_data->getSeed(id);
      66             : }
      67             : 
      68             : unsigned long
      69     2552448 : RandomInterface::getRandomLong() const
      70             : {
      71             :   mooseAssert(_generator, "Random Generator is NULL, did you call setRandomResetFrequency()?");
      72             : 
      73             :   dof_id_type id;
      74     2552448 :   if (_is_nodal)
      75           0 :     id = _curr_node->id();
      76             :   else
      77     2552448 :     id = _curr_element->id();
      78             : 
      79     2552448 :   return _generator->randl(id);
      80             : }
      81             : 
      82             : Real
      83     2045408 : RandomInterface::getRandomReal() const
      84             : {
      85             :   mooseAssert(_generator, "Random Generator is NULL, did you call setRandomResetFrequency()?");
      86             : 
      87             :   dof_id_type id;
      88     2045408 :   if (_is_nodal)
      89      212960 :     id = _curr_node->id();
      90             :   else
      91     1832448 :     id = _curr_element->id();
      92             : 
      93     2045408 :   return _generator->rand(id);
      94             : }

Generated by: LCOV version 1.14