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