Xyce  6.1
N_NLS_NOX_AugmentLinSys.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------------
2 // Copyright Notice
3 //
4 // Copyright 2002 Sandia Corporation. Under the terms
5 // of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S.
6 // Government retains certain rights in this software.
7 //
8 // Xyce(TM) Parallel Electrical Simulator
9 // Copyright (C) 2002-2015 Sandia Corporation
10 //
11 // This program is free software: you can redistribute it and/or modify
12 // it under the terms of the GNU General Public License as published by
13 // the Free Software Foundation, either version 3 of the License, or
14 // (at your option) any later version.
15 //
16 // This program is distributed in the hope that it will be useful,
17 // but WITHOUT ANY WARRANTY; without even the implied warranty of
18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 // GNU General Public License for more details.
20 //
21 // You should have received a copy of the GNU General Public License
22 // along with this program. If not, see <http://www.gnu.org/licenses/>.
23 //-----------------------------------------------------------------------------
24 
25 //-------------------------------------------------------------------------
26 // Filename : $RCSfile: N_NLS_NOX_AugmentLinSys.h,v $
27 //
28 // Purpose : Strategy pattern for allowing algorithms to augment
29 // the Jacobian and residual.
30 //
31 // Special Notes :
32 //
33 // Creator : Roger Pawlowski, NLS, 9233
34 //
35 // Creation Date : 3/6/2006
36 //
37 // Revision Information:
38 // ---------------------
39 //
40 // Revision Number: $Revision: 1.10 $
41 //
42 // Revision Date : $Date: 2015/04/08 19:18:29 $
43 //
44 // Current Owner : $Author: tvrusso $
45 //-------------------------------------------------------------------------
46 
47 #ifndef Xyce_N_NLS_NOX_AugmentLinSys_h
48 #define Xyce_N_NLS_NOX_AugmentLinSys_h
49 
50 #include <N_LAS_fwd.h>
51 
52 //-----------------------------------------------------------------------------
53 // Class : N_NLS_NOX::AugmentLinSys
54 // Purpose :
55 // Creator : Roger Pawlowski, SNL, 9233
56 // Creation Date : 3/6/2006
57 //-----------------------------------------------------------------------------
58 
59 /*! \brief Pure virtual class to augment a linear system.
60 
61  Strategy pattern for allowing algorithms to augment the Jacobian
62  and residual. This class is used to provide an algorithm for
63  augmenting the linear system for various solution techniques.
64  Homotopy, pseudo-transient, and "gmin" stepping are examples. In
65  each case, the Jacobian's diagonal is changed/added to. Some
66  algorithms also augment the residual.
67 
68 */
69 
70 namespace Xyce {
71 namespace Nonlinear {
72 namespace N_NLS_NOX {
73 
75 
76 public:
77 
78  //! Ctor.
80 
81  //! Dtor.
83 
84  //! Set the progress variable (time step size for pseudo transient).
85  virtual void setProgressVariable(double value) = 0;
86 
87  //! Augments the Residual.
88  virtual void augmentResidual(const Xyce::Linear::Vector * solution,
89  Xyce::Linear::Vector * residual_vector) = 0;
90 
91  //! Augments the Jacobian.
92  virtual void augmentJacobian(Xyce::Linear::Matrix * jacobian) = 0;
93 
94 };
95 
96 }}}
97 
98 #endif
99 
Pure virtual class to augment a linear system.
const T & value(const ParameterBase &entity, const Descriptor &descriptor)
Returns the value of the parameter for the entity.
Definition: N_DEV_Pars.h:1224
virtual void augmentJacobian(Xyce::Linear::Matrix *jacobian)=0
Augments the Jacobian.
virtual void augmentResidual(const Xyce::Linear::Vector *solution, Xyce::Linear::Vector *residual_vector)=0
Augments the Residual.
virtual void setProgressVariable(double value)=0
Set the progress variable (time step size for pseudo transient).