Qucs-core  0.0.18
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Data Fields | Private Member Functions | Private Attributes
bondwire Class Reference

#include <bondwire.h>

Inheritance diagram for bondwire:
qucs::circuit qucs::object qucs::integrator qucs::states< state_type_t >

Public Member Functions

 CREATOR (bondwire)
 
void initSP (void)
 
void calcSP (const nr_double_t)
 
void calcNoiseSP (nr_double_t)
 
void initDC (void)
 
void initAC (void)
 
void calcAC (nr_double_t)
 
void calcNoiseAC (nr_double_t)
 
qucs::matrix calcMatrixY (nr_double_t)
 
void saveCharacteristics (nr_double_t)
 
- Public Member Functions inherited from qucs::circuit
 circuit ()
 
 circuit (int)
 
 circuit (const circuit &)
 
 ~circuit ()
 
virtual void calcDC (void)
 
virtual void restartDC (void)
 
virtual void initNoiseSP (void)
 
virtual void initNoiseAC (void)
 
virtual void initTR (void)
 
virtual void calcTR (nr_double_t)
 
virtual void initHB (void)
 
virtual void calcHB (nr_double_t)
 
virtual void initHB (int)
 
virtual void calcHB (int)
 
virtual void calcOperatingPoints (void)
 
virtual void saveOperatingPoints (void)
 
virtual void calcCharacteristics (nr_double_t)
 
void setNode (int, const char *, int intern=0)
 
nodegetNode (int)
 
void setType (int t)
 
int getType (void)
 
int getSize (void)
 Get the number of ports the circuit element has. More...
 
void setSize (int)
 Set the number of ports the circuit element has. More...
 
bool isEnabled (void)
 Reports if circuit element is enabled. More...
 
void setEnabled (bool e)
 Set a circuit element to be enabled or diabled. More...
 
bool isVariableSized (void)
 
void setVariableSized (bool v)
 
bool isProbe (void)
 
void setProbe (bool p)
 
void setNet (net *n)
 
netgetNet (void)
 
char * getSubcircuit (void)
 
void setSubcircuit (char *)
 
environmentgetEnv (void)
 
void setEnv (environment *e)
 
void setInternalVoltageSource (bool i)
 
bool isInternalVoltageSource (void)
 
void setVoltageSource (int s)
 
int getVoltageSource (void)
 
int getVoltageSources (void)
 
void setVoltageSources (int)
 
void voltageSource (int, int, int, nr_double_t value=0.0)
 
bool isVSource (void)
 
void setVSource (bool v)
 
bool isISource (void)
 
void setISource (bool i)
 
int getNoiseSources (void)
 
void setNoiseSources (int)
 
void transientCapacitance (int, int, int, nr_double_t, nr_double_t, nr_double_t)
 
void transientCapacitance (int, int, nr_double_t, nr_double_t, nr_double_t)
 
void transientCapacitanceQ (int, int, int, nr_double_t)
 
void transientCapacitanceQ (int, int, nr_double_t)
 
void transientCapacitanceC (int, int, int, int, nr_double_t, nr_double_t)
 
void transientCapacitanceC (int, int, nr_double_t, nr_double_t)
 
void transientCapacitanceC2V (int, int, int, nr_double_t, nr_double_t)
 
void transientCapacitanceC2Q (int, int, int, nr_double_t, nr_double_t)
 
void setDelta (nr_double_t *d)
 
nr_double_t * getDelta (void)
 
bool hasHistory (void)
 
void setHistory (bool h)
 
void initHistory (nr_double_t)
 
void deleteHistory (void)
 
void truncateHistory (nr_double_t)
 
void appendHistory (int, nr_double_t)
 
void applyHistory (history *)
 
nr_double_t getV (int, nr_double_t)
 
nr_double_t getV (int, int)
 
nr_double_t getJ (int, nr_double_t)
 
nr_double_t getHistoryAge (void)
 
void setHistoryAge (nr_double_t)
 
int getHistorySize (void)
 
nr_double_t getHistoryTFromIndex (int)
 
int getPort (void)
 
void setPort (int p)
 
int getInserted (void)
 
void setInserted (int i)
 
bool isOriginal (void)
 
void setOriginal (bool o)
 
substrategetSubstrate (void)
 
void setSubstrate (substrate *)
 
nr_complex_t getS (int, int)
 
nr_complex_t getN (int, int)
 
nr_complex_t getY (int, int)
 
nr_complex_t getB (int, int)
 
nr_complex_t getC (int, int)
 
nr_complex_t getD (int, int)
 
