Element Reference

Element Reference

Passives

ACME.resistorFunction.
resistor(r)

Creates a resistor obeying Ohm’s law. The resistance r has to be given in Ohm.

Pins: 1, 2

source
ACME.capacitorFunction.
capacitor(c)

Creates a capacitor. The capacitance c has to be given in Farad.

Pins: 1, 2

source
ACME.inductorMethod.
inductor(l)

Creates an inductor. The inductance l has to be given in Henri.

Pins: 1, 2

source
ACME.inductorMethod.
inductor(Val{:JA}; D, A, n, a, α, c, k, Ms)

Creates a non-linear inductor based on the Jiles-Atherton model of magnetization assuming a toroidal core thin compared to its diameter. The parameters are set using named arguments:

parameterdescription
DTorus diameter (in meters)
ATorus cross-sectional area (in square-meters)
nWinding's number of turns
aShape parameter of the anhysteretic magnetization curve (in Ampere-per-meter)
αInter-domain coupling
cRatio of the initial normal to the initial anhysteretic differential susceptibility
kamount of hysteresis (in Ampere-per-meter)
Mssaturation magnetization (in Ampere-per-meter)

A detailed discussion of the paramters can be found in D. C. Jiles and D. L. Atherton, “Theory of ferromagnetic hysteresis,” J. Magn. Magn. Mater., vol. 61, no. 1–2, pp. 48–60, Sep. 1986 and J. H. B. Deane, “Modeling the dynamics of nonlinear inductor circuits,” IEEE Trans. Magn., vol. 30, no. 5, pp. 2795–2801, 1994, where the definition of c is taken from the latter. The ACME implementation is discussed in M. Holters, U. Zölzer, "Circuit Simulation with Inductors and Transformers Based on the Jiles-Atherton Model of Magnetization".

Pins: 1, 2

source
ACME.transformerMethod.
transformer(l1, l2; coupling_coefficient=1, mutual_coupling=coupling_coefficient*sqrt(l1*l2))

Creates a transformer with two windings having inductances. The primary self-inductance l1 and the secondary self-inductance l2 have to be given in Henri. The coupling can either be specified using coupling_coefficient (0 is not coupled, 1 is closely coupled) or by mutual_coupling, the mutual inductance in Henri, where the latter takes precedence if both are given.

Pins: 1 and 2 for primary winding, 3 and 4 for secondary winding

source
ACME.transformerMethod.
transformer(Val{:JA}; D, A, ns, a, α, c, k, Ms)

Creates a non-linear transformer based on the Jiles-Atherton model of magnetization assuming a toroidal core thin compared to its diameter. The parameters are set using named arguments:

parameterdescription
DTorus diameter (in meters)
ATorus cross-sectional area (in square-meters)
nsWindings' number of turns as a vector with one entry per winding
aShape parameter of the anhysteretic magnetization curve (in Ampere-per-meter)
αInter-domain coupling
cRatio of the initial normal to the initial anhysteretic differential susceptibility
kamount of hysteresis (in Ampere-per-meter)
Mssaturation magnetization (in Ampere-per-meter)

A detailed discussion of the parameters can be found in D. C. Jiles and D. L. Atherton, “Theory of ferromagnetic hysteresis,” J. Magn. Magn. Mater., vol. 61, no. 1–2, pp. 48–60, Sep. 1986 and J. H. B. Deane, “Modeling the dynamics of nonlinear inductor circuits,” IEEE Trans. Magn., vol. 30, no. 5, pp. 2795–2801, 1994, where the definition of c is taken from the latter. The ACME implementation is discussed in M. Holters, U. Zölzer, "Circuit Simulation with Inductors and Transformers Based on the Jiles-Atherton Model of Magnetization".

Pins: 1 and 2 for primary winding, 3 and 4 for secondary winding, and so on

source

Independent Sources

ACME.voltagesourceFunction.
voltagesource(; rs=0)
voltagesource(v; rs=0)

Creates a voltage source. The source voltage v has to be given in Volt. If omitted, the source voltage will be an input of the circuit. Optionally, an internal series resistance rs (in Ohm) can be given which defaults to zero.

Pins: + and - with v being measured from + to -

source
ACME.currentsourceFunction.
currentsource(; gp=0)
currentsource(i; gp=0)

Creates a current source. The source current i has to be given in Ampere. If omitted, the source current will be an input of the circuit. Optionally, an internal parallel conductance gp (in Ohm⁻¹) can be given which defaults to zero.

Pins: + and - where i measures the current leaving source at the + pin

source

Probes

ACME.voltageprobeFunction.
voltageprobe()

Creates a voltage probe, providing the measured voltage as a circuit output. Optionally, an internal parallel conductance gp (in Ohm⁻¹) can be given which defaults to zero.

Pins: + and - with the output voltage being measured from + to -

source
ACME.currentprobeFunction.
currentprobe()

