AtmoPath is part of the WaveTrain system class library
AtmoPath models optical propagation through atmospheric turbulence. The atmosphere is modeled using multiple "phase screens", typically 5-20, distributed along the propagation path. Each phase screen represents the cumulative optical path differences for a slab of atmosphere, and in between phase screens we perform vacuum propagations, using a two-step FFT propagator. The details of the path model (number and placement of screens, turbulence strengths, inner scale, etc.) are specified by "atmosphere specification" (an object of type AcsAtmSpec). Atmosphere specifications can be created using TurbTool, and for certain common cases (e.g. uniformed turbulence, or scaled Clear1) we have also provided a more convenient function call interface. The phase screen dimensions are controlled by a user-defined bounding rectangle for the region of interest at each end of the propagation path. If the specified bounds should be exceeded, each screen will be "scrolled" as necessary. AtmoPath is a composite system class, consisting of a GeneralAtmosphere and two PropagationControllers, and provides a simplified interface for propagation modeling options, which assumes that the same modeling options will be used in both propagation directions, including using planar or spherical reference waves and the defaults for point source and speckle modeling, with no spatial filtering or absorbing boundaries. If this is not what is desired, the user may wish to work with GeneralAtmosphere and PropagationController directly.
The default parameters for AtmoPath are suggestions for the use of spherical wave propagation (converging / diverging grids) where the same propagation grid size and spacings are used for both outgoing and incoming propagations. If planar propagation is desired, the values of propdxyPlat and propdxyTarg should be set to the same value, i.e., propdxyPlat = propdxyTarg = propdxy, and x/yReferenceFocus must be set to zero. If using spherical wave propagation (propdxyPlat != propdxyTarg, x/yReferenceFocus != 0.0), parameters for the incoming PropagationController are calculated from those specified for the outgoing PropagationController by scaling by the propagation grid scaleFactor = propdxyTarg/PropdxyPlat.
|
Parameters
|
atmSpec |  AcsAtmSpec | Specifies all the properties of the atmospheric path model: range, turbulence distribution, number of phase screens, etc. | AcsAtmSpec() |
atmoSeed |  int | Random number seed for atmospheric phase screens | -123456789 |
propnxy |  int | Propagation mesh dimension (for both x & y) | propnxy |
propdxy |  float | Propagation mesh spacing [at platform end if using SWP] (for both x & y) | propdxyPlat |
superApDiameter |  float | Used in modeling point sources and surface speckle; defines a circular region at the target plane which in vacuum would be uniformly illuminated | propnxy*propdxyTarg/2.0f |
edgeSigma |  float | Used in modeling point sources and surface speckle; defines a gaussian round off at the edge of the superaperture | propdxyTarg |
xp1 |  float | Used to define phase screen extents; defines lower bound in x at "platform" (z=0) end of propagation path | -propnxy*propdxyPlat/2.0f |
xp2 |  float | Used to define phase screen extents; defines upper bound in x at "platform" (z=0) end of propagation path | propnxy*propdxyPlat/2.0f |
yp1 |  float | Used to define phase screen extents; defines lower bound in y at "platform" (z=0) end of propagation path | -propnxy*propdxyPlat/2.0f |
yp2 |  float | Used to define phase screen extents; defines upper bound in y at "platform" (z=0) end of propagation path | propnxy*propdxyPlat/2.0f |
xt1 |  float | Used to define phase screen extents; defines lower bound in x at "target" (z=range) end of propagation path | -propnxy*propdxyTarg/2.0f |
xt2 |  float | Used to define phase screen extents; defines upper bound in x at "target" (z=range) end of propagation path | propnxy*propdxyTarg/2.0f |
yt1 |  float | Used to define phase screen extents; defines lower bound in y at "target" (z=range) end of propagation path | -propnxy*propdxyTarg/2.0f |
yt2 |  float | Used to define phase screen extents; defines upper bound in y at "target" (z=range) end of propagation path | propnxy*propdxyTarg/2.0f |
screenDxy |  float | Phase screen mesh spacing | fmin(propdxyPlat,propdxyTarg) |
xReferenceFocus |  float | Set to zero for plane wave propagation [propdxyPlat==propdxyTarg]; used to define propagation geometry. | 0.0 or Rref(propdxyPlat,propdxyTarg, range) |
yReferenceFocus |  float | Set to zero for plane wave propagation [propdxyPlat==propdxyTarg]; used to define propagation geometry. | 0.0 or Rref(propdxyPlat,propdxyTarg, range) |
locFlag |  int | Low order correction flag | 0 |
useDispersion |  bool | Use atmospheric dispersion calculations | false |
nominalWavelength |  float | Nominal wavelength (m) for dispersion calculations | 0.0 |
Inputs
|
incomingIncident |  WaveTrain | Describes all light incident from the "incoming" direction | WaveTrain() |
outgoingIncident |  WaveTrain | Describes all light incident from the "outgoing" direction | WaveTrain() |
Outputs
|
incomingTransmitted |  WaveTrain | Describes all light transmitted in the "incoming" direction | |
outgoingTransmitted |  WaveTrain | Describes all light transmitted in the "outgoing" direction | |
Subsystems |
|
|
|
|
|
|
|
targetGrid |  GridGeometry | grid_with_origin_on_mesh(propnxy,propnxy,propdxy*scaleFactor(xReferenceFocus,atmSpec.pathLength()),propdxy*scaleFactor(yReferenceFocus,atmSpec.pathLength())) |
xReferenceFocus |  float | xReferenceFocus*scaleFactor(xReferenceFocus,atmSpec.pathLength()) |
yReferenceFocus |  float | yReferenceFocus*scaleFactor(yReferenceFocus,atmSpec.pathLength()) |
oneTimeSpatialFilter |  constFilter& | NullFilter() |
spatialFilter |  constFilter& | NullFilter() |
absorbingBoundary |  constFilter& | NullFilter() |
pointSourceModel |  PointSourceModel | DEFAULT_PSM |
speckleModel |  SpeckleModel | DEFAULT_SM |
superApDiameter |  float | superApDiameter/scaleFactor((xReferenceFocus+yReferenceFocus)/2.0f,atmSpec.pathLength()) |
edgeSigma |  float | edgeSigma/scaleFactor((xReferenceFocus+yReferenceFocus)/2.0f,atmSpec.pathLength()) |
useDispersion |  bool | useDispersion |
nominalWavelength |  float | nominalWavelength |
|
|
|
|
|
targetGrid |  GridGeometry | grid_with_origin_on_mesh(propnxy,propnxy,propdxy,propdxy) |
xReferenceFocus |  float | xReferenceFocus |
yReferenceFocus |  float | yReferenceFocus |
oneTimeSpatialFilter |  constFilter& | NullFilter() |
spatialFilter |  constFilter& | NullFilter() |
absorbingBoundary |  constFilter& | NullFilter() |
pointSourceModel |  PointSourceModel | DEFAULT_PSM |
speckleModel |  SpeckleModel | DEFAULT_SM |
superApDiameter |  float | superApDiameter |
edgeSigma |  float | edgeSigma |
useDispersion |  bool | useDispersion |
nominalWavelength |  float | nominalWavelength |
|
|
|
|
|
|
|
propagationcontroller2.incident | <<= | incomingIncident |
propagationcontroller.incident | <<= | outgoingIncident |
incomingTransmitted | <<= | generalAtmo.incomingTransmitted |
outgoingTransmitted | <<= | generalAtmo.outgoingTransmitted |
generalAtmo.incomingIncident | <<= | propagationcontroller2.transmitted |
generalAtmo.outgoingIncident | <<= | propagationcontroller.transmitted |
|
|
Last Saved: Tue May 15 10:12:53 MDT 2007 by TVE version 2007B
|