self_focus

<< Click to Display Table of Contents >>

Navigation:  Sample Problems > Applications > Lasers >

self_focus

Previous pageReturn to chapter overviewNext page

{  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