Skip to content
Analog.ZDiode.md

Analog.ZDiode ​

This component extends from OnePort This component extends from ConditionalHeatPort

Usage ​

TranslatedComponents.Analog.ZDiode(T=293.15, Ids=1.0e-6, Vt=0.04, Maxexp=30, R=100000000, Bv=5.1, Ibv=0.7, Nbv=0.74)

Parameters: ​

NameDescriptionUnitsDefault value
useHeatPort–false
TK293.15
IdsA0.000001
VtV0.04
Maxexp–30
RΩ100000000
BvV5.1
IbvA0.7
Nbv–0.74

Connectors ​

  • p - This connector represents an electrical pin with voltage and current as the potential and flow variables, respectively. (Pin)

  • n - This connector represents an electrical pin with voltage and current as the potential and flow variables, respectively. (Pin)

  • heatPort - (HeatPort)

Variables ​

NameDescriptionUnits
vV
iA
LossPowerW
T_heatPortK

Behavior ​

julia
using TranslatedComponents #hide
using ModelingToolkit #hide
@variables T #hide
@variables Ids #hide
@variables Vt #hide
@variables Maxexp #hide
@variables R #hide
@variables Bv #hide
@variables Ibv #hide
@variables Nbv #hide
@named sys = TranslatedComponents.Analog.ZDiode(T=T, Ids=Ids, Vt=Vt, Maxexp=Maxexp, R=R, Bv=Bv, Ibv=Ibv, Nbv=Nbv) #hide
full_equations(sys) #hide
<< @example-block not executed in draft mode >>

Source ​

dyad
component ZDiode
  extends OnePort
  extends ConditionalHeatPort(T = 293.15)
  parameter Ids::Dyad.Current = 1.0e-6
  parameter Vt::Dyad.Voltage = 0.04
  parameter Maxexp::Real(final min = 1e-10) = 30
  parameter R::Dyad.Resistance = 100000000
  parameter Bv::Dyad.Voltage = 5.1
  parameter Ibv::Dyad.Current = 0.7
  parameter Nbv::Real = 0.74
relations
  i = (v > Maxexp * Vt) ? (Ids * (exp(Maxexp) * (1 + v / Vt - Maxexp) - 1) + v / R) : ((v + Bv) < -Maxexp * (Nbv * Vt) ? (-Ids - Ibv * exp(Maxexp) * (1 - (v + Bv) / (Nbv * Vt) - Maxexp) + v / R) : (Ids * (exp(v / Vt) - 1) - Ibv * exp(-(v + Bv) / (Nbv * Vt)) + v / R))
  LossPower = v * i
end
Flattened Source
dyad
component ZDiode
  p = Pin()
  n = Pin()
  variable v::Dyad.Voltage
  variable i::Dyad.Current
  heatPort = TranslatedComponents.HeatTransfer.HeatPort() if useHeatPort
  structural parameter useHeatPort::Boolean = false
  parameter T::Dyad.Temperature = 293.15
  variable LossPower::Dyad.Power
  variable T_heatPort::Dyad.Temperature
  parameter Ids::Dyad.Current = 1.0e-6
  parameter Vt::Dyad.Voltage = 0.04
  parameter Maxexp::Real(final min = 1e-10) = 30
  parameter R::Dyad.Resistance = 100000000
  parameter Bv::Dyad.Voltage = 5.1
  parameter Ibv::Dyad.Current = 0.7
  parameter Nbv::Real = 0.74
relations
  v = p.v - n.v
  0 = p.i + n.i
  i = p.i
  if !(useHeatPort)
    T_heatPort = T
  else
    initial heatPort.T = T_heatPort
    initial heatPort.Q_flow = -LossPower
  end
  i = (v > Maxexp * Vt) ? (Ids * (exp(Maxexp) * (1 + v / Vt - Maxexp) - 1) + v / R) : ((v + Bv) < -Maxexp * (Nbv * Vt) ? (-Ids - Ibv * exp(Maxexp) * (1 - (v + Bv) / (Nbv * Vt) - Maxexp) + v / R) : (Ids * (exp(v / Vt) - 1) - Ibv * exp(-(v + Bv) / (Nbv * Vt)) + v / R))
  LossPower = v * i
metadata {}
end


Test Cases ​

No test cases defined.

  • Examples

  • Experiments

  • Analyses