From 1c9a5808d531a75b2149befb502d4a2c0b8bde8e Mon Sep 17 00:00:00 2001 From: imcovangent <I.vanGent@tudelft.nl> Date: Mon, 11 Jul 2016 11:13:22 +0200 Subject: [PATCH] resolves #22 (PSG for IDF) resolves #23 (PSG for MDF with Jacobi) --- .gitignore | 5 +- pyKADMOS/AGILE_EY01_DEMO.py | 6 +- pyKADMOS/AGILE_EY01_DEMO_big.log | 12 +- pyKADMOS/AGILE_EY01_DEMO_big.pdf | Bin 70218 -> 70219 bytes pyKADMOS/AGILE_EY01_DEMO_big.tex | 20 +- pyKADMOS/AGILE_EY01_DEMO_small.log | 4 +- pyKADMOS/AGILE_EY01_DEMO_small.pdf | Bin 63182 -> 63422 bytes pyKADMOS/AGILE_EY01_DEMO_small.tex | 10 +- pyKADMOS/CPACSdummyProblem.py | 2 +- pyKADMOS/MDOproblem.py | 326 ++++++--- pyKADMOS/MDOproblem.pyc | Bin 31976 -> 34776 bytes pyKADMOS/MDOstatic.py | 75 +- pyKADMOS/MDOstatic.pyc | Bin 17499 -> 18528 bytes pyKADMOS/doc/KADMOS.html | 2 +- pyKADMOS/doc/genindex.html | 2 +- pyKADMOS/sellarProblem.py | 71 +- ...blemXDSM.aux => sellarProblemXDSM_IDF.aux} | 0 ...blemXDSM.log => sellarProblemXDSM_IDF.log} | 40 +- pyKADMOS/sellarProblemXDSM_IDF.pdf | Bin 0 -> 54657 bytes pyKADMOS/sellarProblemXDSM_IDF.tex | 212 ++++++ pyKADMOS/sellarProblemXDSM_MDF_GS.aux | 1 + pyKADMOS/sellarProblemXDSM_MDF_GS.log | 658 ++++++++++++++++++ ...mXDSM.pdf => sellarProblemXDSM_MDF_GS.pdf} | Bin 55471 -> 55401 bytes ...mXDSM.tex => sellarProblemXDSM_MDF_GS.tex} | 39 +- pyKADMOS/sellarProblemXDSM_MDF_Jac.aux | 1 + pyKADMOS/sellarProblemXDSM_MDF_Jac.log | 658 ++++++++++++++++++ pyKADMOS/sellarProblemXDSM_MDF_Jac.pdf | Bin 0 -> 55238 bytes pyKADMOS/sellarProblemXDSM_MDF_Jac.tex | 183 +++++ 28 files changed, 2107 insertions(+), 220 deletions(-) rename pyKADMOS/{sellarProblemXDSM.aux => sellarProblemXDSM_IDF.aux} (100%) rename pyKADMOS/{sellarProblemXDSM.log => sellarProblemXDSM_IDF.log} (95%) create mode 100644 pyKADMOS/sellarProblemXDSM_IDF.pdf create mode 100644 pyKADMOS/sellarProblemXDSM_IDF.tex create mode 100644 pyKADMOS/sellarProblemXDSM_MDF_GS.aux create mode 100644 pyKADMOS/sellarProblemXDSM_MDF_GS.log rename pyKADMOS/{sellarProblemXDSM.pdf => sellarProblemXDSM_MDF_GS.pdf} (92%) rename pyKADMOS/{sellarProblemXDSM.tex => sellarProblemXDSM_MDF_GS.tex} (82%) create mode 100644 pyKADMOS/sellarProblemXDSM_MDF_Jac.aux create mode 100644 pyKADMOS/sellarProblemXDSM_MDF_Jac.log create mode 100644 pyKADMOS/sellarProblemXDSM_MDF_Jac.pdf create mode 100644 pyKADMOS/sellarProblemXDSM_MDF_Jac.tex diff --git a/.gitignore b/.gitignore index 4cb29e4f0..13bbe5b91 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 0e40125c1..db645bb7a 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 52b74a294..e176ed700 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 GIT binary patch delta 8291 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 b<>6`J?&<4pV~ZsqEGQ&|MNcoQE{F9$FslNN delta 8290 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 Rar5!;@*z=EODahr{STgX4o(07 diff --git a/pyKADMOS/AGILE_EY01_DEMO_big.tex b/pyKADMOS/AGILE_EY01_DEMO_big.tex index 0f4829870..4975a3fa2 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 a8c20f54d..e64dcc1eb 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 GIT binary patch delta 20072 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 PHZw3VHwq;sMNdWwA<4I0 delta 19836 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 diff --git a/pyKADMOS/AGILE_EY01_DEMO_small.tex b/pyKADMOS/AGILE_EY01_DEMO_small.tex index 593f3b696..2c4039c72 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 bb329fe4c..ea32997d8 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 584577ae9..a57bde498 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 GIT binary patch delta 9381 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 delta 6871 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∨~G?Ug&maZzr7I`(!4P?dUOx;sz(#mXvU3yL?J)Wxy z=E%mTB1vMUa5v+Y$@ab$TCmnZb~K1CZO_n1k3^qnw!BNZJ^Gfy?ovxAwTe*CtQPuK z2n4frj35<TT~YpS6FKa9@4~KUZ%no*i3L&jA(D3SveK4J^-~8|>^^m9Jqmq-l=gN) zwNiu%W3=hiLJa*Ydzah(U)<Zl<#i?RwqNcY0<$b33CP=?g11Sxhn65&RZ8Dcgh_r{ zIS~@Mx#vYDL`m_iu#<w^&(<@%^;gM>;`M4TLcP8S^}hcS*0n`p(en>!ZHwxCSBR^s z5Qh~P;_P8WlkFb*jwZkC9*tAFShY$U$p5g7qx9xVWX6@F(BI*A9SgM8*dlqkt}A2& zUVo5GdjHkZXlGGCRy?*0M3!a|{9nD0HM!!2(sx~ElK{DL>h8X(%`0F?2FYwuRxV(e zOE!8(=V*Iz6A-mUKv4ErKqT9JqjT>qeu51zKEW<|B`Df}5I=1|i~AM^uy4^r%i6av zK>OBp$s0*M+4o#(9}g-ErR1l4qcJLW+E50>W_nEM*Ne^j!b5n6|EE+JQ%~jBn-S^9 z0gsQ)eSO+DsI6X}os}=<M{YkW)rC7QG|{WK5W@q5d`8C=G2PRQo3kk+h6y!z;*J2$ zxqKens`26X0ri6uAr~2^`QM-DY8#5qrqgTp88O|MO5><MJg~DR8jnt$NXODKoG?`5 z$(41>sWFo<W7DydMyjQ7nG<uViOecj%nh~&Gb8G`JGVTXtx!*$j5)sIREg}3^4sdU z?BA3pw=%bQqI;a!HK;B+gx)}1K4$5$i3x*ljmHh`cVNNEhmX^A2Vv-wbkB!-5&Kqx zuBFlxF^=7Q)O;Nh{UCn;;iD|hX#~`$5Yy2FUl{QPb;_8Yx!quue3YkCmZd+8Bb9Yd z7j!&h+XPC)JdrT?+OdERU5V&MN`>xv*v+T-@2fA~b)#xL)zpA%+r9gSB6`$}vV1{A zTca+X3aOo^+v#53I6c{0Nt|?59s&0R9WQAyD`@S~DY7gAm5x?tgKUzmbXIMUPTAm4 zZ=P<-l~X6+tZ{bGP{>_IN7<FKN(P-}v;!1>0z48T@c?~lWWDst6_;_<IBT6Dc@6V4 z(EoIFT*eV_)XEljUBOQCB@CsP^;FB5+E9aRb~MX^M>Vok`sq{c@T=&VYh;sp@XU7g zr!(7godCNLWCchQNIyt3NDIgzkRu?iAg4h1R;CNBb0B<M_f@oTUuNCZ@HN7p(R~x- zB8Y=v<^PV*mZLQ&)y}hr-I|N$%9ZDyPx+DO)-_%btxu}w?y0Z!5-%@f+%WH$Ngbc# tixTz5J$=4i;DWd|r25Y$I@_pOMq!uHy#gqL_RBJ7)xU-H36#;Z_dkj2E5!f+ diff --git a/pyKADMOS/MDOstatic.py b/pyKADMOS/MDOstatic.py index e41cc6edb..2609c16e0 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 GIT binary patch delta 2348 zcmaJ@U2IcT9RHtl@9o#xjRE^8h3zuhQT8cc6Sjej4a-a%vl}Ta;4*hg*LAe(y>~ja zOM~5mN(_vXm?$xlXaYtFnm+7B6HL$t@gqL?k@$d5#0OuDiBBf_Kj*ev!GxZB&;6g@ z|LdIp$4P&Ejr?|n1eCvgo|PN<*ff-W4*VX$*L-Is(2^&>D9ouap#oE28DK&Krb@yA zOp}BY;x1qgSSB#x2IiCxg?N=DT(GRcgcq1w3i~APk;2tdu}ac468B1agK#<)_5pnQ z!2?1(#Y^;aLh6dc>Ytm5&injtkni|c{#&GqTU#Rj1OU^ahi!+RB?^m|AO|pu8*ky? zZV7el0Dn${6a^zk79)_OfJ^_-*)CXeKn{-;L;;5si14OB!`TSQMo28%N-SiCpg@4& zB9`4mVmSiF*Mzk~<T%?Yrf`|EG?>MJ>;l#X1t3dK$T?wF6Yhk8Gze-e++MsI=u?`v zVtl7FX)|eB@$~csUC@>>l}uaui&Jw8#d}S!5yxebgfslK{uF;p-|Y$Ea!^3u^B?qO z4P7TfJhpvX{v*JRzDmGCA2@4JpkUsq0BITgu>w@U!VvX|-3j@Br8<Jn@^a0l3YJTP zn?*!Qj<mAP1N}re#<i_^phBo@&X^&V8*++ph9SaSn22C>+jw_Nhp!z{3Ya$~(!pn1 z_O{x{?-J>hDRaU(3iYTj{Ch=)Sr`AJr6FHSSvMv@1Xu;5nX)I=SDlpYUSIV+#2ce* zk2nK{46Qb-Sx8Z~SK=~p>v(~(eG-?aSi|$iHOlr&1_r*;(1#CgY;}D_MX!i@{Dm?f zuxeoSz#1T-0#<K&RU8+4NC^B*Sq(7khDJyzlKZygx+J$%VYR@2+R;u%ISuY27Vik| zAeZ@Qu*tWo;JFwPfi+h7E5U&8z9Q_}$bJ5PuqRxvmSoV=14TqHtYS=Zo{DJnsH~fl z(B5!XEvcjMfGUIwD(it<RfX`15Iz%Xti$x7*k@Agw#J^s9At0v*F)Q!eUNgYH-0PB zkRR2sB3L_iAGT`^<h<ZdIlzc$)&|+ZHdK=Fi|+xH#m_<T7w}w%HLDtye2{%svwV^m zEfJy^d|=#@8%S%cSLVn2aDLdEnpG<tp<^sx)+Gw4pb*)sc)n}eT4A|icB2r({F3ZF z6`z=hz#Us6dq>L-sQARP4-|Z2IX8BCzi8F>iZ@!XIC)!}C-As--`};O>gHC|c%0Oi zd#)=@-w3mJaf0XSNDXo0>&3BA(%xdBXGJ5qVqO11m0T~LI8v>UyZrgVE%|ARDjL2D zzVaIR7zwNgyu_%OB&8rFvH=27aa!yyU#8gL*bzX6&IaHN6~(xuh+;$qp@k)lN!|xB zEL~LVm1>x)lG-z<*9uFjyl`FMM=flBcbV`A!ZwitdCT4uR~6o$1(25~tHO|aamS{@ zFCN<5Ja34*(wd3u=N9JX^n@`rKcgqp5}C^+u5PUx7>QdiWsKA*o9WT<*K1vvkK60s zN_c+Cm^!b=7n9cH)Hy3|OiJ_o;y`^qBVk>_x`dPIM1`?Om3s9TGMPDBz=&H5M!MHl z6T8Eml{jJ}C5A-I0G_Q=|KG@$A+rGmq^KT=4vZexN29|d<DDl?j_V$CJMwIFV0=6} zeDvh_u`y5QBR^Aw&ogpjsLYGH5imtfNVhis*ifX*Pa-D|NrIoGsGgCq_-haq1r!y# zi8kV7d2oueMBJQAV&p8rH7}T$JcKczVPRkDU{~8vWsIZZ+;Stf1{w+@0&+5+2L8{{ z;lou3$k0#9JpYV4GJ`_Os}Xy+s79M5?WP*>V_V2U9VA@KUmn~^#`(L0z0T+<X`26W p^mL~S$^P>hwlEhzEH^Dq;~-v&?WDM?aAdrP8b5Idy+QA${{U{j|9$`f delta 1395 zcmY*YU1%It6h7z9+}WMYY|^G%vYTy8vOC*uVw%*hNq-XSLW^63Kq1INpbz2=m0gL< zWQ2&bq;?}nEw$yoRIo@b79Uzln7k+iEEOywJ_v$n5TOVK>x1-3@WFF$c9YG_oqNwY z^PO|<`TOG<{`Mhejc3Wk2Y249z5%VrqO(lj(xvO!+=2nC0P`jYQxhBn*MtQNF%TB4 zBFx7@5KW80LP8U9SmiL^1;W-~N6Ql$oYab4n(kIAb46$E>nDhIbenA;rlQx)e^NLo z=Q5Y^JNbL&9wy|K{z|VHf~f|B<&Pi)s3C}9`Lw?<mV->lq0Yd62bU`lG9Wf{=KMG` zEC}i1c>-7(P?j%c`_7lqD`V9g#DIRf&_qCDs-A<@5W#<lq5ze%;-K0NwW)wZ%>q#b zF#=7%MhwCj)VOk|3@n18=8B`yT6WryYe&*iVQ>+xt16H4@{^&L<*!2%376Q@O7w%= zH@wO&xboBCft4?TZgL4BAS1MMXfjyZ=n%5D@TU%;0RiRUq;jwD|7mp+#@g(*O%sB+ z7VcFcw;b`d&B+;5j)~vWoa_L#&G`!$*bo}Z8RdYIy+jg9--rxyW64pd8?f|+mOL-- z<w`BdpIR~||IVe~It)RQ)UgrQjsO~D&;-AmiE&D@N+59un3&k%MwvLW!yVuC?;H~^ zs1PV)bg8~=3vV)URC@W;fs0I(G(g{a2XKRl7v-&dDt~8}=k*<qslHYX^|SmXKZMWZ zzxe^o%RYAkXJy45K~H*ae(Z`ttwjxVfdRE81<<OWPNU<m8+0{+DmDJP{Km~DHx25M zmSj^tai@y=%oc{6JvLMV3MPdWCOQHtnPObNQYaM{&6YZWPnimQ(G-&qc6ETSD)6mB zdOwwfU|(t2T`s05jow}PV_{(BB-G>N%?!Gsk%YzCuD<bSIaOJV(#X(^^+4!Arfz|M zh6j7}*lmegn2b7)5tfeQkZDq+(|pUW_bR7)lLK$IMW_lV!C!f#?^NgFgszUWyL^{< zuva-E$JCPIu<DAYfqK9w;v0OsTWqNHDwrBS?~zHXs&cZih441Gcgmzy^&T6vs-aEe zISoLKx*R<{cr6y)9{<>k=1QL#&wZ~(@>|;A+<xpqn?8r$UQOH4o@3WJz8if$bHc=% z(Pp{Zzz6cL)BUX2BfZKYd9yObi%MI*Uw%y<J=>d35o4jl9K-IS_ibk;ecyH+_kYRG BD|G+> diff --git a/pyKADMOS/doc/KADMOS.html b/pyKADMOS/doc/KADMOS.html index 2e90c7013..912de3d25 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 42d5a02c9..3faf8b309 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 eed8f4308..c38fcd657 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 9f1b7beb0..3dcd49c9d 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 GIT binary patch literal 54657 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 R^C)ekwiZ}f+43v~{5RHLB^>|& literal 0 HcmV?d00001 diff --git a/pyKADMOS/sellarProblemXDSM_IDF.tex b/pyKADMOS/sellarProblemXDSM_IDF.tex new file mode 100644 index 000000000..6a32393f1 --- /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 000000000..f23e54680 --- /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 000000000..56c6d62dd --- /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 GIT binary patch delta 3827 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 delta 3919 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 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 19fbfc587..403f6c8cd 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 000000000..f23e54680 --- /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 000000000..0bedcc6b7 --- /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 GIT binary patch literal 55238 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	ObG<;@!AuJVS9{$GHLuHYlY3(} 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 literal 0 HcmV?d00001 diff --git a/pyKADMOS/sellarProblemXDSM_MDF_Jac.tex b/pyKADMOS/sellarProblemXDSM_MDF_Jac.tex new file mode 100644 index 000000000..fec29a951 --- /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} -- GitLab