tempusSystem Class AtmoPath2
AtmoPath2 is part of the WaveTrain system class library

AtmoPath2 is a modified AtmoPath.
Option to remove tilt from individual phase screens added.
Beam diameter over which tilt is fit is specified.
Phase screens are available as output as a nscreen by 11+nxy*nxy array. The header of 11 data values before the nxy*nxy phase values for each screen is set in compPhaseScreen() in AcsPhaseScreen.cpp as:
propGrid->nx();
propGrid->ny();
propGrid->dx();
propGrid->dy();
propGrid->xCenter()-xtw;
propGrid->yCenter()-ytw;
distance;
rateX;
rateY;
xtw;
ytw;

AtmoPath2 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 the propagation mesh geometry at each end of the propagation path. If the specified bounds should be exceeded, each screen will be "scrolled" as necessary. AtmoPath2 is a composite system class, consisting of a GeneralAtmosphere2 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 GeneralAtmosphere2 and PropagationController directly.

The default parameters for AtmoPath2 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.

Tempus Block Diagram Editor Snapshot
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
gridPlatform  GridGeometry   Propagation mesh geometry at platform   gwoom(propnxy,propdxyPlat)
gridTarget  GridGeometry   Propagation mesh geometry at target   gwoom(propnxy,propdxyTarg)
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
removeTilt  bool   Remove tilt from phase screens   false
diam  float   Beam diameter for tilt removal fit (m)   propnxy*propdxyPlat
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   
phaseScreen  Array<float>      
Subsystems

Subsystem icon
  GeneralAtmosphere2    generalAtmo
atmSpec  AcsAtmSpec   atmSpec
randomSeed  int   atmoSeed
gridPlatform  GridGeometry   gridPlatform
gridTarget  GridGeometry   gridTarget
dxy  float   screenDxy
locFlag  int   locFlag
removeTilt  bool   removeTilt
diam  float   diam

Subsystem icon
  PropagationController    propagationcontroller0
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

Subsystem icon
  PropagationController    propagationcontroller
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


Connections
propagationcontroller0.incident  <<=  incomingIncident
propagationcontroller.incident  <<=  outgoingIncident
incomingTransmitted  <<=  generalAtmo.incomingTransmitted
outgoingTransmitted  <<=  generalAtmo.outgoingTransmitted
phaseScreen  <<=  generalAtmo.phaseScreen
generalAtmo.incomingIncident  <<=  propagationcontroller0.transmitted
generalAtmo.outgoingIncident  <<=  propagationcontroller.transmitted
Last Saved: Tue May 15 10:31:54 MDT 2007 by TVE version 2007B