diff --git a/.gitignore b/.gitignore
index 4cb29e4f039fdd6247cb014cf4b26685fc6ed574..13bbe5b9112f9828a4f0eae28e0eb34e5fdb58d1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,2 @@
-<<<<<<< HEAD
 .idea/
-=======
-.idea
->>>>>>> origin/WorkingBranch__Andreas
+
diff --git a/pyKADMOS/AGILE_EY01_DEMO.py b/pyKADMOS/AGILE_EY01_DEMO.py
index 0e40125c197ec78e13db3a911bf2b0fab9b1f004..db645bb7a867d4908f522189d407d34c11ec3a0a 100644
--- a/pyKADMOS/AGILE_EY01_DEMO.py
+++ b/pyKADMOS/AGILE_EY01_DEMO.py
@@ -13,7 +13,7 @@ fig_size_laptop = (13,6)
 fig_size_screen = (12,11)
 fig_size = fig_size_laptop
 
-demo_step = 8
+demo_step = 7
 
 '''
 DEMO STEPS
@@ -108,7 +108,7 @@ FPG.node['/data_schema/MDO_data/obj']['PSG role'] = 'objective'
 MDA_type = 'Gauss-Seidel'
 analysis_order = ['Q3D_LOAD','EMWET','MASS']
 
-PSG = exampleProblem.get_PSG_for_MDF(FPG, MDA_type, analysis_order)
+PSG = exampleProblem.get_PSG(FPG, 'MDF', analysis_order, MDA_type)
 
 file_name = 'AGILE_EY01_DEMO_small'
 create_XDSM(PSG,file_name)
@@ -176,7 +176,7 @@ else:
 MDA_type = 'Gauss-Seidel'
 analysis_order = ['Q3D_LOAD','EMWET','MASS','Q3D_PERF','MISSION','ACAERO','PHALANX','EMISSION']
 
-PSG2 = exampleProblem.get_PSG_for_MDF(FPG2, MDA_type, analysis_order)
+PSG2 = exampleProblem.get_PSG(FPG2, 'MDF', analysis_order, MDA_type)
 
 file_name2 = 'AGILE_EY01_DEMO_big'
 create_XDSM(PSG2,file_name2)
diff --git a/pyKADMOS/AGILE_EY01_DEMO_big.log b/pyKADMOS/AGILE_EY01_DEMO_big.log
index 52b74a294bbb8d629bc76932629cede175c5a51a..e176ed70064a99dc7b82faa098c28d7880c10539 100644
--- a/pyKADMOS/AGILE_EY01_DEMO_big.log
+++ b/pyKADMOS/AGILE_EY01_DEMO_big.log
@@ -1,4 +1,4 @@
-This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015) (preloaded format=pdflatex 2015.10.20)  6 JUL 2016 17:19
+This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015) (preloaded format=pdflatex 2015.10.20)  8 JUL 2016 14:09
 entering extended mode
  restricted \write18 enabled.
  %&-line parsing enabled.
@@ -635,10 +635,10 @@ Preview: Tightpage -327680 -327680 327680 327680
 [1{/usr/local/texlive/2015/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
 (./AGILE_EY01_DEMO_big.aux) ) 
 Here is how much of TeX's memory you used:
- 15004 strings out of 493089
- 309424 string characters out of 6134841
- 410332 words of memory out of 5000000
- 18205 multiletter control sequences out of 15000+600000
+ 15007 strings out of 493089
+ 309491 string characters out of 6134841
+ 411349 words of memory out of 5000000
+ 18208 multiletter control sequences out of 15000+600000
  5339 words of font info for 22 fonts, out of 8000000 for 9000
  1141 hyphenation exceptions out of 8191
  55i,17n,82p,439b,952s stack positions out of 5000i,500n,10000p,200000b,80000s
@@ -649,7 +649,7 @@ c/amsfonts/cm/cmr10.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/public/
 amsfonts/cm/cmr7.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/public/ams
 fonts/cm/cmsy10.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsf
 onts/cm/cmsy7.pfb>
-Output written on AGILE_EY01_DEMO_big.pdf (1 page, 70218 bytes).
+Output written on AGILE_EY01_DEMO_big.pdf (1 page, 70219 bytes).
 PDF statistics:
  59 PDF objects out of 1000 (max. 8388607)
  33 compressed objects within 1 object stream
diff --git a/pyKADMOS/AGILE_EY01_DEMO_big.pdf b/pyKADMOS/AGILE_EY01_DEMO_big.pdf
index cd177783ae21595594241826f91e6945df334612..69ac161f1abc7605ebfdeaa30c313a088cb7a4dd 100644
Binary files a/pyKADMOS/AGILE_EY01_DEMO_big.pdf and b/pyKADMOS/AGILE_EY01_DEMO_big.pdf differ
diff --git a/pyKADMOS/AGILE_EY01_DEMO_big.tex b/pyKADMOS/AGILE_EY01_DEMO_big.tex
index 0f4829870e82d9ed70ba4e96dab0972eda019ef1..4975a3fa2cbeecade4cd72fe5e13fe6738178164 100644
--- a/pyKADMOS/AGILE_EY01_DEMO_big.tex
+++ b/pyKADMOS/AGILE_EY01_DEMO_big.tex
@@ -16,7 +16,7 @@
   \matrix[MatrixSetup]
   {
     %Row 1
-    \node [Initiator] (Initiator) {$0,8$:\\INI}; &
+    \node [Initiator] (Initiator) {$0,14$:\\INI}; &
     \node [DataIO] (Optimizer-Initiator) {1: $range^0$\\\\[-10pt] $eng\_T^0$}; &
     \node [DataIO] (MDA-Initiator) {2: $C\_D^{c0}$\\\\[-10pt] $C\_L^{c0}$\\\\[-10pt] $m\_MTOW^{c0}$\\\\[-10pt] $flight\_data^{c0}$\\\\[-10pt] $m\_fuel^{c0}$}; &
     \node [DataIO] (Q3D_LOAD-Initiator) {3: $wing\_MAC$\\\\[-10pt] $wing\_AR$\\\\[-10pt] $wing\_span$}; &
@@ -30,7 +30,7 @@
     &
     &
     \\
-    \node [DataIO] (Initiator-Optimizer) {8: $eng\_T^*$\\\\[-10pt] $range^*$}; &
+    \node [DataIO] (Initiator-Optimizer) {14: $eng\_T^*$\\\\[-10pt] $range^*$}; &
     \node [Optimization] (Optimizer) {$1,13\to2$:\\OPT}; &
     &
     &
@@ -58,7 +58,7 @@
     &
     &
     \\
-    \node [DataIO] (Initiator-Q3D_LOAD) {8: $aero\_loads^*$}; &
+    \node [DataIO] (Initiator-Q3D_LOAD) {14: $aero\_loads^*$}; &
     &
     &
     \node [Analysis] (Q3D_LOAD) {$3$:\\Q3D\_LOAD}; &
@@ -72,7 +72,7 @@
     &
     &
     \\
-    \node [DataIO] (Initiator-EMWET) {8: $m\_wing^*$\\\\[-10pt] $max\_load\_fac^*$}; &
+    \node [DataIO] (Initiator-EMWET) {14: $m\_wing^*$\\\\[-10pt] $max\_load\_fac^*$}; &
     &
     &
     &
@@ -87,7 +87,7 @@
     &
     \node [DataInter] (CON_FD-EMWET) {12: $max\_load\_fac$}; \\
     %Row 6
-    \node [DataIO] (Initiator-MASS) {8: $m\_MTOW^*$\\\\[-10pt] $max\_load\_fac^*$\\\\[-10pt] $inertia\_MTOW^*$}; &
+    \node [DataIO] (Initiator-MASS) {14: $m\_MTOW^*$\\\\[-10pt] $max\_load\_fac^*$\\\\[-10pt] $inertia\_MTOW^*$}; &
     &
     \node [DataInter] (MDA-MASS) {11: $m\_MTOW$}; &
     &
@@ -102,7 +102,7 @@
     &
     \node [DataInter] (CON_FD-MASS) {12: $max\_load\_fac$}; \\
     %Row 7
-    \node [DataIO] (Initiator-Q3D_PERF) {8: $C\_D\_w^*$\\\\[-10pt] $C\_L\_w^*$}; &
+    \node [DataIO] (Initiator-Q3D_PERF) {14: $C\_D\_w^*$\\\\[-10pt] $C\_L\_w^*$}; &
     &
     &
     &
@@ -116,7 +116,7 @@
     &
     &
     \\
-    \node [DataIO] (Initiator-MISSION) {8: $flight\_data^*$\\\\[-10pt] $m\_fuel^*$}; &
+    \node [DataIO] (Initiator-MISSION) {14: $flight\_data^*$\\\\[-10pt] $m\_fuel^*$}; &
     &
     \node [DataInter] (MDA-MISSION) {11: $flight\_data$\\\\[-10pt] $m\_fuel$}; &
     &
@@ -130,7 +130,7 @@
     &
     &
     \\
-    \node [DataIO] (Initiator-ACAERO) {8: $C\_L^*$\\\\[-10pt] $cntrl\_der^*$\\\\[-10pt] $C\_D^*$}; &
+    \node [DataIO] (Initiator-ACAERO) {14: $C\_L^*$\\\\[-10pt] $cntrl\_der^*$\\\\[-10pt] $C\_D^*$}; &
     &
     \node [DataInter] (MDA-ACAERO) {11: $C\_L$\\\\[-10pt] $C\_D$}; &
     &
@@ -144,7 +144,7 @@
     &
     &
     \\
-    \node [DataIO] (Initiator-PHALANX) {8: $char\_OEI^*$\\\\[-10pt] $max\_load\_fac^*$}; &
+    \node [DataIO] (Initiator-PHALANX) {14: $char\_OEI^*$\\\\[-10pt] $max\_load\_fac^*$}; &
     &
     &
     &
@@ -159,7 +159,7 @@
     &
     \node [DataInter] (CON_FD-PHALANX) {12: $char\_OEI$\\\\[-10pt] $max\_load\_fac$}; \\
     %Row 11
-    \node [DataIO] (Initiator-EMISSION) {8: $em\_CO2^*$\\\\[-10pt] $em\_NOX^*$}; &
+    \node [DataIO] (Initiator-EMISSION) {14: $em\_CO2^*$\\\\[-10pt] $em\_NOX^*$}; &
     &
     &
     &
diff --git a/pyKADMOS/AGILE_EY01_DEMO_small.log b/pyKADMOS/AGILE_EY01_DEMO_small.log
index a8c20f54d82350c4058710b3ccff2fb8b1c79183..e64dcc1ebe87420a40c837e6cfc3c689d56d99fd 100644
--- a/pyKADMOS/AGILE_EY01_DEMO_small.log
+++ b/pyKADMOS/AGILE_EY01_DEMO_small.log
@@ -1,4 +1,4 @@
-This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015) (preloaded format=pdflatex 2015.10.20)  6 JUL 2016 17:19
+This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015) (preloaded format=pdflatex 2015.10.20)  8 JUL 2016 14:09
 entering extended mode
  restricted \write18 enabled.
  %&-line parsing enabled.
@@ -649,7 +649,7 @@ lic/amsfonts/cm/cmr10.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/publi
 c/amsfonts/cm/cmr7.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/public/a
 msfonts/cm/cmsy10.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/public/am
 sfonts/cm/cmsy7.pfb>
-Output written on AGILE_EY01_DEMO_small.pdf (1 page, 63182 bytes).
+Output written on AGILE_EY01_DEMO_small.pdf (1 page, 63422 bytes).
 PDF statistics:
  59 PDF objects out of 1000 (max. 8388607)
  33 compressed objects within 1 object stream
diff --git a/pyKADMOS/AGILE_EY01_DEMO_small.pdf b/pyKADMOS/AGILE_EY01_DEMO_small.pdf
index 4b07bfa8d7674965c643e092f52896c90e1a2385..4a167184b56d187c749f3948b47da7e8812afccd 100644
Binary files a/pyKADMOS/AGILE_EY01_DEMO_small.pdf and b/pyKADMOS/AGILE_EY01_DEMO_small.pdf differ
diff --git a/pyKADMOS/AGILE_EY01_DEMO_small.tex b/pyKADMOS/AGILE_EY01_DEMO_small.tex
index 593f3b696432a24a88221480f6f032ffb94fd7d1..2c4039c723cde66fe7afa673a93acb8abae6c113 100644
--- a/pyKADMOS/AGILE_EY01_DEMO_small.tex
+++ b/pyKADMOS/AGILE_EY01_DEMO_small.tex
@@ -16,7 +16,7 @@
   \matrix[MatrixSetup]
   {
     %Row 1
-    \node [Initiator] (Initiator) {$0,7$:\\INI}; &
+    \node [Initiator] (Initiator) {$0,9$:\\INI}; &
     \node [DataIO] (Optimizer-Initiator) {1: $wing\_MAC^0$\\\\[-10pt] $wing\_span^0$}; &
     \node [DataIO] (MDA-Initiator) {2: $m\_MTOW^{c0}$}; &
     \node [DataIO] (Q3D_LOAD-Initiator) {3: $flight\_data$\\\\[-10pt] $wing\_AR$}; &
@@ -25,7 +25,7 @@
     &
     \node [DataIO] (Q3D_PERF-Initiator) {7: $flight\_data$\\\\[-10pt] $wing\_AR$}; \\
     %Row 2
-    \node [DataIO] (Initiator-Optimizer) {7: $wing\_MAC^*$\\\\[-10pt] $wing\_span^*$}; &
+    \node [DataIO] (Initiator-Optimizer) {9: $wing\_MAC^*$\\\\[-10pt] $wing\_span^*$}; &
     \node [Optimization] (Optimizer) {$1,8\to2$:\\OPT}; &
     &
     \node [DataInter] (Q3D_LOAD-Optimizer) {3: $wing\_MAC$\\\\[-10pt] $wing\_span$}; &
@@ -42,7 +42,7 @@
     &
     &
     \\
-    \node [DataIO] (Initiator-Q3D_LOAD) {7: $aero\_loads^*$}; &
+    \node [DataIO] (Initiator-Q3D_LOAD) {9: $aero\_loads^*$}; &
     &
     &
     \node [Analysis] (Q3D_LOAD) {$3$:\\Q3D\_LOAD}; &
@@ -50,7 +50,7 @@
     &
     &
     \\
-    \node [DataIO] (Initiator-EMWET) {7: $m\_wing^*$}; &
+    \node [DataIO] (Initiator-EMWET) {9: $m\_wing^*$}; &
     &
     &
     &
@@ -58,7 +58,7 @@
     \node [DataInter] (MASS-EMWET) {5: $m\_wing$}; &
     &
     \\
-    \node [DataIO] (Initiator-MASS) {7: $m\_MTOW^*$}; &
+    \node [DataIO] (Initiator-MASS) {9: $m\_MTOW^*$}; &
     &
     \node [DataInter] (MDA-MASS) {6: $m\_MTOW$}; &
     &
diff --git a/pyKADMOS/CPACSdummyProblem.py b/pyKADMOS/CPACSdummyProblem.py
index bb329fe4c5759da9a88f77da81cd8d8c18af3906..ea32997d85bd1f2dc661ef29bbbd5837a6b2f068 100644
--- a/pyKADMOS/CPACSdummyProblem.py
+++ b/pyKADMOS/CPACSdummyProblem.py
@@ -136,7 +136,7 @@ FPG.node['/data_schema/MDO_data/obj']['PSG role'] = 'objective'
 MDA_type = 'Gauss-Seidel'
 analysis_order = ['Q3D_LOAD','EMWET','MASS','Q3D_PERF','MISSION','ACAERO','PHALANX','EMISSION']
 
-PSG = exampleProblem.get_PSG_for_MDF(FPG, MDA_type, analysis_order)
+PSG = exampleProblem.get_PSG(FPG, MDA_type, analysis_order)
 
 plot_graph(PSG['process flow'], 10, color_setting='default', fig_size=fig_size, show_now=False)
 plot_graph(PSG['data flow'], 11, color_setting='default', fig_size=fig_size, show_now=False)
diff --git a/pyKADMOS/MDOproblem.py b/pyKADMOS/MDOproblem.py
index 584577ae9c22b4bbfe798d946c172d2157d30a0e..a57bde4984dc6abe326a2e51d615e46fd74c85ec 100644
--- a/pyKADMOS/MDOproblem.py
+++ b/pyKADMOS/MDOproblem.py
@@ -4,9 +4,10 @@ import pprint
 from os.path import join, isfile
 import metis
 import networkx as nx
+import sys
 from lxml import etree
 from pyKADMOS import MDOvisualization
-from pyKADMOS.MDOstatic import find_all_nodes
+from pyKADMOS.MDOstatic import find_all_nodes, print_graph
 import re
 
 
@@ -779,12 +780,14 @@ class MDOproblem:
             i += 1
         return G_out
 
-    def get_PSG_for_MDF(self, FPG, MDA_type, analysis_order):
+    def get_PSG(self, FPG, MDO_architecture, analysis_order, MDA_type=None):
         """
         Create the PSG graph for the MDF method.
 
         :param FPG: fundamental problem graph with required node properties
         :type FPG: DiGraph
+        :param MDO_architecture: MDO architecture to be used to wrap around the problem (MDF, IDF)
+        :type MDO_architecture: str
         :param MDA_type: type of multidisciplinary analysis to be implemented ('Gauss-Seidel' or 'Jacobi')
         :type MDA_type: str
         :param analysis_order: list with the order of the analyses in the MDA
@@ -800,6 +803,10 @@ class MDOproblem:
         # Find all function nodes
         function_nodes = set(find_all_nodes(FPG, attr_cond=['category', '==', 'function']))
 
+        # Assert MDO architecture input
+        assert set([MDO_architecture]).intersection(['MDF', 'IDF']), \
+            "Invalid MDA type ('%s') specified." % MDA_type
+
         # Select design variables, parameters, constraint and objective functions
         des_var_nodes = find_all_nodes(FPG, attr_cond=['PSG role', '==', 'design variable'])
         assert len(des_var_nodes) > 0, "No design variables are specified. Use the 'PSG role' attribute for this."
@@ -808,7 +815,6 @@ class MDOproblem:
         constraint_nodes = find_all_nodes(FPG, attr_cond=['PSG role', '==', 'constraint'])
         assert len(
             constraint_nodes) > 0, "No constraint variables are specified. Use the 'PSG role' attribute for this."
-
         objective_node = find_all_nodes(FPG, attr_cond=['PSG role', '==', 'objective'])
         assert len(objective_node) == 1, "%d design variables are specified. Only one objective node is allowed." \
                                          "Use the 'PSG role' attribute for this." % len(objective_node)
@@ -825,6 +831,11 @@ class MDOproblem:
                 constraint_functions.append(FPG.in_edges(node)[0][0])
         optimizer_functions = [objective_function] + constraint_functions
 
+        # Add constraint function for consistency constraints
+        if MDO_architecture == 'IDF':
+            constraint_functions.append('Gc')
+            optimizer_functions.append('Gc')
+
         # Select analysis order functions
         for node in analysis_order:
             assert set([node]).intersection(function_nodes), \
@@ -838,38 +849,67 @@ class MDOproblem:
             "There are undefined functions present in the FPG, namely %s! These should be added to the analysis order" \
             " or become objective/constraints functions." % MDA_analysis_nodes.difference(set(analysis_order))
 
+        # Assert the MDA type and determine the amount of separate MDA steps (based on MDA type)
+        if MDO_architecture == 'MDF':
+            assert set([MDA_type]).intersection(['Gauss-Seidel','Jacobi']), \
+                "Invalid MDA type ('%s') specified." % MDA_type
+            if MDA_type == 'Gauss-Seidel':
+                MDA_steps = len(analysis_order)
+            elif MDA_type == 'Jacobi':
+                MDA_steps = 1
+        elif MDO_architecture == 'IDF':
+            assert MDA_type is None, \
+                "Invalid MDA type ('%s') specified for IDF. MDA_type should be unspecified or None." % MDA_type
+            MDA_steps = 0
+
+        # Set the amount of start blocks before the first disciplinary analysis
+        # (used for block positioning and process step determination)
+        if MDO_architecture == 'MDF':
+            n_start_blocks = 3 # INI + OPT + MDA
+        elif MDO_architecture == 'IDF':
+            n_start_blocks = 2 # INI + OPT
+
         #------------------#
         # PSG process flow #
         #------------------#
         # Set up PSG process graph
         PSG_process = nx.DiGraph()
-        PSG_process.graph['architecture'] = 'MDF'
-        PSG_process.graph['number_of_diagonal_blocks'] = 3 + len(analysis_order) + 1 + len(constraint_functions)
+        PSG_process.graph['architecture'] = MDO_architecture
+        PSG_process.graph['number_of_diagonal_blocks'] = n_start_blocks+len(analysis_order)+1+len(constraint_functions)
         PSG_process.graph['number_of_MDA_analyses'] = len(analysis_order)
         PSG_process.graph['number_of_OPT_functions'] = 1 + len(constraint_functions)
 
-        # Add MDA block
-        PSG_process.add_node('MDA',
-                             category='architecture element',
-                             subcategory='MDA',
-                             shape='8',
-                             label='MDA',
-                             level=None,
-                             diagonal_position=2,
-                             process_step=2,
-                             converger_step=3+len(analysis_order))
-
-        # Connect MDA + analyses
-        if MDA_type == 'Gauss-Seidel':
-            from_node = 'MDA'
-            for idx, node in enumerate(analysis_order):
-                PSG_process.add_node(node,FPG.node[node],diagonal_position=3+idx)
-                PSG_process.node[node]['category'] = 'architecture element'
-                PSG_process.node[node]['subcategory'] = 'MDA analysis'
-                PSG_process.node[node]['process_step'] = idx+3
-                PSG_process.add_edge(from_node, node, process_step=idx+3)
-                from_node = node
-            PSG_process.add_edge(from_node,'MDA',process_step=idx+4)
+        if MDO_architecture == 'MDF':
+            # Add MDA block
+            PSG_process.add_node('MDA',
+                                 category='architecture element',
+                                 subcategory='MDA',
+                                 shape='8',
+                                 label='MDA',
+                                 level=None,
+                                 diagonal_position=2,
+                                 process_step=2,
+                                 converger_step=n_start_blocks+MDA_steps)
+
+            # Connect MDA + analyses
+            if MDA_type == 'Gauss-Seidel':
+                from_node = 'MDA'
+                for idx, node in enumerate(analysis_order):
+                    PSG_process.add_node(node,FPG.node[node],diagonal_position=n_start_blocks+idx)
+                    PSG_process.node[node]['category'] = 'architecture element'
+                    PSG_process.node[node]['subcategory'] = 'MDA analysis'
+                    PSG_process.node[node]['process_step'] = idx+n_start_blocks
+                    PSG_process.add_edge(from_node, node, process_step=idx+n_start_blocks)
+                    from_node = node
+                PSG_process.add_edge(from_node,'MDA',process_step=idx+n_start_blocks+1)
+            elif MDA_type == 'Jacobi':
+                for idx, node in enumerate(analysis_order):
+                    PSG_process.add_node(node, FPG.node[node], diagonal_position=n_start_blocks + idx)
+                    PSG_process.node[node]['category'] = 'architecture element'
+                    PSG_process.node[node]['subcategory'] = 'MDA analysis'
+                    PSG_process.node[node]['process_step'] = n_start_blocks
+                    PSG_process.add_edge('MDA', node, process_step= n_start_blocks)
+                    PSG_process.add_edge(node, 'MDA', process_step= n_start_blocks+1)
 
         # Add optimization block
         PSG_process.add_node('Optimizer',
@@ -880,19 +920,58 @@ class MDOproblem:
                              level=None,
                              diagonal_position=1,
                              process_step=1,
-                             converger_step=3+len(analysis_order)+2)
+                             converger_step=n_start_blocks+MDA_steps+2)
 
-        # Connect optimization with MDA
-        PSG_process.add_edge('Optimizer', 'MDA', process_step=2)
+        if MDO_architecture == 'MDF':
+            # Connect optimization with MDA
+            PSG_process.add_edge('Optimizer', 'MDA', process_step=2)
+        elif MDO_architecture == 'IDF':
+            # Connect optimization with disciplinary analyses
+            for idx, node in enumerate(analysis_order):
+                PSG_process.add_node(node, FPG.node[node], diagonal_position=n_start_blocks + idx)
+                PSG_process.node[node]['category'] = 'architecture element'
+                PSG_process.node[node]['subcategory'] = 'MDA analysis'
+                PSG_process.node[node]['process_step'] = n_start_blocks
+                PSG_process.add_edge('Optimizer', node, process_step=n_start_blocks)
 
-        # Connect MDA with functions and functions with optimizer
+        # Connect start section (MDA or optimizer) with functions and functions with optimizer
+        Gc_all_in_nodes = []
         for idx, node in enumerate(optimizer_functions):
-            PSG_process.add_node(node, FPG.node[node],diagonal_position=3+len(analysis_order)+idx)
+            if node == 'Gc':
+                node_data = {'label':'Gc','execution time':1,'weight': 10, 'level': None, 'shape' : '8'}
+                # TODO: ADJUST AND RECONSIDER THE COPYING OF FPG ATTRIBUTES
+            else:
+                node_data = FPG.node[node]
+            PSG_process.add_node(node, node_data,diagonal_position=n_start_blocks+len(analysis_order)+idx)
             PSG_process.node[node]['category'] = 'architecture element'
             PSG_process.node[node]['subcategory'] = 'optimizer function'
-            PSG_process.node[node]['process_step'] = 4+len(analysis_order)
-            PSG_process.add_edge('MDA',node, process_step=4+len(analysis_order))
-            PSG_process.add_edge(node,'Optimizer', process_step=5+len(analysis_order))
+            PSG_process.node[node]['process_step'] = n_start_blocks+1+MDA_steps
+            if MDO_architecture == 'MDF':
+                PSG_process.add_edge('MDA', node, process_step=n_start_blocks+1+MDA_steps)
+            elif MDO_architecture == 'IDF':
+                # Get all the disciplinary analyses that are coupled as incoming edges to the node
+                opt_func_in_nodes = map((lambda x: x[0]), FPG.in_edges(node))
+                ana_func_out_nodes = [map((lambda x: x[1]), FPG.out_edges(item)) for item in analysis_order]
+                
+                for idx2,item in enumerate(analysis_order):
+                    # Determine the coupled node(s) between the blocks
+                    coupled_nodes = set(opt_func_in_nodes).intersection(set(ana_func_out_nodes[idx2]))
+                    # Make process edge if there is a coupled node between the blocks
+                    if coupled_nodes:
+                        PSG_process.add_edge(item, node, process_step=n_start_blocks + 1)
+
+                    if node == 'Gc':
+                        # Determine if the disciplinary analysis has coupling variables and, if so, then connect the
+                        # disciplinary analysis to the consistency constraint block
+                        coupling_nodes = find_all_nodes(FPG, category='variable', subcategory='all couplings')
+                        analysis_out_edges = map((lambda x: x[1]), FPG.out_edges(item))
+                        Gc_in_nodes = list(set(coupling_nodes).intersection(set(analysis_out_edges)))
+                        Gc_all_in_nodes = Gc_all_in_nodes+Gc_in_nodes
+                        if Gc_in_nodes:
+                            PSG_process.add_edge(item,node,process_step=n_start_blocks + 1 + MDA_steps)
+
+                # Add edge between optimizer function and Optimizer
+                PSG_process.add_edge(node, 'Optimizer', process_step=n_start_blocks + 1 + MDA_steps + 1)
 
         # Add Initiator block
         PSG_process.add_node('Initiator',
@@ -903,29 +982,31 @@ class MDOproblem:
                              level=None,
                              diagonal_position=0,
                              process_step = 0,
-                             converger_step = 6+len(constraint_functions))
+                             converger_step = n_start_blocks+3+MDA_steps)
+
         # Connect initiator with optimizer
         PSG_process.add_edge('Initiator', 'Optimizer', process_step=1)
-        PSG_process.add_edge('Optimizer', 'Initiator', process_step=6+len(constraint_functions))
+        PSG_process.add_edge('Optimizer', 'Initiator', process_step=n_start_blocks+3+MDA_steps)
 
         # ------------------#
         #   PSG data flow   #
         # ------------------#
         # Set up PSG process graph
         PSG_data = nx.compose(nx.DiGraph(),FPG)
-        PSG_data.graph['architecture'] = 'MDF'
-        PSG_data.graph['number_of_diagonal_blocks'] = 2 + len(analysis_order) + 1 + len(constraint_functions)
+        PSG_data.graph['architecture'] = MDO_architecture
+        PSG_data.graph['number_of_diagonal_blocks'] = n_start_blocks+len(analysis_order) + 1 + len(constraint_functions)
         PSG_data.graph['number_of_MDA_analyses'] = len(analysis_order)
         PSG_data.graph['number_of_OPT_functions'] = 1 + len(constraint_functions)
 
-        # Add MDA block
-        PSG_data.add_node('MDA',
-                          category='architecture element',
-                          subcategory='MDA',
-                          shape='8',
-                          label='MDA',
-                          level=None,
-                          diagonal_position=2)
+        if MDO_architecture == 'MDF':
+            # Add MDA block
+            PSG_data.add_node('MDA',
+                              category='architecture element',
+                              subcategory='MDA',
+                              shape='8',
+                              label='MDA',
+                              level=None,
+                              diagonal_position=2)
 
         # Add Initiator block
         PSG_data.add_node('Initiator',
@@ -937,63 +1018,74 @@ class MDOproblem:
                              diagonal_position=0)
 
         # Loop over MDA analyses, add copy variables and adjust edges
-        if MDA_type == 'Gauss-Seidel':
-            for idx, analysis in enumerate(analysis_order):
-                PSG_data.node[analysis]['category'] = 'architecture element'
-                PSG_data.node[analysis]['subcategory'] = 'MDA analysis'
-                PSG_data.node[analysis]['diagonal_position'] = 3+idx
-
-                # Check incoming edges
-                in_edges = FPG.in_edges(analysis)
-                for edge in in_edges:
-                    # Check if edge is an input
-                    in_node = edge[0]
-                    if not set([in_node]).intersection(set(find_all_nodes(FPG,subcategory='all inputs'))):
-                        if set([in_node]).intersection(set(find_all_nodes(FPG, subcategory='all problematic nodes'))):
-                            raise IOError("A problematic node is still present in the FPG.")
-                        elif set([in_node]).intersection(set(find_all_nodes(FPG, subcategory='all couplings'))):
-                            # Check if the node is coupled to a future analysis
-                            coupled_functions = map((lambda x: x[0]), FPG.in_edges(in_node))
-                            if set(coupled_functions).intersection(set(analysis_order[idx:])):
-                                # Add variable copy node between MDA and function
-                                new_node = '/PSG/coupling_variables/MDA/' + FPG.node[in_node]['label'] + str('^c')
-                                PSG_data.add_node(new_node,
-                                                  category='architecture element',
-                                                  subcategory='MDA coupling variable',
-                                                  shape='o',
-                                                  label=FPG.node[in_node]['label'] + '^c',
-                                                  level=3)
-                                PSG_data.add_edge('MDA',new_node)
-                                PSG_data.add_edge(new_node, analysis)
-                                PSG_data.remove_edge(in_node,edge[1])
-                                # Add edge between the coupling variable and the MDA
-                                PSG_data.add_edge(in_node,'MDA')
-                                # Add initial guess MDA coupling variable
-                                new_node = '/PSG/coupling_variables/MDA/' + FPG.node[in_node]['label'] + str('^{c0}')
-                                PSG_data.add_node(new_node,
-                                                  category='architecture element',
-                                                  subcategory='initial guess MDA coupling variable',
-                                                  shape='o',
-                                                  label=FPG.node[in_node]['label'] + '^{c0}',
-                                                  level=3)
-                                PSG_data.add_edge(new_node, 'MDA')
-                                PSG_data.add_edge('Initiator', new_node)
-                # Check outcoming edges
-                out_edges = FPG.out_edges(analysis)
-                for edge in out_edges:
-                    # Check if edge is a coupling variable
-                    out_node = edge[1]
-                    if set([out_node]).intersection(set(find_all_nodes(FPG, subcategory='all couplings'))):
-                        # Add final coupling variable node and connect to analysis function and initiator
-                        new_node = '/PSG/coupling_variables/MDA/' + FPG.node[out_node]['label'] + str('^*')
-                        PSG_data.add_node(new_node,
-                                          category='architecture element',
-                                          subcategory='final MDA coupling variable',
-                                          shape='o',
-                                          label=FPG.node[out_node]['label'] + '^*',
-                                          level=3)
-                        PSG_data.add_edge(analysis,new_node)
-                        PSG_data.add_edge(new_node,'Initiator')
+        for idx, analysis in enumerate(analysis_order):
+            PSG_data.node[analysis]['category'] = 'architecture element'
+            PSG_data.node[analysis]['subcategory'] = 'MDA analysis'
+            PSG_data.node[analysis]['diagonal_position'] = n_start_blocks+idx
+
+            # Check incoming edges
+            in_edges = FPG.in_edges(analysis)
+            for edge in in_edges:
+                # Check if edge is an input
+                in_node = edge[0]
+                if not set([in_node]).intersection(set(find_all_nodes(FPG,subcategory='all inputs'))):
+                    if set([in_node]).intersection(set(find_all_nodes(FPG, subcategory='all problematic nodes'))):
+                        raise IOError("A problematic node is still present in the FPG.")
+                    elif set([in_node]).intersection(set(find_all_nodes(FPG, subcategory='all couplings'))):
+                        # Check if the node is coupled to a any critical analyses
+                        if MDA_type == 'Gauss-Seidel': # For Gauss-Seidel, only check for future analyses
+                            analysis_checklist = analysis_order[idx:]
+                        elif MDA_type == 'Jacobi' or MDO_architecture == 'IDF': # For Jacobi and IDF, check for all
+                                                                                # analyses in the MDA
+                            analysis_checklist = analysis_order
+                        # Set the node to which copy variables should be linked
+                        if MDO_architecture == 'MDF':
+                            copy_var_block = 'MDA'
+                        elif MDO_architecture == 'IDF':
+                            copy_var_block = 'Optimizer'
+                        # Get all the functions that are coupled as incoming edges to the node
+                        coupled_functions = map((lambda x: x[0]), FPG.in_edges(in_node))
+                        if set(coupled_functions).intersection(set(analysis_checklist)):
+                            # Add variable copy node between MDA and function
+                            new_node = '/PSG/coupling_variables/MDA/' + FPG.node[in_node]['label'] + str('^c')
+                            PSG_data.add_node(new_node,
+                                              category='architecture element',
+                                              subcategory='MDA coupling variable',
+                                              shape='o',
+                                              label=FPG.node[in_node]['label'] + '^c',
+                                              level=3)
+                            PSG_data.add_edge(copy_var_block,new_node)
+                            PSG_data.add_edge(new_node, analysis)
+                            PSG_data.remove_edge(in_node,edge[1])
+                            # Add edge between the coupling variable and the MDA if architecture is MDF
+                            if MDO_architecture == 'MDF':
+                                PSG_data.add_edge(in_node,copy_var_block)
+                            # Add initial guess MDA coupling variable
+                            new_node = '/PSG/coupling_variables/MDA/' + FPG.node[in_node]['label'] + str('^{c0}')
+                            PSG_data.add_node(new_node,
+                                              category='architecture element',
+                                              subcategory='initial guess MDA coupling variable',
+                                              shape='o',
+                                              label=FPG.node[in_node]['label'] + '^{c0}',
+                                              level=3)
+                            PSG_data.add_edge(new_node, copy_var_block)
+                            PSG_data.add_edge('Initiator', new_node)
+            # Check outcoming edges
+            out_edges = FPG.out_edges(analysis)
+            for edge in out_edges:
+                # Check if edge is a coupling variable
+                out_node = edge[1]
+                if set([out_node]).intersection(set(find_all_nodes(FPG, subcategory='all couplings'))):
+                    # Add final coupling variable node and connect to analysis function and initiator
+                    new_node = '/PSG/coupling_variables/MDA/' + FPG.node[out_node]['label'] + str('^*')
+                    PSG_data.add_node(new_node,
+                                      category='architecture element',
+                                      subcategory='final MDA coupling variable',
+                                      shape='o',
+                                      label=FPG.node[out_node]['label'] + '^*',
+                                      level=3)
+                    PSG_data.add_edge(analysis,new_node)
+                    PSG_data.add_edge(new_node,'Initiator')
 
         # Recategorize design variables and connect to optimizer and initiator
         # Add optimization block
@@ -1036,9 +1128,33 @@ class MDOproblem:
             # Connect parameter node to initiator
             PSG_data.add_edge('Initiator', node)
 
+        # For IDF, add the consistency constraint calculation block and create the necessary connections
+        if MDO_architecture == 'IDF':
+            node_data = {'label': 'Gc', 'level': None, 'category' : 'architecture element',
+                                                                    'subcategory' : 'optimizer function', 'shape' : '8'}
+            PSG_data.add_node('Gc', node_data, diagonal_position=n_start_blocks + len(analysis_order) +
+                                                                    len(optimizer_functions)-1)
+            PSG_data.node[node]['category'] = 'architecture element'
+            PSG_data.node[node]['subcategory'] = 'optimizer function'
+
+            for node in Gc_all_in_nodes:
+                # Connect the coupling node to the consistency constraint function
+                PSG_data.add_edge(node,'Gc')
+                # Add variable node for each consistency constraint value
+                new_node = '/PSG/coupling_variables/consistency_constraint/'+str('g_')+PSG_data.node[node]['label']+'^c'
+                PSG_data.add_node(new_node,
+                                  category='architecture element',
+                                  subcategory='consistency constraint value',
+                                  shape='o',
+                                  label=str('g_')+PSG_data.node[node]['label'] + '^c',
+                                  level=3)
+                # Add edge between new nodes
+                PSG_data.add_edge('Gc',new_node)
+                PSG_data.add_edge(new_node,'Optimizer')
+
         # Adjust and connect optimizer functions output to optimizer
         for idx, node in enumerate(optimizer_functions):
-            PSG_data.node[node]['diagonal_position']= 3 + len(analysis_order) + idx
+            PSG_data.node[node]['diagonal_position']= n_start_blocks + len(analysis_order) + idx
             PSG_data.node[node]['category'] = 'architecture element'
             PSG_data.node[node]['subcategory'] = 'optimizer function'
         for node in optimizer_nodes_in:
diff --git a/pyKADMOS/MDOproblem.pyc b/pyKADMOS/MDOproblem.pyc
index d492bca0d1054f80b496480157ed0c4439f7e391..e78169404accfd510b74d2f7365409a0e82a817b 100644
Binary files a/pyKADMOS/MDOproblem.pyc and b/pyKADMOS/MDOproblem.pyc differ
diff --git a/pyKADMOS/MDOstatic.py b/pyKADMOS/MDOstatic.py
index e41cc6edb29bc29e60270f0471f432e95807367a..2609c16e07cfd82f7ad808ccb0df80afa9e9a791 100644
--- a/pyKADMOS/MDOstatic.py
+++ b/pyKADMOS/MDOstatic.py
@@ -4,6 +4,7 @@ Collection of static functions
 import pprint
 
 import networkx as nx
+import sys
 
 
 def get_graph_nodes_indegree(graph):
@@ -150,24 +151,24 @@ def get_categorized_nodes(graph, print_in_log=True):
     graph = add_nodes_subcategory(graph)
     # Write keywords in plural by adding an 's' at the end
     result = {'variable': {'hole': [],
-                            'supplied input': [],
-                            'supplied shared input': [],
-                            'output': [],
-                            'collision': [],
-                            'coupling': [],
-                            'shared coupling': [],
-                            'collided coupling': [],
-                            'collided shared coupling': []},
+                           'supplied input': [],
+                           'supplied shared input': [],
+                           'output': [],
+                           'collision': [],
+                           'coupling': [],
+                           'shared coupling': [],
+                           'collided coupling': [],
+                           'collided shared coupling': []},
               'variable group': {'hole group': [],
-                                  'supplied input group': [],
-                                  'supplied shared input group': [],
-                                  'output group': [],
-                                  'coupling group': [],
-                                  'shared coupling group': []},
+                                 'supplied input group': [],
+                                 'supplied shared input group': [],
+                                 'output group': [],
+                                 'coupling group': [],
+                                 'shared coupling group': []},
               'function': {'hole': [],
-                            'inputless': [],
-                            'outputless': [],
-                            'complete': []},
+                           'inputless': [],
+                           'outputless': [],
+                           'complete': []},
               'architecture element': {'initiator': [],
                                        'optimizer': [],
                                        'MDA': [],
@@ -177,7 +178,8 @@ def get_categorized_nodes(graph, print_in_log=True):
                                        'final design variable': [],
                                        'MDA coupling variable': [],
                                        'initial guess MDA coupling variable': [],
-                                       'final MDA coupling variable': []}}
+                                       'final MDA coupling variable': [],
+                                       'consistency constraint value':[]}}
 
     for node, data in graph.nodes_iter(data=True):
         for key1 in result:
@@ -263,6 +265,7 @@ def find_all_nodes(graph, category='all', subcategory='all', attr_cond=None, pri
         * MDA coupling variable
         * initial guess MDA coupling variable
         * final MDA coupling variable
+        * consistency constraint value
 
     Example usage:
     Just get all nodes of a graph in a list:
@@ -288,7 +291,7 @@ def find_all_nodes(graph, category='all', subcategory='all', attr_cond=None, pri
                               'shared coupling group','hole','inputless','outputless','complete','initiator',
                               'optimizer','MDA','optimizer function','MDA analysis','initial guess design variable',
                               'final design variable','MDA coupling variable','initial guess MDA coupling variable',
-                              'final MDA coupling variable']
+                              'final MDA coupling variable','consistency constraint value']
     assert isinstance(graph,type(nx.DiGraph()))
     assert isinstance(category, str)
     assert isinstance(subcategory, str)
@@ -463,3 +466,39 @@ def get_adjacency_matrix(graph, print_in_log=True):
 
     return {'dict of dicts': nx.convert.to_dict_of_dicts(graph, edge_data=1),
             'SciPy sparse matrix': nx.adjacency_matrix(graph)}
+
+
+def print_graph(graph,exit_after_print=False):
+    """
+    Function to print the full graph in the log.
+
+    :param graph: NetworkX graph
+    :type graph: graph
+    :param exit_after_print: Boolean on whether to exit after printing
+    :type exit_after_print: bool
+    :return: print in log
+    :rtype: print
+    """
+
+    print '- - - - - - - - - - - - - -'
+    print '\n     GRAPH PRINT-OUT \n'
+    print '- - - - - - - - - - - - - -'
+    print 'GRAPH ATTRIBUTES\n----------------'
+    print graph.graph
+
+    print '\nNODES\n-----'
+
+    for node, data in graph.nodes_iter(data=True):
+        print node
+        print data
+        print '- - -'
+
+    print '\nEDGES\n-----'
+    for edge in graph.edges_iter(data=True):
+        print edge[0]
+        print edge[1]
+        print edge[2]
+        print '- - -'
+
+    if exit_after_print:
+        sys.exit()
\ No newline at end of file
diff --git a/pyKADMOS/MDOstatic.pyc b/pyKADMOS/MDOstatic.pyc
index f462c24690455ba175006ad2fc55371f4563db76..69bf39038064d85126352471ec719cbdf9962a7b 100644
Binary files a/pyKADMOS/MDOstatic.pyc and b/pyKADMOS/MDOstatic.pyc differ
diff --git a/pyKADMOS/doc/KADMOS.html b/pyKADMOS/doc/KADMOS.html
index 2e90c70135a0c4c71c730dc64b418e5d8214e461..912de3d25c08395e4bbfd0a8b837940bb3f94248 100644
--- a/pyKADMOS/doc/KADMOS.html
+++ b/pyKADMOS/doc/KADMOS.html
@@ -165,7 +165,7 @@ dictionary with the nodes that have a value.</p>
 
 <dl class="method">
 <dt id="pyKADMOS.MDOproblem.MDOproblem.get_PSG_for_MDF">
-<code class="descname">get_PSG_for_MDF</code><span class="sig-paren">(</span><em>FPG</em>, <em>MDA_type</em>, <em>analysis_order</em><span class="sig-paren">)</span><a class="headerlink" href="#pyKADMOS.MDOproblem.MDOproblem.get_PSG_for_MDF" title="Permalink to this definition">¶</a></dt>
+<code class="descname">get_PSG</code><span class="sig-paren">(</span><em>FPG</em>, <em>MDA_type</em>, <em>analysis_order</em><span class="sig-paren">)</span><a class="headerlink" href="#pyKADMOS.MDOproblem.MDOproblem.get_PSG_for_MDF" title="Permalink to this definition">¶</a></dt>
 <dd><p>Create the PSG graph for the MDF method.</p>
 <table class="docutils field-list" frame="void" rules="none">
 <col class="field-name" />
diff --git a/pyKADMOS/doc/genindex.html b/pyKADMOS/doc/genindex.html
index 42d5a02c90af8366e761b735aedd9f931236cc89..3faf8b30906d81e9b6de7a75fa26310f828b17f8 100644
--- a/pyKADMOS/doc/genindex.html
+++ b/pyKADMOS/doc/genindex.html
@@ -182,7 +182,7 @@
   </dt>
 
       
-  <dt><a href="KADMOS.html#pyKADMOS.MDOproblem.MDOproblem.get_PSG_for_MDF">get_PSG_for_MDF() (pyKADMOS.MDOproblem.MDOproblem method)</a>
+  <dt><a href="KADMOS.html#pyKADMOS.MDOproblem.MDOproblem.get_PSG_for_MDF">get_PSG() (pyKADMOS.MDOproblem.MDOproblem method)</a>
   </dt>
 
   </dl></td>
diff --git a/pyKADMOS/sellarProblem.py b/pyKADMOS/sellarProblem.py
index eed8f4308908704030dd0839c16178319e67da92..c38fcd657383891b1a7a5c004629ddb2bbbd1e26 100644
--- a/pyKADMOS/sellarProblem.py
+++ b/pyKADMOS/sellarProblem.py
@@ -1,6 +1,10 @@
+import os
 import pprint
 
 import networkx as nx
+import sys
+
+import matplotlib as plt
 
 from pyKADMOS.MDOproblem import MDOproblem
 from pyKADMOS.MDOstatic import get_adjacency_matrix, find_all_nodes
@@ -72,23 +76,62 @@ MCG_part = sellarProblem.get_partitioned_graph(MCG,3,output='Graph',recursive=Fa
 plot_graph(MCG_part, 9, color_setting='partitions', fig_size=fig_size, show_now=False)
 
 # Get the PSG for an MDF approach with Gauss-Seidel
-FPG_MDF = MCG.copy()
+FPG = MCG.copy()
+
+# Set the key nodes for the optimization
+FPG.node['/data_schema/geometry/z1']['PSG role'] = 'design variable'
+FPG.node['/data_schema/geometry/z2']['PSG role'] = 'design variable'
+FPG.node['/data_schema/geometry/x1']['PSG role'] = 'design variable'
+FPG.node['/data_schema/analyses/g1']['PSG role'] = 'constraint'
+FPG.node['/data_schema/analyses/g2']['PSG role'] = 'constraint'
+FPG.node['/data_schema/analyses/f']['PSG role'] = 'objective'
+
+# Create MDO architectures
+# MDF with Gauss-Seidel
+MDO_architecture = 'MDF'
+MDA_type = 'Gauss-Seidel'
+analysis_order = ['D1', 'D2']
 
-find_all_nodes(FPG_MDF, print_in_log=True)
+PSG_MDF_GS = sellarProblem.get_PSG(FPG, MDO_architecture, analysis_order, MDA_type)
 
-FPG_MDF.node['/data_schema/geometry/z1']['PSG role'] = 'design variable'
-FPG_MDF.node['/data_schema/geometry/z2']['PSG role'] = 'design variable'
-#FPG_MDF.node['/data_schema/geometry/x1']['PSG role'] = 'design variable'
-FPG_MDF.node['/data_schema/analyses/g1']['PSG role'] = 'constraint'
-FPG_MDF.node['/data_schema/analyses/g2']['PSG role'] = 'constraint'
-FPG_MDF.node['/data_schema/analyses/f']['PSG role'] = 'objective'
+plot_graph(PSG_MDF_GS['process flow'], 10, color_setting='default', fig_size=fig_size, show_now=False)
+plot_graph(PSG_MDF_GS['data flow'], 11, color_setting='default', fig_size=fig_size, show_now=False)
 
-MDA_type = 'Gauss-Seidel'
-analysis_order = ['D1','D2']
+file_name = 'sellarProblemXDSM_MDF_GS'
+create_XDSM(PSG_MDF_GS,file_name)
+print ''
+print 'XDSM file created.'
+os.system('open '+file_name+'.pdf')
+
+# MDF with Jacobi
+MDO_architecture = 'MDF'
+MDA_type = 'Jacobi'
+
+PSG_MDF_J = sellarProblem.get_PSG(FPG, MDO_architecture, analysis_order, MDA_type)
+
+plot_graph(PSG_MDF_J['process flow'], 12, color_setting='default', fig_size=fig_size, show_now=False)
+plot_graph(PSG_MDF_J['data flow'], 13, color_setting='default', fig_size=fig_size, show_now=False)
+
+file_name = 'sellarProblemXDSM_MDF_Jac'
+create_XDSM(PSG_MDF_J,file_name)
+print ''
+print 'XDSM file created.'
+os.system('open '+file_name+'.pdf')
+
+# IDF
+MDO_architecture = 'IDF'
+MDA_type = None
+
+PSG_IDF = sellarProblem.get_PSG(FPG, MDO_architecture, analysis_order, MDA_type)
 
-PSG = sellarProblem.get_PSG_for_MDF(FPG_MDF, MDA_type, analysis_order)
+plot_graph(PSG_IDF['process flow'], 12, color_setting='default', fig_size=fig_size, show_now=False)
+plot_graph(PSG_IDF['data flow'], 13, color_setting='default', fig_size=fig_size, show_now=False)
 
-plot_graph(PSG['process flow'], 10, color_setting='default', fig_size=fig_size, show_now=False)
-plot_graph(PSG['data flow'], 11, color_setting='default', fig_size=fig_size, show_now=False)
+file_name = 'sellarProblemXDSM_IDF'
+create_XDSM(PSG_IDF,file_name)
+print ''
+print 'XDSM file created.'
+os.system('open '+file_name+'.pdf')
 
-create_XDSM(PSG,'sellarProblemXDSM')
\ No newline at end of file
+# Exit script
+sys.exit()
\ No newline at end of file
diff --git a/pyKADMOS/sellarProblemXDSM.aux b/pyKADMOS/sellarProblemXDSM_IDF.aux
similarity index 100%
rename from pyKADMOS/sellarProblemXDSM.aux
rename to pyKADMOS/sellarProblemXDSM_IDF.aux
diff --git a/pyKADMOS/sellarProblemXDSM.log b/pyKADMOS/sellarProblemXDSM_IDF.log
similarity index 95%
rename from pyKADMOS/sellarProblemXDSM.log
rename to pyKADMOS/sellarProblemXDSM_IDF.log
index 9f1b7beb0c459d96e9d835c42dfaf7b5ba1e684b..3dcd49c9d81bd4f30f4142a4d213631a646db3c8 100644
--- a/pyKADMOS/sellarProblemXDSM.log
+++ b/pyKADMOS/sellarProblemXDSM_IDF.log
@@ -1,9 +1,9 @@
-This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015) (preloaded format=pdflatex 2015.10.20)  6 JUL 2016 17:24
+This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015) (preloaded format=pdflatex 2015.10.20)  11 JUL 2016 11:05
 entering extended mode
  restricted \write18 enabled.
  %&-line parsing enabled.
-**sellarProblemXDSM.tex
-(./sellarProblemXDSM.tex
+**sellarProblemXDSM_IDF.tex
+(./sellarProblemXDSM_IDF.tex
 LaTeX2e <2015/01/01>
 Babel <3.9l> and hyphenation patterns for 79 languages loaded.
 (/usr/local/texlive/2015/texmf-dist/tex/latex/base/article.cls
@@ -500,8 +500,8 @@ Package: preview 2010/02/14 11.88 (AUCTeX/preview-latex)
 \pr@box=\box39
 \pr@output=\toks34
 ))
-(./sellarProblemXDSM.aux)
-\openout1 = `sellarProblemXDSM.aux'.
+(./sellarProblemXDSM_IDF.aux)
+\openout1 = `sellarProblemXDSM_IDF.aux'.
 
 LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 10.
 LaTeX Font Info:    ... okay on input line 10.
@@ -627,29 +627,29 @@ LaTeX Font Info:    Try loading font information for U+msb on input line 19.
 (/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/umsb.fd
 File: umsb.fd 2013/01/14 v3.01 AMS symbols B
 )
-Overfull \hbox (28.94588pt too wide) in paragraph at lines 195--195
+Overfull \hbox (87.5447pt too wide) in paragraph at lines 210--210
 [][] 
  []
 
 Preview: Tightpage -327680 -327680 327680 327680
 [1{/usr/local/texlive/2015/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
-(./sellarProblemXDSM.aux) ) 
+(./sellarProblemXDSM_IDF.aux) ) 
 Here is how much of TeX's memory you used:
- 14579 strings out of 493089
- 298228 string characters out of 6134841
- 359792 words of memory out of 5000000
- 17780 multiletter control sequences out of 15000+600000
+ 14552 strings out of 493089
+ 297609 string characters out of 6134841
+ 357415 words of memory out of 5000000
+ 17753 multiletter control sequences out of 15000+600000
  5339 words of font info for 22 fonts, out of 8000000 for 9000
  1141 hyphenation exceptions out of 8191
- 55i,15n,82p,437b,952s stack positions out of 5000i,500n,10000p,200000b,80000s
-</usr/local/texlive/2015/texmf-dist/fonts/type1/publ
-ic/amsfonts/cm/cmmi10.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/publi
-c/amsfonts/cm/cmmi7.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/public/
-amsfonts/cm/cmr10.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/public/am
-sfonts/cm/cmr7.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfo
-nts/cm/cmsy10.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/public/amsfon
-ts/cm/cmsy7.pfb>
-Output written on sellarProblemXDSM.pdf (1 page, 55471 bytes).
+ 55i,17n,82p,441b,952s stack positions out of 5000i,500n,10000p,200000b,80000s
+</usr/local/texlive/2015/texmf-dist/fonts/type1/
+public/amsfonts/cm/cmmi10.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/p
+ublic/amsfonts/cm/cmmi7.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/pub
+lic/amsfonts/cm/cmr10.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/publi
+c/amsfonts/cm/cmr7.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/public/a
+msfonts/cm/cmsy10.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/public/am
+sfonts/cm/cmsy7.pfb>
+Output written on sellarProblemXDSM_IDF.pdf (1 page, 54657 bytes).
 PDF statistics:
  59 PDF objects out of 1000 (max. 8388607)
  33 compressed objects within 1 object stream
diff --git a/pyKADMOS/sellarProblemXDSM_IDF.pdf b/pyKADMOS/sellarProblemXDSM_IDF.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..a1ddd0f993484c2a4be47c5f559284843292fe92
Binary files /dev/null and b/pyKADMOS/sellarProblemXDSM_IDF.pdf differ
diff --git a/pyKADMOS/sellarProblemXDSM_IDF.tex b/pyKADMOS/sellarProblemXDSM_IDF.tex
new file mode 100644
index 0000000000000000000000000000000000000000..6a32393f1bffcc84489b8c9fb2e3a0c7214781fe
--- /dev/null
+++ b/pyKADMOS/sellarProblemXDSM_IDF.tex
@@ -0,0 +1,212 @@
+\documentclass{article}
+\usepackage{geometry}
+\usepackage{amsfonts}
+\usepackage{amsmath}
+\usepackage{amssymb}
+\usepackage{tikz}
+
+\input{/Users/imcovangent/Documents/PhD/Software/KADMOS/pyKADMOS/XDSM_writer/diagram_border}
+
+\begin{document}
+
+\input{/Users/imcovangent/Documents/PhD/Software/KADMOS/pyKADMOS/XDSM_writer/diagram_styles}
+
+\begin{tikzpicture}
+
+  \matrix[MatrixSetup]
+  {
+    %Row 1
+    \node [Initiator] (Initiator) {$0,5$:\\INI}; &
+    \node [DataIO] (Optimizer-Initiator) {1: $y2^{c0}$\\\\[-10pt] $z1^0$\\\\[-10pt] $z2^0$\\\\[-10pt] $y1^{c0}$\\\\[-10pt] $x1^0$}; &
+    &
+    &
+    &
+    &
+    &
+    \\
+    \node [DataIO] (Initiator-Optimizer) {5: $z1^*$\\\\[-10pt] $z2^*$\\\\[-10pt] $x1^*$}; &
+    \node [Optimization] (Optimizer) {$1,4\to2$:\\OPT}; &
+    \node [DataInter] (D1-Optimizer) {2: $x1$\\\\[-10pt] $z2$\\\\[-10pt] $z1$\\\\[-10pt] $y2^c$}; &
+    \node [DataInter] (D2-Optimizer) {2: $y1^c$\\\\[-10pt] $z2$\\\\[-10pt] $z1$}; &
+    \node [DataInter] (F-Optimizer) {3: $x1$\\\\[-10pt] $z2$}; &
+    &
+    &
+    \\
+    \node [DataIO] (Initiator-D1) {5: $y1^*$}; &
+    &
+    \node [Analysis] (D1) {$2$:\\D1}; &
+    &
+    \node [DataInter] (F-D1) {3: $y1$}; &
+    &
+    \node [DataInter] (G1-D1) {3: $y1$}; &
+    \node [DataInter] (Gc-D1) {3: $y1$}; \\
+    %Row 4
+    \node [DataIO] (Initiator-D2) {5: $y2^*$}; &
+    &
+    &
+    \node [Analysis] (D2) {$2$:\\D2}; &
+    \node [DataInter] (F-D2) {3: $y2$}; &
+    \node [DataInter] (G2-D2) {3: $y2$}; &
+    &
+    \node [DataInter] (Gc-D2) {3: $y2$}; \\
+    %Row 5
+    &
+    \node [DataInter] (Optimizer-F) {4: $f$}; &
+    &
+    &
+    \node [Function] (F) {$3$:\\F}; &
+    &
+    &
+    \\
+    &
+    \node [DataInter] (Optimizer-G2) {4: $g2$}; &
+    &
+    &
+    &
+    \node [Function] (G2) {$3$:\\G2}; &
+    &
+    \\
+    &
+    \node [DataInter] (Optimizer-G1) {4: $g1$}; &
+    &
+    &
+    &
+    &
+    \node [Function] (G1) {$3$:\\G1}; &
+    \\
+    &
+    \node [DataInter] (Optimizer-Gc) {4: $g\_y1^c$\\\\[-10pt] $g\_y2^c$}; &
+    &
+    &
+    &
+    &
+    &
+    \node [Function] (Gc) {$3$:\\Gc}; \\
+    %Row 9
+  };
+
+   % XDSM_writer process chains 
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (Initiator);
+       \chainin (Optimizer)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (Optimizer);
+       \chainin (Initiator)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (Optimizer);
+       \chainin (D2)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (Optimizer);
+       \chainin (D1)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (G2);
+       \chainin (Optimizer)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (G1);
+       \chainin (Optimizer)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (F);
+       \chainin (Optimizer)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (Gc);
+       \chainin (Optimizer)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (D2);
+       \chainin (Gc)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (D2);
+       \chainin (G2)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (D2);
+       \chainin (F)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (D1);
+       \chainin (Gc)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (D1);
+       \chainin (G1)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (D1);
+       \chainin (F)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+  \begin{pgfonlayer}{data}
+    \path
+    % Horizontal edges
+    (Initiator) edge [DataLine] (Optimizer-Initiator)
+    (Initiator-Optimizer) edge [DataLine] (F-Optimizer)
+    (Initiator-D1) edge [DataLine] (Gc-D1)
+    (Initiator-D2) edge [DataLine] (Gc-D2)
+    (Optimizer-F) edge [DataLine] (F)
+    (Optimizer-G2) edge [DataLine] (G2)
+    (Optimizer-G1) edge [DataLine] (G1)
+    (Optimizer-Gc) edge [DataLine] (Gc)
+    % Vertical edges
+    (Initiator) edge [DataLine] (Initiator-D2)
+    (Optimizer-Initiator) edge [DataLine] (Optimizer-Gc)
+    (D1-Optimizer) edge [DataLine] (D1)
+    (D2-Optimizer) edge [DataLine] (D2)
+    (F-Optimizer) edge [DataLine] (F)
+    (G2-D2) edge [DataLine] (G2)
+    (G1-D1) edge [DataLine] (G1)
+    (Gc-D1) edge [DataLine] (Gc)
+    ;
+  \end{pgfonlayer}
+
+\end{tikzpicture}
+
+\end{document}
diff --git a/pyKADMOS/sellarProblemXDSM_MDF_GS.aux b/pyKADMOS/sellarProblemXDSM_MDF_GS.aux
new file mode 100644
index 0000000000000000000000000000000000000000..f23e54680b733bda6c050da350d99bdea7fb9933
--- /dev/null
+++ b/pyKADMOS/sellarProblemXDSM_MDF_GS.aux
@@ -0,0 +1 @@
+\relax 
diff --git a/pyKADMOS/sellarProblemXDSM_MDF_GS.log b/pyKADMOS/sellarProblemXDSM_MDF_GS.log
new file mode 100644
index 0000000000000000000000000000000000000000..56c6d62ddc622e512487044e3f6b2ce2195b613f
--- /dev/null
+++ b/pyKADMOS/sellarProblemXDSM_MDF_GS.log
@@ -0,0 +1,658 @@
+This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015) (preloaded format=pdflatex 2015.10.20)  11 JUL 2016 11:05
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**sellarProblemXDSM_MDF_GS.tex
+(./sellarProblemXDSM_MDF_GS.tex
+LaTeX2e <2015/01/01>
+Babel <3.9l> and hyphenation patterns for 79 languages loaded.
+(/usr/local/texlive/2015/texmf-dist/tex/latex/base/article.cls
+Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
+(/usr/local/texlive/2015/texmf-dist/tex/latex/base/size10.clo
+File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
+)
+\c@part=\count79
+\c@section=\count80
+\c@subsection=\count81
+\c@subsubsection=\count82
+\c@paragraph=\count83
+\c@subparagraph=\count84
+\c@figure=\count85
+\c@table=\count86
+\abovecaptionskip=\skip41
+\belowcaptionskip=\skip42
+\bibindent=\dimen102
+)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/geometry/geometry.sty
+Package: geometry 2010/09/12 v5.6 Page Geometry
+
+(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/keyval.sty
+Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
+\KV@toks@=\toks14
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifpdf.sty
+Package: ifpdf 2011/01/30 v2.3 Provides the ifpdf switch (HO)
+Package ifpdf Info: pdfTeX in PDF mode is detected.
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifvtex.sty
+Package: ifvtex 2010/03/01 v1.5 Detect VTeX and its facilities (HO)
+Package ifvtex Info: VTeX not detected.
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/ifxetex/ifxetex.sty
+Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional
+)
+\Gm@cnth=\count87
+\Gm@cntv=\count88
+\c@Gm@tempcnt=\count89
+\Gm@bindingoffset=\dimen103
+\Gm@wd@mp=\dimen104
+\Gm@odd@mp=\dimen105
+\Gm@even@mp=\dimen106
+\Gm@layoutwidth=\dimen107
+\Gm@layoutheight=\dimen108
+\Gm@layouthoffset=\dimen109
+\Gm@layoutvoffset=\dimen110
+\Gm@dimlist=\toks15
+)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/amsfonts.sty
+Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
+\@emptytoks=\toks16
+\symAMSa=\mathgroup4
+\symAMSb=\mathgroup5
+LaTeX Font Info:    Overwriting math alphabet `\mathfrak' in version `bold'
+(Font)                  U/euf/m/n --> U/euf/b/n on input line 106.
+)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsmath.sty
+Package: amsmath 2013/01/14 v2.14 AMS math features
+\@mathmargin=\skip43
+
+For additional information on amsmath, use the `?' option.
+(/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amstext.sty
+Package: amstext 2000/06/29 v2.01
+
+(/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsgen.sty
+File: amsgen.sty 1999/11/30 v2.0
+\@emptytoks=\toks17
+\ex@=\dimen111
+))
+(/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsbsy.sty
+Package: amsbsy 1999/11/29 v1.2d
+\pmbraise@=\dimen112
+)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsopn.sty
+Package: amsopn 1999/12/14 v2.01 operator names
+)
+\inf@bad=\count90
+LaTeX Info: Redefining \frac on input line 210.
+\uproot@=\count91
+\leftroot@=\count92
+LaTeX Info: Redefining \overline on input line 306.
+\classnum@=\count93
+\DOTSCASE@=\count94
+LaTeX Info: Redefining \ldots on input line 378.
+LaTeX Info: Redefining \dots on input line 381.
+LaTeX Info: Redefining \cdots on input line 466.
+\Mathstrutbox@=\box26
+\strutbox@=\box27
+\big@size=\dimen113
+LaTeX Font Info:    Redeclaring font encoding OML on input line 566.
+LaTeX Font Info:    Redeclaring font encoding OMS on input line 567.
+\macc@depth=\count95
+\c@MaxMatrixCols=\count96
+\dotsspace@=\muskip10
+\c@parentequation=\count97
+\dspbrk@lvl=\count98
+\tag@help=\toks18
+\row@=\count99
+\column@=\count100
+\maxfields@=\count101
+\andhelp@=\toks19
+\eqnshift@=\dimen114
+\alignsep@=\dimen115
+\tagshift@=\dimen116
+\tagwidth@=\dimen117
+\totwidth@=\dimen118
+\lineht@=\dimen119
+\@envbody=\toks20
+\multlinegap=\skip44
+\multlinetaggap=\skip45
+\mathdisplay@stack=\toks21
+LaTeX Info: Redefining \[ on input line 2665.
+LaTeX Info: Redefining \] on input line 2666.
+)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/amssymb.sty
+Package: amssymb 2013/01/14 v3.01 AMS font symbols
+)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty
+(/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty
+(/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.te
+x
+\pgfutil@everybye=\toks22
+\pgfutil@tempdima=\dimen120
+\pgfutil@tempdimb=\dimen121
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-li
+sts.tex))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def
+\pgfutil@abb=\box28
+(/usr/local/texlive/2015/texmf-dist/tex/latex/ms/everyshi.sty
+Package: everyshi 2001/05/15 v3.00 EveryShipout Package (MS)
+))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
+Package: pgfrcs 2013/12/20 v3.0.0 (rcs-revision 1.28)
+))
+Package: pgf 2013/12/18 v3.0.0 (rcs-revision 1.14)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty
+(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphicx.sty
+Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR)
+
+(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphics.sty
+Package: graphics 2014/10/28 v1.0p Standard LaTeX Graphics (DPC,SPQR)
+
+(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/trig.sty
+Package: trig 1999/03/16 v1.09 sin cos tan (DPC)
+)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/graphics.cfg
+File: graphics.cfg 2010/04/23 v1.9 graphics configuration of TeX Live
+)
+Package graphics Info: Driver file: pdftex.def on input line 94.
+
+(/usr/local/texlive/2015/texmf-dist/tex/latex/pdftex-def/pdftex.def
+File: pdftex.def 2011/05/27 v0.06d Graphics/color for pdfTeX
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/infwarerr.sty
+Package: infwarerr 2010/04/08 v1.3 Providing info/warning/error messages (HO)
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ltxcmds.sty
+Package: ltxcmds 2011/11/09 v1.22 LaTeX kernel commands for general use (HO)
+)
+\Gread@gobject=\count102
+))
+\Gin@req@height=\dimen122
+\Gin@req@width=\dimen123
+)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex
+Package: pgfsys 2013/11/30 v3.0.0 (rcs-revision 1.47)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
+\pgfkeys@pathtoks=\toks23
+\pgfkeys@temptoks=\toks24
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.c
+ode.tex
+\pgfkeys@tmptoks=\toks25
+))
+\pgf@x=\dimen124
+\pgf@y=\dimen125
+\pgf@xa=\dimen126
+\pgf@ya=\dimen127
+\pgf@xb=\dimen128
+\pgf@yb=\dimen129
+\pgf@xc=\dimen130
+\pgf@yc=\dimen131
+\w@pgf@writea=\write3
+\r@pgf@reada=\read1
+\c@pgf@counta=\count103
+\c@pgf@countb=\count104
+\c@pgf@countc=\count105
+\c@pgf@countd=\count106
+\t@pgf@toka=\toks26
+\t@pgf@tokb=\toks27
+\t@pgf@tokc=\toks28
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg
+File: pgf.cfg 2008/05/14  (rcs-revision 1.7)
+)
+Driver file for pgf: pgfsys-pdftex.def
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.d
+ef
+File: pgfsys-pdftex.def 2013/07/18  (rcs-revision 1.33)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-p
+df.def
+File: pgfsys-common-pdf.def 2013/10/10  (rcs-revision 1.13)
+)))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.
+code.tex
+File: pgfsyssoftpath.code.tex 2013/09/09  (rcs-revision 1.9)
+\pgfsyssoftpath@smallbuffer@items=\count107
+\pgfsyssoftpath@bigbuffer@items=\count108
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.
+code.tex
+File: pgfsysprotocol.code.tex 2006/10/16  (rcs-revision 1.4)
+)) (/usr/local/texlive/2015/texmf-dist/tex/latex/xcolor/xcolor.sty
+Package: xcolor 2007/01/21 v2.11 LaTeX color extensions (UK)
+
+(/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/color.cfg
+File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive
+)
+Package xcolor Info: Driver file: pdftex.def on input line 225.
+Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1337.
+Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1341.
+Package xcolor Info: Model `RGB' extended on input line 1353.
+Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1355.
+Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1356.
+Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1357.
+Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1358.
+Package xcolor Info: Model `Gray' substituted by `gray' on input line 1359.
+Package xcolor Info: Model `wave' substituted by `hsb' on input line 1360.
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex
+Package: pgfcore 2010/04/11 v3.0.0 (rcs-revision 1.7)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex
+\pgfmath@dimen=\dimen132
+\pgfmath@count=\count109
+\pgfmath@box=\box29
+\pgfmath@toks=\toks29
+\pgfmath@stack@operand=\toks30
+\pgfmath@stack@operation=\toks31
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.
+tex
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic
+.code.tex)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigo
+nometric.code.tex)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.rando
+m.code.tex)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.compa
+rison.code.tex)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.
+code.tex)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round
+.code.tex)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.
+code.tex)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integ
+erarithmetics.code.tex)))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex
+\c@pgfmathroundto@lastzeros=\count110
+))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.co
+de.tex
+File: pgfcorepoints.code.tex 2013/10/07  (rcs-revision 1.27)
+\pgf@picminx=\dimen133
+\pgf@picmaxx=\dimen134
+\pgf@picminy=\dimen135
+\pgf@picmaxy=\dimen136
+\pgf@pathminx=\dimen137
+\pgf@pathmaxx=\dimen138
+\pgf@pathminy=\dimen139
+\pgf@pathmaxy=\dimen140
+\pgf@xx=\dimen141
+\pgf@xy=\dimen142
+\pgf@yx=\dimen143
+\pgf@yy=\dimen144
+\pgf@zx=\dimen145
+\pgf@zy=\dimen146
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconst
+ruct.code.tex
+File: pgfcorepathconstruct.code.tex 2013/10/07  (rcs-revision 1.29)
+\pgf@path@lastx=\dimen147
+\pgf@path@lasty=\dimen148
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage
+.code.tex
+File: pgfcorepathusage.code.tex 2013/12/13  (rcs-revision 1.23)
+\pgf@shorten@end@additional=\dimen149
+\pgf@shorten@start@additional=\dimen150
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.co
+de.tex
+File: pgfcorescopes.code.tex 2013/10/09  (rcs-revision 1.44)
+\pgfpic=\box30
+\pgf@hbox=\box31
+\pgf@layerbox@main=\box32
+\pgf@picture@serial@count=\count111
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicst
+ate.code.tex
+File: pgfcoregraphicstate.code.tex 2013/09/19  (rcs-revision 1.11)
+\pgflinewidth=\dimen151
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransform
+ations.code.tex
+File: pgfcoretransformations.code.tex 2013/10/10  (rcs-revision 1.17)
+\pgf@pt@x=\dimen152
+\pgf@pt@y=\dimen153
+\pgf@pt@temp=\dimen154
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.cod
+e.tex
+File: pgfcorequick.code.tex 2008/10/09  (rcs-revision 1.3)
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.c
+ode.tex
+File: pgfcoreobjects.code.tex 2006/10/11  (rcs-revision 1.2)
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathproce
+ssing.code.tex
+File: pgfcorepathprocessing.code.tex 2013/09/09  (rcs-revision 1.9)
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.co
+de.tex
+File: pgfcorearrows.code.tex 2013/11/07  (rcs-revision 1.40)
+\pgfarrowsep=\dimen155
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.cod
+e.tex
+File: pgfcoreshade.code.tex 2013/07/15  (rcs-revision 1.15)
+\pgf@max=\dimen156
+\pgf@sys@shading@range@num=\count112
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.cod
+e.tex
+File: pgfcoreimage.code.tex 2013/07/15  (rcs-revision 1.18)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.
+code.tex
+File: pgfcoreexternal.code.tex 2013/07/15  (rcs-revision 1.20)
+\pgfexternal@startupbox=\box33
+))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.co
+de.tex
+File: pgfcorelayers.code.tex 2013/07/18  (rcs-revision 1.7)
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretranspare
+ncy.code.tex
+File: pgfcoretransparency.code.tex 2013/09/30  (rcs-revision 1.5)
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.
+code.tex
+File: pgfcorepatterns.code.tex 2013/11/07  (rcs-revision 1.5)
+)))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.cod
+e.tex
+File: pgfmoduleshapes.code.tex 2013/10/31  (rcs-revision 1.34)
+\pgfnodeparttextbox=\box34
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.
+tex
+File: pgfmoduleplot.code.tex 2013/07/31  (rcs-revision 1.12)
+)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version
+-0-65.sty
+Package: pgfcomp-version-0-65 2007/07/03 v3.0.0 (rcs-revision 1.7)
+\pgf@nodesepstart=\dimen157
+\pgf@nodesepend=\dimen158
+)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version
+-1-18.sty
+Package: pgfcomp-version-1-18 2007/07/23 v3.0.0 (rcs-revision 1.1)
+))
+(/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/utilities/pgffor.sty
+(/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)
+) (/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/math/pgfmath.sty
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex
+Package: pgffor 2013/12/13 v3.0.0 (rcs-revision 1.25)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)
+\pgffor@iter=\dimen159
+\pgffor@skip=\dimen160
+\pgffor@stack=\toks32
+\pgffor@toks=\toks33
+))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.cod
+e.tex
+Package: tikz 2013/12/13 v3.0.0 (rcs-revision 1.142)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothan
+dlers.code.tex
+File: pgflibraryplothandlers.code.tex 2013/08/31 v3.0.0 (rcs-revision 1.20)
+\pgf@plot@mark@count=\count113
+\pgfplotmarksize=\dimen161
+)
+\tikz@lastx=\dimen162
+\tikz@lasty=\dimen163
+\tikz@lastxsaved=\dimen164
+\tikz@lastysaved=\dimen165
+\tikzleveldistance=\dimen166
+\tikzsiblingdistance=\dimen167
+\tikz@figbox=\box35
+\tikz@figbox@bg=\box36
+\tikz@tempbox=\box37
+\tikz@tempbox@bg=\box38
+\tikztreelevel=\count114
+\tikznumberofchildren=\count115
+\tikznumberofcurrentchild=\count116
+\tikz@fig@count=\count117
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.cod
+e.tex
+File: pgfmodulematrix.code.tex 2013/09/17  (rcs-revision 1.8)
+\pgfmatrixcurrentrow=\count118
+\pgfmatrixcurrentcolumn=\count119
+\pgf@matrix@numberofcolumns=\count120
+)
+\tikz@expandcount=\count121
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/librarie
+s/tikzlibrarytopaths.code.tex
+File: tikzlibrarytopaths.code.tex 2008/06/17 v3.0.0 (rcs-revision 1.2)
+)))
+(/Users/imcovangent/Documents/PhD/Software/KADMOS/pyKADMOS/XDSM_writer/diagram_
+border.tex
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/librarie
+s/tikzlibraryarrows.code.tex
+File: tikzlibraryarrows.code.tex 2008/01/09 v3.0.0 (rcs-revision 1.1)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.
+code.tex
+File: pgflibraryarrows.code.tex 2013/09/23 v3.0.0 (rcs-revision 1.16)
+\arrowsize=\dimen168
+))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/librarie
+s/tikzlibrarychains.code.tex
+File: tikzlibrarychains.code.tex 2013/07/15 v3.0.0 (rcs-revision 1.6)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/librarie
+s/tikzlibrarypositioning.code.tex
+File: tikzlibrarypositioning.code.tex 2008/10/06 v3.0.0 (rcs-revision 1.7)
+))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/librarie
+s/tikzlibraryscopes.code.tex
+File: tikzlibraryscopes.code.tex 2008/06/27 v3.0.0 (rcs-revision 1.2)
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/librarie
+s/tikzlibraryshapes.geometric.code.tex
+File: tikzlibraryshapes.geometric.code.tex 2008/01/09 v3.0.0 (rcs-revision 1.1)
+
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibrary
+shapes.geometric.code.tex
+File: pgflibraryshapes.geometric.code.tex 2008/06/26 v3.0.0 (rcs-revision 1.1)
+))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/librarie
+s/tikzlibraryshapes.misc.code.tex
+File: tikzlibraryshapes.misc.code.tex 2008/01/09 v3.0.0 (rcs-revision 1.1)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibrary
+shapes.misc.code.tex
+File: pgflibraryshapes.misc.code.tex 2013/07/18 v3.0.0 (rcs-revision 1.5)
+))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/librarie
+s/tikzlibraryshadows.code.tex
+File: tikzlibraryshadows.code.tex 2008/01/13 v3.0.0 (rcs-revision 1.3)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/librarie
+s/tikzlibraryfadings.code.tex
+File: tikzlibraryfadings.code.tex 2009/11/15 v3.0.0 (rcs-revision 1.2)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/pgflibraryfadings
+.code.tex
+File: pgflibraryfadings.code.tex 2008/02/07 v3.0.0 (rcs-revision 1.3)
+))) (/usr/local/texlive/2015/texmf-dist/tex/latex/preview/preview.sty
+Package: preview 2010/02/14 11.88 (AUCTeX/preview-latex)
+
+(/usr/local/texlive/2015/texmf-dist/tex/latex/preview/prtightpage.def
+\PreviewBorder=\dimen169
+)
+\pr@snippet=\count122
+\pr@box=\box39
+\pr@output=\toks34
+))
+(./sellarProblemXDSM_MDF_GS.aux)
+\openout1 = `sellarProblemXDSM_MDF_GS.aux'.
+
+LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 10.
+LaTeX Font Info:    ... okay on input line 10.
+LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 10.
+LaTeX Font Info:    ... okay on input line 10.
+LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 10.
+LaTeX Font Info:    ... okay on input line 10.
+LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 10.
+LaTeX Font Info:    ... okay on input line 10.
+LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 10.
+LaTeX Font Info:    ... okay on input line 10.
+LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 10.
+LaTeX Font Info:    ... okay on input line 10.
+
+*geometry* driver: auto-detecting
+*geometry* detected driver: pdftex
+*geometry* verbose mode - [ preamble ] result:
+* driver: pdftex
+* paper: <default>
+* layout: <same size as paper>
+* layoutoffset:(h,v)=(0.0pt,0.0pt)
+* modes: 
+* h-part:(L,W,R)=(92.14519pt, 430.00462pt, 92.14519pt)
+* v-part:(T,H,B)=(95.39737pt, 556.47656pt, 143.09605pt)
+* \paperwidth=614.295pt
+* \paperheight=794.96999pt
+* \textwidth=430.00462pt
+* \textheight=556.47656pt
+* \oddsidemargin=19.8752pt
+* \evensidemargin=19.8752pt
+* \topmargin=-13.87262pt
+* \headheight=12.0pt
+* \headsep=25.0pt
+* \topskip=10.0pt
+* \footskip=30.0pt
+* \marginparwidth=65.0pt
+* \marginparsep=11.0pt
+* \columnsep=10.0pt
+* \skip\footins=9.0pt plus 4.0pt minus 2.0pt
+* \hoffset=0.0pt
+* \voffset=0.0pt
+* \mag=1000
+* \@twocolumnfalse
+* \@twosidefalse
+* \@mparswitchfalse
+* \@reversemarginfalse
+* (1in=72.27pt=25.4mm, 1cm=28.453pt)
+
+ABD: EveryShipout initializing macros
+(/usr/local/texlive/2015/texmf-dist/tex/context/base/supp-pdf.mkii
+[Loading MPS to PDF converter (version 2006.09.02).]
+\scratchcounter=\count123
+\scratchdimen=\dimen170
+\scratchbox=\box40
+\nofMPsegments=\count124
+\nofMParguments=\count125
+\everyMPshowfont=\toks35
+\MPscratchCnt=\count126
+\MPscratchDim=\dimen171
+\MPnumerator=\count127
+\makeMPintoPDFobject=\count128
+\everyMPtoPDFconversion=\toks36
+) (/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty
+Package: pdftexcmds 2011/11/29 v0.20 Utility functions of pdfTeX for LuaTeX (HO
+)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifluatex.sty
+Package: ifluatex 2010/03/01 v1.3 Provides the ifluatex switch (HO)
+Package ifluatex Info: LuaTeX not detected.
+)
+Package pdftexcmds Info: LuaTeX not detected.
+Package pdftexcmds Info: \pdf@primitive is available.
+Package pdftexcmds Info: \pdf@ifprimitive is available.
+Package pdftexcmds Info: \pdfdraftmode found.
+)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty
+Package: epstopdf-base 2010/02/09 v2.5 Base part for package epstopdf
+
+(/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/grfext.sty
+Package: grfext 2010/08/19 v1.1 Manage graphics extensions (HO)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty
+Package: kvdefinekeys 2011/04/07 v1.3 Define keys (HO)
+))
+(/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/kvoptions.sty
+Package: kvoptions 2011/06/30 v3.11 Key value format for package options (HO)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty
+Package: kvsetkeys 2012/04/25 v1.16 Key value parser (HO)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/etexcmds.sty
+Package: etexcmds 2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO)
+Package etexcmds Info: Could not find \expanded.
+(etexcmds)             That can mean that you are not using pdfTeX 1.50 or
+(etexcmds)             that some package has redefined \expanded.
+(etexcmds)             In the latter case, load this package earlier.
+)))
+Package grfext Info: Graphics extension search list:
+(grfext)             [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE
+G,.JBIG2,.JB2,.eps]
+(grfext)             \AppendGraphicsExtensions on input line 452.
+
+(/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
+File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
+e
+))
+Preview: Fontsize 10pt
+Preview: PDFoutput 1
+
+(/Users/imcovangent/Documents/PhD/Software/KADMOS/pyKADMOS/XDSM_writer/diagram_
+styles.tex
+\pgf@layerbox@data=\box41
+\pgf@layerboxsaved@data=\box42
+\pgf@layerbox@process=\box43
+\pgf@layerboxsaved@process=\box44
+)
+LaTeX Font Info:    Try loading font information for U+msa on input line 19.
+ (/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/umsa.fd
+File: umsa.fd 2013/01/14 v3.01 AMS symbols A
+)
+LaTeX Font Info:    Try loading font information for U+msb on input line 19.
+
+(/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/umsb.fd
+File: umsb.fd 2013/01/14 v3.01 AMS symbols B
+)
+Overfull \hbox (58.99065pt too wide) in paragraph at lines 174--174
+[][] 
+ []
+
+Preview: Tightpage -327680 -327680 327680 327680
+[1{/usr/local/texlive/2015/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
+(./sellarProblemXDSM_MDF_GS.aux) ) 
+Here is how much of TeX's memory you used:
+ 14563 strings out of 493089
+ 297891 string characters out of 6134841
+ 356988 words of memory out of 5000000
+ 17764 multiletter control sequences out of 15000+600000
+ 5339 words of font info for 22 fonts, out of 8000000 for 9000
+ 1141 hyphenation exceptions out of 8191
+ 55i,15n,82p,444b,952s stack positions out of 5000i,500n,10000p,200000b,80000s
+</usr/local/texlive/2015/texmf-dist/fonts/typ
+e1/public/amsfonts/cm/cmmi10.pfb></usr/local/texlive/2015/texmf-dist/fonts/type
+1/public/amsfonts/cm/cmmi7.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/
+public/amsfonts/cm/cmr10.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/pu
+blic/amsfonts/cm/cmr7.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/publi
+c/amsfonts/cm/cmsy10.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/public
+/amsfonts/cm/cmsy7.pfb>
+Output written on sellarProblemXDSM_MDF_GS.pdf (1 page, 55401 bytes).
+PDF statistics:
+ 59 PDF objects out of 1000 (max. 8388607)
+ 33 compressed objects within 1 object stream
+ 0 named destinations out of 1000 (max. 500000)
+ 109 words of extra memory for PDF output out of 10000 (max. 10000000)
+
diff --git a/pyKADMOS/sellarProblemXDSM.pdf b/pyKADMOS/sellarProblemXDSM_MDF_GS.pdf
similarity index 92%
rename from pyKADMOS/sellarProblemXDSM.pdf
rename to pyKADMOS/sellarProblemXDSM_MDF_GS.pdf
index f97c93e55c6bb60464e1e1bb884134afbfa9a9f7..700c0473b4b14ad66e1a90651697858c4596c24f 100644
Binary files a/pyKADMOS/sellarProblemXDSM.pdf and b/pyKADMOS/sellarProblemXDSM_MDF_GS.pdf differ
diff --git a/pyKADMOS/sellarProblemXDSM.tex b/pyKADMOS/sellarProblemXDSM_MDF_GS.tex
similarity index 82%
rename from pyKADMOS/sellarProblemXDSM.tex
rename to pyKADMOS/sellarProblemXDSM_MDF_GS.tex
index 19fbfc587dcfb76769e72b3dccebf4f4a671063c..403f6c8cdec7b4b8787fa975ec8b442321bd4108 100644
--- a/pyKADMOS/sellarProblemXDSM.tex
+++ b/pyKADMOS/sellarProblemXDSM_MDF_GS.tex
@@ -17,19 +17,19 @@
   {
     %Row 1
     \node [Initiator] (Initiator) {$0,8$:\\INI}; &
-    \node [DataIO] (Optimizer-Initiator) {1: $z1^0$\\\\[-10pt] $z2^0$}; &
+    \node [DataIO] (Optimizer-Initiator) {1: $z1^0$\\\\[-10pt] $z2^0$\\\\[-10pt] $x1^0$}; &
     \node [DataIO] (MDA-Initiator) {2: $y2^{c0}$}; &
-    \node [DataIO] (D1-Initiator) {3: $x1$}; &
     &
-    \node [DataIO] (F-Initiator) {6: $x1$}; &
+    &
+    &
     &
     \\
-    \node [DataIO] (Initiator-Optimizer) {8: $z1^*$\\\\[-10pt] $z2^*$}; &
+    \node [DataIO] (Initiator-Optimizer) {8: $z1^*$\\\\[-10pt] $z2^*$\\\\[-10pt] $x1^*$}; &
     \node [Optimization] (Optimizer) {$1,7\to2$:\\OPT}; &
     &
-    \node [DataInter] (D1-Optimizer) {3: $z2$\\\\[-10pt] $z1$}; &
+    \node [DataInter] (D1-Optimizer) {3: $x1$\\\\[-10pt] $z2$\\\\[-10pt] $z1$}; &
     \node [DataInter] (D2-Optimizer) {4: $z2$\\\\[-10pt] $z1$}; &
-    \node [DataInter] (F-Optimizer) {6: $z2$}; &
+    \node [DataInter] (F-Optimizer) {6: $x1$\\\\[-10pt] $z2$}; &
     &
     \\
     &
@@ -106,27 +106,6 @@
        \end{pgfonlayer}
    }
 
-   { [start chain=process]
-       \begin{pgfonlayer}{process}
-       \chainin (G2);
-       \chainin (Optimizer)    [join=by ProcessHV];
-       \end{pgfonlayer}
-   }
-
-   { [start chain=process]
-       \begin{pgfonlayer}{process}
-       \chainin (G1);
-       \chainin (Optimizer)    [join=by ProcessHV];
-       \end{pgfonlayer}
-   }
-
-   { [start chain=process]
-       \begin{pgfonlayer}{process}
-       \chainin (F);
-       \chainin (Optimizer)    [join=by ProcessHV];
-       \end{pgfonlayer}
-   }
-
    { [start chain=process]
        \begin{pgfonlayer}{process}
        \chainin (MDA);
@@ -172,7 +151,7 @@
   \begin{pgfonlayer}{data}
     \path
     % Horizontal edges
-    (Initiator) edge [DataLine] (F-Initiator)
+    (Initiator) edge [DataLine] (MDA-Initiator)
     (Initiator-Optimizer) edge [DataLine] (F-Optimizer)
     (MDA) edge [DataLine] (D1-MDA)
     (Initiator-D1) edge [DataLine] (G1-D1)
@@ -184,9 +163,9 @@
     (Initiator) edge [DataLine] (Initiator-D2)
     (Optimizer-Initiator) edge [DataLine] (Optimizer-G1)
     (MDA-Initiator) edge [DataLine] (MDA-D2)
-    (D1-Initiator) edge [DataLine] (D1)
+    (D1-Optimizer) edge [DataLine] (D1)
     (D2-Optimizer) edge [DataLine] (D2)
-    (F-Initiator) edge [DataLine] (F)
+    (F-Optimizer) edge [DataLine] (F)
     (G2-D2) edge [DataLine] (G2)
     (G1-D1) edge [DataLine] (G1)
     ;
diff --git a/pyKADMOS/sellarProblemXDSM_MDF_Jac.aux b/pyKADMOS/sellarProblemXDSM_MDF_Jac.aux
new file mode 100644
index 0000000000000000000000000000000000000000..f23e54680b733bda6c050da350d99bdea7fb9933
--- /dev/null
+++ b/pyKADMOS/sellarProblemXDSM_MDF_Jac.aux
@@ -0,0 +1 @@
+\relax 
diff --git a/pyKADMOS/sellarProblemXDSM_MDF_Jac.log b/pyKADMOS/sellarProblemXDSM_MDF_Jac.log
new file mode 100644
index 0000000000000000000000000000000000000000..0bedcc6b7b9a9317b253744a6c7185f915bad16e
--- /dev/null
+++ b/pyKADMOS/sellarProblemXDSM_MDF_Jac.log
@@ -0,0 +1,658 @@
+This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015) (preloaded format=pdflatex 2015.10.20)  11 JUL 2016 11:05
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**sellarProblemXDSM_MDF_Jac.tex
+(./sellarProblemXDSM_MDF_Jac.tex
+LaTeX2e <2015/01/01>
+Babel <3.9l> and hyphenation patterns for 79 languages loaded.
+(/usr/local/texlive/2015/texmf-dist/tex/latex/base/article.cls
+Document Class: article 2014/09/29 v1.4h Standard LaTeX document class
+(/usr/local/texlive/2015/texmf-dist/tex/latex/base/size10.clo
+File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
+)
+\c@part=\count79
+\c@section=\count80
+\c@subsection=\count81
+\c@subsubsection=\count82
+\c@paragraph=\count83
+\c@subparagraph=\count84
+\c@figure=\count85
+\c@table=\count86
+\abovecaptionskip=\skip41
+\belowcaptionskip=\skip42
+\bibindent=\dimen102
+)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/geometry/geometry.sty
+Package: geometry 2010/09/12 v5.6 Page Geometry
+
+(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/keyval.sty
+Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
+\KV@toks@=\toks14
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifpdf.sty
+Package: ifpdf 2011/01/30 v2.3 Provides the ifpdf switch (HO)
+Package ifpdf Info: pdfTeX in PDF mode is detected.
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifvtex.sty
+Package: ifvtex 2010/03/01 v1.5 Detect VTeX and its facilities (HO)
+Package ifvtex Info: VTeX not detected.
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/ifxetex/ifxetex.sty
+Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional
+)
+\Gm@cnth=\count87
+\Gm@cntv=\count88
+\c@Gm@tempcnt=\count89
+\Gm@bindingoffset=\dimen103
+\Gm@wd@mp=\dimen104
+\Gm@odd@mp=\dimen105
+\Gm@even@mp=\dimen106
+\Gm@layoutwidth=\dimen107
+\Gm@layoutheight=\dimen108
+\Gm@layouthoffset=\dimen109
+\Gm@layoutvoffset=\dimen110
+\Gm@dimlist=\toks15
+)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/amsfonts.sty
+Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
+\@emptytoks=\toks16
+\symAMSa=\mathgroup4
+\symAMSb=\mathgroup5
+LaTeX Font Info:    Overwriting math alphabet `\mathfrak' in version `bold'
+(Font)                  U/euf/m/n --> U/euf/b/n on input line 106.
+)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsmath.sty
+Package: amsmath 2013/01/14 v2.14 AMS math features
+\@mathmargin=\skip43
+
+For additional information on amsmath, use the `?' option.
+(/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amstext.sty
+Package: amstext 2000/06/29 v2.01
+
+(/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsgen.sty
+File: amsgen.sty 1999/11/30 v2.0
+\@emptytoks=\toks17
+\ex@=\dimen111
+))
+(/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsbsy.sty
+Package: amsbsy 1999/11/29 v1.2d
+\pmbraise@=\dimen112
+)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/amsmath/amsopn.sty
+Package: amsopn 1999/12/14 v2.01 operator names
+)
+\inf@bad=\count90
+LaTeX Info: Redefining \frac on input line 210.
+\uproot@=\count91
+\leftroot@=\count92
+LaTeX Info: Redefining \overline on input line 306.
+\classnum@=\count93
+\DOTSCASE@=\count94
+LaTeX Info: Redefining \ldots on input line 378.
+LaTeX Info: Redefining \dots on input line 381.
+LaTeX Info: Redefining \cdots on input line 466.
+\Mathstrutbox@=\box26
+\strutbox@=\box27
+\big@size=\dimen113
+LaTeX Font Info:    Redeclaring font encoding OML on input line 566.
+LaTeX Font Info:    Redeclaring font encoding OMS on input line 567.
+\macc@depth=\count95
+\c@MaxMatrixCols=\count96
+\dotsspace@=\muskip10
+\c@parentequation=\count97
+\dspbrk@lvl=\count98
+\tag@help=\toks18
+\row@=\count99
+\column@=\count100
+\maxfields@=\count101
+\andhelp@=\toks19
+\eqnshift@=\dimen114
+\alignsep@=\dimen115
+\tagshift@=\dimen116
+\tagwidth@=\dimen117
+\totwidth@=\dimen118
+\lineht@=\dimen119
+\@envbody=\toks20
+\multlinegap=\skip44
+\multlinetaggap=\skip45
+\mathdisplay@stack=\toks21
+LaTeX Info: Redefining \[ on input line 2665.
+LaTeX Info: Redefining \] on input line 2666.
+)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/amssymb.sty
+Package: amssymb 2013/01/14 v3.01 AMS font symbols
+)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty
+(/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty
+(/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.te
+x
+\pgfutil@everybye=\toks22
+\pgfutil@tempdima=\dimen120
+\pgfutil@tempdimb=\dimen121
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-li
+sts.tex))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def
+\pgfutil@abb=\box28
+(/usr/local/texlive/2015/texmf-dist/tex/latex/ms/everyshi.sty
+Package: everyshi 2001/05/15 v3.00 EveryShipout Package (MS)
+))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
+Package: pgfrcs 2013/12/20 v3.0.0 (rcs-revision 1.28)
+))
+Package: pgf 2013/12/18 v3.0.0 (rcs-revision 1.14)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty
+(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphicx.sty
+Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR)
+
+(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/graphics.sty
+Package: graphics 2014/10/28 v1.0p Standard LaTeX Graphics (DPC,SPQR)
+
+(/usr/local/texlive/2015/texmf-dist/tex/latex/graphics/trig.sty
+Package: trig 1999/03/16 v1.09 sin cos tan (DPC)
+)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/graphics.cfg
+File: graphics.cfg 2010/04/23 v1.9 graphics configuration of TeX Live
+)
+Package graphics Info: Driver file: pdftex.def on input line 94.
+
+(/usr/local/texlive/2015/texmf-dist/tex/latex/pdftex-def/pdftex.def
+File: pdftex.def 2011/05/27 v0.06d Graphics/color for pdfTeX
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/infwarerr.sty
+Package: infwarerr 2010/04/08 v1.3 Providing info/warning/error messages (HO)
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ltxcmds.sty
+Package: ltxcmds 2011/11/09 v1.22 LaTeX kernel commands for general use (HO)
+)
+\Gread@gobject=\count102
+))
+\Gin@req@height=\dimen122
+\Gin@req@width=\dimen123
+)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex
+Package: pgfsys 2013/11/30 v3.0.0 (rcs-revision 1.47)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
+\pgfkeys@pathtoks=\toks23
+\pgfkeys@temptoks=\toks24
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.c
+ode.tex
+\pgfkeys@tmptoks=\toks25
+))
+\pgf@x=\dimen124
+\pgf@y=\dimen125
+\pgf@xa=\dimen126
+\pgf@ya=\dimen127
+\pgf@xb=\dimen128
+\pgf@yb=\dimen129
+\pgf@xc=\dimen130
+\pgf@yc=\dimen131
+\w@pgf@writea=\write3
+\r@pgf@reada=\read1
+\c@pgf@counta=\count103
+\c@pgf@countb=\count104
+\c@pgf@countc=\count105
+\c@pgf@countd=\count106
+\t@pgf@toka=\toks26
+\t@pgf@tokb=\toks27
+\t@pgf@tokc=\toks28
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg
+File: pgf.cfg 2008/05/14  (rcs-revision 1.7)
+)
+Driver file for pgf: pgfsys-pdftex.def
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.d
+ef
+File: pgfsys-pdftex.def 2013/07/18  (rcs-revision 1.33)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-p
+df.def
+File: pgfsys-common-pdf.def 2013/10/10  (rcs-revision 1.13)
+)))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.
+code.tex
+File: pgfsyssoftpath.code.tex 2013/09/09  (rcs-revision 1.9)
+\pgfsyssoftpath@smallbuffer@items=\count107
+\pgfsyssoftpath@bigbuffer@items=\count108
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.
+code.tex
+File: pgfsysprotocol.code.tex 2006/10/16  (rcs-revision 1.4)
+)) (/usr/local/texlive/2015/texmf-dist/tex/latex/xcolor/xcolor.sty
+Package: xcolor 2007/01/21 v2.11 LaTeX color extensions (UK)
+
+(/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/color.cfg
+File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive
+)
+Package xcolor Info: Driver file: pdftex.def on input line 225.
+Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1337.
+Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1341.
+Package xcolor Info: Model `RGB' extended on input line 1353.
+Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1355.
+Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1356.
+Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1357.
+Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1358.
+Package xcolor Info: Model `Gray' substituted by `gray' on input line 1359.
+Package xcolor Info: Model `wave' substituted by `hsb' on input line 1360.
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex
+Package: pgfcore 2010/04/11 v3.0.0 (rcs-revision 1.7)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex
+\pgfmath@dimen=\dimen132
+\pgfmath@count=\count109
+\pgfmath@box=\box29
+\pgfmath@toks=\toks29
+\pgfmath@stack@operand=\toks30
+\pgfmath@stack@operation=\toks31
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.
+tex
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic
+.code.tex)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigo
+nometric.code.tex)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.rando
+m.code.tex)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.compa
+rison.code.tex)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.
+code.tex)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round
+.code.tex)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.
+code.tex)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integ
+erarithmetics.code.tex)))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex
+\c@pgfmathroundto@lastzeros=\count110
+))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.co
+de.tex
+File: pgfcorepoints.code.tex 2013/10/07  (rcs-revision 1.27)
+\pgf@picminx=\dimen133
+\pgf@picmaxx=\dimen134
+\pgf@picminy=\dimen135
+\pgf@picmaxy=\dimen136
+\pgf@pathminx=\dimen137
+\pgf@pathmaxx=\dimen138
+\pgf@pathminy=\dimen139
+\pgf@pathmaxy=\dimen140
+\pgf@xx=\dimen141
+\pgf@xy=\dimen142
+\pgf@yx=\dimen143
+\pgf@yy=\dimen144
+\pgf@zx=\dimen145
+\pgf@zy=\dimen146
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconst
+ruct.code.tex
+File: pgfcorepathconstruct.code.tex 2013/10/07  (rcs-revision 1.29)
+\pgf@path@lastx=\dimen147
+\pgf@path@lasty=\dimen148
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage
+.code.tex
+File: pgfcorepathusage.code.tex 2013/12/13  (rcs-revision 1.23)
+\pgf@shorten@end@additional=\dimen149
+\pgf@shorten@start@additional=\dimen150
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.co
+de.tex
+File: pgfcorescopes.code.tex 2013/10/09  (rcs-revision 1.44)
+\pgfpic=\box30
+\pgf@hbox=\box31
+\pgf@layerbox@main=\box32
+\pgf@picture@serial@count=\count111
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicst
+ate.code.tex
+File: pgfcoregraphicstate.code.tex 2013/09/19  (rcs-revision 1.11)
+\pgflinewidth=\dimen151
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransform
+ations.code.tex
+File: pgfcoretransformations.code.tex 2013/10/10  (rcs-revision 1.17)
+\pgf@pt@x=\dimen152
+\pgf@pt@y=\dimen153
+\pgf@pt@temp=\dimen154
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.cod
+e.tex
+File: pgfcorequick.code.tex 2008/10/09  (rcs-revision 1.3)
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.c
+ode.tex
+File: pgfcoreobjects.code.tex 2006/10/11  (rcs-revision 1.2)
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathproce
+ssing.code.tex
+File: pgfcorepathprocessing.code.tex 2013/09/09  (rcs-revision 1.9)
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.co
+de.tex
+File: pgfcorearrows.code.tex 2013/11/07  (rcs-revision 1.40)
+\pgfarrowsep=\dimen155
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.cod
+e.tex
+File: pgfcoreshade.code.tex 2013/07/15  (rcs-revision 1.15)
+\pgf@max=\dimen156
+\pgf@sys@shading@range@num=\count112
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.cod
+e.tex
+File: pgfcoreimage.code.tex 2013/07/15  (rcs-revision 1.18)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.
+code.tex
+File: pgfcoreexternal.code.tex 2013/07/15  (rcs-revision 1.20)
+\pgfexternal@startupbox=\box33
+))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.co
+de.tex
+File: pgfcorelayers.code.tex 2013/07/18  (rcs-revision 1.7)
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretranspare
+ncy.code.tex
+File: pgfcoretransparency.code.tex 2013/09/30  (rcs-revision 1.5)
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.
+code.tex
+File: pgfcorepatterns.code.tex 2013/11/07  (rcs-revision 1.5)
+)))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.cod
+e.tex
+File: pgfmoduleshapes.code.tex 2013/10/31  (rcs-revision 1.34)
+\pgfnodeparttextbox=\box34
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.
+tex
+File: pgfmoduleplot.code.tex 2013/07/31  (rcs-revision 1.12)
+)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version
+-0-65.sty
+Package: pgfcomp-version-0-65 2007/07/03 v3.0.0 (rcs-revision 1.7)
+\pgf@nodesepstart=\dimen157
+\pgf@nodesepend=\dimen158
+)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version
+-1-18.sty
+Package: pgfcomp-version-1-18 2007/07/23 v3.0.0 (rcs-revision 1.1)
+))
+(/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/utilities/pgffor.sty
+(/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex)
+) (/usr/local/texlive/2015/texmf-dist/tex/latex/pgf/math/pgfmath.sty
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex
+Package: pgffor 2013/12/13 v3.0.0 (rcs-revision 1.25)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex)
+\pgffor@iter=\dimen159
+\pgffor@skip=\dimen160
+\pgffor@stack=\toks32
+\pgffor@toks=\toks33
+))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.cod
+e.tex
+Package: tikz 2013/12/13 v3.0.0 (rcs-revision 1.142)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothan
+dlers.code.tex
+File: pgflibraryplothandlers.code.tex 2013/08/31 v3.0.0 (rcs-revision 1.20)
+\pgf@plot@mark@count=\count113
+\pgfplotmarksize=\dimen161
+)
+\tikz@lastx=\dimen162
+\tikz@lasty=\dimen163
+\tikz@lastxsaved=\dimen164
+\tikz@lastysaved=\dimen165
+\tikzleveldistance=\dimen166
+\tikzsiblingdistance=\dimen167
+\tikz@figbox=\box35
+\tikz@figbox@bg=\box36
+\tikz@tempbox=\box37
+\tikz@tempbox@bg=\box38
+\tikztreelevel=\count114
+\tikznumberofchildren=\count115
+\tikznumberofcurrentchild=\count116
+\tikz@fig@count=\count117
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.cod
+e.tex
+File: pgfmodulematrix.code.tex 2013/09/17  (rcs-revision 1.8)
+\pgfmatrixcurrentrow=\count118
+\pgfmatrixcurrentcolumn=\count119
+\pgf@matrix@numberofcolumns=\count120
+)
+\tikz@expandcount=\count121
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/librarie
+s/tikzlibrarytopaths.code.tex
+File: tikzlibrarytopaths.code.tex 2008/06/17 v3.0.0 (rcs-revision 1.2)
+)))
+(/Users/imcovangent/Documents/PhD/Software/KADMOS/pyKADMOS/XDSM_writer/diagram_
+border.tex
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/librarie
+s/tikzlibraryarrows.code.tex
+File: tikzlibraryarrows.code.tex 2008/01/09 v3.0.0 (rcs-revision 1.1)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/pgflibraryarrows.
+code.tex
+File: pgflibraryarrows.code.tex 2013/09/23 v3.0.0 (rcs-revision 1.16)
+\arrowsize=\dimen168
+))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/librarie
+s/tikzlibrarychains.code.tex
+File: tikzlibrarychains.code.tex 2013/07/15 v3.0.0 (rcs-revision 1.6)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/librarie
+s/tikzlibrarypositioning.code.tex
+File: tikzlibrarypositioning.code.tex 2008/10/06 v3.0.0 (rcs-revision 1.7)
+))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/librarie
+s/tikzlibraryscopes.code.tex
+File: tikzlibraryscopes.code.tex 2008/06/27 v3.0.0 (rcs-revision 1.2)
+)
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/librarie
+s/tikzlibraryshapes.geometric.code.tex
+File: tikzlibraryshapes.geometric.code.tex 2008/01/09 v3.0.0 (rcs-revision 1.1)
+
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibrary
+shapes.geometric.code.tex
+File: pgflibraryshapes.geometric.code.tex 2008/06/26 v3.0.0 (rcs-revision 1.1)
+))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/librarie
+s/tikzlibraryshapes.misc.code.tex
+File: tikzlibraryshapes.misc.code.tex 2008/01/09 v3.0.0 (rcs-revision 1.1)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/shapes/pgflibrary
+shapes.misc.code.tex
+File: pgflibraryshapes.misc.code.tex 2013/07/18 v3.0.0 (rcs-revision 1.5)
+))
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/librarie
+s/tikzlibraryshadows.code.tex
+File: tikzlibraryshadows.code.tex 2008/01/13 v3.0.0 (rcs-revision 1.3)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/frontendlayer/tikz/librarie
+s/tikzlibraryfadings.code.tex
+File: tikzlibraryfadings.code.tex 2009/11/15 v3.0.0 (rcs-revision 1.2)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/pgf/libraries/pgflibraryfadings
+.code.tex
+File: pgflibraryfadings.code.tex 2008/02/07 v3.0.0 (rcs-revision 1.3)
+))) (/usr/local/texlive/2015/texmf-dist/tex/latex/preview/preview.sty
+Package: preview 2010/02/14 11.88 (AUCTeX/preview-latex)
+
+(/usr/local/texlive/2015/texmf-dist/tex/latex/preview/prtightpage.def
+\PreviewBorder=\dimen169
+)
+\pr@snippet=\count122
+\pr@box=\box39
+\pr@output=\toks34
+))
+(./sellarProblemXDSM_MDF_Jac.aux)
+\openout1 = `sellarProblemXDSM_MDF_Jac.aux'.
+
+LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 10.
+LaTeX Font Info:    ... okay on input line 10.
+LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 10.
+LaTeX Font Info:    ... okay on input line 10.
+LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 10.
+LaTeX Font Info:    ... okay on input line 10.
+LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 10.
+LaTeX Font Info:    ... okay on input line 10.
+LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 10.
+LaTeX Font Info:    ... okay on input line 10.
+LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 10.
+LaTeX Font Info:    ... okay on input line 10.
+
+*geometry* driver: auto-detecting
+*geometry* detected driver: pdftex
+*geometry* verbose mode - [ preamble ] result:
+* driver: pdftex
+* paper: <default>
+* layout: <same size as paper>
+* layoutoffset:(h,v)=(0.0pt,0.0pt)
+* modes: 
+* h-part:(L,W,R)=(92.14519pt, 430.00462pt, 92.14519pt)
+* v-part:(T,H,B)=(95.39737pt, 556.47656pt, 143.09605pt)
+* \paperwidth=614.295pt
+* \paperheight=794.96999pt
+* \textwidth=430.00462pt
+* \textheight=556.47656pt
+* \oddsidemargin=19.8752pt
+* \evensidemargin=19.8752pt
+* \topmargin=-13.87262pt
+* \headheight=12.0pt
+* \headsep=25.0pt
+* \topskip=10.0pt
+* \footskip=30.0pt
+* \marginparwidth=65.0pt
+* \marginparsep=11.0pt
+* \columnsep=10.0pt
+* \skip\footins=9.0pt plus 4.0pt minus 2.0pt
+* \hoffset=0.0pt
+* \voffset=0.0pt
+* \mag=1000
+* \@twocolumnfalse
+* \@twosidefalse
+* \@mparswitchfalse
+* \@reversemarginfalse
+* (1in=72.27pt=25.4mm, 1cm=28.453pt)
+
+ABD: EveryShipout initializing macros
+(/usr/local/texlive/2015/texmf-dist/tex/context/base/supp-pdf.mkii
+[Loading MPS to PDF converter (version 2006.09.02).]
+\scratchcounter=\count123
+\scratchdimen=\dimen170
+\scratchbox=\box40
+\nofMPsegments=\count124
+\nofMParguments=\count125
+\everyMPshowfont=\toks35
+\MPscratchCnt=\count126
+\MPscratchDim=\dimen171
+\MPnumerator=\count127
+\makeMPintoPDFobject=\count128
+\everyMPtoPDFconversion=\toks36
+) (/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty
+Package: pdftexcmds 2011/11/29 v0.20 Utility functions of pdfTeX for LuaTeX (HO
+)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/ifluatex.sty
+Package: ifluatex 2010/03/01 v1.3 Provides the ifluatex switch (HO)
+Package ifluatex Info: LuaTeX not detected.
+)
+Package pdftexcmds Info: LuaTeX not detected.
+Package pdftexcmds Info: \pdf@primitive is available.
+Package pdftexcmds Info: \pdf@ifprimitive is available.
+Package pdftexcmds Info: \pdfdraftmode found.
+)
+(/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty
+Package: epstopdf-base 2010/02/09 v2.5 Base part for package epstopdf
+
+(/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/grfext.sty
+Package: grfext 2010/08/19 v1.1 Manage graphics extensions (HO)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty
+Package: kvdefinekeys 2011/04/07 v1.3 Define keys (HO)
+))
+(/usr/local/texlive/2015/texmf-dist/tex/latex/oberdiek/kvoptions.sty
+Package: kvoptions 2011/06/30 v3.11 Key value format for package options (HO)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty
+Package: kvsetkeys 2012/04/25 v1.16 Key value parser (HO)
+
+(/usr/local/texlive/2015/texmf-dist/tex/generic/oberdiek/etexcmds.sty
+Package: etexcmds 2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO)
+Package etexcmds Info: Could not find \expanded.
+(etexcmds)             That can mean that you are not using pdfTeX 1.50 or
+(etexcmds)             that some package has redefined \expanded.
+(etexcmds)             In the latter case, load this package earlier.
+)))
+Package grfext Info: Graphics extension search list:
+(grfext)             [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE
+G,.JBIG2,.JB2,.eps]
+(grfext)             \AppendGraphicsExtensions on input line 452.
+
+(/usr/local/texlive/2015/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
+File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
+e
+))
+Preview: Fontsize 10pt
+Preview: PDFoutput 1
+
+(/Users/imcovangent/Documents/PhD/Software/KADMOS/pyKADMOS/XDSM_writer/diagram_
+styles.tex
+\pgf@layerbox@data=\box41
+\pgf@layerboxsaved@data=\box42
+\pgf@layerbox@process=\box43
+\pgf@layerboxsaved@process=\box44
+)
+LaTeX Font Info:    Try loading font information for U+msa on input line 19.
+ (/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/umsa.fd
+File: umsa.fd 2013/01/14 v3.01 AMS symbols A
+)
+LaTeX Font Info:    Try loading font information for U+msb on input line 19.
+
+(/usr/local/texlive/2015/texmf-dist/tex/latex/amsfonts/umsb.fd
+File: umsb.fd 2013/01/14 v3.01 AMS symbols B
+)
+Overfull \hbox (64.86882pt too wide) in paragraph at lines 181--181
+[][] 
+ []
+
+Preview: Tightpage -327680 -327680 327680 327680
+[1{/usr/local/texlive/2015/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
+(./sellarProblemXDSM_MDF_Jac.aux) ) 
+Here is how much of TeX's memory you used:
+ 14571 strings out of 493089
+ 298065 string characters out of 6134841
+ 358861 words of memory out of 5000000
+ 17772 multiletter control sequences out of 15000+600000
+ 5339 words of font info for 22 fonts, out of 8000000 for 9000
+ 1141 hyphenation exceptions out of 8191
+ 55i,15n,82p,445b,952s stack positions out of 5000i,500n,10000p,200000b,80000s
+</usr/local/texlive/2015/texmf-dist/fonts/ty
+pe1/public/amsfonts/cm/cmmi10.pfb></usr/local/texlive/2015/texmf-dist/fonts/typ
+e1/public/amsfonts/cm/cmmi7.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1
+/public/amsfonts/cm/cmr10.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/p
+ublic/amsfonts/cm/cmr7.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/publ
+ic/amsfonts/cm/cmsy10.pfb></usr/local/texlive/2015/texmf-dist/fonts/type1/publi
+c/amsfonts/cm/cmsy7.pfb>
+Output written on sellarProblemXDSM_MDF_Jac.pdf (1 page, 55238 bytes).
+PDF statistics:
+ 59 PDF objects out of 1000 (max. 8388607)
+ 33 compressed objects within 1 object stream
+ 0 named destinations out of 1000 (max. 500000)
+ 109 words of extra memory for PDF output out of 10000 (max. 10000000)
+
diff --git a/pyKADMOS/sellarProblemXDSM_MDF_Jac.pdf b/pyKADMOS/sellarProblemXDSM_MDF_Jac.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..a4f2e6587cd75eb5182e33a7a1f3abb8c0f253d5
Binary files /dev/null and b/pyKADMOS/sellarProblemXDSM_MDF_Jac.pdf differ
diff --git a/pyKADMOS/sellarProblemXDSM_MDF_Jac.tex b/pyKADMOS/sellarProblemXDSM_MDF_Jac.tex
new file mode 100644
index 0000000000000000000000000000000000000000..fec29a95142519af92ac7e6b30f7af79d8319fe8
--- /dev/null
+++ b/pyKADMOS/sellarProblemXDSM_MDF_Jac.tex
@@ -0,0 +1,183 @@
+\documentclass{article}
+\usepackage{geometry}
+\usepackage{amsfonts}
+\usepackage{amsmath}
+\usepackage{amssymb}
+\usepackage{tikz}
+
+\input{/Users/imcovangent/Documents/PhD/Software/KADMOS/pyKADMOS/XDSM_writer/diagram_border}
+
+\begin{document}
+
+\input{/Users/imcovangent/Documents/PhD/Software/KADMOS/pyKADMOS/XDSM_writer/diagram_styles}
+
+\begin{tikzpicture}
+
+  \matrix[MatrixSetup]
+  {
+    %Row 1
+    \node [Initiator] (Initiator) {$0,7$:\\INI}; &
+    \node [DataIO] (Optimizer-Initiator) {1: $z1^0$\\\\[-10pt] $z2^0$\\\\[-10pt] $x1^0$}; &
+    \node [DataIO] (MDA-Initiator) {2: $y2^{c0}$\\\\[-10pt] $y1^{c0}$}; &
+    &
+    &
+    &
+    &
+    \\
+    \node [DataIO] (Initiator-Optimizer) {7: $z1^*$\\\\[-10pt] $z2^*$\\\\[-10pt] $x1^*$}; &
+    \node [Optimization] (Optimizer) {$1,6\to2$:\\OPT}; &
+    &
+    \node [DataInter] (D1-Optimizer) {3: $x1$\\\\[-10pt] $z2$\\\\[-10pt] $z1$}; &
+    \node [DataInter] (D2-Optimizer) {3: $z2$\\\\[-10pt] $z1$}; &
+    \node [DataInter] (F-Optimizer) {5: $x1$\\\\[-10pt] $z2$}; &
+    &
+    \\
+    &
+    &
+    \node [MDA] (MDA) {$2,4\to3$:\\MDA}; &
+    \node [DataInter] (D1-MDA) {3: $y2^c$}; &
+    \node [DataInter] (D2-MDA) {3: $y1^c$}; &
+    &
+    &
+    \\
+    \node [DataIO] (Initiator-D1) {7: $y1^*$}; &
+    &
+    \node [DataInter] (MDA-D1) {4: $y1$}; &
+    \node [Analysis] (D1) {$3$:\\D1}; &
+    &
+    \node [DataInter] (F-D1) {5: $y1$}; &
+    &
+    \node [DataInter] (G1-D1) {5: $y1$}; \\
+    %Row 5
+    \node [DataIO] (Initiator-D2) {7: $y2^*$}; &
+    &
+    \node [DataInter] (MDA-D2) {4: $y2$}; &
+    &
+    \node [Analysis] (D2) {$3$:\\D2}; &
+    \node [DataInter] (F-D2) {5: $y2$}; &
+    \node [DataInter] (G2-D2) {5: $y2$}; &
+    \\
+    &
+    \node [DataInter] (Optimizer-F) {6: $f$}; &
+    &
+    &
+    &
+    \node [Function] (F) {$5$:\\F}; &
+    &
+    \\
+    &
+    \node [DataInter] (Optimizer-G2) {6: $g2$}; &
+    &
+    &
+    &
+    &
+    \node [Function] (G2) {$5$:\\G2}; &
+    \\
+    &
+    \node [DataInter] (Optimizer-G1) {6: $g1$}; &
+    &
+    &
+    &
+    &
+    &
+    \node [Function] (G1) {$5$:\\G1}; \\
+    %Row 9
+  };
+
+   % XDSM_writer process chains 
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (Initiator);
+       \chainin (Optimizer)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (Optimizer);
+       \chainin (Initiator)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (Optimizer);
+       \chainin (MDA)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (MDA);
+       \chainin (F)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (MDA);
+       \chainin (D2)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (MDA);
+       \chainin (G2)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (MDA);
+       \chainin (G1)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (MDA);
+       \chainin (D1)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (D2);
+       \chainin (MDA)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+   { [start chain=process]
+       \begin{pgfonlayer}{process}
+       \chainin (D1);
+       \chainin (MDA)    [join=by ProcessHV];
+       \end{pgfonlayer}
+   }
+
+  \begin{pgfonlayer}{data}
+    \path
+    % Horizontal edges
+    (Initiator) edge [DataLine] (MDA-Initiator)
+    (Initiator-Optimizer) edge [DataLine] (F-Optimizer)
+    (MDA) edge [DataLine] (D2-MDA)
+    (Initiator-D1) edge [DataLine] (G1-D1)
+    (Initiator-D2) edge [DataLine] (G2-D2)
+    (Optimizer-F) edge [DataLine] (F)
+    (Optimizer-G2) edge [DataLine] (G2)
+    (Optimizer-G1) edge [DataLine] (G1)
+    % Vertical edges
+    (Initiator) edge [DataLine] (Initiator-D2)
+    (Optimizer-Initiator) edge [DataLine] (Optimizer-G1)
+    (MDA-Initiator) edge [DataLine] (MDA-D2)
+    (D1-Optimizer) edge [DataLine] (D1)
+    (D2-Optimizer) edge [DataLine] (D2)
+    (F-Optimizer) edge [DataLine] (F)
+    (G2-D2) edge [DataLine] (G2)
+    (G1-D1) edge [DataLine] (G1)
+    ;
+  \end{pgfonlayer}
+
+\end{tikzpicture}
+
+\end{document}