Line data Source code
1 : //* This file is part of SALAMANDER: Software for Advanced Large-scale Analysis of MAgnetic 2 : //* confinement for Numerical Design, Engineering & Research, 3 : //* A multiphysics application for modeling plasma facing components 4 : //* https://github.com/idaholab/salamander 5 : //* https://mooseframework.inl.gov/salamander 6 : //* 7 : //* SALAMANDER is powered by the MOOSE Framework 8 : //* https://www.mooseframework.inl.gov 9 : //* 10 : //* Licensed under LGPL 2.1, please see LICENSE for details 11 : //* https://www.gnu.org/licenses/lgpl-2.1.html 12 : //* 13 : //* Copyright 2025, Battelle Energy Alliance, LLC 14 : //* ALL RIGHTS RESERVED 15 : //* 16 : 17 : #pragma once 18 : 19 : #include "GeneralUserObject.h" 20 : 21 : class VelocityInitializerBase : public GeneralUserObject 22 : { 23 : public: 24 : VelocityInitializerBase(const InputParameters & parameters); 25 : 26 : static InputParameters validParams(); 27 : 28 : /** 29 : * Creates a vector of initial particle velocities for as many samples as were requested. 30 : * @returns a Point object containing the particle velocity 31 : */ 32 : virtual const std::vector<Point> getParticleVelocities(const size_t num_samples) const = 0; 33 : 34 : /** 35 : * Unused methods 36 : */ 37 : ///@{ 38 1622 : virtual void initialize() override final {} 39 1622 : virtual void finalize() override final {} 40 1622 : virtual void execute() override final {} 41 : ///@} 42 : 43 : protected: 44 : /// a user specified seed for changing random number generator seeds 45 : const unsigned int _seed; 46 : };