LCOV - code coverage report
Current view: top level - src/vectorpostprocessors - GrainForcesPostprocessor.C (source / functions) Hit Total Coverage
Test: idaholab/moose phase_field: #32971 (54bef8) with base c6cf66 Lines: 25 26 96.2 %
Date: 2026-05-29 20:38:39 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         218 : GrainForcesPostprocessor::validParams()
      17             : {
      18         218 :   InputParameters params = GeneralVectorPostprocessor::validParams();
      19         218 :   params.addClassDescription("Outputs the values from GrainForcesPostprocessor");
      20         436 :   params.addParam<UserObjectName>(
      21             :       "grain_force", "Specify userobject that gives center of mass and volume of grains");
      22         218 :   return params;
      23           0 : }
      24             : 
      25         109 : GrainForcesPostprocessor::GrainForcesPostprocessor(const InputParameters & parameters)
      26             :   : GeneralVectorPostprocessor(parameters),
      27         109 :     _grain_force_torque_vector(declareVector("grain_force_torque_vector")),
      28         109 :     _grain_force_torque(getUserObject<GrainForceAndTorqueInterface>("grain_force")),
      29         109 :     _grain_forces(_grain_force_torque.getForceValues()),
      30         109 :     _grain_torques(_grain_force_torque.getTorqueValues()),
      31         109 :     _grain_num(0)
      32             : {
      33         109 : }
      34             : 
      35             : void
      36         139 : GrainForcesPostprocessor::initialize()
      37             : {
      38         139 :   _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         139 :   _grain_force_torque_vector.resize(_grain_num * 2 * 3);
      43         139 : }
      44             : 
      45             : void
      46         139 : GrainForcesPostprocessor::execute()
      47             : {
      48         359 :   for (unsigned int i = 0; i < _grain_num; ++i)
      49             :   {
      50         220 :     _grain_force_torque_vector[6 * i + 0] = _grain_forces[i](0);
      51         220 :     _grain_force_torque_vector[6 * i + 1] = _grain_forces[i](1);
      52         220 :     _grain_force_torque_vector[6 * i + 2] = _grain_forces[i](2);
      53         220 :     _grain_force_torque_vector[6 * i + 3] = _grain_torques[i](0);
      54         220 :     _grain_force_torque_vector[6 * i + 4] = _grain_torques[i](1);
      55         220 :     _grain_force_torque_vector[6 * i + 5] = _grain_torques[i](2);
      56             :   }
      57         139 : }

Generated by: LCOV version 1.14