<< Click to Display Table of Contents >> self_focus |
{ SELF_FOCUS.PDE
This problem considers the self-focussing of a laser beam of Gaussian profile.
-- Submitted by John Trenholme, LLNL
}
title "2D GAUSSIAN BEAM PROFILE"
select
elevationgrid = 300
variables
realf (threshold=0.1) { real (in-phase) part of field envelope }
imagf (threshold=0.1) { imaginary (quadrature) part of field envelope }
definitions
radX = 2 { X "radius" of beam }
radY = 2 { Y "radius" of beam }
bMax = 2.25 { maximum B integral (= Time)}
zm = 5 { zoom-in factor for plots }
xHi = 7.17 * SQRT( radX * radY) { size of calculation domain... }
yHi = 7.17 * SQRT( radX * radY) { set for field = 0.001 at edge }
x45 = xHi * 0.7071 { point on boundary at 45 degrees }
y45 = yHi * 0.7071
tn =1e-30 { tiny number to force zero on plot scales }
power = PI * radX * radY * 2.73 ^ 2 / 8 { analytic integral }
inten = realf * realf + imagf * imagf { definition for later use }
time { "time" is really B integral }
0 to bMax by 0.03 * bMax
initial values
realf = EXP( - ( x / ( radX * 2.73)) ^ 2 - ( y / ( radY * 2.73)) ^ 2)
imagf = 0
equations { normalized, low-secular-phase nonlinear propagation }
realf: DEL2( imagf) + imagf * ( inten - 1) = -DT( realf)
imagf: DEL2( realf) + realf * ( inten - 1) = DT( imagf)
boundaries
region 1
start ( 0, 0) { bump is at center; only do one quadrant }
natural( realf) = 0 { set slope to zero on boundary }
natural( imagf) = 0 { if boundary value too big, move boundary out }
line to ( xHi, 0)
arc ( center = 0, 0) to ( 0, yHi)
line to ( 0, 0)
to close
monitors
for cycle = 1 { do this every cycle }
elevation( inten) from ( 0, 0) to ( xHi, 0) as "INTENSITY"
range( 0, tn)
contour( inten) as "INTENSITY" zoom ( 0, 0, xHi / zm, yHi / zm)
plots
for t = starttime { at the beginning only }
grid( x, y)
surface( inten) as "INTENSITY" range( 0, tn) viewpoint( 1000, 200, 40)
elevation( LOG10( inten)) from ( 0, 0) to ( xHi, 0) as "LOG10 INTENSITY"
for t = endtime { at the end only }
grid( x, y)
grid( x, y) zoom ( 0, 0, xHi / zm, yHi / zm)
surface( inten) as "INTENSITY" range( 0, tn) viewpoint( 1000, 200, 40)
zoom ( 0, 0, xHi / zm, yHi / zm)
elevation( LOG10( inten)) from ( 0, 0) to ( xHi, 0) as "LOG10 INTENSITY"
for t = starttime by ( endtime - starttime) / 5 to endtime { snapshots }
elevation( ARCTAN( imagf / realf) * 180 / PI) from ( 0, 0)
to ( xHi / zm, 0) as "PHASE (DEGREES)"
elevation( inten) from ( 0, 0) to ( xHi / zm, 0) as "INTENSITY"
range( 0, tn)
histories
history( inten) at ( 0, 0) ( 0.01 * xHi, 0) ( 0.03 * xHi, 0) ( 0.1 * xHi, 0)
( 0.3 * xHi, 0) ( xHi, 0) ( x45, y45) as "INTENSITY" export
history( realf) at ( 0, 0) ( 0.01 * xHi, 0) ( 0.03 * xHi, 0) ( 0.1 * xHi, 0)
( 0.3 * xHi, 0) as "IN-PHASE FIELD"
history( imagf) at ( 0, 0) ( 0.01 * xHi, 0) ( 0.03 * xHi, 0) ( 0.1 * xHi, 0)
( 0.3 * xHi, 0) as "QUADRATURE FIELD"
history( ARCTAN( imagf / realf) * 180 / PI) at ( 0, 0) ( 0.01 * xHi, 0)
( 0.03 * xHi, 0) ( 0.1 * xHi, 0) ( 0.3 * xHi, 0) as "PHASE (DEGREES)"
history( MIN( ( ABS( inten - 0.33)) ^ ( -0.75), 1)) at ( 0, 0)
range ( 0.045, 1) as "( INTENSITY - 0.33) ^ -0.75" { goes linearly to 0}
history( ABS( INTEGRAL( inten) / power - 1)) as "POWER CHANGE (EXACT = 0)"
end