前記のメッシュバランシングの手法を用いて作成したスクリプトを以下に示します。
TITLE 'Heat flow around an Insulating blob'
VARIABLES
Phi { the temperature }
Xm = MOVE(x) { surrogate X }
Ym = MOVE(y) { surrogate Y }
DEFINITIONS
K = 1 { default conductivity }
R0 = 0.75 { initial blob radius }
EQUATIONS
Phi: Div(-k*grad(phi)) = 0
Xm: div(grad(Xm)) = 0
Ym: div(grad(Ym)) = 0
BOUNDARIES
REGION 1 'box'
START(-1,-1)
VALUE(Phi)=0
VELOCITY(Xm)=0 VELOCITY(Ym)=0
LINE TO (1,-1)
NATURAL(Phi)=0
LINE TO (1,1)
VALUE(Phi)=1
LINE TO (-1,1)
NATURAL(Phi)=0
LINE TO CLOSE
REGION 2 'blob' { the embedded blob }
k = 0.001
START 'ring' (R,0)
VELOCITY(Xm) = -0.25*sin(t)*x/r
VELOCITY(Ym) = -0.25*sin(t)*y/r
ARC(CENTER=0,0) ANGLE=360 TO CLOSE
TIME 0 TO 2*pi
PLOTS
FOR T = pi/2 BY pi/2 TO 2*pi
GRID(x,y)
CONTOUR(Phi)
VECTOR(-k*grad(Phi))
ELEVATION(Phi) FROM (0,-1) to (0,1)
ELEVATION(Normal(-k*grad(Phi))) ON 'ring'
END
Flash playerがインストールされている環境であれば出力はアニメーションとして表示されます。
関連するフォームについては以下を参照ください。
• | Samples | Moving_Mesh | 2D_Position_Blob.pde |
• | Samples | Moving_Mesh | 2D_Velocity_Blob.pde |
• | Samples | Moving_Mesh | 3D_Position_Blob.pde |
• | Samples | Moving_Mesh | 3D_Velocity_Blob.pde |
|