48 #ifndef Xyce_N_DEV_DiodePDE_h
49 #define Xyce_N_DEV_DiodePDE_h
52 #include <N_UTL_fwd.h>
65 #include <N_UTL_Expression.h>
76 static const char *
name() {
return "1D PDE (level 1)";}
117 void registerLIDs(
const std::vector<int> & intLIDVecRef,
118 const std::vector<int> & extLIDVecRef );
121 const std::vector< std::vector<int> > &
jacobianStamp()
const;
122 void registerJacLIDs(
const std::vector< std::vector<int> > & jacLIDVec );
213 bool loadDFDV (
int ielectrode, Linear::Vector * dfdvPtr);
290 std::map<std::string, std::vector<double> >
xlocMap;
291 std::map<std::string, std::vector<double> >
specMap;
ScalingVars unscaled_ScalingVars
std::vector< double > source_vec
std::vector< double > y2_source_vec
std::vector< double > RVec
std::vector< int > edgeBoundarySten
bool setupDopingProfile()
std::vector< pdeFadType > unE_Vec
std::vector< double > specVec
std::vector< double > bgnCVec
bool loadVecDDForm(double *rhs)
bool loadDAEFExtractedConductance()
std::vector< int > li_Vrowarray
std::map< std::string, PDE_1DElectrode * > electrodeMap
bool pdTerminalCurrents()
std::vector< double > xVec
std::map< std::string, std::vector< double > > xlocMap
std::vector< int > heterojunctionSten
bool loadDAEQDDFormulation()
std::vector< double > xloc_ndope_vec
void loadErrorWeightMask()
std::vector< std::vector< double * > > fPmatPtr
std::map< std::string, std::vector< double > > specMap
double densityScalarFraction_
bool cathodeIndex_userGiven
std::vector< std::string > bulkMaterialVec
std::vector< double > VVec
std::vector< double > dJndn1Vec
std::vector< double > dJpdp1Vec
std::vector< int > stateDispl
std::vector< std::vector< double * > > fNmatPtr
std::vector< Instance * > InstanceVector
std::map< std::string, int > bcIndexMap
Pure virtual class to augment a linear system.
std::vector< std::vector< int > > li_N_rxn_colarray
bool loadDAEFDDFormulation()
bool loadMatDDForm(Linear::Matrix &mat)
bool scaleDensityToMaxDoping_
std::vector< double > NcVec
std::vector< double > dJpdn2Vec
bool loadDAEQExtractedConductance()
bool columnReorderingFlag
std::vector< int > meshToLID
std::vector< int > li_Prowarray
std::vector< double > npVec
void addInstance(Instance *instance)
std::vector< double > relPermVec
std::string ndopeFileName
std::vector< double > dxVec
std::vector< double > NiVec
bool updateTemperature(const double &temp_tmp)
std::vector< std::vector< double * > > fVmatPtr
std::vector< MaterialLayer * > materialVec
std::vector< double > EiVec
std::vector< int > regElectronIndexVec
bool loadDAEdFdxExtractedConductance()
bool calcBoundaryConditions()
std::vector< int > stateDispl_owned
std::vector< double > EfEffVec
std::vector< double > ExVec
std::vector< double > dJndn2Vec
std::vector< double > dJndp1Vec
std::vector< double > CVec
std::vector< double > EcVec
bool setupSourceProfile()
void registerLIDs(const std::vector< int > &intLIDVecRef, const std::vector< int > &extLIDVecRef)
std::vector< std::vector< double * > > qPmatPtr
std::vector< double > dRdpVec
std::vector< double > dJpdp2Vec
std::vector< std::vector< int > > li_P_rxn_colarray
static bool isPDEDevice()
bool loadMatNLPoisson(Linear::Matrix &mat)
std::vector< double > dJndV2Vec
std::vector< double > JnxVec
bool loadMatKCLDDForm(Linear::Matrix &mat)
std::vector< std::vector< double * > > qVmatPtr
const std::vector< std::vector< int > > & jacobianStamp() const
bool processParams()
processParams
std::vector< double > EvEffVec
bool loadDAEdFdxDDFormulation()
std::vector< int > regNumSpecieVec
std::vector< double > EvVec
The FactoryBlock contains parameters needed by the device, instance and model creation functions...
std::vector< double > tnVec
std::vector< Instance * > instanceContainer
std::vector< double > xloc_source_vec
std::vector< std::vector< int > > li_Vcolarray
virtual std::ostream & printOutInstances(std::ostream &os) const
std::vector< double > EfVec
bool enablePDEContinuation(int &max_PDE_continuation_steps)
std::vector< int > internalBoundarySten
std::vector< int > regBaseIndexVec
bool loadDAEdQdxDDFormulation()
std::string tunnelingModelName
std::vector< double > xloc_pdope_vec
std::vector< double > dJndV1Vec
std::vector< int > matIndex
bool loadDFDV(int ielectrode, Linear::Vector *dfdvPtr)
bool updateSecondaryState()
std::string dopingFileName
bool applyVoltageLimiting()
std::vector< bcData > bcVec
std::vector< double > pdope_vec
void loadNodeSymbols(Util::SymbolTable &symbol_table) const
Populates and returns the store name map.
std::vector< std::pair< int, int > > heterojunctionBCs
void registerStateLIDs(const std::vector< int > &staLIDVecRef)
std::vector< double > dJpdV2Vec
bool loadDAEdFdxNonlinPoisson()
std::vector< pdeFadType > upE_Vec
bool obtainNodeVoltages()
bool useLayerCompositeDoping_
std::vector< int > li_stateDispl
std::vector< double > EiEffVec
bool thermionicEmissionFlag
static bool modelRequired()
The Device class is an interface for device implementations.
std::vector< int > jacMap
void registerJacLIDs(const std::vector< std::vector< int > > &jacLIDVec)
bool calcVoltDepDensities()
std::vector< double > SVec
std::vector< double > dRdnVec
std::vector< double > dJpdn1Vec
bool calcElectronCurrent()
std::vector< std::vector< int > > li_Pcolarray
static const char * name()
std::vector< double > ndope_vec
bool processInstanceParams()
processInstanceParams
CompositeParam * constructComposite(const std::string &ccompositeName, const std::string ¶mName)
bool outputPlotFiles(bool force_final_output)
std::vector< double > xlocVec
Class Configuration contains device configuration data.
std::string pdopeFileName
void setPDEContinuationAlpha(double alpha)
std::vector< double > nnVec
static int numOptionalNodes()
static Device * factory(const Configuration &configuration, const FactoryBlock &factory_block)
bool anodeIndex_userGiven
bool useVoltageOutputOffset_
bool layerCompositeSpecified
std::vector< double > dJpdV1Vec
std::vector< double > CdonorVec
std::vector< int > boundarySten
std::vector< std::vector< double > > condVec
std::vector< double > bgnVVec
std::vector< double > CacceptorVec
bool disablePDEContinuation()
bool enableContinuationCalled
bool calcTerminalCurrents()
bool calcConductance(int iElectrode, const Linear::Vector *dxdvPtr)
std::vector< double > dJndp2Vec
std::vector< double > displCurrent
std::vector< double > y2Vec
std::vector< std::vector< int > > jacStamp
std::vector< double > EcEffVec
bool setupMiscConstants()
std::multimap< int, int * > meshNeighborMultiMap
static const char * deviceTypeName()
bool loadVecNLPoisson(double *rhs)
std::vector< double > y2_ndope_vec
virtual void forEachInstance(DeviceInstanceOp &op) const
Apply a device instance "op" to all instances associated with this model.
std::vector< std::vector< double * > > qNmatPtr
std::vector< double > NvVec
ModelBlock represents a .MODEL line from the netlist.
The DeviceTraits template describes the configuration of a device.
bool loadDAEFNonlinPoisson()
Manages parameter binding for class C.
Instance(const Configuration &configuration, const InstanceBlock &IB, Model &model, const FactoryBlock &factory_block)
InstanceBlock represent a device instance line from the netlist.
std::vector< double > y2_pdope_vec
std::vector< double > tpVec
std::vector< std::vector< int > > li_Ncolarray
static bool isLinearDevice()
bool loadDAEdQdxExtractedConductance()
bool offsetWithFirstElectrode_
static void loadInstanceParameters(ParametricData< Instance > &instance_parameters)
std::vector< double > JpxVec
Model & operator=(const Model &)
static void loadModelParameters(ParametricData< Model > &model_parameters)
bool updateIntermediateVars()
bool loadMatCktTrivial(Linear::Matrix &mat)
bool getInstanceBreakPoints(std::vector< Util::BreakPoint > &breakPointTimes)
std::vector< int > li_Nrowarray
bool updatePrimaryState()
CompositeParam is the base class for classes that wish to only manage the processing of parameter dat...
std::vector< std::vector< int > > jacMap2
bool setupMaterialArrays()
std::vector< double > NiEffVec
std::vector< int > regHoleIndexVec