nr_complex_t getQV (int, int)
 
nr_complex_t getGV (int)
 
nr_complex_t getCV (int)
 
nr_complex_t getE (int)
 
nr_complex_t getI (int)
 
nr_complex_t getJ (int)
 
nr_complex_t getV (int)
 
nr_complex_t getQ (int)
 
nr_double_t getG (int, int)
 
void setS (int, int, nr_complex_t)
 
void setN (int, int, nr_complex_t)
 
void setY (int, int, nr_complex_t)
 
void setB (int, int, nr_complex_t)
 
void setC (int, int, nr_complex_t)
 
void setD (int, int, nr_complex_t)
 
void setQV (int, int, nr_complex_t)
 
void setGV (int, nr_complex_t)
 
void setCV (int, nr_complex_t)
 
void setE (int, nr_complex_t)
 
void setI (int, nr_complex_t)
 
void setJ (int, nr_complex_t)
 
void setV (int, nr_complex_t)
 
void setQ (int, nr_complex_t)
 
void setG (int, int, nr_double_t)
 
void clearB (void)
 
void clearC (void)
 
void clearD (void)
 
void clearE (void)
 
void clearI (void)
 
void clearJ (void)
 
void clearV (void)
 
void clearY (void)
 
void addY (int, int, nr_complex_t)
 
void addY (int, int, nr_double_t)
 
void addI (int, nr_complex_t)
 
void addI (int, nr_double_t)
 
void addOperatingPoint (const char *, nr_double_t)
 
nr_double_t getOperatingPoint (const char *)
 
void setOperatingPoint (const char *, nr_double_t)
 
int hasOperatingPoint (char *)
 
valuelist< operatingpoint > & getOperatingPoints (void)
 
void addCharacteristic (const char *, nr_double_t)
 
nr_double_t getCharacteristic (char *)
 
void setCharacteristic (const char *, nr_double_t)
 
int hasCharacteristic (char *)
 
valuelist< characteristic > & getCharacteristics (void)
 
void setNonLinear (bool l)
 
bool isNonLinear (void)
 
void print (void)
 
void setInternalNode (int, const char *)
 
void allocMatrixS (void)
 
void allocMatrixN (int sources=0)
 
void allocMatrixMNA (void)
 
void freeMatrixMNA (void)
 
void allocMatrixHB (void)
 
void freeMatrixHB (void)
 
void setMatrixS (matrix)
 
matrix getMatrixS (void)
 
void setMatrixN (matrix)
 
matrix getMatrixN (void)
 
void setMatrixY (matrix)
 
matrix getMatrixY (void)
 
- Public Member Functions inherited from qucs::object
 object ()
 
 object (const char *)
 
 object (const object &)
 
virtual ~object ()
 
objectgetNext (void)
 
void setNext (object *o)
 
objectgetPrev (void)
 
void setPrev (object *o)
 
void setName (const char *)
 
char * getName (void)
 
void addProperty (property *)
 
propertyaddProperty (const char *, const char *)
 
propertyaddProperty (const char *, nr_double_t)
 
propertyaddProperty (const char *, variable *)
 
void setProperty (const char *, char *)
 
void setProperty (const char *, nr_double_t)
 
void setScaledProperty (const char *, nr_double_t)
 
void setProperty (const char *, variable *)
 
vectorgetPropertyVector (const char *)
 
char * getPropertyString (const char *)
 
char * getPropertyReference (const char *)
 
nr_double_t getPropertyDouble (const char *)
 
nr_double_t getScaledProperty (const char *)
 
int getPropertyInteger (const char *)
 
bool hasProperty (const char *)
 
bool isPropertyGiven (const char *)
 
void copyProperties (property *)
 
void deleteProperties (void)
 
int countProperties (void)
 
char * propertyList (void)
 
 object ()
 
 object (const char *)
 
 object (const object &)
 
virtual ~object ()
 
objectgetNext (void)
 
void setNext (object *o)
 
objectgetPrev (void)
 
void setPrev (object *o)
 
void setName (const char *)
 
char * getName (void)
 
void addProperty (property *)
 
propertyaddProperty (const char *, const char *)
 
propertyaddProperty (const char *, nr_double_t)
 
propertyaddProperty (const char *, variable *)
 
void setProperty (const char *, char *)
 
void setProperty (const char *, nr_double_t)
 
void setScaledProperty (const char *, nr_double_t)
 
void setProperty (const char *, variable *)
 
vectorgetPropertyVector (const char *)
 
char * getPropertyString (const char *)
 
char * getPropertyReference (const char *)
 
