47 #ifndef Xyce_N_DEV_2DPDE_h
48 #define Xyce_N_DEV_2DPDE_h
73 typedef unsigned int UINT;
81 static const char *
name() {
return "2D PDE (level 2)";}
124 void registerGIDs (
const IndexPairVector & intGIDListRef,
125 const IndexPairVector & extGIDListRef );
131 void registerLIDs(
const std::vector<int> & intLIDVecRef,
132 const std::vector<int> & extLIDVecRef );
137 const std::vector< std::vector<int> > &
jacobianStamp()
const;
138 void registerJacLIDs(
const std::vector< std::vector<int> > & jacLIDVec );
175 bool loadMatDDForm (
double dndtScalar, Linear::Matrix * matPtr);
176 bool loadVecDDForm (
double scalar,
double dndtScalar,Linear::Vector *vecPtr);
241 bool loadDFDV (
int ielectrode, Linear::Vector * dfdvPtr);
291 std::vector<DeviceInterfaceNode>
dIVec;
338 #ifdef Xyce_OXIDE_ENABLED
532 std::vector< std::vector<double> >
capVec;
bool processParams()
processParams
bool processElectrodeParams(Param &ndParam)
bool calcBoundaryConditions()
std::vector< double > RVec
static bool isPDEDevice()
bool loadDAEFExtractedConductance()
std::vector< double > displPotential
std::vector< int > li_stateDispl
virtual std::ostream & printOutInstances(std::ostream &os) const
std::vector< int > stateDispl_owned
std::multimap< int, int * > meshNeighborMultiMap
std::vector< int > nnOwnVec
bool outputPlotFiles(bool force_final_output)
const std::vector< std::vector< int > > & jacobianStamp() const
std::vector< int > MESHtoLID_P
bool scaleDopeVariables()
void setPDEContinuationAlpha(double alpha)
std::vector< double > CVec
bool enablePDEContinuation(int &max_PDE_continuation_steps)
std::vector< int > boundaryStenN
std::vector< std::vector< int > > li_VoffsetArray
std::vector< int > li_Vrowarray
bool loadDAEdFdxDDFormulation()
std::vector< double > outputVec
Pure virtual class to augment a linear system.
std::vector< int > Vrowarray
std::vector< double > CdonorVec
bool calcConductance(int iElectrode, const Linear::Vector *dxdvPtr)
bool loadMatKCLDDForm(Linear::Matrix *matPtr)
bool updateSecondaryState()
std::vector< double > upE_Vec
bool undoSensMeshResize()
std::vector< double > dJndn1Vec
std::vector< int > npOwnVec
std::vector< double > totSrcVec
void registerStateGIDs(const IndexPairVector &staGIDListRef)
std::vector< int > Nrowarray
std::vector< double > EfieldVec
std::vector< int > boundarySten
std::vector< double > dJpdn2Vec
void registerLIDs(const std::vector< int > &intLIDVecRef, const std::vector< int > &extLIDVecRef)
std::vector< double > minDXVec
bool processOneTimeParams(Param &ndParam)
std::map< std::string, int > labelDIMap
bool checkForElectrodeOverlap()
std::vector< UINT > aiEdge
static const char * deviceTypeName()
bool loadDFDV(int ielectrode, Linear::Vector *dfdvPtr)
PDE_2DMesh * meshCopyContainerPtr
std::vector< std::vector< int > > li_PoffsetArray
std::vector< double > dJpdn1Vec
CompositeParam * constructComposite(const std::string &compositeName, const std::string ¶mName)
std::vector< std::vector< int > > Ncolarray
std::vector< std::string > labelNameVector
std::vector< std::vector< int > > Vcolarray
std::vector< double > xVec
The FactoryBlock contains parameters needed by the device, instance and model creation functions...
std::vector< std::vector< int > > jacStamp
bool loadRHSDDFormulation()
void registerJacLIDs(const std::vector< std::vector< int > > &jacLIDVec)
std::vector< int > li_Nrowarray
std::vector< double > dJndV1Vec
Instance(const Configuration &configuration, const InstanceBlock &IB, Model &model, const FactoryBlock &factory_block)
std::vector< double > dJpdV2Vec
bool applyVoltageLimiting()
std::vector< double > nnVec
void registerStateLIDs(const std::vector< int > &staLIDVecRef)
bool loadDAEdFdxExtractedConductance()
void setPDEContinuationBeta(double beta)
std::vector< int > boundaryStenV
bool loadRHSNonlinPoisson()
std::vector< std::vector< double > > condVec
std::vector< int > MESHtoLID_V
std::vector< double > tnVec
bool loadDAEdQdxDDFormulation()
bool loadVecNLPoisson(double scalar, Linear::Vector *vecPtr)
bool loadDAEFNonlinPoisson()
std::vector< double > VVec
bool updateTemperature(const double &temp_tmp)
bool updatePrimaryState()
std::vector< int > boundaryTest
bool pdTerminalCurrents()
static Device * factory(const Configuration &configuration, const FactoryBlock &factory_block)
std::vector< double > displCurrent
bool calcTerminalCharges()
std::vector< double > unVec
The Device class is an interface for device implementations.
bool unScaleDopeVariables()
bool obtainNodeVoltages()
std::vector< int > boundaryNeighborSten
static void loadModelParameters(ParametricData< Model > &model_parameters)
std::vector< double > dJndn2Vec
Instance & operator=(const Instance &right)
void addInstance(Instance *instance)
std::vector< double > CacceptorVec
std::vector< int > labelIndex
bool disablePDEContinuation()
std::vector< double > dRdnVec
std::map< std::string, PDE_2DElectrode * > electrodeMap
int numInterfaceMeshPoints
std::vector< int > stateDispl
std::vector< DeviceInterfaceNode > dIVec
bool updateIntermediateVars()
Class Configuration contains device configuration data.
static void loadInstanceParameters(ParametricData< Instance > &instance_parameters)
static const char * name()
std::vector< double > dJndV2Vec
bool loadDAEdFdxNonlinPoisson()
bool loadVecDDForm(double scalar, double dndtScalar, Linear::Vector *vecPtr)
std::vector< double > JpVec
static bool modelRequired()
std::vector< Instance * > instanceContainer
void loadNodeSymbols(Util::SymbolTable &symbol_table) const
Populates and returns the store name map.
std::vector< std::vector< int > > Pcolarray
virtual void forEachInstance(DeviceInstanceOp &op) const
Apply a device instance "op" to all instances associated with this model.
std::vector< double > yVec
bool loadDAEFDDFormulation()
std::vector< UINT > aiEdge_nf
std::vector< double > npVec
bool loadMatNLPoisson(Linear::Matrix *matPtr)
PDE_2DMesh * meshContainerPtr
std::vector< double > unE_Vec
bool loadMatCktTrivial(Linear::Matrix *matPtr)
bool processInstanceParams()
processInstanceParams
void registerGIDs(const IndexPairVector &intGIDListRef, const IndexPairVector &extGIDListRef)
std::vector< int > li_Prowarray
std::vector< Instance * > InstanceVector
std::vector< int > vOwnVec
std::vector< double > upVec
bool tecplotGeomOutput(FILE *fp1)
bool outputTecplotVectors()
bool processDopingParams(Param &ndParam, std::string param)
bool calcElectronCurrent()
bool setupMiscConstants()
std::vector< int > MESHtoLID_N
ModelBlock represents a .MODEL line from the netlist.
The DeviceTraits template describes the configuration of a device.
Manages parameter binding for class C.
std::vector< int > Prowarray
bool setupBoundaryStencil()
bool loadMatDDForm(double dndtScalar, Linear::Matrix *matPtr)
InstanceBlock represent a device instance line from the netlist.
std::map< std::string, std::string > tmpBCmap
bool loadRHSExtractedConductance()
static int numOptionalNodes()
std::vector< double > dRdpVec
bool loadDAEQDDFormulation()
static bool isLinearDevice()
std::vector< std::vector< double > > capVec
bool calcTerminalCurrents()
std::vector< int > boundaryStenP
bool loadDAEQExtractedConductance()
std::vector< std::vector< int > > li_NoffsetArray
std::vector< double > SVec
std::vector< int > meshToLID
CompositeParam is the base class for classes that wish to only manage the processing of parameter dat...
bool loadDAEdQdxExtractedConductance()
static int numFillNodes()
std::vector< double > areaVec
std::vector< double > JnVec
Model & operator=(const Model &)
std::vector< double > tpVec
bool calcVoltDepDensities()
std::vector< double > dJpdV1Vec