LCOV - code coverage report
Current view: top level - src/vectorpostprocessors - GrainForcesPostprocessor.C (source / functions) Hit Total Coverage
Test: idaholab/moose phase_field: #31405 (292dce) with base fef103 Lines: 25 26 96.2 %
Date: 2025-09-04 07:55:36 Functions: 4 4 100.0 %
Legend: Lines: hit not hit

          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 : }

Generated by: LCOV version 1.14