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
rectline Class Reference

#include <rectline.h>

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

Public Member Functions

 CREATOR (rectline)
 
void initSP (void)
 
void calcSP (nr_double_t)
 
void calcNoiseSP (nr_double_t)
 
void initDC (void)
 
void initAC (void)
 
void calcAC (nr_double_t)
 
void calcNoiseAC (nr_double_t)
 
void saveCharacteristics (nr_complex_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)
 
virtual void saveCharacteristics (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

 RECTLINE
 
 PROP_COMPONENT
 
 PROP_NO_SUBSTRATE
 
 PROP_LINEAR
 

Private Member Functions

void calcPropagation (nr_double_t)
 
void initCheck (void)
 
void calcResistivity (char *, nr_double_t)
 

Private Attributes

nr_double_t alpha
 
nr_double_t beta
 
nr_complex_t zl
 
nr_double_t fc_low
 
nr_double_t fc_high
 
nr_double_t rho
 

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

A TE10 rectangular waveguide component

Note
Evanecent mode are not implemented
Todo:
Implement evanecent mode

Definition at line 318 of file rectline.cpp.

Member Function Documentation

void rectline::calcAC ( nr_double_t  frequency)
virtual

calc propagation using classical transmission line formulae

Reimplemented from qucs::circuit.

Definition at line 280 of file rectline.cpp.

void rectline::calcNoiseAC ( nr_double_t  )
virtual

Compute noise

Reimplemented from qucs::circuit.

Definition at line 295 of file rectline.cpp.

void rectline::calcNoiseSP ( nr_double_t  )
virtual

Compute noise parameter

Reimplemented from qucs::circuit.

Definition at line 202 of file rectline.cpp.

void rectline::calcPropagation ( nr_double_t  frequency)
private

Compute propagation constant

According to [1] table 3.2 p 128 Wawe number in vacuum is:

\[ k=\omega\sqrt{\mu\varepsilon}=\omega\sqrt{\mu_r \varepsilon_r \mu_0 \varepsilon_0} \]

Where $\omega=2\pi f$, $f$ is the frequency, $$ the magnetic permeability, $\varepsilon_r$ the permitivity. Using well known formula $c^2\mu_0\varepsilon_0=1$, we found:

\[ k=\frac{\omega}{c} std::sqrt{\mu_r \varepsilon_r} \]

In general case $k_c$ is:

\[ k_c = \sqrt{\left(\frac{m\pi}{a}\right)^2+\left(\frac{n\pi}{b}\right)^2} \]

Where $a$ is the wider dimension of the guide and $b$ the smaller and $(n,m)\in\mathbb{N}^2$. In the TE10 case it simplifies to:

\[ k_c = \sqrt{\left(\frac{\pi}{a}\right)^2} = \frac{\pi}{a} \]

The propagation constant is:

\[ \beta = \sqrt{k^2 - k_c^2} \]

Loss could be divised in dielectric and resistive loss. Dielectric loss are computed using:

\[ \alpha_d = \frac{k^2 \tan \delta}{2\beta} \]

Resistive using [1] eq (3.96) p 125 (valid only for TE10 mode)

\[ \alpha_c=\frac{R_s}{a^3 b \beta k Z_0} \left( 2 b \pi^2 + a^3 k^2 \right) \]

Wave impedance is for TE10:

\[ Z = \frac{k Z_0}{\beta} \]

Definition at line 153 of file rectline.cpp.

void rectline::calcResistivity ( char *  Mat,
nr_double_t  T 
)
private

Definition at line 63 of file rectline.cpp.

void rectline::calcSP ( nr_double_t  frequency)
virtual

Compute S parameter use generic transmission line formulae

Reimplemented from qucs::circuit.

Definition at line 246 of file rectline.cpp.

rectline::CREATOR ( rectline  )
void rectline::initAC ( void  )
virtual

init AC

Reimplemented from qucs::circuit.

Definition at line 273 of file rectline.cpp.

void rectline::initCheck ( void  )
private

Check validity of parameter and compute cutoff frequencies

Note
do not check validity of epsr or mur because some research stuff could use epsr < 1 (plasma)

Definition at line 215 of file rectline.cpp.

void rectline::initDC ( void  )
virtual

Reimplemented from qucs::circuit.

Definition at line 266 of file rectline.cpp.

void rectline::initSP ( void  )
virtual

initialize S-parameters

Reimplemented from qucs::circuit.

Definition at line 239 of file rectline.cpp.

void rectline::saveCharacteristics ( nr_complex_t  )

Definition at line 234 of file rectline.cpp.

Field Documentation

nr_double_t rectline::alpha
private

attenuation constant

Definition at line 49 of file rectline.h.

nr_double_t rectline::beta
private

propagation constant

Definition at line 51 of file rectline.h.

nr_double_t rectline::fc_high
private

cut off frequency higher mode

Definition at line 57 of file rectline.h.

nr_double_t rectline::fc_low
private

cut off frequency lower bound

Definition at line 55 of file rectline.h.

rectline::PROP_COMPONENT

Definition at line 319 of file rectline.cpp.

rectline::PROP_LINEAR

Definition at line 319 of file rectline.cpp.

rectline::PROP_NO_SUBSTRATE

Definition at line 319 of file rectline.cpp.

rectline::RECTLINE

Definition at line 319 of file rectline.cpp.

nr_double_t rectline::rho
private

resistivity

Definition at line 59 of file rectline.h.

nr_complex_t rectline::zl
private

wave impedance

Definition at line 53 of file rectline.h.


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