LCOV - code coverage report
Current view: top level - src/userobjects - ConstantGrainForceAndTorque.C (source / functions) Hit Total Coverage
Test: idaholab/moose phase_field: #31405 (292dce) with base fef103 Lines: 37 38 97.4 %
Date: 2025-09-04 07:55:36 Functions: 7 7 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 "ConstantGrainForceAndTorque.h"
      11             : 
      12             : registerMooseObject("PhaseFieldApp", ConstantGrainForceAndTorque);
      13             : 
      14             : InputParameters
      15         148 : ConstantGrainForceAndTorque::validParams()
      16             : {
      17         148 :   InputParameters params = GeneralUserObject::validParams();
      18         148 :   params.addClassDescription("Userobject for calculating force and torque acting on a grain");
      19         296 :   params.addParam<std::vector<Real>>("force", "force acting on grains");
      20         296 :   params.addParam<std::vector<Real>>("torque", "torque acting on grains");
      21         148 :   return params;
      22           0 : }
      23             : 
      24         148 : ConstantGrainForceAndTorque::ConstantGrainForceAndTorque(const InputParameters & parameters)
      25             :   : GrainForceAndTorqueInterface(),
      26             :     GeneralUserObject(parameters),
      27          74 :     _F(getParam<std::vector<Real>>("force")),
      28         222 :     _M(getParam<std::vector<Real>>("torque")),
      29          74 :     _grain_num(_F.size() / 3),
      30          74 :     _ncomp(6 * _grain_num),
      31          74 :     _force_values(_grain_num),
      32         148 :     _torque_values(_grain_num)
      33             : {
      34          74 : }
      35             : 
      36             : void
      37         986 : ConstantGrainForceAndTorque::initialize()
      38             : {
      39         986 :   unsigned int total_dofs = _subproblem.es().n_dofs();
      40        2208 :   for (unsigned int i = 0; i < _grain_num; ++i)
      41             :   {
      42        1222 :     _force_values[i](0) = _F[3 * i + 0];
      43        1222 :     _force_values[i](1) = _F[3 * i + 1];
      44        1222 :     _force_values[i](2) = _F[3 * i + 2];
      45        1222 :     _torque_values[i](0) = _M[3 * i + 0];
      46        1222 :     _torque_values[i](1) = _M[3 * i + 1];
      47        1222 :     _torque_values[i](2) = _M[3 * i + 2];
      48             :   }
      49             : 
      50         986 :   if (_fe_problem.currentlyComputingJacobian())
      51             :   {
      52         401 :     _c_jacobians.assign(6 * _grain_num * total_dofs, 0.0);
      53         401 :     _eta_jacobians.resize(_grain_num);
      54         907 :     for (unsigned int i = 0; i < _grain_num; ++i)
      55         506 :       _eta_jacobians[i].assign(6 * _grain_num * total_dofs, 0.0);
      56             :   }
      57         986 : }
      58             : 
      59             : const std::vector<RealGradient> &
      60         527 : ConstantGrainForceAndTorque::getForceValues() const
      61             : {
      62         527 :   return _force_values;
      63             : }
      64             : 
      65             : const std::vector<RealGradient> &
      66         602 : ConstantGrainForceAndTorque::getTorqueValues() const
      67             : {
      68         602 :   return _torque_values;
      69             : }
      70             : 
      71             : const std::vector<Real> &
      72      110285 : ConstantGrainForceAndTorque::getForceCJacobians() const
      73             : {
      74      110285 :   return _c_jacobians;
      75             : }
      76             : 
      77             : const std::vector<std::vector<Real>> &
      78      220445 : ConstantGrainForceAndTorque::getForceEtaJacobians() const
      79             : {
      80      220445 :   return _eta_jacobians;
      81             : }

Generated by: LCOV version 1.14