LCOV - code coverage report
Current view: top level - src/tensor_computes - LBMComputeResidual.C (source / functions) Hit Total Coverage
Test: idaholab/swift: #92 (25e020) with base b3cd84 Lines: 0 20 0.0 %
Date: 2025-09-10 17:10:32 Functions: 0 3 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /**********************************************************************/
       2             : /*                    DO NOT MODIFY THIS HEADER                       */
       3             : /*             Swift, a Fourier spectral solver for MOOSE             */
       4             : /*                                                                    */
       5             : /*            Copyright 2024 Battelle Energy Alliance, LLC            */
       6             : /*                        ALL RIGHTS RESERVED                         */
       7             : /**********************************************************************/
       8             : 
       9             : #include "LBMComputeResidual.h"
      10             : #include "LatticeBoltzmannProblem.h"
      11             : 
      12             : registerMooseObject("SwiftApp", LBMComputeResidual);
      13             : 
      14             : InputParameters
      15           0 : LBMComputeResidual::validParams()
      16             : {
      17           0 :   InputParameters params = LatticeBoltzmannOperator::validParams();
      18           0 :   params.addClassDescription("Compute object for LBM residual.");
      19           0 :   params.addRequiredParam<TensorInputBufferName>("speed", "LB speed");
      20           0 :   return params;
      21           0 : }
      22             : 
      23           0 : LBMComputeResidual::LBMComputeResidual(const InputParameters & parameters)
      24             :   : LatticeBoltzmannOperator(parameters),
      25           0 :     _speed(getInputBuffer("speed")),
      26           0 :     _speed_old(_lb_problem.getBufferOld(getParam<TensorInputBufferName>("speed"), 1))
      27             : {
      28           0 : }
      29             : 
      30             : void
      31           0 : LBMComputeResidual::computeBuffer()
      32             : {
      33           0 :   const auto & n_old = _speed_old.size();
      34           0 :   if (n_old == 0)
      35             :   {
      36             :     Real residual = 1.0;
      37           0 :     _lb_problem.setSolverResidual(residual);
      38             :   }
      39             :   else
      40             :   {
      41           0 :     Real sumUsqareMinusUsqareOld = torch::sum(torch::abs(_speed - _speed_old[0])).item<Real>();
      42           0 :     Real sumUsquare = torch::sum(_speed).item<Real>();
      43           0 :     Real residual = (sumUsquare == 0 || sumUsqareMinusUsqareOld == 0)
      44           0 :                         ? 1.0
      45             :                         : sumUsqareMinusUsqareOld / sumUsquare;
      46           0 :     _lb_problem.setSolverResidual(residual);
      47             :   }
      48           0 : }

Generated by: LCOV version 1.14