Xyce  6.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
N_NLS_NOX_AugmentLinSys_IC.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_IC.h,v $
27 //
28 // Purpose : Concrete class for augmenting the Jacobian for
29 // .IC simulations (initial condition)
30 //
31 // Special Notes :
32 //
33 // Creator : Eric R. Keiter
34 //
35 // Creation Date : 09/15/07
36 //
37 // Revision Information:
38 // ---------------------
39 //
40 // Revision Number: $Revision: 1.10 $
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_IC_h
48 #define Xyce_N_NLS_NOX_AugmentLinSys_IC_h
49 
50 #include "Teuchos_RefCountPtr.hpp"
52 #include "N_PDS_ParMap.h"
53 
54 #include <N_UTL_fwd.h>
55 
56 #include <set>
57 
58 class Epetra_MapColoring;
59 
60 //-----------------------------------------------------------------------------
61 // Class : N_NLS::NOX::AugmentLinSysIC
62 // Purpose : Handles matrix augmentation to support .IC statements.
63 // Creator : Eric R. Keiter, SNL, Electrical and Microsystems modeling.
64 // Creation Date : 09/15/2007
65 //-----------------------------------------------------------------------------
66 namespace N_NLS_NOX {
67 
69 
70 public:
71  //! Ctor.
72  AugmentLinSysIC(Xyce::NodeNamePairMap & op_in,
73  const Teuchos::RefCountPtr <Epetra_MapColoring>& color_map,
74  N_LAS_Vector* cloneVector);
75 
76  //! Dtor.
78 
79  void setProgressVariable(double dummy) {return;}
80 
81  void augmentResidual(const N_LAS_Vector * solution,
82  N_LAS_Vector * residual_vector);
83 
84  void augmentJacobian(N_LAS_Matrix * jacobian);
85 
86  private:
87 
88  //! map of specified variables
89  Xyce::NodeNamePairMap & op_;
90 
91  //! Color 0 are the voltage unknowns.
92  Teuchos::RefCountPtr<Epetra_MapColoring> color_map_;
93 
94  //! Temporary vector used to store diagonal.
95  N_LAS_Vector* tmp_vector_ptr_;
96 
97 };
98 
99 }
100 
101 #endif
102