digraph { overlap=false splines=true bgcolor = black ranksep=2; node[style=filled,fillcolor=lightgray,color=white]; edge[arrowtail=odot,dir=back,color=white]; { node[fillcolor=skyblue3] aperture; conic; zernikeS; coordinate_system; } { node[fillcolor=palegreen3] ray; bundle; source; complex_amplitude; } { node[fillcolor=tan1] gmt_m1; gmt_m2; stereoscopic_edge_sensors; lateral_edge_sensors; bending_modes} { node[fillcolor=gold3] atmosphere; layer; profile; } { node[fillcolor=navajowhite2] aaStats; paStats; } { node[fillcolor=indianred3]; vector; mask; stopwatch; gpu; } centroiding -> {shackHartmann; geometricShackHartmann;tt7}; centroiding -> pyramid; bundle -> source; {mask; coordinate_system} -> aperture; {vector; coordinate_system} -> conic; coordinate_system -> zernikeS; coordinate_system -> gmt_m1; coordinate_system -> gmt_m2 zernikeS -> gmt_m1; zernikeS -> gmt_m2; ray -> bundle; vector -> {stereoscopic_edge_sensors;lateral_edge_sensors;coordinate_system;bundle;ray;} complex_amplitude -> source; layer -> atmosphere; profile -> atmosphere; {aaStats;paStats;BTBT;GBTBT;iterativeSolvers;stopwatch;} -> LMMSE; stopwatch -> iterativeSolvers; gpu; complex_amplitude -> segmentPistonSensor; mask -> {shackHartmann;geometricShackHartmann;tt7;gmt_m1;gmt_m2;bundle;BTBT;GBTBT;segmentPistonSensor;} imaging -> {shackHartmann;tt7;pyramid;segmentPistonSensor;} edge[style=dotted,color=white] mask -> complex_amplitude; node[color=darkseagreen,style=rounded,shape=box,fontcolor=whitesmoke,penwidth=2]; edge[style=dashed,color=white] { node[fontcolor=indianred3]; MaskAbstract; Mask; Telescope; GMT; StopWatch; cuIntArray; cuFloatArray; cuDoubleArray; JSONAbstract; Sensor; } { node[fontcolor=skyblue2] Aperture; Conic; ZernikeS; Coordinate_system; Coordinates; } { node[fontcolor=palegreen3] Bundle; SourceBundle; FreeBundle; Complex_amplitude; Source; } { node[fontcolor=tan1] GmtMirrors; GMT_M1; GMT_M2; StereoscopicEdgeSensors; LateralEdgeSensors; DistanceEdgeSensors; BendingModes} { node[fontcolor=gold3] AtmosphereAbstract; Atmosphere; GmtAtmosphere; JGmtAtmosphere; Layer; } { node[fontcolor=navajowhite2] AaStats; PaStats; } { node[fontcolor=hotpink2] GMT_MX; DispersedFringeSensor; GeometricTT7; } AaStats[color=lightskyblue3]; BT2[color=lightskyblue3]; IterativeSolvers[color=lightskyblue3]; aaStats -> AaStats -> Lmmse; paStats -> PaStats; BTBT -> BT2 -> Lmmse; iterativeSolvers -> IterativeSolvers -> Lmmse; centroiding -> Centroiding; imaging -> Imaging; source -> Source; Complex_amplitude[color=lightskyblue3]; complex_amplitude -> Complex_amplitude; Bundle[color=coral3]; SourceBundle[color=lightskyblue3]; bundle -> Bundle; cuDoubleArray -> Bundle; cuIntArray -> Bundle; Complex_amplitude -> Source[label="wavefront"]; SourceBundle -> Source[label="rays"]; shackHartmann -> ShackHartmann; tt7 -> TT7; geometricShackHartmann -> GeometricShackHartmann; MaskAbstract -> {ShackHartmann; TT7; GeometricShackHartmann} Centroiding -> {ShackHartmann; TT7; GeometricShackHartmann} pyramid -> Pyramid; Centroiding -> Pyramid; segmentPistonSensor -> SegmentPistonSensor; bending_modes -> BendingModes; bending_modes -> gmt_m1 -> GMT_M1; gmt_m2 -> GMT_M2; {aperture; Coordinate_system;} -> Aperture; {conic; Coordinates; Coordinate_system;} -> Conic; zernikeS -> ZernikeS; ZernikeS -> GMT_M1; ZernikeS -> GMT_M2; BendingModes -> GMT_M1 -> GmtMirrors[label="M1"]; GMT_M2 -> GmtMirrors[label="M2"]; Coordinate_system[color=lightskyblue3]; coordinate_system -> Coordinate_system; Coordinate_system -> GMT_M1; Coordinate_system -> GMT_M2; Coordinates[color=lightskyblue3]; Coordinates -> Coordinate_system; vector -> Coordinates; stereoscopic_edge_sensors -> StereoscopicEdgeSensors; Coordinates -> StereoscopicEdgeSensors; lateral_edge_sensors -> LateralEdgeSensors; Coordinates -> LateralEdgeSensors; cuDoubleArray -> {LateralEdgeSensors; DistanceEdgeSensors;} AtmosphereAbstract[color=coral3]; atmosphere -> AtmosphereAbstract; Layer[color=lightskyblue3]; layer -> Layer -> AtmosphereAbstract; MaskAbstract[color=coral3] mask -> MaskAbstract; Complex_amplitude -> SegmentPistonSensor; Imaging -> {ShackHartmann; TT7;Pyramid;SegmentPistonSensor;} stopwatch -> StopWatch; gpu -> {cuFloatArray;cuIntArray;cuDoubleArray;} LMMSE -> {Lmmse;LmmseSH;} cuFloatArray -> {Imaging;Centroiding;Complex_amplitude;ShackHartmann; TT7;GeometricShackHartmann;SegmentPistonSensor;Layer;MaskAbstract;Lmmse;LmmseSH;AtmosphereAbstract;AaStats;PaStats;} cuFloatComplexArray -> BT2; edge[dir=back,arrowtail=normal]; AtmosphereAbstract -> Atmosphere; AtmosphereAbstract -> GmtAtmosphere -> JGmtAtmosphere; MaskAbstract -> Mask; MaskAbstract -> Telescope; MaskAbstract -> GMT; GmtMirrors -> GMT_MX; SegmentPistonSensor -> DispersedFringeSensor; Sensor -> GeometricTT7; LateralEdgeSensors -> DistanceEdgeSensors; Bundle -> {SourceBundle;FreeBundle} JSONAbstract[color=coral3]; JSONAbstract -> {JGmtAtmosphere;} Sensor[color=coral3]; Sensor -> {ShackHartmann; GeometricShackHartmann;TT7}; #{rank = source; mask;} #{rank = same; gpu; GMT_MX; Atmosphere;} #{rank = same; Source; ShackHartmann} #{rank=same; stopwatch; StopWatch;} {rank = same; cuFloatArray; cuDoubleArray; cuIntArray} {rank = sink; cuFloatArray; JSONAbstract;} rankdir=LR node [shape=plaintext] subgraph cluster_01 { #label = "Legend"; color = black; key [label=<
C++ structure embed
Cython class embed
Cython class inherit
>] key2 [label=<
 
 
 
>] key:i1:e -> key2:i1:w [style=solid,arrowtail=odot] key:i2:e -> key2:i2:w [style=dashed,arrowtail=odot] key:i3:e -> key2:i3:w [style=dashed] abc [shape=none,margin=0,label=<
rayTracing source gmtMirrors
atmosphere aaStats utilities
GMTLIB
>] } }