time discontinuity in my script? Log Out | Topics | Search
Moderators | Register | Edit Profile

FlexPDE User's Forum » User Postings » time discontinuity in my script? « Previous Next »

Author Message
Top of pagePrevious messageNext messageBottom of page Link to this message

Tim McDaniel (tim)
New member
Username: tim

Post Number: 1
Registered: 04-2007
Posted on Sunday, April 29, 2007 - 05:55 am:   

Hi,

I am trying to model the thermo-elastic PDE. The situation I am trying to model is a 500 ps laser pulse with a spot size of 1e-6 m incident in a piece of glass. The laser pulse serves as the heat source and I am concerned with the behavior of the density waves on the time scale of picoseconds. The problem is spherically symmetric so I am using the sphere1 coordinate system. My unit system is in meters and seconds.

The problem that I am having is that there seems to be a discontinuity in the temperature while running the script. I am looking at a time range from 0 to 2 nanoseconds. The temperature rises to the max temperature and is steady state (what I expect) until 1.5 ns, when it suddenly drops about 100 K. Also, the max temperature that glass rises to is about 200K more than what it should given the temperature equation.

What is going on here? Any help would be much appreciated.

Here is the script:

COORDINATES
sphere1

VARIABLES
u (threshold = 2e-9) {displacement, (t,r) }
temp (threshold = 1300) {temperature distribution, (t,r)}
p {density, (t,r) }
v (threshold = 0.1) { v = dt(u) }
p_ratio

