|
2D_StretchXY |
Top Previous Next |
|
{ This example demonstrates moving meshes in 2D. A Gaussian distribution is defined on a 2D mesh. The mesh is then stretched to twice its initial size, while the Gaussian remains fixed in space.
Mesh motion is imposed by explicit positions of the endpoints. } TITLE "stretching brick"
SELECT regrid=off
coordinates cartesian2('x','y')
VARIABLES u vx xm = move(x) vy ym = move(y)
DEFINITIONS Hl = 1/2 gwid = 0.15 u0= exp(-(x^2+y^2)/gwid^2) lmove = Hl + t ms = gwid^2/u0
INITIAL VALUES u= u0 vx = x/Hl vy = y/Hl
EQUATIONS U: dt(u)=0 vx: div(grad(vx))=0 Xm: dt(xm) = vx vy: div(grad(vy))=0 Ym: dt(ym) = vy
BOUNDARIES REGION 1 mesh_spacing = ms START(-Hl,-Hl) value(u) = 0 nobc(vx) nobc(xm) value(vy) = -1 value(ym) = -lmove Line to (Hl,-Hl) value(u)=0 value(vx) = 1 value(xm)=lmove nobc(vy) nobc(ym) line to (Hl,Hl) value(u)=0 nobc(vx) nobc(xm) value(vy) = 1 value(ym) = lmove line to (-Hl,Hl) value(u)=0 value(vx) = -1 value(xm)=-lmove nobc(vy) nobc(ym) line to close
TIME 0 TO 0.5 by 0.01! 10
MONITORS for cycle=1 grid(x,y) zoom(-Hl-1/2,-Hl-1/2, 2*Hl+1,2*Hl+1) contour(u) elevation(u,u0) from(-10*Hl,0) to (10*Hl,0) range (0,1) elevation(u,u0) from(0,-10*Hl) to (0,10*Hl) range (0,1)
PLOTS for time=0.1 by 0.1 to endtime grid(x,y) zoom(-Hl-1/2,-Hl-1/2, 2*Hl+1,2*Hl+1) contour(u) contour(u-u0) as "True Total Error" contour(error) as "Estimated Step Error" elevation(u,u0) from(-10*Hl,0) to (10*Hl,0) range (0,1) elevation(dt(xm)) from(-10*Hl,0) to (10*Hl,0) range (0,1) elevation(u,u0) from(0,-10*Hl) to (0,10*Hl) range (0,1) elevation(dt(ym)) from(0,-10*Hl) to (0,10*Hl) range (0,1) END
|