Creates a current probe, providing the measured current as a circuit output. Optionally, an internal series resistance rs (in Ohm) can be given which defaults to zero.

Pins: + and - with the output current being the current entering the probe at +

source

Semiconductors

ACME.diodeFunction.
diode(;is=1e-12, η = 1)

Creates a diode obeying Shockley's law $i=I_S\cdot(e^{v/(\eta v_T)}-1)$ where $v_T$ is fixed at 25 mV. The reverse saturation current is has to be given in Ampere, the emission coefficient η is unitless.

Pins: + (anode) and - (cathode)

source
ACME.bjtFunction.
bjt(typ; is=1e-12, η=1, isc=is, ise=is, ηc=η, ηe=η, βf=1000, βr=10,
    ile=0, ilc=0, ηcl=ηc, ηel=ηe, vaf=Inf, var=Inf, ikf=Inf, ikr=Inf)

Creates a bipolar junction transistor obeying the Gummel-Poon model

\[i_f = \frac{\beta_f}{1+\beta_f} I_{S,E} \cdot (e^{v_E/(\eta_E v_T)}-1)\]
\[i_r = \frac{\beta_r}{1+\beta_r} I_{S,C} \cdot (e^{v_C/(\eta_C v_T)}-1)\]
\[i_{cc} = \frac{2(1-\frac{V_E}{V_{ar}}-\frac{V_C}{V_{af}})} {1+\sqrt{1+4(\frac{i_f}{I_{KF}}+\frac{i_r}{I_{KR}})}} (i_f - i_r)\]
\[i_{BE} = \frac{1}{\beta_f} i_f + I_{L,E} \cdot (e^{v_E/(\eta_{EL} v_T)}-1)\]
\[i_{BC} = \frac{1}{\beta_r} i_r + I_{L,C} \cdot (e^{v_C/(\eta_{CL} v_T)}-1)\]
\[i_E = i_{cc} + i_{BE} \qquad i_C=-i_{cc} + i_{BC}\]

where $v_T$ is fixed at 25 mV. For

\[I_{L,E}=I_{L,C}=0,\quad V_{ar}=V_{af}=I_{KF}=I_{KR}=∞,\]

this reduces to the Ebers-Moll equation

\[i_E = I_{S,E} \cdot (e^{v_E/(\eta_E v_T)}-1) - \frac{\beta_r}{1+\beta_r} I_{S,C} \cdot (e^{v_C/(\eta_C v_T)}-1)\]
\[i_C = -\frac{\beta_f}{1+\beta_f} I_{S,E} \cdot (e^{v_E/(\eta_E v_T)}-1) + I_{S,C} \cdot (e^{v_C/(\eta_C v_T)}-1).\]

Additionally, terminal series resistances are supported.

The parameters are set using named arguments:

parameterdescription
typEither :npn or :pnp, depending on desired transistor type
isReverse saturation current in Ampere
ηEmission coefficient
iscCollector reverse saturation current in Ampere (overriding is)
iseEmitter reverse saturation current in Ampere (overriding is)
ηcCollector emission coefficient (overriding η)
ηeEmitter emission coefficient (overriding η)
βfForward current gain
βrReverse current gain
ilcBase-collector junction leakage current in Ampere
ileBase-emitter junction leakage current in Ampere
ηclBase-collector junction leakage emission coefficient (overriding η)
ηelBase-emitter junction leakage emission coefficient (overriding η)
vafForward Early voltage in Volt
varReverse Early voltage in Volt
ikfForward knee current (gain roll-off) in Ampere
ikrReverse knee current (gain roll-off) in Ampere
reEmitter terminal resistance
rcCollector terminal resistance
rbBase terminal resistance

Pins: base, emitter, collector

source

Integrated Circuits

ACME.opampMethod.
opamp()

Creates an ideal operational amplifier. It enforces the voltage between the input pins to be zero without sourcing any current while sourcing arbitrary current on the output pins wihtout restricting their voltage.

Note that the opamp has two output pins, one of which will typically be connected to a ground node and has to provide the current sourced on the other output pin.

Pins: in+ and in- for input, out+ and out- for output

source
ACME.opampMethod.
opamp(Val{:macak}, gain, vomin, vomax)

Creates a clipping operational amplifier where input and output voltage are related by

\[v_\text{out} = \frac{1}{2}\cdot(v_\text{max}+v_\text{min}) +\frac{1}{2}\cdot(v_\text{max}-v_\text{min})\cdot \tanh\left(\frac{g}{\frac{1}{2}\cdot(v_\text{max}-v_\text{min})}\cdot v_\text{in}\right).\]

The input current is zero, the output current is arbitrary.

Note that the opamp has two output pins, one of which will typically be connected to a ground node and has to provide the current sourced on the other output pin.

Pins: in+ and in- for input, out+ and out- for output

source