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 "FFTGradient.h" 10 : #include "SwiftUtils.h" 11 : 12 : registerMooseObject("SwiftApp", FFTGradient); 13 : 14 : InputParameters 15 24 : FFTGradient::validParams() 16 : { 17 24 : InputParameters params = TensorOperator<>::validParams(); 18 24 : params.addClassDescription("Tensor gradient."); 19 48 : params.addRequiredParam<TensorInputBufferName>("input", "Input buffer name"); 20 48 : params.addParam<bool>("input_is_reciprocal", false, "Input buffer is already in reciprocal space"); 21 48 : params.addRequiredParam<MooseEnum>( 22 72 : "direction", MooseEnum("X=0 Y=1 Z=2"), "Which axis to take the gradient along."); 23 24 : return params; 24 0 : } 25 : 26 12 : FFTGradient::FFTGradient(const InputParameters & parameters) 27 : : TensorOperator<>(parameters), 28 12 : _input(getInputBuffer("input")), 29 24 : _input_is_reciprocal(getParam<bool>("input_is_reciprocal")), 30 24 : _direction(getParam<MooseEnum>("direction")), 31 24 : _i(torch::tensor(c10::complex<double>(0.0, 1.0), MooseTensor::complexFloatTensorOptions())) 32 : { 33 12 : } 34 : 35 : void 36 12 : FFTGradient::computeBuffer() 37 : { 38 12 : std::cout << "_x " << _direction << " = " << _x << std::endl; 39 12 : std::cout << "_y " << _direction << " = " << _y << std::endl; 40 12 : std::cout << "_z " << _direction << " = " << _z << std::endl; 41 : 42 24 : _u = _domain.ifft((_input_is_reciprocal ? _input : _domain.fft(_input)) * 43 12 : _domain.getReciprocalAxis(_direction) * _i); 44 12 : }