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 "SemiImplicitCriticalTimeStep.h" 10 : 11 : registerMooseObject("SwiftApp", SemiImplicitCriticalTimeStep); 12 : 13 : InputParameters 14 34 : SemiImplicitCriticalTimeStep::validParams() 15 : { 16 34 : InputParameters params = TensorPostprocessor::validParams(); 17 34 : params.addClassDescription( 18 : "Compute the critical timestep given the reciprocal space representation of the linear " 19 : "operator in a semi-implicit time integrator."); 20 68 : params.addParam<Real>("c", 1.0, "Courant number (CFL factor)"); 21 34 : return params; 22 0 : } 23 : 24 16 : SemiImplicitCriticalTimeStep::SemiImplicitCriticalTimeStep(const InputParameters & parameters) 25 16 : : TensorPostprocessor(parameters) 26 : { 27 16 : } 28 : 29 : void 30 176 : SemiImplicitCriticalTimeStep::execute() 31 : { 32 352 : const auto max_norm_k = std::sqrt(torch::max(_u * _u.conj()).cpu().item<double>()); 33 176 : _critical_dt = max_norm_k > 0.0 ? 1.0 / max_norm_k : 1e30; 34 176 : } 35 : 36 : void 37 176 : SemiImplicitCriticalTimeStep::finalize() 38 : { 39 176 : gatherMin(_critical_dt); 40 176 : } 41 : 42 : PostprocessorValue 43 176 : SemiImplicitCriticalTimeStep::getValue() const 44 : { 45 176 : return _critical_dt; 46 : }