AtmoPathSWP is part of the WaveTrain system class library
AtmoPathSWP uses spherical wave propagation (converging / diverging propagation grids) to model optical propagation through atmospheric turbulence. AtmoPathSWP may also be used for planar wave propagation by setting propdxyPlat and propdxyTarg to the same value, i.e., propdxyPlat = propdxyTarg = propdxy. 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 automatically calculated to span the propagation mesh at each screen location. If the specified bounds should be exceeded due to wind dragging, each screen will be "scrolled" as necessary. AtmoPathSWP 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 with the same grid size and spacings 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.
There is the option to remove tilt over a specified area from individual phase screens, with the area specified by a diameter.
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;
|
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 |
propdxyPlat |  float | Propagation mesh at platform (for both x & y) | propdxyPlat |
propdxyTarg |  float | Propagation mesh at target (for both x & y) | propdxyTarg |
superApDiameterOut |  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 |
edgeSigmaOut |  float | Used in modeling point sources and surface speckle; defines a gaussian round off at the edge of the superaperture | propdxyTarg |
superApDiameterRet |  float | Used in modeling point sources and surface speckle; defines a circular region at the platform plane which in vacuum would be uniformly illuminated | propnxy*propdxyPlat/2.0f |
edgeSigmaRet |  float | Used in modeling point sources and surface speckle; defines a gaussian round off at the edge of the superaperture | propdxyPlat |
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> | Phase screens as a nscreen by 11+nxy*nxy array | |
Subsystems |
|
|
|
atmSpec |  AcsAtmSpec | atmSpec |
randomSeed |  int | atmoSeed |
gridPlatform |  GridGeometry | gwoom(propnxy,propdxyPlat) |
gridTarget |  GridGeometry | gwoom(propnxy,propdxyTarg) |
dxy |  float | fmin(propdxyPlat,propdxyTarg) |
locFlag |  int | 0 |
removeTilt |  bool | removeTilt |
diam |  float | diam |
|
|
|
|
|
targetGrid |  GridGeometry | grid_with_origin_on_mesh(propnxy,propnxy,propdxyTarg,propdxyTarg) |
xReferenceFocus |  float | Rref(propdxyTarg,propdxyPlat,-atmSpec.pathLength()) |
yReferenceFocus |  float | Rref(propdxyTarg,propdxyPlat,-atmSpec.pathLength()) |
oneTimeSpatialFilter |  constFilter& | NullFilter() |
spatialFilter |  constFilter& | NullFilter() |
absorbingBoundary |  constFilter& | NullFilter() |
pointSourceModel |  PointSourceModel | DEFAULT_PSM |
speckleModel |  SpeckleModel | DEFAULT_SM |
superApDiameter |  float | superApDiameterRet |
edgeSigma |  float | edgeSigmaRet |
useDispersion |  bool | useDispersion |
nominalWavelength |  float | nominalWavelength |
|
|
|
|
|
targetGrid |  GridGeometry | grid_with_origin_on_mesh(propnxy,propnxy,propdxyPlat,propdxyPlat) |
xReferenceFocus |  float | Rref(propdxyPlat,propdxyTarg,atmSpec.pathLength()) |
yReferenceFocus |  float | Rref(propdxyPlat,propdxyTarg,atmSpec.pathLength()) |
oneTimeSpatialFilter |  constFilter& | NullFilter() |
spatialFilter |  constFilter& | NullFilter() |
absorbingBoundary |  constFilter& | NullFilter() |
pointSourceModel |  PointSourceModel | DEFAULT_PSM |
speckleModel |  SpeckleModel | DEFAULT_SM |
superApDiameter |  float | superApDiameterOut |
edgeSigma |  float | edgeSigmaOut |
useDispersion |  bool | useDispersion |
nominalWavelength |  float | nominalWavelength |
|
|
|
|
|
|
|
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: Fri Feb 22 10:45:06 MST 2008 by TVE version 2007B
|