Using multiple disciplines - natures

(effort & flow quantities, electrical & thermal disciplines, self heating diode, model of self heating diode)
 

Effort and flow quantities:
nature effort - across flow - through
electrical voltage current
mechanical velocity force
thermal  temperature  heat float rate
 


Electrical and thermal disciplines (a package):

The following example is a model of a diode with self heating implies two disciplines: the electrical discipline and the thermal discipline
 
package my_disciplines is
subtype volt is real tolerance "voltage";
subtype temp is real tolerance "temperature";
subtype curr is real tolerance "current";
subtype heatflow is real tolerance "heatflow";
nature electrical is volt across curr through;
nature thermal is temp across heatflow through;
alias el_ground is electrical'reference;
alias th_ground is thermal'reference;
end package my_disciplines;
 

 


Self heating diode:
A simplified model of a self heating diode may be expressed using the following equations:
Id= Is *(e(Vd-Rd*Id)/Vt -1)
Vt= Td * Boltzmanc/Charge_el = Td/11 600
Pd= Vd * Id

where:

Vd - diode voltage, Is - saturation current, Rd - diode resistance, Vt - thermal voltage, Pd - dissipated power, e - 100.43 Boltzmanc = 1.3806226e-23, Charge_el = 1.602191e-19
 
 
 

Model of self heating diode:
 
use work.my_disciplines.all
use IEEE.math_real.all;
entity my_diode is
generic(is0: real:= 1.0e-13; rd: real:= 1.0);
port(terminal anode,cathode: electrical; terminal junction: thermal);
end my_diode;
 
architecture simple of my_diode is
quantity vd across id through anode to cathode;
quantity vt: voltage;
quantity temp across power through ground_th to junction;
constant volt_equivalent: voltage:11,600.0;
begin
id == is0*(exp((vd -rd*id)/vt) - 1);
vt == temp/volt_equivalent;
power == v * id; -- thermal power
end simple;