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 |
>]
}
}