Understanding XDSM diagrams
Contents
Understanding XDSM diagrams¶
Main takeaway¶
XDSM diagrams are a good tool for visualizing models, understanding solver loops, and specifying interfaces between models developed by more than one person.
from IPython.display import YouTubeVideo; YouTubeVideo('yutKRwIL3BA', width=1024, height=576)
Video transcript available on YouTube and here.
What is an XDSM?¶
XDSM stands for extensible design structure matrix, which comes from Lambe and Martins, 2012. It’s a standardized extension of a very common design structure matrix (DSM) idea, specifically made for multidisciplinary optimization.
Here is an extremely simple XDSM diagram.
In general for XDSMs, blocks on the diagonals are computed. In this simple case, that is the green analysis block. Variables in the off-diagonals are passed between those blocks and are connected with gray lines. In this case, x is an input to the green block, which outputs y via the function shown. This y value is then passed to the optimizer shown in light blue on the top left. Relative to a block, inputs are shown on vertical lines (like the x) and outputs are shown on horizontal lines (like y).
The standardization for XDSM designs (colors, block formatting, etc) has evolved over time. Some people follow a strict coloring scheme, others don’t. Some people will show just gray for data passing between blocks whereas others will show a thin black line between components that represents a “compute flow”, or the order of execution.
Making XDSMs¶
You absolutely should draw an XDSM of the model you’re making otherwise it will be challenging to understand what’s going on within your model. As your system expands, you can always add to the XDSM.
How XDSMs can be used in large projects¶
XDSMs are paramount to success for large collaborative projects. You can put down names of people who are working on specific analysis blocks to keep the team on track and up-to-date with who is working on what.
Additionally, XDSMs help define the inputs and outputs to each analysis block. This allows individual application developers know how to define their system and which variables to expose. Think of this as defining the puzzle piece edges when putting together a tough puzzle.
XDSMs in relation to the N2 diagram¶
The XDSM is inherently related to the N2 diagram that can be made in OpenMDAO. Usually the XDSM is higher level than the N2; it doesn’t show all the variables, only the most important ones.
“The [XDSM] hierarchy gives a much stronger visual of how process-flow should work. The N2 shows how the data connections exist between components” - Justin Gray, July 2022