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 "SpecifiedSmoothCircleIC.h" 11 : #include "MooseRandom.h" 12 : 13 : registerMooseObject("PhaseFieldApp", SpecifiedSmoothCircleIC); 14 : 15 : InputParameters 16 561 : SpecifiedSmoothCircleIC::validParams() 17 : { 18 561 : InputParameters params = SmoothCircleBaseIC::validParams(); 19 561 : params.addClassDescription( 20 : "Multiple smooth circles with manually specified radii and center points"); 21 1122 : params.addRequiredParam<std::vector<Real>>("x_positions", 22 : "The x-coordinate for each circle center"); 23 1122 : params.addRequiredParam<std::vector<Real>>("y_positions", 24 : "The y-coordinate for each circle center"); 25 1122 : params.addRequiredParam<std::vector<Real>>("z_positions", 26 : "The z-coordinate for each circle center"); 27 1122 : params.addRequiredParam<std::vector<Real>>("radii", "The radius for each circle"); 28 : 29 561 : return params; 30 0 : } 31 : 32 294 : SpecifiedSmoothCircleIC::SpecifiedSmoothCircleIC(const InputParameters & parameters) 33 : : SmoothCircleBaseIC(parameters), 34 294 : _x_positions(getParam<std::vector<Real>>("x_positions")), 35 588 : _y_positions(getParam<std::vector<Real>>("y_positions")), 36 588 : _z_positions(getParam<std::vector<Real>>("z_positions")), 37 882 : _input_radii(getParam<std::vector<Real>>("radii")) 38 : { 39 294 : } 40 : 41 : void 42 209 : SpecifiedSmoothCircleIC::computeCircleRadii() 43 : { 44 209 : _radii.resize(_input_radii.size()); 45 : 46 710 : for (unsigned int circ = 0; circ < _input_radii.size(); ++circ) 47 501 : _radii[circ] = _input_radii[circ]; 48 209 : } 49 : 50 : void 51 209 : SpecifiedSmoothCircleIC::computeCircleCenters() 52 : { 53 209 : _centers.resize(_x_positions.size()); 54 : 55 710 : for (unsigned int circ = 0; circ < _x_positions.size(); ++circ) 56 : { 57 501 : _centers[circ](0) = _x_positions[circ]; 58 501 : _centers[circ](1) = _y_positions[circ]; 59 501 : _centers[circ](2) = _z_positions[circ]; 60 : } 61 209 : }