nr_double_t getPropertyDouble (const char *)
 
nr_double_t getScaledProperty (const char *)
 
int getPropertyInteger (const char *)
 
bool hasProperty (const char *)
 
bool isPropertyGiven (const char *)
 
void copyProperties (property *)
 
void deleteProperties (void)
 
int countProperties (void)
 
char * propertyList (void)
 
- Public Member Functions inherited from qucs::integrator
 integrator ()
 
 integrator (const integrator &)
 
 ~integrator ()
 
void setIntegration (integrate_func_t f)
 
void setConductance (conductor_func_t f)
 
void integrate (int, nr_double_t, nr_double_t &, nr_double_t &)
 
void conductor (nr_double_t, nr_double_t &)
 
void setOrder (int o)
 
int getOrder (void)
 
void setMode (int s)
 
int getMode (void)
 
void setCoefficients (nr_double_t *c)
 
nr_double_t * getCoefficients (void)
 
- Public Member Functions inherited from qucs::states< state_type_t >
 states ()
 
 states (const states &)
 
 ~states ()
 
state_type_t getState (int, int n=0)
 
void setState (int, state_type_t, int n=0)
 
void initStates (void)
 
void clearStates (void)
 
int getStates (void)
 
void setStates (int n)
 
void nextState (void)
 
void prevState (void)
 
void fillState (int, state_type_t)
 
void saveState (int, state_type_t *)
 
void inputState (int, state_type_t *)
 

Data Fields

 BOND
 
 PROP_COMPONENT
 
 PROP_NO_SUBSTRATE
 
 PROP_LINEAR
 

Private Member Functions

void getProperties (void)
 Get properties from model. Get properties and fill the class. More...
 
nr_double_t resistance (const nr_double_t f) const
 
nr_double_t Lfreespace (const nr_double_t f) const
 
nr_double_t Lmirror () const
 

Private Attributes

nr_double_t l
 
nr_double_t d
 
nr_double_t h
 
nr_double_t rho
 
nr_double_t mur
 
int model
 
nr_double_t R
 
nr_double_t L
 
nr_double_t temp
 

Additional Inherited Members

- Public Types inherited from qucs::integrator
typedef void(* integrate_func_t )(integrator *, int, nr_double_t, nr_double_t &, nr_double_t &)
 
typedef void(* conductor_func_t )(integrator *, nr_double_t, nr_double_t &)
 
- Static Public Member Functions inherited from qucs::circuit
static char * createInternal (const char *, const char *)
 
- Static Public Attributes inherited from qucs::circuit
static const nr_double_t z0 = 50.0
 
- Protected Attributes inherited from qucs::circuit
int type
 
int pol
 

Detailed Description

Definition at line 434 of file bondwire.cpp.

Member Function Documentation

void bondwire::calcAC ( nr_double_t  frequency)
virtual

Compute AC model. ! Use serial LR model (Y matrix).

Reimplemented from qucs::circuit.

Definition at line 399 of file bondwire.cpp.

matrix bondwire::calcMatrixY ( nr_double_t  f)

Compute Y matrix of bond wire.

Definition at line 314 of file bondwire.cpp.

void bondwire::calcNoiseAC ( nr_double_t  )
virtual

Reimplemented from qucs::circuit.

Definition at line 411 of file bondwire.cpp.

void bondwire::calcNoiseSP ( nr_double_t  )
virtual

Reimplemented from qucs::circuit.

Definition at line 403 of file bondwire.cpp.

void bondwire::calcSP ( const nr_double_t  frequency)
virtual

Compute S parameters. ! Reuse computed Y matrix.

Reimplemented from qucs::circuit.

Definition at line 353 of file bondwire.cpp.

bondwire::CREATOR ( bondwire  )
void bondwire::getProperties ( void  )
private

Get properties from model. Get properties and fill the class.

Todo:
check values

Definition at line 94 of file bondwire.cpp.

void bondwire::initAC ( void  )
virtual

Initialize AC simulation.

Reimplemented from qucs::circuit.

Definition at line 390 of file bondwire.cpp.

void bondwire::initDC ( void  )
virtual

DC model initialization. ! DC model of a bondwire is a resistance.

Reimplemented from qucs::circuit.

Definition at line 366 of file bondwire.cpp.

void bondwire::initSP ( void  )
virtual

Initialize S parameter simulation.

Reimplemented from qucs::circuit.

Definition at line 345 of file bondwire.cpp.

nr_double_t bondwire::Lfreespace ( const nr_double_t  f) const
private