DEFINITIONS
p0 = 2.51e3 { initial density, kg/m^3 }
Y = 72.9e9 { Young's Modulus, Pa }
s = 0.21 { Poisson's ratio }
beta = 72e-7 { themal expansion coefficient, K^-1 }
tempi = 300 { initial temp, K }
tempd = 1000 { temp increase, K }
w = 1e-6 { spatial width of temperature distribution, m }
tau = 0.5e-12 { pulse width of laser, s }

A = ( Y * (1 - s) ) / ( (1 + s) * (1 - 2*s) )
B = Y / ( (1 + s) * (1 - 2*s) )
C = ( Y * beta ) / ( 3 * (1 - 2*s) )

Ra = 0
Rb =1e-4

p_ratio_percent = p_ratio * 100

INITIAL VALUES
u = 0
temp = tempi
p = p0

EQUATIONS
v: dt(u) = v
u: p*dt(v) = ( A * ( drr(u) + (1/r)*( dr(u) ) ) - B * (u/((r^2))) - C * dr(temp) )
p: p = p0 / ( dr(u) + 1 )
temp: temp = tempi + ( tempd ) *( EXP ( - (r^2 / w^2 ) ) ) * (1 - EXP (-( t / tau ) ) )
p_ratio: p_ratio = (p - p0) / p0

BOUNDARIES
REGION 1
START(Ra)
POINT VALUE(u) = 0
LINE TO (Rb)
POINT LOAD(p_ratio)= 0

TIME 0 BY 1e-12 TO 2e-9

MONITORS
FOR TIME 0 BY 1e-12 TO 2e-9
ELEVATION (temp) FROM (Ra) to (6e-6)
RANGE(0,1400)
ELEVATION (u) FROM (Ra) TO (30e-6)
RANGE(0,1e-9)
ELEVATION (p) FROM (Ra) TO (12e-6)
ELEVATION(p_ratio) FROM (Ra) TO (12e-6)
RANGE(-4e-3,1e-3)

HISTORY(temp) AT (0)

HISTORY(p_ratio_percent) AT (0)
RANGE(-0.4,0.1)

PLOTS
FOR TIME 0
ELEVATION(p_ratio) FROM (Ra) TO (12e-6) AS 'p_ratio at t = 0'
RANGE(-4e-3,1e-3)
FOR TIME 100e-12
ELEVATION(p_ratio) FROM (Ra) TO (12e-6) AS 'p_ratio at t = 100 ps'
RANGE(-4e-3,1e-3)
FOR TIME 200e-12
ELEVATION(p_ratio) FROM (Ra) TO (12e-6) AS 'p_ratio at t = 200 ps'
RANGE(-4e-3,1e-3)
FOR TIME 400e-12
ELEVATION(p_ratio) FROM (Ra) TO (12e-6) AS 'p_ratio at t = 400 ps'
RANGE(-4e-3,1e-3)
FOR TIME 600e-12
ELEVATION(p_ratio) FROM (Ra) TO (12e-6) AS 'p_ratio at t = 600 ps'
RANGE(-4e-3,1e-3)
FOR TIME 800e-12
ELEVATION(p_ratio) FROM (Ra) TO (12e-6) AS 'p_ratio at t = 800 ps'
RANGE(-4e-3,1e-3)
FOR TIME 1200e-12
ELEVATION(p_ratio) FROM (Ra) TO (12e-6) AS 'p_ratio at t = 1200 ps'
RANGE(-4e-3,1e-3)
FOR TIME 1600e-12
ELEVATION(p_ratio) FROM (Ra) TO (12e-6) AS 'p_ratio at t = 1600 ps'
RANGE(-4e-3,1e-3)
FOR TIME 2000e-12
ELEVATION(p_ratio) FROM (Ra) TO (12e-6) AS 'p_ratio at t = 2000 ps'
RANGE(-4e-3,1e-3)

END

Thanks,
Tim
Top of pagePrevious messageNext messageBottom of page Link to this message

Robert G. Nelson (rgnelson)
Moderator
Username: rgnelson

Post Number: 832
Registered: 06-2003
Posted on Sunday, April 29, 2007 - 01:48 pm:   

I'm not sure what causes the temperature jump, but TEMP should not be a variable anyway. It is a simple algebraic function of time and space, and should therefore be a definition.

P and P_RATIO are also algebraic functions, and should be definitions.

This leaves you two equations instead of five.

In the modified script below, I have made these changes, and also re-labeled the equations so that the label follows the time derivative (I don't know if this matters).

I have also applied the boundary condition POINT VALUE(v)=0, since v=dt(u) and u=0 on the left boundary. Without this there is instability at the left boundary.

I have changed the MONITOR control to FOR CYCLE=1, so it doesn't limit the timestep.

The new script follows:

COORDINATES
sphere1

VARIABLES
u (threshold = 1e-11) {displacement, (t,r) }
! temp (threshold = 1300) {temperature distribution, (t,r)}
! p {density, (t,r) }
v (threshold = 0.1) { v = dt(u) }
! p_ratio

DEFINITIONS
p0 = 2.51e3 { initial density, kg/m^3 }
Y = 72.9e9 { Young's Modulus, Pa }
s = 0.21 { Poisson's ratio }
beta = 72e-7 { themal expansion coefficient, K^-1 }
tempi = 300 { initial temp, K }
tempd = 1000 { temp increase, K }
w = 1e-6 { spatial width of temperature distribution, m }
tau = 0.5e-12 { pulse width of laser, s }

A = ( Y * (1 - s) ) / ( (1 + s) * (1 - 2*s) )
B = Y / ( (1 + s) * (1 - 2*s) )
C = ( Y * beta ) / ( 3 * (1 - 2*s) )

Ra = 0
Rb =1e-4

p = p0 / ( dr(u) + 1 )
p_ratio = (p - p0) / p0
p_ratio_percent = p_ratio * 100
temp = tempi + ( tempd ) *( EXP ( - (r^2 / w^2 ) ) ) * (1 - EXP(-( t / tau ) ) )

INITIAL VALUES
u = 0
! temp = tempi
! p = p0

EQUATIONS
! v: dt(u) = v
u: dt(u) = v
! u: p*dt(v) = ( A * ( drr(u) + (1/r)*( dr(u) ) ) - B * (u/((r^2))) - C* dr(temp) )
v: p*dt(v) = ( A * ( drr(u) + (1/r)*( dr(u) ) ) - B * (u/((r^2))) - C* dr(temp) )
! p: p = p0 / ( dr(u) + 1 )
! temp: temp = tempi + ( tempd ) *( EXP ( - (r^2 / w^2 ) ) ) * (1 - EXP(-( t / tau ) ) )
! p_ratio: p_ratio = (p - p0) / p0

BOUNDARIES
REGION 1
START(Ra)
POINT VALUE(u) = 0
POINT VALUE(v) = 0
LINE TO (Rb)
! POINT LOAD(p_ratio)= 0

TIME 0 BY 1e-12 TO 2e-9

MONITORS
! FOR TIME 0 BY 1e-12 TO 2e-9
FOR cycle=1
ELEVATION (temp) FROM (Ra) to (6e-6)
RANGE(0,1400)
ELEVATION (u) FROM (Ra) TO (30e-6)
RANGE(0,1e-9)
ELEVATION (v) FROM (Ra) TO (30e-6)
ELEVATION (p) FROM (Ra) TO (12e-6)
ELEVATION(p_ratio) FROM (Ra) TO (12e-6)
RANGE(-4e-3,1e-3)

HISTORY(temp) AT (0)

HISTORY(p_ratio_percent) AT (0)
RANGE(-0.4,0.1)

PLOTS
FOR TIME 0
ELEVATION(p_ratio) FROM (Ra) TO (12e-6) AS 'p_ratio at t = 0'
RANGE(-4e-3,1e-3)
FOR TIME 100e-12
ELEVATION(p_ratio) FROM (Ra) TO (12e-6) AS 'p_ratio at t = 100 ps'
RANGE(-4e-3,1e-3)
FOR TIME 200e-12
ELEVATION(p_ratio) FROM (Ra) TO (12e-6) AS 'p_ratio at t = 200 ps'
RANGE(-4e-3,1e-3)
FOR TIME 400e-12
ELEVATION(p_ratio) FROM (Ra) TO (12e-6) AS 'p_ratio at t = 400 ps'
RANGE(-4e-3,1e-3)
FOR TIME 600e-12
ELEVATION(p_ratio) FROM (Ra) TO (12e-6) AS 'p_ratio at t = 600 ps'
RANGE(-4e-3,1e-3)
FOR TIME 800e-12
ELEVATION(p_ratio) FROM (Ra) TO (12e-6) AS 'p_ratio at t = 800 ps'
RANGE(-4e-3,1e-3)
FOR TIME 1200e-12
ELEVATION(p_ratio) FROM (Ra) TO (12e-6) AS 'p_ratio at t = 1200 ps'
RANGE(-4e-3,1e-3)
FOR TIME 1600e-12
ELEVATION(p_ratio) FROM (Ra) TO (12e-6) AS 'p_ratio at t = 1600 ps'
RANGE(-4e-3,1e-3)
FOR TIME 2000e-12
ELEVATION(p_ratio) FROM (Ra) TO (12e-6) AS 'p_ratio at t = 2000 ps'
RANGE(-4e-3,1e-3)

END

Add Your Message Here
Post:
Username: Posting Information:
This is a private posting area. Only registered users and moderators may post messages here.
Password:
Options: Enable HTML code in message
Automatically activate URLs in message
Action:

Topics | Last Day | Last Week | Tree View | Search | Help/Instructions | Program Credits Administration