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