Xyce  6.1
N_DEV_fwd.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_DEV_fwd.h,v $
27 //
28 // Purpose : Forward declarations
29 //
30 // Special Notes : Forward declaring everything as a class breaks if the implementation of the type changes (like during
31 // templatization)
32 //
33 // Creator : David G. Baur Raytheon Sandia National Laboratories 1355
34 //
35 // Creation Date : 2013/04/18 18:01:27
36 //
37 // Revision Information:
38 // ---------------------
39 //
40 // Revision Number: $Revision: 1.40.2.1 $
41 //
42 // Revision Date : $Date: 2015/04/02 18:29:36 $
43 //
44 // Current Owner : $Author: tvrusso $
45 //-------------------------------------------------------------------------
46 
47 #ifndef Xyce_N_DEV_fwd_h
48 #define Xyce_N_DEV_fwd_h
49 
50 #if defined(HAVE_UNORDERED_MAP)
51 #include <unordered_map>
52 using std::unordered_map;
53 #elif defined(HAVE_TR1_UNORDERED_MAP)
54 #include <tr1/unordered_map>
55 using std::tr1::unordered_map;
56 #else
57 #error neither unordered_map or tr1/unordered_map found
58 #endif
59 #include <map>
60 #include <string>
61 #include <utility>
62 #include <vector>
63 
64 #include <N_UTL_NameLevelKey.h>
65 #include <N_UTL_NoCase.h>
66 #include <N_UTL_TypeIndex.h>
67 #include <N_UTL_IndexPair.h>
68 
69 namespace Xyce {
70 namespace Device {
71 
72 class CompositeParam;
73 class Configuration;
74 class Depend;
75 class Descriptor;
76 class Device;
77 class DeviceBuilder;
78 class DeviceEntity;
79 class DeviceInstance;
80 class DeviceMgr;
81 typedef DeviceMgr DeviceInterface; // DEPRECATED, use DeviceMgr
82 
83 class DeviceModel;
84 class DeviceOptions;
86 class DeviceState;
87 class DeviceSupport;
88 class InstanceName;
90 class ExternCodeInterface;
91 class ExternData;
92 class FactoryBlock;
93 class InstanceBlock;
94 class MatrixLoadData;
95 class ModelBlock;
96 class NumericalJacobian;
97 class Param;
98 class ParameterBase;
99 class Region;
100 class RegionData;
101 class RxnRegion;
102 class RxnRegion2;
103 class RxnRegionData;
104 
105 class SolverState;
106 class Globals;
107 class SourceInstance;
108 class XyceInterface;
109 
110 class ACData;
111 class ConstData;
112 class ExpData;
113 class PWLinData;
114 class PulseData;
115 class SFFMData;
116 class SinData;
117 class SmoothData;
118 class SmoothPulseData;
119 class SourceData;
120 
121 class DevicePDEInstance;
122 class DevicePDEModel;
123 
124 class PDE_Electrode;
125 class PDE_1DElectrode;
126 class PDE_2DElectrode;
127 
128 class XygraCoilData;
129 
130 class SpecieSource;
131 
132 class ScalingVars;
133 
135 
136 typedef unordered_map<std::string, InstanceBlock, HashNoCase, EqualNoCase> DeviceNameInstanceBlockMap;
137 
138 namespace Xygra {
139 class Instance;
140 class Model;
141 }
142 
143 namespace ExternDevice {
144 class Instance;
145 class Model;
146 }
147 
148 namespace Vsrc {
149 class Instance;
150 class Model;
151 }
152 
153 typedef type_index EntityTypeId;
154 typedef type_index ModelTypeId;
155 typedef type_index InstanceTypeId;
156 
157 typedef std::string ModelName;
158 
159 typedef unordered_map<std::string, Descriptor *, HashNoCase, EqualNoCase> ParameterMap;
160 typedef unordered_map<std::string, CompositeParam *, HashNoCase, EqualNoCase> CompositeMap;
161 typedef unordered_map<std::string, double, HashNoCase, EqualNoCase> GlobalParameterMap;
162 
163 typedef std::map<std::string, int, LessNoCase> DeviceCountMap;
164 
165 typedef std::vector<CompositeParam *> CompositeVector;
166 
167 typedef std::map<EntityTypeId, Device *> EntityTypeIdDeviceMap;
168 
169 struct ModelGroupLeadTraits;
170 
171 template <class M, class I, class G = ModelGroupLeadTraits>
172 class DeviceTraits;
173 
174 template <class T>
175 class DeviceMaster;
176 
177 template <class T>
178 class Config;
179 
180 typedef std::vector<Device *> DeviceVector;
181 typedef std::vector<DeviceEntity *> EntityVector;
182 typedef std::vector<DeviceInstance *> InstanceVector;
183 typedef std::vector<DeviceModel *> ModelVector;
184 
185 typedef std::vector<std::vector<int> > JacobianStamp;
186 typedef std::vector<int> IdVector;
187 typedef IdVector LocalIdVector;
188 
189 } // namespace Device
190 } // namespace Xyce
191 
192 // THESE ARE DEPRECATED. Please use the namespace names.
193 
195 typedef Xyce::Device::DeviceBuilder N_DEV_DeviceBuilder;
206 typedef Xyce::Device::ExternCodeInterface N_DEV_ExternCodeInterface;
215 typedef Xyce::Device::RxnRegion N_DEV_RxnRegion;
216 typedef Xyce::Device::RxnRegion2 N_DEV_RxnRegion2;
217 typedef Xyce::Device::RxnRegionData N_DEV_RxnRegionData;
220 typedef Xyce::Device::XyceInterface N_DEV_XyceInterface;
221 
223 typedef Xyce::Device::SmoothData N_DEV_SmoothData;
232 
235 
239 
242 
244 
246 
248 
249 typedef Xyce::Device::ExternDevice::Instance N_DEV_ExternDeviceInstance;
250 typedef Xyce::Device::ExternDevice::Model N_DEV_ExternDeviceModel;
251 
252 #endif // Xyce_N_DEV_fwd_h
std::vector< CompositeParam * > CompositeVector
Definition: N_DEV_fwd.h:165
Xyce::Device::Param N_DEV_Param
Definition: N_DEV_fwd.h:212
Xyce::Device::ExternData N_DEV_ExternData
Definition: N_DEV_fwd.h:207
Config template derives from the Configuration class and provides the instance and model parameter de...
Xyce::Device::PDE_2DElectrode N_DEV_PDE_2DElectrode
Definition: N_DEV_fwd.h:238
Xyce::Device::MatrixLoadData N_DEV_MatrixLoadData
Definition: N_DEV_fwd.h:209
Xyce::Device::DeviceSensitivities N_DEV_DeviceSensitivities
Definition: N_DEV_fwd.h:202
Xyce::Device::DeviceSupport N_DEV_DeviceSupport
Definition: N_DEV_fwd.h:204
Xyce::Device::RxnRegion N_DEV_RxnRegion
Definition: N_DEV_fwd.h:215
Pure virtual class to augment a linear system.
Devices and models are each named.
Xyce::Device::SFFMData N_DEV_SFFMData
Definition: N_DEV_fwd.h:229
Xyce::Device::Xygra::Instance N_DEV_XygraInstance
Definition: N_DEV_fwd.h:240
unordered_map< std::string, Descriptor *, HashNoCase, EqualNoCase > ParameterMap
Definition: N_DEV_fwd.h:159
type_index InstanceTypeId
Definition: N_DEV_fwd.h:155
Base class for all parameters.
Definition: N_DEV_Pars.h:169
Xyce::Device::ExpData N_DEV_ExpData
Definition: N_DEV_fwd.h:225
std::vector< DeviceEntity * > EntityVector
Definition: N_DEV_fwd.h:181
Xyce::Device::ModelBlock N_DEV_ModelBlock
Definition: N_DEV_fwd.h:210
Xyce::Device::DeviceState N_DEV_DeviceState
Definition: N_DEV_fwd.h:203
Xyce::Device::Region N_DEV_Region
Definition: N_DEV_fwd.h:213
type_index EntityTypeId
Definition: N_DEV_fwd.h:153
std::vector< int > IdVector
Definition: N_DEV_fwd.h:186
Xyce::Device::DeviceEntity N_DEV_DeviceEntity
Definition: N_DEV_fwd.h:196
Xyce::Device::DeviceInstance N_DEV_DeviceInstance
Definition: N_DEV_fwd.h:197
DeviceMaster instantiates a device as described by the device traits T.
Xyce::Device::Xygra::Model N_DEV_XygraModel
Definition: N_DEV_fwd.h:241
Xyce::Device::PDE_1DElectrode N_DEV_PDE_1DElectrode
Definition: N_DEV_fwd.h:237
Xyce::Device::ConstData N_DEV_ConstData
Definition: N_DEV_fwd.h:230
The FactoryBlock contains parameters needed by the device, instance and model creation functions...
Xyce::Device::ExternDevice::Instance N_DEV_ExternDeviceInstance
Definition: N_DEV_fwd.h:249
Xyce::Device::DevicePDEInstance N_DEV_DevicePDEInstance
Definition: N_DEV_fwd.h:233
Xyce::Device::ExternalSimulationData N_DEV_ExternalSimulationData
Definition: N_DEV_fwd.h:205
Xyce::Device::DeviceOptions N_DEV_DeviceOptions
Definition: N_DEV_fwd.h:201
Xyce::Device::RegionData N_DEV_RegionData
Definition: N_DEV_fwd.h:214
unordered_map< std::string, CompositeParam *, HashNoCase, EqualNoCase > CompositeMap
Definition: N_DEV_fwd.h:160
std::vector< std::vector< int > > JacobianStamp
Definition: N_DEV_fwd.h:185
Xyce::Device::XygraCoilData N_DEV_XygraCoilData
Definition: N_DEV_fwd.h:243
Xyce::Device::ACData N_DEV_ACData
Definition: N_DEV_fwd.h:226
Xyce::Device::SourceData N_DEV_SourceData
Definition: N_DEV_fwd.h:222
std::vector< DeviceModel * > ModelVector
Definition: N_DEV_fwd.h:183
Xyce::Device::XyceInterface N_DEV_XyceInterface
Definition: N_DEV_fwd.h:220
Xyce::Device::DeviceInterface N_DEV_DeviceInterface
Definition: N_DEV_fwd.h:198
IdVector LocalIdVector
Definition: N_DEV_fwd.h:187
Xyce::Device::DevicePDEModel N_DEV_DevicePDEModel
Definition: N_DEV_fwd.h:234
type_index ModelTypeId
Definition: N_DEV_fwd.h:154
std::map< EntityTypeId, Device * > EntityTypeIdDeviceMap
Definition: N_DEV_fwd.h:167
Xyce::Device::NumericalJacobian N_DEV_NumericalJacobian
Definition: N_DEV_fwd.h:211
Xyce::Device::DeviceBuilder N_DEV_DeviceBuilder
Definition: N_DEV_fwd.h:195
unordered_map< std::string, InstanceBlock, HashNoCase, EqualNoCase > DeviceNameInstanceBlockMap
Definition: N_DEV_fwd.h:134
unordered_map< std::string, double, HashNoCase, EqualNoCase > GlobalParameterMap
Definition: N_DEV_fwd.h:161
std::map< std::string, int, LessNoCase > DeviceCountMap
Definition: N_DEV_fwd.h:163
Xyce::Device::ScalingVars N_DEV_ScalingVars
Definition: N_DEV_fwd.h:245
DeviceMgr DeviceInterface
Definition: N_DEV_fwd.h:80
Xyce::Device::SolverState N_DEV_SolverState
Definition: N_DEV_fwd.h:218
Xyce::Device::RxnRegionData N_DEV_RxnRegionData
Definition: N_DEV_fwd.h:217
Xyce::Device::SpecieSource N_DEV_SpecieSource
Definition: N_DEV_fwd.h:247
Xyce::Device::DeviceMgr N_DEV_DeviceMgr
Definition: N_DEV_fwd.h:199
Xyce::Device::PWLinData N_DEV_PWLinData
Definition: N_DEV_fwd.h:228
Xyce::Device::PDE_Electrode N_DEV_PDE_Electrode
Definition: N_DEV_fwd.h:236
Xyce::Device::SmoothData N_DEV_SmoothData
Definition: N_DEV_fwd.h:223
std::vector< Device * > DeviceVector
Definition: N_DEV_fwd.h:178
Xyce::Device::Depend Depend
Definition: N_DEV_fwd.h:194
Xyce::Device::DeviceModel N_DEV_DeviceModel
Definition: N_DEV_fwd.h:200
ModelBlock represents a .MODEL line from the netlist.
Xyce::Device::SourceInstance N_DEV_SourceInstance
Definition: N_DEV_fwd.h:219
The DeviceTraits template describes the configuration of a device.
std::string ModelName
Definition: N_DEV_fwd.h:157
InstanceBlock represent a device instance line from the netlist.
std::vector< DeviceInstance * > InstanceVector
Definition: N_DEV_fwd.h:182
Xyce::Device::RxnRegion2 N_DEV_RxnRegion2
Definition: N_DEV_fwd.h:216
Xyce::Device::PulseData N_DEV_PulseData
Definition: N_DEV_fwd.h:227
Xyce::Device::ExternDevice::Model N_DEV_ExternDeviceModel
Definition: N_DEV_fwd.h:250
Xyce::Device::SinData N_DEV_SinData
Definition: N_DEV_fwd.h:224
Xyce::Device::SmoothPulseData N_DEV_SmoothPulseData
Definition: N_DEV_fwd.h:231
Xyce::Device::InstanceBlock N_DEV_InstanceBlock
Definition: N_DEV_fwd.h:208
Xyce::Device::ExternCodeInterface N_DEV_ExternCodeInterface
Definition: N_DEV_fwd.h:206