LCOV - code coverage report
Current view: top level - src/postprocessors - SemiImplicitCriticalTimeStep.C (source / functions) Hit Total Coverage
Test: idaholab/swift: #92 (25e020) with base b3cd84 Lines: 17 18 94.4 %
Date: 2025-09-10 17:10:32 Functions: 5 5 100.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 "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             : }

Generated by: LCOV version 1.14