Point vortices are the two-dimensional analog to whirlpools, like the one that sucks water down the bathroom drain, or the ones that come off of the tips of airplane wings, or the ones that come off of your spoon when you stir your coffee. People who study the motion of gases and liquids use point vortices to model flows where there is some circulation or swirling of the fluid. A single vortex will cause the fluid around it to rotate, and to generally rotate faster closer to the center of the vortex. Put 2 vortices in the fluid, and they will cause each other to rotate. However, other points in the fluid will move chaotically around the 2 vortices. Put more than 2 vortices into the fluid, and the vortices themselves can move chaotically, as well as the fluid around them. These formulas allow you to use 2, 3, or 4 vortices, and color the pixel by the motion of the vortices. Alternatively, the field point information can be sent to the coloring routine. A field point is a particle of fluid away from any vortex. It starts out at the pixel location, and moves under the influence of the vortices.
As an added bonus, these formulas will also model sources and sinks, points of fluid being introduced into the flow, or removed from the flow. For more aerodynamical simulations, a freestream can be added, which simulates the entire system of vortices moving through the fluid at a set speed, like the wing on an airplane.
VortexSample1 { ; copyright Kerry Mitchell 23jan2000
fractal:
title="Vortex Sample 1" width=600 height=400 author="Kerry
Mitchell"
created="January 23, 2000" numlayers=2
layer:
method=multipass caption="New Layer 2" opacity=100 visible=yes
alpha=no
mergemode=difference
mapping:
center=0/0 magn=0.5 angle=0
formula:
filename="lkm.ufm" entry="vortex2" maxiter=10 percheck=off
p_bailout=1000
p_z10=2/0 p_z20=-2/0 p_gamma1=0/2 p_gamma2=0/2 p_freestream=0/0
p_timestep=0.01/0 p_ztype="field velocity"
inside:
filename="lkm.ucl" entry="basic" density=2 transfer=linear
repeat=yes
p_colorby="magnitude"
outside:
transfer=linear repeat=yes
gradient:
smooth=yes numnodes=8 index=0 color=0 index=50 color=8405008
index=100
color=11829312 index=150 color=14532495 index=200 color=16777215
index=250 color=14532495 index=300 color=11829312 index=350
color=8405008
layer:
method=multipass caption="New Layer 1" visible=yes alpha=no
mapping:
center=0/0 magn=0.5 angle=0
formula:
filename="lkm.ufm" entry="vortex2" maxiter=10 percheck=off
p_bailout=1000
p_z10=2/0 p_z20=-2/0 p_gamma1=0/2 p_gamma2=0/2 p_freestream=0/0
p_timestep=0.01/0 p_ztype="field position"
inside:
filename="lkm.ucl" entry="basic" transfer=linear repeat=yes
p_colorby="polar angle"
outside:
transfer=linear repeat=yes
gradient:
smooth=yes numnodes=8 index=0 color=0 index=50 color=4198528
index=100
color=8405172 index=150 color=12554205 index=200 color=16777215
index=250
color=12554205 index=300 color=8405172 index=350 color=4198528
}
This example uses the "field distance" variable type, and in 3 layers, shows the change over time.
VortexSample2 { ; copyright Kerry Mitchell 24jan2000
fractal:
title="Vortex Sample 2" width=480 height=480 author="Kerry
Mitchell"
created="January 24, 2000" numlayers=3
layer:
method=multipass caption="New Layer 3" opacity=100 visible=yes
alpha=no
mergemode=difference
mapping:
center=0/0 magn=0.5 angle=270
formula:
filename="lkm.ufm" entry="vortex3" maxiter=30 percheck=off
p_bailout=1000
p_z10=2/0 p_z20=-1/1.7320508075689 p_z30=-1/-1.7320508075689
p_gamma1=0/2
p_gamma2=0/2 p_gamma3=0/2 p_freestream=0/0 p_timestep=0.01/0
p_ztype="field distance"
inside:
filename="lkm.ucl" entry="basic" transfer=sqrt repeat=yes
p_colorby="magnitude"
outside:
transfer=linear repeat=yes
gradient:
smooth=yes numnodes=8 index=0 color=0 index=50 color=8405008
index=100
color=11829312 index=150 color=14532495 index=200 color=16777215
index=250 color=14532495 index=300 color=11829312 index=350
color=8405008
layer:
method=multipass caption="New Layer 2" opacity=100 visible=yes
alpha=no
mergemode=difference
mapping:
center=0/0 magn=0.5 angle=270
formula:
filename="lkm.ufm" entry="vortex3" maxiter=20 percheck=off
p_bailout=1000
p_z10=2/0 p_z20=-1/1.7320508075689 p_z30=-1/-1.7320508075689
p_gamma1=0/2
p_gamma2=0/2 p_gamma3=0/2 p_freestream=0/0 p_timestep=0.01/0
p_ztype="field distance"
inside:
filename="lkm.ucl" entry="basic" transfer=sqrt repeat=yes
p_colorby="magnitude"
outside:
transfer=linear repeat=yes
gradient:
smooth=yes numnodes=8 index=0 color=16777215 index=50 color=15695807
index=100 color=12536703 index=150 color=7348800 index=200
color=0
index=250 color=7348800 index=300 color=12536703 index=350
color=15695807
layer:
method=multipass caption="New Layer 1" visible=yes alpha=no
mapping:
center=0/0 magn=0.5 angle=270
formula:
filename="lkm.ufm" entry="vortex3" maxiter=10 percheck=off
p_bailout=1000
p_z10=2/0 p_z20=-1/1.7320508075689 p_z30=-1/-1.7320508075689
p_gamma1=0/2
p_gamma2=0/2 p_gamma3=0/2 p_freestream=0/0 p_timestep=0.01/0
p_ztype="field distance"
inside:
filename="lkm.ucl" entry="basic" transfer=sqrt repeat=yes
p_colorby="magnitude"
outside:
transfer=linear repeat=yes
gradient:
smooth=yes numnodes=8 index=0 color=0 index=50 color=4198528
index=100
color=8405172 index=150 color=12554205 index=200 color=16777215
index=250
color=12554205 index=300 color=8405172 index=350 color=4198528
}
The final example is a 4-leaf clover, showing the "field position" variable type with 4 vortices.
VortexSample3 { ; copyright Kerry Mitchell 24jan2000
fractal:
title="Vortex Sample 3" width=480 height=480 author="Kerry
Mitchell"
created="January 24, 2000" numlayers=2
layer:
method=multipass caption="New Layer 2" opacity=100 visible=yes
alpha=no
mergemode=softlight
mapping:
center=0/0 magn=0.5 angle=90
formula:
filename="lkm.ufm" entry="vortex4" maxiter=25 percheck=off
p_bailout=1000
p_z10=2/0 p_z20=0/2 p_z30=-2/0 p_z40=0/-2 p_gamma1=0/2 p_gamma2=0/2
p_gamma3=0/2 p_gamma4=0/2 p_freestream=0/0 p_timestep=0.01/0
p_ztype="field position"
inside:
filename="lkm.ucl" entry="basic" transfer=linear repeat=yes
p_colorby="polar angle"
outside:
transfer=linear repeat=yes
gradient:
smooth=yes numnodes=8 index=0 color=0 index=50 color=1081408
index=100
color=4240512 index=150 color=9428415 index=200 color=16777215
index=250
color=9428415 index=300 color=4240512 index=350 color=1081408
layer:
method=multipass caption="New Layer 1" visible=yes alpha=no
mapping:
center=0/0 magn=0.5 angle=90
formula:
filename="lkm.ufm" entry="vortex4" maxiter=10 percheck=off
p_bailout=1000
p_z10=2/0 p_z20=0/2 p_z30=-2/0 p_z40=0/-2 p_gamma1=0/2 p_gamma2=0/2
p_gamma3=0/2 p_gamma4=0/2 p_freestream=0/0 p_timestep=0.01/0
p_ztype="field position"
inside:
filename="lkm.ucl" entry="basic" transfer=linear repeat=yes
p_colorby="polar angle"
outside:
transfer=linear repeat=yes
gradient:
smooth=yes numnodes=8 index=0 color=0 index=50 color=1081408
index=100
color=4240512 index=150 color=9428415 index=200 color=16777215
index=250
color=9428415 index=300 color=4240512 index=350 color=1081408
}