LCOV - code coverage report
Current view: top level - src/interfaces - RandomInterface.C (source / functions) Hit Total Coverage
Test: idaholab/moose framework: 99787a Lines: 46 50 92.0 %
Date: 2025-10-14 20:01:24 Functions: 8 9 88.9 %
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    12980666 : RandomInterface::validParams()
      19             : {
      20             : 
      21    12980666 :   InputParameters params = emptyInputParameters();
      22    51922664 :   params.addParam<unsigned int>("seed", 0, "The seed for the master random number generator");
      23             : 
      24    38941998 :   params.addParamNamesToGroup("seed", "Advanced");
      25    12980666 :   return params;
      26           0 : }
      27             : 
      28      354990 : RandomInterface::RandomInterface(const InputParameters & parameters,
      29             :                                  FEProblemBase & problem,
      30             :                                  THREAD_ID tid,
      31      354990 :                                  bool is_nodal)
      32      354990 :   : _random_data(nullptr),
      33      354990 :     _generator(nullptr),
      34      354990 :     _ri_problem(problem),
      35      354990 :     _ri_name(parameters.getObjectName()),
      36      354990 :     _master_seed(parameters.get<unsigned int>("seed")),
      37      354990 :     _is_nodal(is_nodal),
      38      354990 :     _reset_on(EXEC_LINEAR),
      39      354990 :     _curr_node(problem.assembly(tid, 0).node()),
      40      354990 :     _curr_element(problem.assembly(tid, 0).elem())
      41             : {
      42      354990 : }
      43             : 
      44             : #ifdef MOOSE_KOKKOS_ENABLED
      45      200105 : RandomInterface::RandomInterface(const RandomInterface & object, const Moose::Kokkos::FunctorCopy &)
      46      200105 :   : _random_data(object._random_data),
      47      200105 :     _generator(object._generator),
      48      200105 :     _ri_problem(object._ri_problem),
      49      200105 :     _ri_name(object._ri_name),
      50      200105 :     _master_seed(object._master_seed),
      51      200105 :     _is_nodal(object._is_nodal),
      52      200105 :     _reset_on(object._reset_on),
      53      200105 :     _curr_node(object._curr_node),
      54      200105 :     _curr_element(object._curr_element)
      55             : {
      56      200105 : }
      57             : #endif
      58             : 
      59      539834 : RandomInterface::~RandomInterface() {}
      60             : 
      61             : void
      62         456 : RandomInterface::setRandomResetFrequency(ExecFlagType exec_flag)
      63             : {
      64         456 :   _reset_on = exec_flag;
      65         456 :   _ri_problem.registerRandomInterface(*this, _ri_name);
      66         456 : }
      67             : 
      68             : void
      69         456 : RandomInterface::setRandomDataPointer(RandomData * random_data)
      70             : {
      71         456 :   _random_data = random_data;
      72         456 :   _generator = &_random_data->getGenerator();
      73         456 : }
      74             : 
      75             : unsigned int
      76           0 : RandomInterface::getSeed(std::size_t id)
      77             : {
      78             :   mooseAssert(_random_data, "RandomData object is NULL!");
      79             : 
      80           0 :   return _random_data->getSeed(id);
      81             : }
      82             : 
      83             : unsigned long
      84     2666048 : RandomInterface::getRandomLong() const
      85             : {
      86             :   mooseAssert(_generator, "Random Generator is NULL, did you call setRandomResetFrequency()?");
      87             : 
      88             :   dof_id_type id;
      89     2666048 :   if (_is_nodal)
      90           0 :     id = _curr_node->id();
      91             :   else
      92     2666048 :     id = _curr_element->id();
      93             : 
      94     2666048 :   return _generator->randl(id);
      95             : }
      96             : 
      97             : Real
      98     2082952 : RandomInterface::getRandomReal() const
      99             : {
     100             :   mooseAssert(_generator, "Random Generator is NULL, did you call setRandomResetFrequency()?");
     101             : 
     102             :   dof_id_type id;
     103     2082952 :   if (_is_nodal)
     104      244904 :     id = _curr_node->id();
     105             :   else
     106     1838048 :     id = _curr_element->id();
     107             : 
     108     2082952 :   return _generator->rand(id);
     109             : }

Generated by: LCOV version 1.14