Xyce  6.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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-2014 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.6 $
41 //
42 // Revision Date : $Date: 2014/02/24 23:49:24 $
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 //-----------------------------------------------------------------------------
51 // Class : N_NLS_NOX::AugmentLinSys
52 // Purpose :
53 // Creator : Roger Pawlowski, SNL, 9233
54 // Creation Date : 3/6/2006
55 //-----------------------------------------------------------------------------
56 
57 /*! \brief Pure virtual class to augment a linear system.
58 
59  Strategy pattern for allowing algorithms to augment the Jacobian
60  and residual. This class is used to provide an algorithm for
61  augmenting the linear system for various solution techniques.
62  Homotopy, pseudo-transient, and "gmin" stepping are examples. In
63  each case, the Jacobian's diagonal is changed/added to. Some
64  algorithms also augment the residual.
65 
66 */
67 
68 // Forward Decalarations
69 class N_LAS_Vector;
70 class N_LAS_Matrix;
71 
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 N_LAS_Vector * solution,
89  N_LAS_Vector * residual_vector) = 0;
90 
91  //! Augments the Jacobian.
92  virtual void augmentJacobian(N_LAS_Matrix * jacobian) = 0;
93 
94 };
95 
96 }
97 
98 #endif
99