ElectricalEngineering.ElectricalEngineering
— ModuleElectricalEngineering
This is a Julia package on electrical engineering based on Unitful and PyPlot. The package ElectricalEngineering.jl is tested with Julia 1.
Plotting
arrowaxes
Creates a plot with a horizontal and a vertical axis instead of a frameremoveaxes
Removes the axis of the actual plotlengthdimension
Draws length dimension with label based on rectangular x- and y-coordinates. The length dimension arrow can be shifted parallel to the specified coordinates by means the single parameterpar
. Additionally, auxiliary lines from the specified coordinates to the length dimension are drawn.
Complex Phasors
pol
Creates a complex quantity with lengthr
and anglephi
∠
Creates a complex quantity with length 1 and anglephi
phasor
Draws a phasor from a starting pointorigin
and end pointorigin
+c
. The phasor consists of a shaft and an arrow head. Each phasorc
is plotted as a relative quantity, i.e.,c/ref
is actually shown the plot figure. This concept of plotting a per unit phasor is used to be able to plot phasor with different quantities, e.g., voltage and current phasors. It is important that the variablesc
,origin
andref
have the same units (defined through Unitful).phasorsine
Draws a phasor with magnitude between 0 and 1 on the left subplot of a figure and a sine diagram on the right subplot of the figure. Such graph is used in electrical engineering to explain the relationship between phasors and time domain wave forms.angulardimension
Draws an arrowed arc, intended to label the angle between phasors. The arc is drawn from anglephi1
(begin) tophi2
(end). The begin and end arrow shapes can be set. The arc can be labeled and optionally a dot maker can be used to indicate right angles (90°).phasordimension
Draws length dimension with label based on rectangular x- and y-coordinates. The length dimension arrow can be shifted parallel to the specified coordinates by means the single parameterpar
. Additionally, auxiliary lines from the specified coordinates to the length dimension are drawn.
Complex Circuit Calculations
∥
Calculates the parallel connection of impedances. Optionally, the calculation can be performed using units from the module Unitful.
Input and Output
printuln
Prints a real or complex variable in an optionally specified unitusprint
Returns a string containing the number with six digits plus unit without space in between, such that the string output can be copied and pasted.save2fig
Save the actual figure in the file formatspng
andpdf
including subdirectories. These two graphics format are relevant when processing figures in LaTeX, LyX, LibreOffice or other word processorssave3fig
Save the actual figure in the file formatspng
,eps
andpdf
including subdirectories. These three graphics format are relevant when processing figures in LaTeX and LyX
See also ?
on
ElectricalEngineering.Gray
ElectricalEngineering.Tab20bc
Other Packages related with Electrical Engineering
CircuitComponentRounding.jl provides functions to round given values to the nearest standardized value for circuit components
Modia.jl is a package for modeling and simulation of multidomain engineering systems described by differential equations, algebraic equations, and (space-discretized) partial differential equations
ElectricalEngineering.j
— Constantj = 1im
equals the imaginary unit
ElectricalEngineering.:∥
— MethodFunction call
∥(z...)
Type \parallel
and hit the tab
key to autocomplete the parallel symbol ∥
Description
This calculates the parallel connection of impedances. Optionally, the calculation can be performed using units from the module Unitful.
Important note: Use the ∥
operator in parentheses, since its precedence is equal to the (low) precedence of relation operators or use the function call with arguments to avoid miscalculations
The functions par
and ∥
are redundant impementations.
Variables
z
Vector of impedances
Examples
julia> using Unitful,Unitful.DefaultSymbols,ElectricalEngineering
julia> ∥(4,6)
2.4
julia> ∥(4Ω,6Ω)
2.4 Ω
julia> 2Ω+(4Ω∥6Ω) # Parentheses are ALWAYS required since
4.4 Ω
julia> 2Ω+4Ω∥6Ω # Is equal to (2Ω+4Ω)∥6Ω which is usually NOT intended
3.0 Ω
julia> (2.4Ω∥(4Ω∥6Ω))
1.2 Ω
julia> ∥(4Ω,6Ω,2.4Ω)
1.2 Ω
Type \Omega
and hit the tab
key to autocomplete the parallel symbol Ω
ElectricalEngineering.angulardimension
— FunctionFunction call
angulardimension(r = 1, phi1 = 0, phi2 = pi/2; origin = 0.0im,
label= "", labelphisep = 0.5, labelrsep = 0.1,
labelrelrot = false, labelrelangle = 0, ha = "center", va = "center",
color="black", backgroundcolor="none",
arrowstyle1 = ".", arrowstyle2 = "-|>", dot90 = false,
linewidth = 0.6, linestyle = "-", width = 0.2,
headlength = 5, headwidth = 2.5)
Description
This function draws an arrowed arc, intended to label the angle between phasors. The arc is drawn from angle phi1
(begin) to phi2
(end). The begin and end arrow shapes can be set. The arc can be labeled and optionally a dot maker can be used to indicate right angles (90°).
Variables
r
Radius if the arc with not unit; shall be between 0 and 1; default value = 1
phi1
Phase angle of the begin of the arc; default value = 0
phi2
Phase angle of the end of the arc; default value = pi/2
origin
Complex quantity, indicating the origin of the arc with no unit; default value = 0.0 + 0.0im
label
Label of the angle; default value =""
labelphisep
Angular separation of the label with respect to the arc; if labelphisep == 0
, the label is located at angle phi1
and if labelphisep == 1
, the label is located at angle phi2
; default value = 0.5, right in the middle between phi1
and phi2
labelrsepRadial per unit location of label (in direction of the phasor):
labelrsep = 0` locates the label right on the arc. A positive value locates the label outside the arc, a negative value locates the label inside the arc; default value = 0.1
labelrelrot
Relative rotation of label; if labelrelrot == false
(default value) then the label is not rotated relative to the center of the arc; otherwise the label is rotated relative to the angle labelrelangle
labelrelangle
Relative angle of label with respect to center of the arc; this angle is only applied, if labelrelrot == true
; this angle indicates the relative orientation of the label with respect to the center of the arc; default value = 0
ha
Horizontal alignment of label; actually represents the radial alignment of the label; default value = "center"
va
Vertical alignment of label; actually represents the tangential alignment of the label; default value = "center"
color
Color of the arc; default value = "black"
backgroundcolor
Background color of the label; if labelrsep is equal to 0, the background color "white" can be used; default value = "none"
arrowstyle1
Arrow style of the begin of the arc; default value = "."; valid strings are:
.
dot marker<|-
arrow
arrowstyle2
Arrow style of the end of the arc; default value = "-|>"; valid strings are:
.
dot marker-|>
arrow
headlength
Length of arrow head; default value = 5
headwidth
Width of arrow head; default value = 2.5
Example
Copy and paste code:
using Unitful, Unitful.DefaultSymbols, PyPlot, ElectricalEngineering
figure(figsize=(3.3, 2.5))
rc("text", usetex=true); rc("font", family="serif")
V1 = 100V + j*0V # Voltage
Z1 = 30Ω + j*40Ω # Impedance
I1 = V1/Z1 # Current
Vr = real(Z1)*I1
Vx = V1 - Vr
refV = abs(V1); refI=abs(I1)*0.8
phasor(V1, label=L"$\underline{V}_1$", labeltsep=0.1, ref=refV,
labelrelrot=true)
phasor(Vr, label=L"$\underline{V}_r$", labeltsep=-0.25, ref=refV,
labelrelrot=true)
phasor(Vx, origin=Vr, label=L"$\underline{V}_x$", labeltsep=-0.2, ref=refV,
labelrelrot=true)
phasor(I1, label=L"$\underline{I}_1$", labeltsep=-0.2, labelrsep=0.7, ref=refI,
labelrelrot=true, linestyle="--", par=-0.05)
phi1=angle(I1)
phi2=angle(V1)
angulardimension(0.3,phi1,phi2,arrowstyle1=".",arrowstyle2="-|>",ha="left",
label=L"$\varphi_1$", labelrsep=0.05)
axis("square"); xlim(-1,1); ylim(-1,1)
removeaxes(); # Remove axis
# save2fig("phasordiagram",crop=true);
ElectricalEngineering.arrowaxes
— FunctionFunction call
arrowaxes(fig=gcf(), ax=gca(); xmin, xmax, ymin, ymax,
xa=0, ya=0, xlabel="", ylabel="",
xneg = false, yneg = false,
color="black", backgroundcolor="none", axisoverhang = 0.18,
linewidth = 0.75, headwidth = 0.06, headlength = 0.09, overhang = 0.1,
labelsep = 0.06, left=0.2, right=0.85, bottom=0.20, top=0.85)
Description
Creates a plot with a horizontal and a vertical axis instead of a frame.
Variables
fig
Figure handle; by default the figure handle of a actual figure is used
xmin
Minimum of horizontal axis; default value = actual scaling
xmax
Maximum of horizontal axis; default value = actual scaling
ymin
Minimum of vertical axis; default value = actual scaling
ymax
Maximum of vertical axis; default value = actual scaling
ax
Axes handle; by default the axes handle of a actual figure is used
xa
Horizontal location of the vertical axis; default value = 0
ya
Vertical location of the horizontal axis; default value = 0
xlabel
Label of x-axis; default value = ""
ylabel
Label of y-axis; default value = ""
xneg
If true, the horizontal arrow is drawn from right to left; default value = false
yneg
If true, the vertical arrow is drawn from top to bottom; default value = false
color
Color of the axes; default value = "black"
backgroundcolor
Background color of the label; if labelrsep is equal to 0, the background color "white" can be used; default value = "none"
axisoverhang
Overhang of the axis, relative to plot area; default value = 0.18 (18% of plot width)
linewidth
Line width of the axes; default value = 0.75
headwidth
Width of head, relative to plot area; default value = 0.045 (4.5% of horizontal plot width)
headlength
Length of head, relative to plot area; default value = 0.07 (7% of horizontal plot width)
overhang
Overhang of arrow head; default value = 0.0
labelsep
Location of labels from axis, relative to plot area; default value = 0.05 (5% of plot width)
left
Left side of the figure; default value = 0.2
right
Right side of the figure; default value = 0.85
bottom
Bottom side of the figure; default value = 0.2
top
Top side of the figure; default value = 0.85
yleft
Place ylabel left of y axis, if true
xbelow
Place xlabel below of x axis, if true
Examples
Copy and paste the following code:
using Unitful,Unitful.DefaultSymbols,ElectricalEngineering,PyPlot
figure(figsize=(3.3, 2.5))
rc("text", usetex=true); rc("font", family="serif")
x=collect(0.0:0.1:5.0); y=exp.(sin.(x));
plot(x,y,color=colorBlack1, linewidth=lineWidth1, linestyle=lineStyle1)
xlim(0,5); ylim(0,3); arrowaxes(xlabel=L"$x$",ylabel=L"$y$")
# save2fig("arrowaxes", crop=true)
ElectricalEngineering.lengthdimension
— FunctionFunction call
lengthdimension(x1=0, y1=0, x2=1, y2=1;
label = "", labeltsep = 0.1, labelrsep=0.5, labelrelrot=false,
labelrelangle=0, ha = "center", va = "center",
color="black", backgroundcolor = "none",
arrowstyle1 = "<|-", arrowstyle2 = "-|>", linewidth=0.6, linestyle = "-",
width=0.2, headlength=5, headwidth=2.5,
par=0, paroverhang = 0.02, parcolor = "black",
parlinewidth=0.6, parlinestyle = "-")
Description
This function draws length dimension with label based on rectangular x- and y-coordinates. The length dimension arrow can be shifted parallel to the specified coordinates by means the single parameter par
. Additionally, auxiliary lines from the specified coordinates to the length dimension are drawn.
Variables
x1
x-component of the begin of the length dimension; default value = 0
y1
y-component of the begin of the length dimension; default value = 0
x2
x-component of the end of the length dimension; default value = 1
y2
y-component of the end of the length dimension; default value = 1
label
Label of the angle; default value =""
labeltsep
Tangential per unit location of label: labeltsep = 0
means that the label is plotted onto the phasor; labeltsep = 0.1
plots the label on top of the phasor applying a displacement of 10% with respect to ref
; labeltsep = -0.2
Plots the label below the phasor applying a displacement of 20% with respect to ref
; default value = 0.1
labelrsep
Radial per unit location of label (in direction of the phasor): labelrsep = 0
represents the shaft of the phasor and labelrsep = 1
represents the arrow hear of the phasor; default value = 0.5, i.e., the radial center of the phasor
labelrelrot
Relative rotation of label; if labelrelrot == false
(default value) then the label is not rotated relative to the center of the arc; otherwise the label is rotated relative to the angle labelrelangle
labelrelangle
Relative angle of label with respect to center of the arc; this angle is only applied, it labelrelrot == true
; this angle indicates the relative orientation of the label with respect to the center of the arc; default value = 0
ha
Horizontal alignment of label; actually represents the radial alignment of the label; default value = "center"
va
Vertical alignment of label; actually represents the tangential alignment of the label; default value = "center"
color
Color of the arc; default value = "black"
backgroundcolor
Background color of the label; if labelrsep is equal to 0, the background color "white" can be used; default value = "none"
arrowstyle1
Arrow style of the begin of the line; default value = "<|-"; valid strings are:
.
dot marker<|-
arrow
arrowstyle2
Arrow style of the end of the line; default value = "-|>"; valid strings are:
.
dot marker-|>
arrow
headlength
Length of arrow head; default value = 5
headwidth
Width of arrow head; default value = 2.5
par
In order to be able to draw the length dimension parallel to the specified coordiantes x1
, y1
, x2
, y2
, par
is used to specify the per unit tangential shift (offset) of the length dimension; default value = 0 (no shift)
paroverhang
The auxiliary lines, drawn in case of par != 0
, show the absolute overhang paroverhang
; default value = 0.02
parcolor
Color of the auxiliary lines; default value = "black"
parlinewidth
Line width of the auxiliary line; default value = 0.6
parlinestyle
Line style of the auxiliary line; default value = "-"
Example
Copy and paste code:
using Unitful, Unitful.DefaultSymbols, PyPlot, ElectricalEngineering
figure(figsize=(3.3, 2.5))
rc("text", usetex=true); rc("font", family="serif")
t1=0.2;t2=0.3;ymax=1
t=[0,t1,t1+t2,2*t1+t2,2*(t1+t2),3*t1+2*t2]
y=[0,ymax,0,ymax,0,ymax]
step(t,y,linewidth=1,color="black")
grid(true); xlim(0,1), ylim(-0.1,1.3);
xlabel(L"$t$\,(s)"); ylabel(L"$y$")
lengthdimension(0,0.2,t1,0.2,label=L"$t_1$",labeltsep=0,backgroundcolor="white")
lengthdimension(t1,0.2,t1+t2,0.2,label=L"$t_2$",labeltsep=0,backgroundcolor="white")
lengthdimension(t1,ymax,2*t1+t2,ymax,label=L"$T$",par=0.1,labeltsep=0.05,labelrsep=0.7)
# save2fig("lengthdimension",crop=true)
ElectricalEngineering.par
— MethodFunction call
par(z...)
Description
This calculates the parallel connection of impedances. Optionally, the calculation can be performed using units from the module Unitful.
The functions par
and ∥
are redundant impementations.
Variables
z
Vector of impedances
Examples
julia> using Unitful,Unitful.DefaultSymbols,ElectricalEngineering
julia> par(4,6)
2.4
julia> par(4Ω,6Ω)
2.4 Ω
Type \Omega
and hit the tab
key to autocomplete the parallel symbol Ω
ElectricalEngineering.phasor
— MethodFunction call
phasor(c;origin=0.0+0.0im, ref=1, par=0,
labelrsep=0.5, labeltsep=0.1, label="", ha="center", va="center",
labelrelrot=false, labelrelangle=0,
color="black", backgroundcolor="none", linesstyle="-", linewidth=1,
width=0.2, headlength=10, headwidth=5)
Description
This function draws a phasor from a starting point origin
and end point origin
+c
. The phasor consists of a shaft and an arrow head.
Each phasor c
is plotted as a relative quantity, i.e., c/ref
is actually shown the plot figure. This concept of plotting a per unit phasor is used to be able to plot phasor with different quantities, e.g., voltage and current phasors. It is important that the variables c
, origin
and ref
have the same units (defined through Unitful).
Variables
c
Complex phasor, drawn relative relative to origin
origin
Complex number representing the origin of the phasor; this variable needs to have the same unit as c
ref
Reference length of scaling; this is required as in a phasor diagram voltages and currents may be included; in order to account for the different voltage and current scales, one (constant) ref
is used for voltage phasors and another (constant) ref
is used for current phasors; this variable needs to have the same unit as c
par
In order to be able to plot parallel phasors, par is used to specify the per unit tangential shift (offset) of a phasor, with respect to ref
; so typically ref
will be selected to be around 0.05 to 0.1; default value = 0 (no shift of phasor)
labelrsep
Radial per unit location of label (in direction of the phasor): labelrsep = 0
represents the shaft of the phasor and labelrsep = 1
represents the arrow hear of the phasor; default value = 0.5, i.e., the radial center of the phasor
labeltsep
Tangential per unit location of label: labeltsep = 0
means that the label is plotted onto the phasor; labeltsep = 0.1
plots the label on top of the phasor applying a displacement of 10% with respect to ref
; labeltsep = -0.2
Plots the label below the phasor applying a displacement of 20% with respect to ref
; default value = 0.1
ha
Horizontal alignment of label; actually represents the tangential alignment of the label; default value = "center"
va
Vertical alignment of label; actually represents the radial alignment of the label; default value = "center"
labelrelrot
Relative rotation of label; if labelrelrot == false
(default value) then the label is not rotated relative to the orientation of the phasor; otherwise the label is rotated relative to the phasor by the angle labelrelangle
labelrelangle
Relative angle of label with respect to phasor orientation; this angle is only applied, if labelrelrot == true
; this angle the indicates the relative orientation of the label with respect to the orientation of the phasor; default value = 0
color
Color of the phasor; i.e., shaft and arrow head color; default value = "black"
backgroundcolor
Background color of the label; if labelrsep is equal to 0, the background color "white" can be used; default value = "none"
linestyle
Line style of the phasor; default value = "-"
linewidth
Line width of the phasor; default value = 1
width
Line width of the shaft line; default value = 0.2
headlength
Length of arrow head; default value = 10
headwidth
Width of arrow head; default value = 5
Example
Copy and paste code:
using Unitful, Unitful.DefaultSymbols, PyPlot, ElectricalEngineering
figure(figsize=(3.3, 2.5))
rc("text", usetex=true); rc("font", family="serif")
V1 = 100V + j*0V # Voltage
Z1 = 30Ω + j*40Ω # Impedance
I1 = V1/Z1 # Current
Vr = real(Z1)*I1
Vx = V1 - Vr
refV = abs(V1); refI=abs(I1)*0.8
phasor(V1, label=L"$\underline{V}_1$", labeltsep=0.1, ref=refV,
labelrelrot=true)
phasor(Vr, label=L"$\underline{V}_r$", labeltsep=-0.25, ref=refV,
labelrelrot=true)
phasor(Vx, origin=Vr, label=L"$\underline{V}_x$", labeltsep=-0.2, ref=refV,
labelrelrot=true)
phasor(I1, label=L"$\underline{I}_1$", labeltsep=-0.2, labelrsep=0.7, ref=refI,
labelrelrot=true, linestyle="--", par=-0.05)
phi1=angle(I1)
phi2=angle(V1)
angulardimension(0.3,phi1,phi2,arrowstyle1=".",arrowstyle2="-|>",ha="left",
label=L"$\varphi_1$", labelrsep=0.05)
axis("square"); xlim(-1,1); ylim(-1,1)
removeaxes(); # Remove axis
# save2fig("phasordiagram",crop=true);
ElectricalEngineering.phasorcosine
— FunctionFunction call
phasorcosine(mag = 1, phi = 0; add = false, figsize = (6.6,2.5),
xlabel = L"$\omega\!\cdot\!t/^\circ $", ylabel = "", maglabel = "",
phasorlabel = maglabel, labeltsep = 0.1, labelrsep = 0.5,
labelrelrot = true, labelrelangle = 0,
color = "black", linewidth = 1, linestyle = "-",
colorDash="gray", left=0.20, right=0.80, bottom=0.20, top=0.80,
showcosine=true, showdashline=true)
Description
This function draws a phasor with magnitude between 0 and 1 on the left subplot of a figure and a cosine diagram on the right subplot of the figure. Such graph is used in electrical engineering to explain the relationship between phasors and time domain wave forms.
Variables
mag
Magnitude of displayed phasor; shall be between 0 and 1; default value = 1
phi
Phase angle of the phasor; default value = 0
add
When calling this function the first time, add
shall be equal to false
, which is the default value. In this case a new figure with the dimensions specified in figsize
is created. In order to add a second phasor and cosine diagram to an existing figure, add
has to be set true
figsize
Size of the new figure, if add
is equal to false
; default value = (7,2.5)
xlabel
Label of x-axis of right subplot; default value ="ωt/°" in LaTeX notation
ylabel
label of y-axis of right subplot; default value = ""; if more than one phasors and cosine diagram shall be drawn (add = true
), this label is displayed only once; therefore, one has to create the label of all phasors when function phasorcosine
is called the first time for creating a figure
maglabel
Label of positive and negative magnitude mag
on the right subplot; dafault value = "";
phasorlabel
Label of phasor of left subplot; default value = maglabel
labelrsep
Radial per unit location of label (in direction of the phasor): labelrsep = 0
represents the shaft of the phasor and labelrsep = 1
represents the arrow hear of the phasor; default value = 0.5, i.e., the radial center of the phasor
labeltsep
Tangential per unit location of label: labeltsep = 0
means that the label is plotted onto the phasor; labeltsep = 0.1
plots the label on top of the phasor applying a displacement of 10% with respect to ref
; labeltsep = -0.2
Plots the label below the phasor applying a displacement of 20% with respect to ref
; default value = 0.1
labelrelrot
Relative rotation of label; if labelrelrot == false
(default value) then the label is not rotated relative to the orientation of the phasor; otherwise the label is rotated relative to the phasor by the angle labelrelangle
labelrelangle
Relative angle of label with respect to phasor orientation; this angle is only applied, if labelrelrot == true
; this angle the indicates the relative orientation of the label with respect to the orientation of the phasor; default value = 0
color
Color of the phasor; i.e., shaft and arrow head color; default value = "black"
backgroundcolor
Background color of all labels; if labelrsep is equal to 0, the background color "white" can be used; default value = "none"
linewidth
Line width of the phasor; default value = 1
linestyle
Line style of the phasor; default value = "-"
colorDash
Color of the dashed circle (left subplot) and the horizontal dashed lines between the left and right subplot; default value = colorBlack4
left
Left side of the figure; default value = 0.2
right
Right side of the figure; default value = 0.85
bottom
Bottom side of the figure; default value = 0.2
top
Top side of the figure; default value = 0.85
showcosine
If true
, the cosinewave is shown; default value = true
showdashline
If true
, the dashed lines are shown; default value = true
Example
Copy and paste code:
using Unitful, Unitful.DefaultSymbols, PyPlot, ElectricalEngineering
rc("text", usetex=true); rc("font", family="serif")
phasorcosine(1, 45°, ylabel=L"$u,i$", maglabel=L"$\hat{U}$", labelrsep=0.3,
color="gray", linestyle="--")
phasorcosine(0.55, 0, add=true, maglabel=L"$\hat{I}$")
# save2fig("phasorcosine",crop=true)
ElectricalEngineering.phasordimension
— MethodFunction call
phasordimension(c; origin = 0im, ref = 1;
label = "", labeltsep = 0.1, labelrsep=0.5, labelrelrot=false,
labelrelangle=0, ha = "center", va = "center",
color="black", backgroundcolor = "none",
arrowstyle1 = "<|-", arrowstyle2 = "-|>", linewidth=0.6, linestyle = "-",
width=0.2, headlength=5, headwidth=2.5,
par=0, paroverhang = 0.02, parcolor = "black",
parlinewidth=0.6, parlinestyle = "-")
Description
This function draws length dimension with label based on rectangular x- and y-coordinates. The length dimension arrow can be shifted parallel to the specified coordinates by means the single parameter par
. Additionally, auxiliary lines from the specified coordinates to the length dimension are drawn.
Variables
c
Complex phasor to be dimensioned
origin
Complex number representing the origin of the phasor dimension; this variable needs to have the same unit as c
ref
Reference length of scaling; this is required as in a phasor diagram voltages and currents may be included; in order to account for the different voltage and current scales, one (constant) ref
is used for voltage phasors and another (constant) ref
is used for current phasors; this variable needs to have the same unit as c
label
Label of the angle; default value =""
labelphisep
Angular separation of the label with respect to the arc; if labelphisep == 0
, the label is located at angle phi1
and if labelphisep == 1
, the label is located at angle phi2
; default value = 0.5, right in the middle between phi1
and phi2
labelrsepRadial per unit location of label (in direction of the phasor):
labelrsep = 0` locates the label right on the arc. A positive value locates the label outside the arc, a negative value locates the label inside the arc; default value = 0.1
labelrelrot
Relative rotation of label; if labelrelrot == false
(default value) then the label is not rotated relative to the center of the arc; otherwise the label is rotated relative to the angle labelrelangle
labelrelangle
Relative angle of label with respect to center of the arc; this angle is only applied, if labelrelrot == true
; this angle indicates the relative orientation of the label with respect to the center of the arc; default value = 0
ha
Horizontal alignment of label; actually represents the radial alignment of the label; default value = "center"
va
Vertical alignment of label; actually represents the tangential alignment of the label; default value = "center"
color
Color of the arc; default value = "black"
backgroundcolor
Background color of the label; if labelrsep is equal to 0, the background color "white" can be used; default value = "none"
arrowstyle1
Arrow style of the begin of the arc; default value = "."; valid strings are:
.
dot marker<|-
arrow
arrowstyle2
Arrow style of the end of the arc; default value = "-|>"; valid strings are:
.
dot marker-|>
arrow
headlength
Length of arrow head; default value = 5
headwidth
Width of arrow head; default value = 2.5
par
In order to be able to draw the length dimension parallel to the specified coordiantes x1
, y1
, x2
, y2
, par
is used to specify the per unit tangential shift (offset) of the length dimension; default value = 0 (no shift)
paroverhang
The auxiliary lines, drawn in case of par != 0
, show the absolute overhang paroverhang
; default value = 0.02
parcolor
Color of the auxiliary lines; default value = "black"
parlinewidth
Line width of the auxiliary line; default value = 0.6
parlinestyle
Line style of the auxiliary line; default value = "-"
Examples
Copy and paste the following code:
using Unitful, Unitful.DefaultSymbols, PyPlot, ElectricalEngineering
figure(figsize=(3.3, 2.5))
rc("text", usetex=true); rc("font", family="serif")
Z1 = pol(1,30°)
phasor(Z1, label=L"$\underline{Z}$", labeltsep = 0.05, labelrelrot=true)
phasordimension(real(Z1), label=L"$R$", arrowstyle1="",
linestyle="-", linewidth=1, headwidth=5, headlength=10,
labeltsep=0, color="gray", backgroundcolor="white")
phasordimension(j*imag(Z1), origin=real(Z1), label=L"j$\cdot X$",
arrowstyle1="", linestyle="-", linewidth=1, headwidth=5, headlength=10,
labeltsep=0, color="gray", backgroundcolor="white")
arrowaxes(xmin = real(Z1)+0.1, xlabel="Re", ylabel=L"j$\cdot$Im")
xlim([-0.5,1]);ylim([-0.5,1]); axis("square"); removeaxes();
# save2fig("phasordimension", crop=true)
ElectricalEngineering.phasorsine
— FunctionFunction call
phasorsine(mag = 1, phi = 0; add = false, figsize = (6.6,2.5),
xlabel = L"$\omega\!\cdot\!t/^\circ $", ylabel = "", maglabel = "",
phasorlabel = maglabel, labeltsep = 0.1, labelrsep = 0.5,
labelrelrot = true, labelrelangle = 0,
color = "black", linewidth = 1, linestyle = "-",
colorDash="gray", left=0.20, right=0.80, bottom=0.20, top=0.80,
showsine=true, showdashline=true)
Description
This function draws a phasor with magnitude between 0 and 1 on the left subplot of a figure and a sine diagram on the right subplot of the figure. Such graph is used in electrical engineering to explain the relationship between phasors and time domain wave forms.
Variables
mag
Magnitude of displayed phasor; shall be between 0 and 1; default value = 1
phi
Phase angle of the phasor; default value = 0
add
When calling this function the first time, add
shall be equal to false
, which is the default value. In this case a new figure with the dimensions specified in figsize
is created. In order to add a second phasor and sine diagram to an existing figure, add
has to be set true
figsize
Size of the new figure, if add
is equal to false
; default value = (7,2.5)
xlabel
Label of x-axis of right subplot; default value ="ωt/°" in LaTeX notation
ylabel
label of y-axis of right subplot; default value = ""; if more than one phasors and sine diagram shall be drawn (add = true
), this label is displayed only once; therefore, one has to create the label of all phasors when function phasorsine
is called the first time for creating a figure
maglabel
Label of positive and negative magnitude mag
on the right subplot; dafault value = "";
phasorlabel
Label of phasor of left subplot; default value = maglabel
labelrsep
Radial per unit location of label (in direction of the phasor): labelrsep = 0
represents the shaft of the phasor and labelrsep = 1
represents the arrow hear of the phasor; default value = 0.5, i.e., the radial center of the phasor
labeltsep
Tangential per unit location of label: labeltsep = 0
means that the label is plotted onto the phasor; labeltsep = 0.1
plots the label on top of the phasor applying a displacement of 10% with respect to ref
; labeltsep = -0.2
Plots the label below the phasor applying a displacement of 20% with respect to ref
; default value = 0.1
labelrelrot
Relative rotation of label; if labelrelrot == false
(default value) then the label is not rotated relative to the orientation of the phasor; otherwise the label is rotated relative to the phasor by the angle labelrelangle
labelrelangle
Relative angle of label with respect to phasor orientation; this angle is only applied, if labelrelrot == true
; this angle the indicates the relative orientation of the label with respect to the orientation of the phasor; default value = 0
color
Color of the phasor; i.e., shaft and arrow head color; default value = "black"
backgroundcolor
Background color of all labels; if labelrsep is equal to 0, the background color "white" can be used; default value = "none"
linewidth
Line width of the phasor; default value = 1
linestyle
Line style of the phasor; default value = "-"
colorDash
Color of the dashed circle (left subplot) and the horizontal dashed lines between the left and right subplot; default value = colorBlack4
left
Left side of the figure; default value = 0.2
right
Right side of the figure; default value = 0.85
bottom
Bottom side of the figure; default value = 0.2
top
Top side of the figure; default value = 0.85
showsine
If true
, the sinewave is shown; default value = true
showdashline
If true
, the dashed lines are shown; default value = true
Example
Copy and paste code:
using Unitful, Unitful.DefaultSymbols, PyPlot, ElectricalEngineering
rc("text", usetex=true); rc("font", family="serif")
phasorsine(1, 45°, ylabel=L"$u,i$", maglabel=L"$\hat{U}$", labelrsep=0.3,
color="gray", linestyle="--")
phasorsine(0.55, 0, add=true, maglabel=L"$\hat{I}$")
# save2fig("phasorsine",crop=true);
ElectricalEngineering.pol
— MethodFunction call
pol(r, phi)
Description
Creates a complex quantity with length r
and angle phi
Variables
r
Length of complex quantity; r may be utilized including a unit generated by Unitful
phi
Angle of complex quantity; if module Unitful is utilized, the angle may be specified in degrees, by using unit °
Examples
julia> using Unitful, Unitful.DefaultSymbols, ElectricalEngineering
julia> U1 = pol(2V,pi)
-2 + 0im V
julia> U2 = pol(sqrt(2)*1V,45°)
1 + 1im V
ElectricalEngineering.printuln
— MethodFunction call
printuln(r...; label="")
Description
This function prints a real or complex variable in an optionally specified unit
Variables
r[1]
Text string to printed, indicating the variable name or description; a maximum of 16 characters is allowed, in case the optional variable label
is NOT specified; in case of specifying the variable label
, the maximum length of r[1]
may not exceed 12 characters
r[2]
Variable to be printed; the variable may be real or complex, units assigned from the module Unitful are allowed; vectors of variables are also allowed
r[3]
Optional target unit of r[2]
to be displayed
label
Optional four character label structuring the output of variables, e.g., label = "(a)"
Examples
julia> using Unitful, Unitful.DefaultSymbols, ElectricalEngineering
julia> U1 = 300V+j*400V
julia> printuln("U1", U1, kV)
U1 = 0.3 kV + j 0.4 kV
= 0.5 kV ∠ 53.1301°
julia> printuln("real(U1)", real(U1), kV)
real(U1) = 0.3 kV
julia> printuln("U1", U1, V, label="(a)")
(a) U1 = 300 V + j 400 V
= 500 V ∠ 53.1301°
ElectricalEngineering.removeaxes
— FunctionFunction call
removeaxes(ax=gca())
Description
Removes the axis of the actual plot
Variables
ax
Axes handle; by default the axes handle of a actual figure is used
ElectricalEngineering.save2fig
— FunctionFunction call
save2fig(fileName, subDir="."; dpi=300, tight=true, crop=false)
Description
Save the actual figure in the following three file formats
png
Portable network graphics in subdirectory png/pdf
Encapsulated postscript in subdirectory pdf/
These two graphics format are relevant when processing figures in LaTeX, LyX, LibreOffice or other word processors
Variables
fileName
String of the filename, extended by .png
, and .pdf
; the file names are stored in sub directories png/
, and pdf/
subDir
String of sub directory in which the adjacent sub directories png/
, and pdf/
are located; default = .
(local work directory)
dpi
Resolution of the stored PNG file; default = 300 (dpi)
tight
Additional margin around the figure is removed, except for a 2% margin; default = true
crop
Crop all 'white' space around the figure; this feature requires the installation of the following software
- imagemagick to be applied to
png
files, see https://www.imagemagick.org/script/index.php on Windows or applysudo apt install imagemagick
on Linux (Mint or Ubuntu) - pdfcrop to be applied to
pdf
files, see https://www.ctan.org/pkg/pdfcrop on Windows or applysudo apt install texlive-extra-utils
on Linux (Mint or Ubuntu)
Examples
julia> save2fig("phasordiagram")
julia> save2fig("phasordiagram_crop", crop=true)
ElectricalEngineering.save3fig
— FunctionFunction call
save3fig(fileName, subDir="."; dpi=300, tight=true, crop=false)
Description
Save the actual figure in the following three file formats
png
Portable network graphics in subdirectory png/eps
Encapsulated postscript in subdirectory eps/pdf
Encapsulated postscript in subdirectory pdf/
These three graphics format are relevant when processing figures in LaTeX, LyX, LibreOffice or other word processors
Variables
fileName
String of the filename, extended by .png
, .eps
and .pdf
; the file names are stored in sub directories png/
, eps/
and pdf/
subDir
String of sub directory in which the adjacent sub directories png/
, eps/
and pdf/
are located; default = .
(local work directory)
dpi
Resolution of the stored PNG file; default = 300 (dpi)
tight
Additional margin around the figure is removed, except for a 2% margin; default = true
crop
Crop all 'white' space around the figure; this feature requires the installation of the following software
- imagemagick to be applied to
png
files, see https://www.imagemagick.org/script/index.php on Windows or applysudo apt install imagemagick
on Linux (Mint or Ubuntu) - epstool to be applied to
eps
files, see http://pages.cs.wisc.edu/~ghost/gsview/epstool.htm on Windows or applysudo apt install epstool
on Linux (Mint or Ubuntu) - pdfcrop to be applied to
pdf
files, see https://www.ctan.org/pkg/pdfcrop on Windows or applysudo apt install texlive-extra-utils
on Linux (Mint or Ubuntu)
Examples
julia> save3fig("phasordiagram")
julia> save3fig("phasordiagram_crop", crop=true)
ElectricalEngineering.upstrip
— FunctionFunction call
upstrip(u, U)
Description
Returns the number of any physical quantity u
. If the optional unit U
is not specified the quantity is converted to its coherent (preferred) unit before determining the number.
Variables
u
Variable to be processed
U
Optional target unit; if not provided, the quantity is converted to its coherent (preferred) unit before determining the number.
Examples
```julia julia> I1 = 1.0mA julia> upstrip(I1) 0.001 julia> usprint(I1, mA) 1.0
ElectricalEngineering.usprint
— FunctionFunction call
usprint(u,U)
Description
Returns a string containing the number with six digits plus unit without space in between, such that the string output can be copied and pasted.
Variables
u
Variable to be processed
U
Optional target unit; if not provided, the actual unit is used
Examples
```julia julia> I1 = 1mA julia> usprint(I1) 1mA julia> usprint(I1, A) 0.001A
ElectricalEngineering.winding_mmf
— MethodFunction call
mmfwinding(w, i)
Description
Calculates the magnetomotive force distribution based on the winding layout and the actual currents of polyphase winding
Input variable
w[:,:]
Winding array with equal number of windings per slot, where
size(w,1)
= number of layers, e.g. 1 or 2size(w,2)
= number of slots
i[:]
Actual phase currents for, e.g., the three phases, scaled to 1
Output variables
mmf[:,:]
Magnetomotive force, where
size(mmf,1)
= number phasessize(mmm,1)
= number of slots
ElectricalEngineering.∠
— MethodFunction call
∠(phi)
Description
Creates a complex quantity with length 1 and angle phi
Variables
phi
Angle of complex quantity; if module Unitful is utilized, the angle may be specified in degrees, by using unit °
Examples
julia> using Unitful, Unitful.DefaultSymbols, ElectricalEngineering
julia> U1 = 2V*∠(90°)
-0.0 + 2.0im V
ElectricalEngineering.Gray
— ModuleElectricalEngineering.Gray
Defines colors based on the four base types of gray colorBlack1
, colorBlack2
, colorBlack3
and colorBlack4
. So independent of the picked color everything will always appear in gray scale. This way a gray scale and a color plot can alternatively be created. So either ElectricalEngineering.Gray
or ElectricalEngineering.Tab20bc
can be loaded (at a time) and be used.
Colors
The following colors are substitued by colorBlack1
, colorBlack2
, colorBlack3
and colorBlack4
:
colorBrown1
,colorBrown2
,colorBrown3
,colorBrown4
colorBlue1
,colorBlue2
,colorBlue3
,colorBlue4
colorRed1
,colorRed2
,colorRed3
,colorRed4
colorOrange1
,colorOrange2
,colorOrange3
,colorOrange4
colorGreen1
,colorGreen2
,colorGreen3
,colorGreen4
colorPurple1
,colorPurple2
,colorPurple3
,colorPurple4
colorDarkPurple1
,colorDarkPurple2
,colorDarkPurple3
,colorDarkPurple4
colorGray1
,colorGray2
,colorGray3
,colorGray4
colorMagenta1
,colorMagenta2
,colorMagenta3
,colorMagenta4
Example
Copy and paste code:
using PyPlot,ElectricalEngineering,ElectricalEngineering.Gray
x=collect(0:0.01:1);
figure(figsize=(3.3,2.5))
plot(x,x,color=colorRed1,linestyle=lineStyle1,linewidth=lineWidth1,
label="(1)")
plot(x,x.^2,color=colorRed2,linestyle=lineStyle2,linewidth=lineWidth2,
label="(2)")
plot(x,x.^3,color=colorRed3,linestyle=lineStyle3,linewidth=lineWidth3,
label="(3)")
plot(x,x.^4,color=colorRed4,linestyle=lineStyle4,linewidth=lineWidth4,
label="(4)")
subplots_adjust(left=0.20, right=0.95, top=0.95, bottom=0.20)
legend(loc="upper left",fontsize=legendFontSize)
See also
ElectricalEngineering.Tab20bc
ElectricalEngineering.Tab20bc
— ModuleElectricalEngineering.Tab20bc
Defines colors based on https://matplotlib.org/users/plotting/colormaps/grayscale0104.pdf. As an alternative ElectricalEngineering.Gray
can be used instead of ElectricalEngineering.Tab20bc
in order to create a gray scale plot instead of a color plot.
Colors
The following colors are defined:
colorBrown1
,colorBrown2
,colorBrown3
,colorBrown4
colorBlue1
,colorBlue2
,colorBlue3
,colorBlue4
colorRed1
,colorRed2
,colorRed3
,colorRed4
colorOrange1
,colorOrange2
,colorOrange3
,colorOrange4
colorGreen1
,colorGreen2
,colorGreen3
,colorGreen4
colorPurple1
,colorPurple2
,colorPurple3
,colorPurple4
colorDarkPurple1
,colorDarkPurple2
,colorDarkPurple3
,colorDarkPurple4
colorMagenta1
,colorMagenta2
,colorMagenta3
,colorMagenta4
colorGray1
,colorGray2
,colorGray3
,colorGray4
Example
Copy and paste code:
using PyPlot,ElectricalEngineering,ElectricalEngineering.Tab20bc
x=collect(0:0.01:1);
figure(figsize=(3.3,2.5))
plot(x,x,color=colorRed1,linestyle=lineStyle1,linewidth=lineWidth1,
label="(1)")
plot(x,x.^2,color=colorRed2,linestyle=lineStyle2,linewidth=lineWidth2,
label="(2)")
plot(x,x.^3,color=colorRed3,linestyle=lineStyle3,linewidth=lineWidth3,
label="(3)")
plot(x,x.^4,color=colorRed4,linestyle=lineStyle4,linewidth=lineWidth4,
label="(4)")
subplots_adjust(left=0.20, right=0.95, top=0.95, bottom=0.20)
legend(loc="upper left",fontsize=legendFontSize)
See also
ElectricalEngineering.Gray