Compute free space inductance. According to [1] pp63 (2.29) free space inductance (in nH) is such as ( $l$ in micrometers):

\[ L = 2\times10^{-4} l \left[ \ln\left\{ \frac{2l}{d} + \sqrt{1 + \left(\frac{2l}{d}\right)^2} \right\} + \frac{d}{2l} - \sqrt{1+\left(\frac{d}{2l}\right)^2} + C \right] \]

According to [2] self inductance is (in H with l in m):

\[ L = \frac{\mu_0}{2\pi} l\left[ \ln\left\{ \frac{2l}{d} + \sqrt{1 + \left(\frac{2l}{d}\right)^2} \right\} + \frac{d}{2l} - \sqrt{1+\left(\frac{d}{2l}\right)^2} + \frac{\mu_r}{4} \right] \]

Finally we will use (in H with l in m):

\[ L = \frac{\mu_0}{2\pi} l\left[ \ln\left\{ \frac{2l}{d} + \sqrt{1 + \left(\frac{2l}{d}\right)^2} \right\} + \frac{d}{2l} - \sqrt{1+\left(\frac{d}{2l}\right)^2} + C \right] \]

Parameters
ffrequency
dbond wire diameter
lbond wire length (in meters)
rhobond wire resistivity
murrelative magnetic permeabillity

Definition at line 254 of file bondwire.cpp.

nr_double_t bondwire::Lmirror ( void  ) const
private

Compute inductance modeling ground plane effect. According to [1] pp64 (2.32) inductance (in nH) is such as ( $l$ in micrometers):

\[ L = 2\times10^{-4} l \left[ \ln \frac{4h}{d} + \ln \frac{l+\sqrt{l^2+d^2/4}}{l+\sqrt{l^2+4h^2}} + \sqrt{1+\frac{4h^2}{l^2}} - \sqrt{1+\frac{d^2}{4l^2}} - 2 \frac{h}{l} + \frac{d}{2l} \right] \]

Finally we will use (in H with l in m):

\[ L = \frac{\mu_0}{2\pi} l \left[ \ln \frac{4h}{d} + \ln \frac{l+\sqrt{l^2+d^2/4}}{l+\sqrt{l^2+4h^2}} + \sqrt{1+\frac{4h^2}{l^2}} - \sqrt{1+\frac{d^2}{4l^2}} - 2 \frac{h}{l} + \frac{d}{2l} \right] \]

Note
Mirror is a strange model that is frequency independent. Whereas computations are valid, hypothesis are arguable. Indeed, they did the assumption that the ground plane is perfect that is really a zero order model in the high frequency domain.

Definition at line 297 of file bondwire.cpp.

nr_double_t bondwire::resistance ( const nr_double_t  f) const
private

Compute resitance of the wire. Resitance of the wire is computed using classical tube model enhanced for case where tube is greater than conductor (i.e. low frequency case).

Todo:
Offer other resistance model for instance exponential decay and bessel function exact computation. But I do not know it is worth the effort.
Todo:
Factorise the resistance model.

Definition at line 159 of file bondwire.cpp.

void bondwire::saveCharacteristics ( nr_double_t  )
virtual

Save self-inductance and resistance.

Reimplemented from qucs::circuit.

Definition at line 358 of file bondwire.cpp.

Field Documentation

bondwire::BOND

Definition at line 435 of file bondwire.cpp.

nr_double_t bondwire::d
private

diameter of bond wire (m)

Definition at line 51 of file bondwire.h.

nr_double_t bondwire::h
private

height from ground plane only used in mirror model

Definition at line 52 of file bondwire.h.

nr_double_t bondwire::l
private

length of bond wire (m)

Definition at line 50 of file bondwire.h.

nr_double_t bondwire::L
private

Definition at line 56 of file bondwire.h.

int bondwire::model
private

model number

Definition at line 55 of file bondwire.h.

nr_double_t bondwire::mur
private

relative magnetic permeabilty

Definition at line 54 of file bondwire.h.

bondwire::PROP_COMPONENT

Definition at line 435 of file bondwire.cpp.

bondwire::PROP_LINEAR

Definition at line 435 of file bondwire.cpp.

bondwire::PROP_NO_SUBSTRATE

Definition at line 435 of file bondwire.cpp.

nr_double_t bondwire::R
private

Definition at line 56 of file bondwire.h.

nr_double_t bondwire::rho
private

resistivity

Definition at line 53 of file bondwire.h.

nr_double_t bondwire::temp
private

ambient temperature

Definition at line 57 of file bondwire.h.


The documentation for this class was generated from the following files: