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 : #pragma once 11 : 12 : #include "Kernel.h" 13 : 14 : class MooseEigenSystem; 15 : 16 : /** 17 : * The behavior of this kernel is controlled by one problem-wise global parameter 18 : * eigen_on_current - bool, to indicate if this kernel is operating on the current solution or 19 : * old solution 20 : * This kernel also obtain the postprocessor for eigenvalue by one problem-wise global parameter 21 : * eigen_postprocessor - string, the name of the postprocessor to obtain the eigenvalue 22 : */ 23 : class EigenKernel : public Kernel 24 : { 25 : public: 26 : static InputParameters validParams(); 27 : 28 : virtual void computeResidual() override; 29 : virtual void computeJacobian() override; 30 : virtual void computeOffDiagJacobian(unsigned int jvar) override; 31 0 : virtual void computeOffDiagJacobianScalar(unsigned int /*jvar*/) override {} 32 : 33 : EigenKernel(const InputParameters & parameters); 34 : virtual bool enabled() const override; 35 : 36 : protected: 37 : /// flag for as an eigen kernel or a normal kernel 38 : bool _eigen; 39 : 40 : /// EigenKernel always lives in EigenSystem 41 : MooseEigenSystem * _eigen_sys; 42 : 43 : /** 44 : * A pointer to the eigenvalue that is stored in a postprocessor 45 : * This is a pointer so that the method for retrieval (old vs current) may be changed. 46 : */ 47 : const Real * _eigenvalue; 48 : };