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 "GrainForceAndTorqueInterface.h" 11 : #include "GrainForcesPostprocessor.h" 12 : 13 : registerMooseObject("PhaseFieldApp", GrainForcesPostprocessor); 14 : 15 : InputParameters 16 334 : GrainForcesPostprocessor::validParams() 17 : { 18 334 : InputParameters params = GeneralVectorPostprocessor::validParams(); 19 334 : params.addClassDescription("Outputs the values from GrainForcesPostprocessor"); 20 668 : params.addParam<UserObjectName>( 21 : "grain_force", "Specify userobject that gives center of mass and volume of grains"); 22 334 : return params; 23 0 : } 24 : 25 167 : GrainForcesPostprocessor::GrainForcesPostprocessor(const InputParameters & parameters) 26 : : GeneralVectorPostprocessor(parameters), 27 167 : _grain_force_torque_vector(declareVector("grain_force_torque_vector")), 28 167 : _grain_force_torque(getUserObject<GrainForceAndTorqueInterface>("grain_force")), 29 167 : _grain_forces(_grain_force_torque.getForceValues()), 30 167 : _grain_torques(_grain_force_torque.getTorqueValues()), 31 167 : _grain_num(0) 32 : { 33 167 : } 34 : 35 : void 36 181 : GrainForcesPostprocessor::initialize() 37 : { 38 181 : _grain_num = _grain_forces.size(); 39 : 40 : // for each grain a force and a torque vector with 3 components each are serialized into the 41 : // output vector 42 181 : _grain_force_torque_vector.resize(_grain_num * 2 * 3); 43 181 : } 44 : 45 : void 46 181 : GrainForcesPostprocessor::execute() 47 : { 48 467 : for (unsigned int i = 0; i < _grain_num; ++i) 49 : { 50 286 : _grain_force_torque_vector[6 * i + 0] = _grain_forces[i](0); 51 286 : _grain_force_torque_vector[6 * i + 1] = _grain_forces[i](1); 52 286 : _grain_force_torque_vector[6 * i + 2] = _grain_forces[i](2); 53 286 : _grain_force_torque_vector[6 * i + 3] = _grain_torques[i](0); 54 286 : _grain_force_torque_vector[6 * i + 4] = _grain_torques[i](1); 55 286 : _grain_force_torque_vector[6 * i + 5] = _grain_torques[i](2); 56 : } 57 181 : }