孤立した渦糸周辺での秩序変数(位相つき)

こちらで説明した渦糸周りの秩序変数に、位相に応じた色を付けました。上図は下のスクリプトを実行して作られたPostScriptファイルsingle-vortex-phase.epsからコピーしたものです。

渦糸中心では位相が定義できないため、中心に向かって色が黒に変化していくようにしています。そのために、HSVサークルの項で説明した方法を用いています。

#version 4.4.0

set angles degrees

# Vortex中心付近の秩序変数
vortex(x,y)=tanh(nu*sqrt(x**2+y**2)/xi)
nu=1.0
xi=0.01


## HSV色空間からRGB色空間への変換。Wikipedia参照
#変換の補助関数群
HSV_Hi(h)=sgn(h)*floor(abs(h)/60)%6+(h>=0 ? 0 : 5)
HSV_f(h)=(sgn(h)*(abs(h)-(floor(abs(h))/360)*360.0)/60.0+(h>=0 ? 0 : 6))-HSV_Hi(h)
HSV2R(h,s,v)=( \
     HSV_Hi(h)==0 || HSV_Hi(h)==5 ? v                    : (\
     HSV_Hi(h)==1                 ? v*(1-HSV_f(h)*s)     : (\
     HSV_Hi(h)==4                 ? v*(1-(1-HSV_f(h))*s) : (\
     HSV_Hi(h)==2 || HSV_Hi(h)==3 ? v*(1-s)              : 0.0) )))
HSV2G(h,s,v)=( \
     HSV_Hi(h)==1 || HSV_Hi(h)==2 ? v                    : (\
     HSV_Hi(h)==3                 ? v*(1-HSV_f(h)*s)     : (\
     HSV_Hi(h)==0                 ? v*(1-(1-HSV_f(h))*s) : (\
     HSV_Hi(h)==4 || HSV_Hi(h)==5 ? v*(1-s)              : 0.0) )))
HSV2B(h,s,v)=( \
     HSV_Hi(h)==3 || HSV_Hi(h)==4 ? v                    : (\
     HSV_Hi(h)==5                 ? v*(1-HSV_f(h)*s)     : (\
     HSV_Hi(h)==2                 ? v*(1-(1-HSV_f(h))*s) : (\
     HSV_Hi(h)==0 || HSV_Hi(h)==1 ? v*(1-s)              : 0.0) )))
     


set xrange [-0.05:0.05]
set yrange [-0.05:0.05]
set samples 51
set isosamples 51

# いったんパラメータファイルを作る
tablefile="table.dat"
set table tablefile
splot 0
unset table


# 表面にgrid描画
set pm3d depthorder interpolate 1,1 hidden3d 1

# grid用のlinestyleの設定
set style line 1  linetype 1 linecolor rgb "black" linewidth 0.25


set view 65,338
unset colorbox
set border 0
unset xtics 
unset ytics 
unset ztics
unset key


# HSV-ringの動径方向の分割数
N=50.0
colmax = (N)*360.0


set cbrange [0:colmax]

# 色使いの指定: 渦芯を白くする
set palette model RGB functions \
     HSV2R((gray*colmax/360.0-floor(gray*colmax/360.0))*360.0, (floor(gray*colmax/360.0)/N), 1),\
     HSV2G((gray*colmax/360.0-floor(gray*colmax/360.0))*360.0, (floor(gray*colmax/360.0)/N), 1),\
     HSV2B((gray*colmax/360.0-floor(gray*colmax/360.0))*360.0, (floor(gray*colmax/360.0)/N), 1)

# 色使いの指定: 渦芯を黒くする
set palette model RGB functions \
     HSV2R((gray*colmax/360.0-floor(gray*colmax/360.0))*360.0, 1, (floor(gray*colmax/360.0)/N)),\
     HSV2G((gray*colmax/360.0-floor(gray*colmax/360.0))*360.0, 1, (floor(gray*colmax/360.0)/N)),\
     HSV2B((gray*colmax/360.0-floor(gray*colmax/360.0))*360.0, 1, (floor(gray*colmax/360.0)/N))

set pm3d corners2color min 


splot tablefile using 1:2:(vortex($1,$2)):(floor(vortex($1,$2)*N)*360.0+atan2($2,$1)+180) \
      with pm3d

pause -1


set out "single-vortex-phase.eps"
set term post color enhanced
replot
set out
set term pop

なお、上のスクリプトにはset palette...が2か所ありますが、あとの方を削除すると下のように渦芯の白いVortexが描けます。