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