LCOV - code coverage report
Current view: top level - src/base - ExternalPetscSolverApp.C (source / functions) Hit Total Coverage
Test: idaholab/moose external_petsc_solver: #31405 (292dce) with base fef103 Lines: 24 31 77.4 %
Date: 2025-09-04 07:53:02 Functions: 7 9 77.8 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : //* This file is part of the MOOSE framework
       2             : //* https://mooseframework.inl.gov
       3             : //*
       4             : //* All rights reserved, see COPYRIGHT for full restrictions
       5             : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
       6             : //*
       7             : //* Licensed under LGPL 2.1, please see LICENSE for details
       8             : //* https://www.gnu.org/licenses/lgpl-2.1.html
       9             : 
      10             : #include "ExternalPetscSolverApp.h"
      11             : #include "Moose.h"
      12             : #include "AppFactory.h"
      13             : #include "MooseSyntax.h"
      14             : #include "PETScDiffusionFDM.h"
      15             : #include "libmesh/petsc_vector.h"
      16             : #include "ExternalPETScProblem.h"
      17             : #include "Executioner.h"
      18             : 
      19             : #include "libmesh/petsc_solver_exception.h"
      20             : 
      21             : InputParameters
      22         749 : ExternalPetscSolverApp::validParams()
      23             : {
      24         749 :   InputParameters params = MooseApp::validParams();
      25             : 
      26         749 :   params.set<bool>("use_legacy_material_output") = false;
      27         749 :   params.set<bool>("use_legacy_initial_residual_evaluation_behavior") = false;
      28         749 :   return params;
      29           0 : }
      30             : 
      31         749 : ExternalPetscSolverApp::ExternalPetscSolverApp(const InputParameters & parameters)
      32         749 :   : MooseApp(parameters), _ts(nullptr), _is_petsc_app(false)
      33             : {
      34         749 :   ExternalPetscSolverApp::registerAll(_factory, _action_factory, _syntax);
      35         749 : }
      36             : 
      37             : TS &
      38        1110 : ExternalPetscSolverApp::getPetscTS()
      39             : {
      40        1110 :   if (!_ts)
      41             :   {
      42             :     // Create an external PETSc solver
      43         370 :     LibmeshPetscCall(PETScExternalSolverCreate(_comm->get(), &_ts));
      44         370 :     _is_petsc_app = true;
      45             :   }
      46        1110 :   return _ts;
      47             : }
      48             : 
      49        1024 : ExternalPetscSolverApp::~ExternalPetscSolverApp()
      50             : {
      51             :   // Destroy PETSc solver
      52         749 :   auto ierr = PETScExternalSolverDestroy(_ts);
      53             :   libmesh_ignore(ierr);
      54        1024 : }
      55             : 
      56             : void
      57        1223 : ExternalPetscSolverApp::registerAll(Factory & f, ActionFactory & af, Syntax & /*s*/)
      58             : {
      59        1223 :   Registry::registerObjectsTo(f, {"ExternalPetscSolverApp"});
      60        1223 :   Registry::registerActionsTo(af, {"ExternalPetscSolverApp"});
      61             : 
      62             :   /* register custom execute flags, action syntax, etc. here */
      63        1223 : }
      64             : 
      65             : void
      66         379 : ExternalPetscSolverApp::registerApps()
      67             : {
      68         379 :   registerApp(ExternalPetscSolverApp);
      69         379 : }
      70             : 
      71             : /***************************************************************************************************
      72             :  *********************** Dynamic Library Entry Points - DO NOT MODIFY ******************************
      73             :  **************************************************************************************************/
      74             : extern "C" void
      75           0 : ExternalPetscSolverApp__registerAll(Factory & f, ActionFactory & af, Syntax & s)
      76             : {
      77           0 :   ExternalPetscSolverApp::registerAll(f, af, s);
      78           0 : }
      79             : extern "C" void
      80           0 : ExternalPetscSolverApp__registerApps()
      81             : {
      82           0 :   ExternalPetscSolverApp::registerApps();
      83           0 : }

Generated by: LCOV version 1.14