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 "VolumeWeightedWeibull.h" 11 : 12 : registerMooseObject("SolidMechanicsApp", VolumeWeightedWeibull); 13 : 14 : InputParameters 15 36 : VolumeWeightedWeibull::validParams() 16 : { 17 36 : InputParameters params = RandomICBase::validParams(); 18 72 : params.addRequiredParam<Real>("reference_volume", "Reference volume (of a test specimen)"); 19 72 : params.addRequiredParam<Real>("weibull_modulus", "Weibull modulus"); 20 72 : params.addParam<Real>( 21 : "median", 22 : "Median value of property measured in a specimen of volume equal to reference_volume"); 23 36 : params.addClassDescription("Initialize a variable with randomly generated numbers following " 24 : "a volume-weighted Weibull distribution"); 25 36 : return params; 26 0 : } 27 : 28 18 : VolumeWeightedWeibull::VolumeWeightedWeibull(const InputParameters & parameters) 29 : : RandomICBase(parameters), 30 18 : _reference_volume(getParam<Real>("reference_volume")), 31 36 : _weibull_modulus(getParam<Real>("weibull_modulus")), 32 54 : _median(getParam<Real>("median")) 33 : { 34 18 : } 35 : 36 : Real 37 240000 : VolumeWeightedWeibull::value(const Point & /*p*/) 38 : { 39 480000 : return _median * std::pow(_reference_volume * std::log(generateRandom()) / 40 240000 : (_current_elem_volume * std::log(0.5)), 41 240000 : 1.0 / _weibull_modulus); 42 : }