From 9472e451d2ecc343a215e95d76b07970c8b23fb0 Mon Sep 17 00:00:00 2001 From: Karl-Hermann Wieners <karl-hermann.wieners@mpimet.mpg.de> Date: Thu, 5 Nov 2015 22:21:18 +0000 Subject: [PATCH] Prepared for release 0.3.4 * Changed VERSION_ variable in standard config to be optional, added info if missing * Updated documentation * Updated version info and change list --- CHANGES.txt | 9 + doc/mkexp.fodt | 740 +++++++++++++++++++++++++------------------------ doc/mkexp.pdf | Bin 387900 -> 387806 bytes expconfig.py | 30 +- mkexp | 6 +- setup.py | 2 +- 6 files changed, 408 insertions(+), 379 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 82622cf..e42f98c 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -6,6 +6,15 @@ Make Experiments! Release Changes --------------- +Release 0.3.4 +============= + +Configuration +------------- + +* The VERSION_ keyword in standard config files is now optional. + The user is notified if it is missing in at least one file. + Release 0.3.3 ============= diff --git a/doc/mkexp.fodt b/doc/mkexp.fodt index 13f4016..8c094dc 100644 --- a/doc/mkexp.fodt +++ b/doc/mkexp.fodt @@ -1,24 +1,24 @@ <?xml version="1.0" encoding="UTF-8"?> <office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oasis:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text"> - <office:meta><meta:creation-date>2015-01-05T17:44:27.618344249</meta:creation-date><dc:title>Make Experiments!</dc:title><meta:editing-duration>P11DT23H3M26S</meta:editing-duration><meta:editing-cycles>97</meta:editing-cycles><meta:generator>LibreOffice/4.2.8.2$Linux_X86_64 LibreOffice_project/420m0$Build-2</meta:generator><meta:initial-creator>Karl-Hermann Wieners</meta:initial-creator><dc:date>2015-07-27T10:39:38.143371588</dc:date><dc:creator>Karl-Hermann Wieners</dc:creator><meta:printed-by>Karl-Hermann Wieners</meta:printed-by><meta:print-date>2015-01-20T10:55:48.576690105</meta:print-date><dc:subject>Run-script generation for earth system models</dc:subject><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="26" meta:paragraph-count="523" meta:word-count="7155" meta:character-count="45701" meta:non-whitespace-character-count="38693"/><meta:template xlink:type="simple" xlink:actuate="onRequest" xlink:title="A4" xlink:href="../../../../../../../../../../home/m221078/.config/libreoffice/4/user/template/A4.ott" meta:date="2015-01-05T17:44:27.463210655"/></office:meta> + <office:meta><meta:creation-date>2015-01-05T17:44:27.618344249</meta:creation-date><dc:title>Make Experiments!</dc:title><meta:editing-duration>P11DT23H4M5S</meta:editing-duration><meta:editing-cycles>99</meta:editing-cycles><meta:generator>LibreOffice/4.2.8.2$Linux_X86_64 LibreOffice_project/420m0$Build-2</meta:generator><meta:initial-creator>Karl-Hermann Wieners</meta:initial-creator><dc:date>2015-11-05T23:10:43.863488180</dc:date><dc:creator>Karl-Hermann Wieners</dc:creator><meta:printed-by>Karl-Hermann Wieners</meta:printed-by><meta:print-date>2015-01-20T10:55:48.576690105</meta:print-date><dc:subject>Run-script generation for earth system models</dc:subject><meta:document-statistic meta:table-count="0" meta:image-count="0" meta:object-count="0" meta:page-count="26" meta:paragraph-count="523" meta:word-count="7155" meta:character-count="45703" meta:non-whitespace-character-count="38695"/><meta:template xlink:type="simple" xlink:actuate="onRequest" xlink:title="A4" xlink:href="../../../../../../../../../../home/m221078/.config/libreoffice/4/user/template/A4.ott" meta:date="2015-01-05T17:44:27.463210655"/></office:meta> <office:settings> <config:config-item-set config:name="ooo:view-settings"> - <config:config-item config:name="ViewAreaTop" config:type="long">6114</config:config-item> + <config:config-item config:name="ViewAreaTop" config:type="long">267626</config:config-item> <config:config-item config:name="ViewAreaLeft" config:type="long">0</config:config-item> - <config:config-item config:name="ViewAreaWidth" config:type="long">49558</config:config-item> + <config:config-item config:name="ViewAreaWidth" config:type="long">32731</config:config-item> <config:config-item config:name="ViewAreaHeight" config:type="long">21407</config:config-item> <config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item> <config:config-item config:name="InBrowseMode" config:type="boolean">false</config:config-item> <config:config-item-map-indexed config:name="Views"> <config:config-item-map-entry> <config:config-item config:name="ViewId" config:type="string">view2</config:config-item> - <config:config-item config:name="ViewLeft" config:type="long">15953</config:config-item> - <config:config-item config:name="ViewTop" config:type="long">15314</config:config-item> + <config:config-item config:name="ViewLeft" config:type="long">16540</config:config-item> + <config:config-item config:name="ViewTop" config:type="long">279996</config:config-item> <config:config-item config:name="VisibleLeft" config:type="long">0</config:config-item> - <config:config-item config:name="VisibleTop" config:type="long">6114</config:config-item> - <config:config-item config:name="VisibleRight" config:type="long">49556</config:config-item> - <config:config-item config:name="VisibleBottom" config:type="long">27518</config:config-item> + <config:config-item config:name="VisibleTop" config:type="long">267626</config:config-item> + <config:config-item config:name="VisibleRight" config:type="long">32729</config:config-item> + <config:config-item config:name="VisibleBottom" config:type="long">289031</config:config-item> <config:config-item config:name="ZoomType" config:type="short">0</config:config-item> <config:config-item config:name="ViewLayoutColumns" config:type="short">0</config:config-item> <config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item> @@ -81,9 +81,9 @@ <config:config-item config:name="ConsiderTextWrapOnObjPos" config:type="boolean">false</config:config-item> <config:config-item config:name="CurrentDatabaseCommandType" config:type="int">0</config:config-item> <config:config-item config:name="RedlineProtectionKey" config:type="base64Binary"/> - <config:config-item config:name="Rsid" config:type="int">13136032</config:config-item> + <config:config-item config:name="Rsid" config:type="int">13178698</config:config-item> <config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item> - <config:config-item config:name="PrinterSetup" config:type="base64Binary">pwH+/09mZmljZWpldC00NjIwLXNlcmllcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ1VQUzpPZmZpY2VqZXQtNDYyMC1zZXJpZXMAAAAAAAAWAAMAyQAAAAAAAAAEAAhSAAAEdAAASm9iRGF0YSAxCnByaW50ZXI9T2ZmaWNlamV0LTQ2MjAtc2VyaWVzCm9yaWVudGF0aW9uPVBvcnRyYWl0CmNvcGllcz0xCmNvbGxhdGU9ZmFsc2UKbWFyZ2luZGFqdXN0bWVudD0wLDAsMCwwCmNvbG9yZGVwdGg9MjQKcHNsZXZlbD0wCnBkZmRldmljZT0xCmNvbG9yZGV2aWNlPTAKUFBEQ29udGV4RGF0YQpJbnB1dFNsb3Q6QXV0bwBQYWdlU2l6ZTpBNAAAEgBDT01QQVRfRFVQTEVYX01PREUOAERVUExFWF9VTktOT1dO</config:config-item> + <config:config-item config:name="PrinterSetup" config:type="base64Binary">pwH+/09mZmljZWpldC00NjIwLXNlcmllcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ1VQUzpPZmZpY2VqZXQtNDYyMC1zZXJpZXMAAAAAAAAWAAMAyQAAAAAAAAAEAAhSAAAEdAAASm9iRGF0YSAxCnByaW50ZXI9T2ZmaWNlamV0LTQ2MjAtc2VyaWVzCm9yaWVudGF0aW9uPVBvcnRyYWl0CmNvcGllcz0xCmNvbGxhdGU9ZmFsc2UKbWFyZ2luZGFqdXN0bWVudD0wLDAsMCwwCmNvbG9yZGVwdGg9MjQKcHNsZXZlbD0wCnBkZmRldmljZT0xCmNvbG9yZGV2aWNlPTAKUFBEQ29udGV4RGF0YQpQYWdlU2l6ZTpBNABJbnB1dFNsb3Q6QXV0bwAAEgBDT01QQVRfRFVQTEVYX01PREUOAERVUExFWF9VTktOT1dO</config:config-item> <config:config-item config:name="AlignTabStopPosition" config:type="boolean">true</config:config-item> <config:config-item config:name="ProtectForm" config:type="boolean">false</config:config-item> <config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item> @@ -718,432 +718,435 @@ <style:text-properties fo:font-style="normal" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> <style:style style:name="P114" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties fo:font-style="normal" style:text-underline-style="none" style:font-style-asian="normal" style:font-style-complex="normal"/> + <style:text-properties fo:font-style="normal" officeooo:rsid="00c4ca99" officeooo:paragraph-rsid="00c4ca99" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> <style:style style:name="P115" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties fo:font-style="normal" style:text-underline-style="none" officeooo:rsid="0056317a" officeooo:paragraph-rsid="00551136" style:font-style-asian="normal" style:font-style-complex="normal"/> + <style:text-properties fo:font-style="normal" style:text-underline-style="none" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> <style:style style:name="P116" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties fo:font-style="normal" style:text-underline-style="none" officeooo:rsid="00584c1a" officeooo:paragraph-rsid="005a5c62" style:font-style-asian="normal" style:font-style-complex="normal"/> + <style:text-properties fo:font-style="normal" style:text-underline-style="none" officeooo:rsid="0056317a" officeooo:paragraph-rsid="00551136" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> <style:style style:name="P117" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties fo:font-style="normal" style:text-underline-style="none" officeooo:paragraph-rsid="005a5c62" style:font-style-asian="normal" style:font-style-complex="normal"/> + <style:text-properties fo:font-style="normal" style:text-underline-style="none" officeooo:rsid="00584c1a" officeooo:paragraph-rsid="005a5c62" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> <style:style style:name="P118" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties fo:font-style="normal" style:text-underline-style="none" officeooo:rsid="005ac4c7" officeooo:paragraph-rsid="005ac4c7" style:font-style-asian="normal" style:font-style-complex="normal"/> + <style:text-properties fo:font-style="normal" style:text-underline-style="none" officeooo:paragraph-rsid="005a5c62" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> <style:style style:name="P119" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties fo:font-style="normal" style:text-underline-style="none" officeooo:paragraph-rsid="005ac4c7" style:font-style-asian="normal" style:font-style-complex="normal"/> + <style:text-properties fo:font-style="normal" style:text-underline-style="none" officeooo:rsid="005ac4c7" officeooo:paragraph-rsid="005ac4c7" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> <style:style style:name="P120" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties fo:font-style="normal" style:text-underline-style="none" officeooo:rsid="005b6c85" officeooo:paragraph-rsid="005b6c85" style:font-style-asian="normal" style:font-style-complex="normal"/> + <style:text-properties fo:font-style="normal" style:text-underline-style="none" officeooo:paragraph-rsid="005ac4c7" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> <style:style style:name="P121" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties fo:font-style="normal" style:text-underline-style="none" officeooo:paragraph-rsid="00657146" style:font-style-asian="normal" style:font-style-complex="normal"/> + <style:text-properties fo:font-style="normal" style:text-underline-style="none" officeooo:rsid="005b6c85" officeooo:paragraph-rsid="005b6c85" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> <style:style style:name="P122" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties fo:font-style="normal" style:text-underline-style="none" officeooo:rsid="00657146" officeooo:paragraph-rsid="00657146" style:font-style-asian="normal" style:font-style-complex="normal"/> + <style:text-properties fo:font-style="normal" style:text-underline-style="none" officeooo:paragraph-rsid="00657146" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> <style:style style:name="P123" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties fo:font-style="normal" fo:font-weight="bold" officeooo:rsid="00881a06" officeooo:paragraph-rsid="00881a06" style:font-style-asian="normal" style:font-weight-asian="bold" style:font-style-complex="normal" style:font-weight-complex="bold"/> + <style:text-properties fo:font-style="normal" style:text-underline-style="none" officeooo:rsid="00657146" officeooo:paragraph-rsid="00657146" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> <style:style style:name="P124" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties fo:font-style="normal" fo:font-weight="normal" officeooo:rsid="00c6886f" officeooo:paragraph-rsid="00c6886f" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-style-complex="normal" style:font-weight-complex="normal"/> + <style:text-properties fo:font-style="normal" fo:font-weight="bold" officeooo:rsid="00881a06" officeooo:paragraph-rsid="00881a06" style:font-style-asian="normal" style:font-weight-asian="bold" style:font-style-complex="normal" style:font-weight-complex="bold"/> </style:style> <style:style style:name="P125" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties fo:font-style="normal" fo:font-weight="normal" officeooo:rsid="00136724" officeooo:paragraph-rsid="00c6886f" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-style-complex="normal" style:font-weight-complex="normal"/> + <style:text-properties fo:font-style="normal" fo:font-weight="normal" officeooo:rsid="00c6886f" officeooo:paragraph-rsid="00c6886f" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-style-complex="normal" style:font-weight-complex="normal"/> </style:style> <style:style style:name="P126" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:rsid="00405b5f"/> + <style:text-properties fo:font-style="normal" fo:font-weight="normal" officeooo:rsid="00136724" officeooo:paragraph-rsid="00c6886f" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-style-complex="normal" style:font-weight-complex="normal"/> </style:style> <style:style style:name="P127" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:rsid="0051a8b5" officeooo:paragraph-rsid="0051a8b5"/> + <style:text-properties officeooo:rsid="00405b5f"/> </style:style> <style:style style:name="P128" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:paragraph-rsid="00551136"/> + <style:text-properties officeooo:rsid="0051a8b5" officeooo:paragraph-rsid="0051a8b5"/> </style:style> <style:style style:name="P129" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:rsid="0056317a" officeooo:paragraph-rsid="0056317a"/> + <style:text-properties officeooo:paragraph-rsid="00551136"/> </style:style> <style:style style:name="P130" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:rsid="0056317a" officeooo:paragraph-rsid="00c2926f"/> + <style:text-properties officeooo:rsid="0056317a" officeooo:paragraph-rsid="0056317a"/> </style:style> <style:style style:name="P131" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:paragraph-rsid="005ac4c7"/> + <style:text-properties officeooo:rsid="0056317a" officeooo:paragraph-rsid="00c2926f"/> </style:style> <style:style style:name="P132" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:paragraph-rsid="005b6c85"/> + <style:text-properties officeooo:paragraph-rsid="005ac4c7"/> </style:style> <style:style style:name="P133" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:rsid="005b6c85" officeooo:paragraph-rsid="005b6c85"/> + <style:text-properties officeooo:paragraph-rsid="005b6c85"/> </style:style> <style:style style:name="P134" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:paragraph-rsid="00657146"/> + <style:text-properties officeooo:rsid="005b6c85" officeooo:paragraph-rsid="005b6c85"/> </style:style> <style:style style:name="P135" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:paragraph-rsid="006e58f1"/> + <style:text-properties officeooo:paragraph-rsid="00657146"/> </style:style> <style:style style:name="P136" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:rsid="00823929" officeooo:paragraph-rsid="00823929"/> + <style:text-properties officeooo:paragraph-rsid="006e58f1"/> </style:style> <style:style style:name="P137" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:rsid="00840f80" officeooo:paragraph-rsid="00840f80"/> + <style:text-properties officeooo:rsid="00823929" officeooo:paragraph-rsid="00823929"/> </style:style> <style:style style:name="P138" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:rsid="00840f80" officeooo:paragraph-rsid="00881a06"/> + <style:text-properties officeooo:rsid="00840f80" officeooo:paragraph-rsid="00840f80"/> </style:style> <style:style style:name="P139" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:paragraph-rsid="00881a06"/> + <style:text-properties officeooo:rsid="00840f80" officeooo:paragraph-rsid="00881a06"/> </style:style> <style:style style:name="P140" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:rsid="008a0101" officeooo:paragraph-rsid="008a0101"/> + <style:text-properties officeooo:paragraph-rsid="00881a06"/> </style:style> <style:style style:name="P141" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:paragraph-rsid="008a0101"/> + <style:text-properties officeooo:rsid="008a0101" officeooo:paragraph-rsid="008a0101"/> </style:style> <style:style style:name="P142" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:rsid="008b134d" officeooo:paragraph-rsid="008b134d"/> + <style:text-properties officeooo:paragraph-rsid="008a0101"/> </style:style> <style:style style:name="P143" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:rsid="008ba54a" officeooo:paragraph-rsid="008c2cba"/> + <style:text-properties officeooo:rsid="008b134d" officeooo:paragraph-rsid="008b134d"/> </style:style> <style:style style:name="P144" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:rsid="008c2cba" officeooo:paragraph-rsid="008c2cba"/> + <style:text-properties officeooo:rsid="008ba54a" officeooo:paragraph-rsid="008c2cba"/> </style:style> <style:style style:name="P145" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:rsid="00931d47" officeooo:paragraph-rsid="00931d47"/> + <style:text-properties officeooo:rsid="008c2cba" officeooo:paragraph-rsid="008c2cba"/> </style:style> <style:style style:name="P146" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:rsid="0089d9b6"/> + <style:text-properties officeooo:rsid="00931d47" officeooo:paragraph-rsid="00931d47"/> </style:style> <style:style style:name="P147" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:rsid="00c4ca99" officeooo:paragraph-rsid="00c4ca99"/> + <style:text-properties officeooo:rsid="0089d9b6"/> </style:style> <style:style style:name="P148" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties officeooo:paragraph-rsid="00c6886f"/> + <style:text-properties officeooo:rsid="00c4ca99" officeooo:paragraph-rsid="00c4ca99"/> </style:style> <style:style style:name="P149" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> + <style:text-properties officeooo:paragraph-rsid="00c6886f"/> + </style:style> + <style:style style:name="P150" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> <style:text-properties officeooo:paragraph-rsid="00c85300"/> </style:style> - <style:style style:name="P150" style:family="paragraph" style:parent-style-name="List_20_Heading"> + <style:style style:name="P151" style:family="paragraph" style:parent-style-name="List_20_Heading"> <style:text-properties officeooo:rsid="00469c32" officeooo:paragraph-rsid="00469c32"/> </style:style> - <style:style style:name="P151" style:family="paragraph" style:parent-style-name="List_20_Heading"> + <style:style style:name="P152" style:family="paragraph" style:parent-style-name="List_20_Heading"> <style:text-properties officeooo:rsid="00469c32" officeooo:paragraph-rsid="004e33b4"/> </style:style> - <style:style style:name="P152" style:family="paragraph" style:parent-style-name="List_20_Heading"> + <style:style style:name="P153" style:family="paragraph" style:parent-style-name="List_20_Heading"> <style:text-properties fo:font-style="normal" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P153" style:family="paragraph" style:parent-style-name="List_20_Heading"> + <style:style style:name="P154" style:family="paragraph" style:parent-style-name="List_20_Heading"> <style:text-properties fo:font-style="normal" officeooo:rsid="004584b6" officeooo:paragraph-rsid="004584b6" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P154" style:family="paragraph" style:parent-style-name="List_20_Heading"> + <style:style style:name="P155" style:family="paragraph" style:parent-style-name="List_20_Heading"> <style:text-properties fo:font-style="normal" officeooo:rsid="0045d600" officeooo:paragraph-rsid="0045d600" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P155" style:family="paragraph" style:parent-style-name="List_20_Heading"> + <style:style style:name="P156" style:family="paragraph" style:parent-style-name="List_20_Heading"> <style:text-properties fo:font-style="normal" officeooo:rsid="00469c32" officeooo:paragraph-rsid="00469c32" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P156" style:family="paragraph" style:parent-style-name="List_20_Heading"> + <style:style style:name="P157" style:family="paragraph" style:parent-style-name="List_20_Heading"> <style:text-properties fo:font-style="normal" officeooo:rsid="00493380" officeooo:paragraph-rsid="00493380" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P157" style:family="paragraph" style:parent-style-name="List_20_Heading"> + <style:style style:name="P158" style:family="paragraph" style:parent-style-name="List_20_Heading"> <style:text-properties fo:font-style="normal" officeooo:paragraph-rsid="00493380" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P158" style:family="paragraph" style:parent-style-name="List_20_Heading"> + <style:style style:name="P159" style:family="paragraph" style:parent-style-name="List_20_Heading"> <style:text-properties fo:font-style="normal" officeooo:rsid="009d837c" officeooo:paragraph-rsid="009d837c" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P159" style:family="paragraph" style:parent-style-name="List_20_Heading"> + <style:style style:name="P160" style:family="paragraph" style:parent-style-name="List_20_Heading"> <style:text-properties fo:font-style="normal" style:text-underline-style="none" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P160" style:family="paragraph" style:parent-style-name="List_20_Heading"> + <style:style style:name="P161" style:family="paragraph" style:parent-style-name="List_20_Heading"> <style:text-properties fo:font-style="normal" style:text-underline-style="none" officeooo:rsid="009beecc" officeooo:paragraph-rsid="009beecc" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P161" style:family="paragraph" style:parent-style-name="List_20_Heading"> + <style:style style:name="P162" style:family="paragraph" style:parent-style-name="List_20_Heading"> <style:text-properties officeooo:rsid="00493380" officeooo:paragraph-rsid="004e33b4"/> </style:style> - <style:style style:name="P162" style:family="paragraph" style:parent-style-name="List_20_Heading"> + <style:style style:name="P163" style:family="paragraph" style:parent-style-name="List_20_Heading"> <style:text-properties officeooo:rsid="00484f3f" officeooo:paragraph-rsid="004e33b4"/> </style:style> - <style:style style:name="P163" style:family="paragraph" style:parent-style-name="List_20_Heading"> + <style:style style:name="P164" style:family="paragraph" style:parent-style-name="List_20_Heading"> <style:text-properties officeooo:rsid="00719334" officeooo:paragraph-rsid="00719334"/> </style:style> - <style:style style:name="P164" style:family="paragraph" style:parent-style-name="List_20_Heading"> + <style:style style:name="P165" style:family="paragraph" style:parent-style-name="List_20_Heading"> <style:text-properties officeooo:rsid="00c20e43" officeooo:paragraph-rsid="00c20e43"/> </style:style> - <style:style style:name="P165" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P166" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties officeooo:rsid="004584b6" officeooo:paragraph-rsid="004584b6"/> </style:style> - <style:style style:name="P166" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P167" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties officeooo:rsid="00469c32" officeooo:paragraph-rsid="00469c32"/> </style:style> - <style:style style:name="P167" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P168" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties officeooo:rsid="00493380" officeooo:paragraph-rsid="00493380"/> </style:style> - <style:style style:name="P168" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P169" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties fo:font-style="normal" officeooo:rsid="0045d600" officeooo:paragraph-rsid="0045d600" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P169" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P170" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties fo:font-style="normal" officeooo:rsid="00484f3f" officeooo:paragraph-rsid="004e33b4" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P170" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P171" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties fo:font-style="normal" officeooo:rsid="00493380" officeooo:paragraph-rsid="00493380" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P171" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P172" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties fo:font-style="normal" officeooo:rsid="00493380" officeooo:paragraph-rsid="004e33b4" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P172" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P173" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties fo:font-style="normal" officeooo:rsid="00469c32" officeooo:paragraph-rsid="00469c32" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P173" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P174" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties fo:font-style="normal" officeooo:rsid="007ab691" officeooo:paragraph-rsid="007ab691" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P174" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P175" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties fo:font-style="normal" officeooo:rsid="009d837c" officeooo:paragraph-rsid="009d837c" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P175" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P176" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties fo:font-style="normal" officeooo:rsid="00719334" officeooo:paragraph-rsid="00719334" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P176" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P177" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties fo:font-style="normal" fo:font-weight="normal" officeooo:rsid="00925c69" officeooo:paragraph-rsid="00925c69" style:font-style-asian="normal" style:font-weight-asian="normal" style:font-style-complex="normal" style:font-weight-complex="normal"/> </style:style> - <style:style style:name="P177" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P178" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties fo:font-style="normal" style:text-underline-style="none" officeooo:rsid="009beecc" officeooo:paragraph-rsid="009beecc" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P178" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P179" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties officeooo:rsid="00484f3f" officeooo:paragraph-rsid="004e33b4"/> </style:style> - <style:style style:name="P179" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P180" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties officeooo:rsid="006c5326" officeooo:paragraph-rsid="006c5326"/> </style:style> - <style:style style:name="P180" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P181" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties officeooo:paragraph-rsid="00779a5b"/> </style:style> - <style:style style:name="P181" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P182" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties fo:font-style="italic" officeooo:rsid="007ab691" officeooo:paragraph-rsid="007ab691" style:font-style-asian="italic" style:font-style-complex="italic"/> </style:style> - <style:style style:name="P182" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P183" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties fo:font-style="italic" officeooo:rsid="00925c69" officeooo:paragraph-rsid="00925c69" style:font-style-asian="italic" style:font-style-complex="italic"/> </style:style> - <style:style style:name="P183" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P184" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties fo:font-style="italic" officeooo:rsid="00779a5b" officeooo:paragraph-rsid="00a52bc9" style:font-style-asian="italic" style:font-style-complex="italic"/> </style:style> - <style:style style:name="P184" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P185" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties officeooo:rsid="007a1e4b" officeooo:paragraph-rsid="007a1e4b"/> </style:style> - <style:style style:name="P185" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P186" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties officeooo:rsid="007ab691" officeooo:paragraph-rsid="007ab691"/> </style:style> - <style:style style:name="P186" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P187" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties officeooo:rsid="007bf983" officeooo:paragraph-rsid="007bf983"/> </style:style> - <style:style style:name="P187" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P188" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties officeooo:rsid="008e53fe" officeooo:paragraph-rsid="008f3b90"/> </style:style> - <style:style style:name="P188" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P189" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties officeooo:rsid="0090e55e" officeooo:paragraph-rsid="00913e1d"/> </style:style> - <style:style style:name="P189" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P190" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties officeooo:rsid="00beeeb9" officeooo:paragraph-rsid="00beeeb9"/> </style:style> - <style:style style:name="P190" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P191" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties officeooo:rsid="00beeeb9" officeooo:paragraph-rsid="00c0dbdb"/> </style:style> - <style:style style:name="P191" style:family="paragraph" style:parent-style-name="List_20_Contents"> + <style:style style:name="P192" style:family="paragraph" style:parent-style-name="List_20_Contents"> <style:text-properties officeooo:rsid="00c20e43" officeooo:paragraph-rsid="00c20e43"/> </style:style> - <style:style style:name="P192" style:family="paragraph" style:parent-style-name="Preformatted_20_List_20_Heading"> + <style:style style:name="P193" style:family="paragraph" style:parent-style-name="Preformatted_20_List_20_Heading"> <style:text-properties officeooo:paragraph-rsid="007a1e4b"/> </style:style> - <style:style style:name="P193" style:family="paragraph" style:parent-style-name="Preformatted_20_List_20_Heading"> + <style:style style:name="P194" style:family="paragraph" style:parent-style-name="Preformatted_20_List_20_Heading"> <style:text-properties officeooo:rsid="007ab691" officeooo:paragraph-rsid="007ab691"/> </style:style> - <style:style style:name="P194" style:family="paragraph" style:parent-style-name="Preformatted_20_List_20_Heading"> + <style:style style:name="P195" style:family="paragraph" style:parent-style-name="Preformatted_20_List_20_Heading"> <style:text-properties officeooo:paragraph-rsid="007bf983"/> </style:style> - <style:style style:name="P195" style:family="paragraph" style:parent-style-name="Preformatted_20_List_20_Heading"> + <style:style style:name="P196" style:family="paragraph" style:parent-style-name="Preformatted_20_List_20_Heading"> <style:text-properties officeooo:rsid="008e53fe" officeooo:paragraph-rsid="008e53fe"/> </style:style> - <style:style style:name="P196" style:family="paragraph" style:parent-style-name="Preformatted_20_List_20_Heading"> + <style:style style:name="P197" style:family="paragraph" style:parent-style-name="Preformatted_20_List_20_Heading"> <style:text-properties fo:font-style="italic" officeooo:rsid="00925c69" officeooo:paragraph-rsid="00925c69" style:font-style-asian="italic" style:font-style-complex="italic"/> </style:style> - <style:style style:name="P197" style:family="paragraph" style:parent-style-name="Preformatted_20_List_20_Heading"> + <style:style style:name="P198" style:family="paragraph" style:parent-style-name="Preformatted_20_List_20_Heading"> <style:text-properties officeooo:paragraph-rsid="0090e55e"/> </style:style> - <style:style style:name="P198" style:family="paragraph" style:parent-style-name="Preformatted_20_List_20_Heading"> + <style:style style:name="P199" style:family="paragraph" style:parent-style-name="Preformatted_20_List_20_Heading"> <style:text-properties officeooo:rsid="00925c69" officeooo:paragraph-rsid="00925c69"/> </style:style> - <style:style style:name="P199" style:family="paragraph" style:parent-style-name="Preformatted_20_List_20_Heading"> + <style:style style:name="P200" style:family="paragraph" style:parent-style-name="Preformatted_20_List_20_Heading"> <style:text-properties officeooo:rsid="00beeeb9" officeooo:paragraph-rsid="00beeeb9"/> </style:style> - <style:style style:name="P200" style:family="paragraph" style:parent-style-name="Preformatted_20_List_20_Heading"> + <style:style style:name="P201" style:family="paragraph" style:parent-style-name="Preformatted_20_List_20_Heading"> <style:text-properties officeooo:rsid="00beeeb9" officeooo:paragraph-rsid="00c0dbdb"/> </style:style> - <style:style style:name="P201" style:family="paragraph" style:parent-style-name="Preformatted_20_Text_20_Interrupt"> + <style:style style:name="P202" style:family="paragraph" style:parent-style-name="Preformatted_20_Text_20_Interrupt"> <style:text-properties officeooo:paragraph-rsid="008c2cba"/> </style:style> - <style:style style:name="P202" style:family="paragraph" style:parent-style-name="Preformatted_20_Text_20_Indented"> + <style:style style:name="P203" style:family="paragraph" style:parent-style-name="Preformatted_20_Text_20_Indented"> <style:text-properties fo:font-style="normal" officeooo:rsid="008f3b90" officeooo:paragraph-rsid="008f3b90" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P203" style:family="paragraph" style:parent-style-name="Caption"> + <style:style style:name="P204" style:family="paragraph" style:parent-style-name="Caption"> <style:paragraph-properties fo:text-align="center" style:justify-single-word="false"/> </style:style> - <style:style style:name="P204" style:family="paragraph" style:parent-style-name="Contents_20_Heading"> + <style:style style:name="P205" style:family="paragraph" style:parent-style-name="Contents_20_Heading"> <style:paragraph-properties fo:break-before="page"/> </style:style> - <style:style style:name="P205" style:family="paragraph" style:parent-style-name="Heading_20_1"> + <style:style style:name="P206" style:family="paragraph" style:parent-style-name="Heading_20_1"> <style:paragraph-properties fo:break-before="page"/> <style:text-properties officeooo:rsid="000a3505" officeooo:paragraph-rsid="000a3505"/> </style:style> - <style:style style:name="P206" style:family="paragraph" style:parent-style-name="Contents_20_1"> + <style:style style:name="P207" style:family="paragraph" style:parent-style-name="Contents_20_1"> <style:paragraph-properties> <style:tab-stops> <style:tab-stop style:position="17cm" style:type="right" style:leader-style="dotted" style:leader-text="."/> </style:tab-stops> </style:paragraph-properties> </style:style> - <style:style style:name="P207" style:family="paragraph" style:parent-style-name="Contents_20_2"> + <style:style style:name="P208" style:family="paragraph" style:parent-style-name="Contents_20_2"> <style:paragraph-properties> <style:tab-stops> <style:tab-stop style:position="16.501cm" style:type="right" style:leader-style="dotted" style:leader-text="."/> </style:tab-stops> </style:paragraph-properties> </style:style> - <style:style style:name="P208" style:family="paragraph" style:parent-style-name="Contents_20_3"> + <style:style style:name="P209" style:family="paragraph" style:parent-style-name="Contents_20_3"> <style:paragraph-properties> <style:tab-stops> <style:tab-stop style:position="16.002cm" style:type="right" style:leader-style="dotted" style:leader-text="."/> </style:tab-stops> </style:paragraph-properties> </style:style> - <style:style style:name="P209" style:family="paragraph" style:parent-style-name="Heading_20_1"> + <style:style style:name="P210" style:family="paragraph" style:parent-style-name="Heading_20_1"> <style:text-properties officeooo:rsid="001888a2" officeooo:paragraph-rsid="009eea28"/> </style:style> - <style:style style:name="P210" style:family="paragraph" style:parent-style-name="Title" style:master-page-name=""> + <style:style style:name="P211" style:family="paragraph" style:parent-style-name="Title" style:master-page-name=""> <style:paragraph-properties style:page-number="auto"/> <style:text-properties officeooo:rsid="000a3505" officeooo:paragraph-rsid="000a3505"/> </style:style> - <style:style style:name="P211" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P212" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties officeooo:rsid="00750ebf" officeooo:paragraph-rsid="0074d148"/> </style:style> - <style:style style:name="P212" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P213" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties officeooo:rsid="00750ebf" officeooo:paragraph-rsid="00750ebf"/> </style:style> - <style:style style:name="P213" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P214" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties fo:font-style="normal" style:text-underline-style="none" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P214" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P215" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties fo:font-style="normal" style:text-underline-style="none" officeooo:rsid="009beecc" officeooo:paragraph-rsid="009beecc" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P215" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P216" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties fo:font-style="normal" style:text-underline-style="none" officeooo:paragraph-rsid="00c2926f" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P216" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P217" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties fo:font-style="normal" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P217" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P218" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties fo:font-style="normal" officeooo:paragraph-rsid="00931d47" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P218" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P219" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties fo:font-style="normal" officeooo:rsid="009715be" officeooo:paragraph-rsid="009acc7d" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P219" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P220" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties fo:font-style="normal" officeooo:rsid="009715be" officeooo:paragraph-rsid="00c6886f" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P220" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P221" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties officeooo:rsid="0063d022" officeooo:paragraph-rsid="0063d022"/> </style:style> - <style:style style:name="P221" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P222" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties officeooo:paragraph-rsid="00931d47"/> </style:style> - <style:style style:name="P222" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P223" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties officeooo:rsid="00c6886f" officeooo:paragraph-rsid="00c6886f"/> </style:style> - <style:style style:name="P223" style:family="paragraph" style:parent-style-name="Subtitle"> + <style:style style:name="P224" style:family="paragraph" style:parent-style-name="Subtitle"> <style:text-properties officeooo:rsid="000a3505" officeooo:paragraph-rsid="000a3505"/> </style:style> - <style:style style:name="P224" style:family="paragraph" style:parent-style-name="Subtitle"> + <style:style style:name="P225" style:family="paragraph" style:parent-style-name="Subtitle"> <style:text-properties officeooo:rsid="000a3505" officeooo:paragraph-rsid="00beeeb9"/> </style:style> - <style:style style:name="P225" style:family="paragraph" style:parent-style-name="Subtitle"> + <style:style style:name="P226" style:family="paragraph" style:parent-style-name="Subtitle"> <style:text-properties officeooo:rsid="00beeeb9" officeooo:paragraph-rsid="00beeeb9"/> </style:style> - <style:style style:name="P226" style:family="paragraph" style:parent-style-name="Heading_20_2"> + <style:style style:name="P227" style:family="paragraph" style:parent-style-name="Heading_20_2"> <style:text-properties officeooo:paragraph-rsid="00b17591"/> </style:style> - <style:style style:name="P227" style:family="paragraph" style:parent-style-name="Heading_20_2"> + <style:style style:name="P228" style:family="paragraph" style:parent-style-name="Heading_20_2"> <style:text-properties officeooo:rsid="00288fc1" officeooo:paragraph-rsid="00423119"/> </style:style> - <style:style style:name="P228" style:family="paragraph" style:parent-style-name="Heading_20_2"> + <style:style style:name="P229" style:family="paragraph" style:parent-style-name="Heading_20_2"> <style:text-properties officeooo:paragraph-rsid="00423119"/> </style:style> - <style:style style:name="P229" style:family="paragraph" style:parent-style-name="Heading_20_2"> + <style:style style:name="P230" style:family="paragraph" style:parent-style-name="Heading_20_2"> <style:text-properties officeooo:paragraph-rsid="0063d022"/> </style:style> - <style:style style:name="P230" style:family="paragraph" style:parent-style-name="Heading_20_2"> + <style:style style:name="P231" style:family="paragraph" style:parent-style-name="Heading_20_2"> <style:text-properties fo:font-style="normal" officeooo:paragraph-rsid="0086f697" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P231" style:family="paragraph" style:parent-style-name="Title" style:master-page-name="First_20_Page"> + <style:style style:name="P232" style:family="paragraph" style:parent-style-name="Text_20_body"> + <style:text-properties fo:font-style="normal" officeooo:rsid="00c85300" officeooo:paragraph-rsid="00c85300" style:font-style-asian="normal" style:font-style-complex="normal"/> + </style:style> + <style:style style:name="P233" style:family="paragraph" style:parent-style-name="Title" style:master-page-name="First_20_Page"> <style:paragraph-properties style:page-number="auto"/> <style:text-properties officeooo:rsid="000a3505" officeooo:paragraph-rsid="000a3505"/> </style:style> - <style:style style:name="P232" style:family="paragraph" style:parent-style-name="Heading_20_2"> + <style:style style:name="P234" style:family="paragraph" style:parent-style-name="Heading_20_2"> <style:text-properties officeooo:paragraph-rsid="00b17591"/> </style:style> - <style:style style:name="P233" style:family="paragraph" style:parent-style-name="Heading_20_2"> + <style:style style:name="P235" style:family="paragraph" style:parent-style-name="Heading_20_2"> <style:text-properties officeooo:rsid="00288fc1" officeooo:paragraph-rsid="00423119"/> </style:style> - <style:style style:name="P234" style:family="paragraph" style:parent-style-name="Heading_20_2"> + <style:style style:name="P236" style:family="paragraph" style:parent-style-name="Heading_20_2"> <style:text-properties officeooo:paragraph-rsid="00423119"/> </style:style> - <style:style style:name="P235" style:family="paragraph" style:parent-style-name="Heading_20_2"> + <style:style style:name="P237" style:family="paragraph" style:parent-style-name="Heading_20_2"> <style:text-properties officeooo:paragraph-rsid="0063d022"/> </style:style> - <style:style style:name="P236" style:family="paragraph" style:parent-style-name="Heading_20_2"> + <style:style style:name="P238" style:family="paragraph" style:parent-style-name="Heading_20_2"> <style:text-properties fo:font-style="normal" officeooo:paragraph-rsid="0086f697" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P237" style:family="paragraph" style:parent-style-name="Heading_20_1"> + <style:style style:name="P239" style:family="paragraph" style:parent-style-name="Heading_20_1"> <style:text-properties officeooo:rsid="001888a2" officeooo:paragraph-rsid="009eea28"/> </style:style> - <style:style style:name="P238" style:family="paragraph" style:parent-style-name="Heading_20_1"> + <style:style style:name="P240" style:family="paragraph" style:parent-style-name="Heading_20_1"> <style:paragraph-properties fo:break-before="page"/> <style:text-properties officeooo:rsid="000a3505" officeooo:paragraph-rsid="000a3505"/> </style:style> - <style:style style:name="P239" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P241" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties officeooo:rsid="00750ebf" officeooo:paragraph-rsid="0074d148"/> </style:style> - <style:style style:name="P240" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P242" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties officeooo:rsid="00750ebf" officeooo:paragraph-rsid="00750ebf"/> </style:style> - <style:style style:name="P241" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P243" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties fo:font-style="normal" style:text-underline-style="none" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P242" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P244" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties fo:font-style="normal" style:text-underline-style="none" officeooo:rsid="009beecc" officeooo:paragraph-rsid="009beecc" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P243" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P245" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties fo:font-style="normal" style:text-underline-style="none" officeooo:paragraph-rsid="00c2926f" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P244" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P246" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties fo:font-style="normal" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P245" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P247" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties fo:font-style="normal" officeooo:paragraph-rsid="00931d47" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P246" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P248" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties fo:font-style="normal" officeooo:rsid="009715be" officeooo:paragraph-rsid="00c6886f" style:font-style-asian="normal" style:font-style-complex="normal"/> </style:style> - <style:style style:name="P247" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P249" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties officeooo:rsid="0063d022" officeooo:paragraph-rsid="0063d022"/> </style:style> - <style:style style:name="P248" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P250" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties officeooo:paragraph-rsid="00931d47"/> </style:style> - <style:style style:name="P249" style:family="paragraph" style:parent-style-name="Heading_20_3"> + <style:style style:name="P251" style:family="paragraph" style:parent-style-name="Heading_20_3"> <style:text-properties officeooo:rsid="00c6886f" officeooo:paragraph-rsid="00c6886f"/> </style:style> - <style:style style:name="P250" style:family="paragraph" style:parent-style-name="Preformatted_20_Text"> - <style:text-properties fo:font-style="normal" officeooo:rsid="00c4ca99" officeooo:paragraph-rsid="00c4ca99" style:font-style-asian="normal" style:font-style-complex="normal"/> - </style:style> <style:style style:name="T1" style:family="text"> <style:text-properties officeooo:rsid="000be205"/> </style:style> @@ -1747,6 +1750,9 @@ <style:style style:name="T201" style:family="text"> <style:text-properties officeooo:rsid="00c870a0"/> </style:style> + <style:style style:name="T202" style:family="text"> + <style:text-properties officeooo:rsid="00c9174a"/> + </style:style> <style:style style:name="Sect1" style:family="section"> <style:section-properties fo:background-color="transparent" style:editable="false"> <style:columns fo:column-count="1" fo:column-gap="0cm"/> @@ -1801,7 +1807,7 @@ <office:master-styles> <style:master-page style:name="Standard" style:page-layout-name="pm1"> <style:footer> - <text:p text:style-name="Footer"><text:page-number text:select-page="current">2</text:page-number><text:tab/><text:tab/><text:modification-date style:data-style-name="N84">2015-07-27</text:modification-date>, <text:modification-time style:data-style-name="N41">10:39:38</text:modification-time></text:p> + <text:p text:style-name="Footer"><text:page-number text:select-page="current">10</text:page-number><text:tab/><text:tab/><text:modification-date style:data-style-name="N84">2015-11-05</text:modification-date>, <text:modification-time style:data-style-name="N41">23:10:44</text:modification-time></text:p> </style:footer> </style:master-page> <style:master-page style:name="First_20_Page" style:display-name="First Page" style:page-layout-name="pm2" style:next-style-name="Standard"/> @@ -1815,10 +1821,10 @@ <text:sequence-decl text:display-outline-level="0" text:name="Text"/> <text:sequence-decl text:display-outline-level="0" text:name="Drawing"/> </text:sequence-decls> - <text:p text:style-name="P231">Make Experiments!</text:p> - <text:p text:style-name="P224">Run-script generation for earth system models</text:p> - <text:p text:style-name="P225">Release 0.3.<text:span text:style-name="T201">3</text:span></text:p> - <text:p text:style-name="P203">Karl-Hermann Wieners<text:line-break/><text:span text:style-name="T196">Max-Planck-Institut für Meteorologie<text:line-break/>Hamburg</text:span></text:p> + <text:p text:style-name="P233">Make Experiments!</text:p> + <text:p text:style-name="P225">Run-script generation for earth system models</text:p> + <text:p text:style-name="P226">Release 0.3.<text:span text:style-name="T202">4</text:span></text:p> + <text:p text:style-name="P204">Karl-Hermann Wieners<text:line-break/><text:span text:style-name="T196">Max-Planck-Institut für Meteorologie<text:line-break/>Hamburg</text:span></text:p> <text:table-of-content text:style-name="Sect1" text:protected="true" text:name="Table of Contents1"> <text:table-of-content-source text:outline-level="10"> <text:index-title-template text:style-name="Contents_20_Heading">Table of Contents</text:index-title-template> @@ -1905,58 +1911,58 @@ </text:table-of-content-source> <text:index-body> <text:index-title text:style-name="Sect2" text:name="Table of Contents1_Head"> - <text:p text:style-name="P204">Table of Contents</text:p> + <text:p text:style-name="P205">Table of Contents</text:p> </text:index-title> - <text:p text:style-name="P206"><text:a xlink:type="simple" xlink:href="#__RefHeading__2518_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">1 Introduction<text:tab/>3</text:a></text:p> - <text:p text:style-name="P207"><text:a xlink:type="simple" xlink:href="#__RefHeading__2520_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">1.1 Example: ECHAM experiment setup<text:tab/>3</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2522_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">1.1.1 Experiments are defined by custom and default settings<text:tab/>3</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2524_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">1.1.2 Job templates are completed by settings to create scripts<text:tab/>4</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2526_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">1.1.3 Generating scripts only refers to the custom settings' file<text:tab/>6</text:a></text:p> - <text:p text:style-name="P206"><text:a xlink:type="simple" xlink:href="#__RefHeading__2528_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2 Details on experiment definition<text:tab/>6</text:a></text:p> - <text:p text:style-name="P207"><text:a xlink:type="simple" xlink:href="#__RefHeading__2530_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.1 Design<text:tab/>7</text:a></text:p> - <text:p text:style-name="P207"><text:a xlink:type="simple" xlink:href="#__RefHeading__2532_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.2 Tools<text:tab/>7</text:a></text:p> - <text:p text:style-name="P207"><text:a xlink:type="simple" xlink:href="#__RefHeading__2534_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.3 Format of .config files<text:tab/>8</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__1669_1438093122" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.3.1 Variables<text:tab/>8</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2536_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.3.2 Sections<text:tab/>9</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2538_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.3.3 Special variables and sections<text:tab/>9</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2540_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.3.4 Variable interpolation<text:tab/>11</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2542_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.3.5 Evaluation of interpolation<text:tab/>12</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2544_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.3.6 Special expressions<text:tab/>13</text:a></text:p> - <text:p text:style-name="P207"><text:a xlink:type="simple" xlink:href="#__RefHeading__2546_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.4 Format of .tmpl files<text:tab/>14</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2548_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.4.1 Placeholders<text:tab/>14</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2550_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.4.2 Variables in sections<text:tab/>14</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2552_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.4.3 Expressions<text:tab/>15</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2554_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.4.4 Loops<text:tab/>15</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2556_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.4.5 Conditions<text:tab/>16</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2558_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.4.6 Comments<text:tab/>16</text:a></text:p> - <text:p text:style-name="P207"><text:a xlink:type="simple" xlink:href="#__RefHeading__2560_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.5 Standard experiments<text:tab/>17</text:a></text:p> - <text:p text:style-name="P207"><text:a xlink:type="simple" xlink:href="#__RefHeading__2562_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.6 Standard options<text:tab/>17</text:a></text:p> - <text:p text:style-name="P207"><text:a xlink:type="simple" xlink:href="#__RefHeading__2564_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.7 Standard environments<text:tab/>18</text:a></text:p> - <text:p text:style-name="P207"><text:a xlink:type="simple" xlink:href="#__RefHeading__1508_1711940803" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.8 Generating jobs<text:tab/>18</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2566_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.8.1 Changing the model job list<text:tab/>19</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2568_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.8.2 Pre-defined job variables<text:tab/>19</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2570_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.8.3 Overriding namelist settings in derived jobs<text:tab/>20</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2572_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.8.4 Native script variables<text:tab/>20</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2574_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.8.5 Initializing native script variables<text:tab/>21</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2576_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.8.6 Re-generation of scripts and backup<text:tab/>22</text:a></text:p> - <text:p text:style-name="P207"><text:a xlink:type="simple" xlink:href="#__RefHeading__1883_1672291846" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.9 Defining namelists and other configuration files<text:tab/>22</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2578_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.9.1 Formatting the namelist information<text:tab/>23</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2580_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.9.2 Suppressing namelist groups or variables<text:tab/>23</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2714_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.9.3 Using the namelist text<text:tab/>24</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2584_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.9.4 Non-namelist configuration files<text:tab/>24</text:a></text:p> - <text:p text:style-name="P207"><text:a xlink:type="simple" xlink:href="#__RefHeading__2831_1132221942" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.10 Defining input files for an experiment<text:tab/>25</text:a></text:p> - <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2833_1132221942" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.10.1 Overriding input files for certain jobs<text:tab/>25</text:a></text:p> + <text:p text:style-name="P207"><text:a xlink:type="simple" xlink:href="#__RefHeading__2518_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">1 Introduction<text:tab/>3</text:a></text:p> + <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2520_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">1.1 Example: ECHAM experiment setup<text:tab/>3</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2522_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">1.1.1 Experiments are defined by custom and default settings<text:tab/>3</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2524_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">1.1.2 Job templates are completed by settings to create scripts<text:tab/>4</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2526_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">1.1.3 Generating scripts only refers to the custom settings' file<text:tab/>6</text:a></text:p> + <text:p text:style-name="P207"><text:a xlink:type="simple" xlink:href="#__RefHeading__2528_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2 Details on experiment definition<text:tab/>6</text:a></text:p> + <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2530_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.1 Design<text:tab/>7</text:a></text:p> + <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2532_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.2 Tools<text:tab/>7</text:a></text:p> + <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2534_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.3 Format of .config files<text:tab/>8</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__1669_1438093122" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.3.1 Variables<text:tab/>8</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2536_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.3.2 Sections<text:tab/>9</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2538_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.3.3 Special variables and sections<text:tab/>9</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2540_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.3.4 Variable interpolation<text:tab/>11</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2542_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.3.5 Evaluation of interpolation<text:tab/>12</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2544_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.3.6 Special expressions<text:tab/>13</text:a></text:p> + <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2546_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.4 Format of .tmpl files<text:tab/>14</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2548_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.4.1 Placeholders<text:tab/>14</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2550_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.4.2 Variables in sections<text:tab/>14</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2552_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.4.3 Expressions<text:tab/>15</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2554_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.4.4 Loops<text:tab/>15</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2556_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.4.5 Conditions<text:tab/>16</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2558_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.4.6 Comments<text:tab/>16</text:a></text:p> + <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2560_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.5 Standard experiments<text:tab/>17</text:a></text:p> + <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2562_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.6 Standard options<text:tab/>17</text:a></text:p> + <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2564_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.7 Standard environments<text:tab/>18</text:a></text:p> + <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__1508_1711940803" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.8 Generating jobs<text:tab/>18</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2566_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.8.1 Changing the model job list<text:tab/>19</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2568_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.8.2 Pre-defined job variables<text:tab/>19</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2570_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.8.3 Overriding namelist settings in derived jobs<text:tab/>20</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2572_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.8.4 Native script variables<text:tab/>20</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2574_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.8.5 Initializing native script variables<text:tab/>21</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2576_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.8.6 Re-generation of scripts and backup<text:tab/>22</text:a></text:p> + <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__1883_1672291846" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.9 Defining namelists and other configuration files<text:tab/>22</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2578_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.9.1 Formatting the namelist information<text:tab/>23</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2580_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.9.2 Suppressing namelist groups or variables<text:tab/>23</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2714_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.9.3 Using the namelist text<text:tab/>24</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2584_1114405012" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.9.4 Non-namelist configuration files<text:tab/>24</text:a></text:p> + <text:p text:style-name="P208"><text:a xlink:type="simple" xlink:href="#__RefHeading__2831_1132221942" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.10 Defining input files for an experiment<text:tab/>25</text:a></text:p> + <text:p text:style-name="P209"><text:a xlink:type="simple" xlink:href="#__RefHeading__2833_1132221942" text:style-name="Index_20_Link" text:visited-style-name="Index_20_Link">2.10.1 Overriding input files for certain jobs<text:tab/>25</text:a></text:p> </text:index-body> </text:table-of-content> <text:p text:style-name="P80"/> - <text:h text:style-name="P205" text:outline-level="1"><text:bookmark-start text:name="__RefHeading__2518_1114405012"/>Introduction<text:bookmark-end text:name="__RefHeading__2518_1114405012"/></text:h> + <text:h text:style-name="P206" text:outline-level="1"><text:bookmark-start text:name="__RefHeading__2518_1114405012"/>Introduction<text:bookmark-end text:name="__RefHeading__2518_1114405012"/></text:h> <text:p text:style-name="Text_20_body">Running a numerical earth system model experiment requires a number of preparatory and processing steps like staging input data files, providing namelists and other configuration data, housekeeping duties like model-time management, post-processing and storing <text:span text:style-name="T1">of </text:span>output data. These steps are usually put into scripts or another kind of job description that is finally executed on some high-performance computing system.</text:p> <text:p text:style-name="P1">The <text:span text:style-name="T124">Make Experiments! (</text:span>mkexp<text:span text:style-name="T124">)</text:span> toolbox provides a generic interface to setting up such a<text:span text:style-name="T1">n experiment</text:span>. At the heart of this <text:span text:style-name="T1">lies</text:span> the so-called .config file. This is a simple <text:span text:style-name="T1">text </text:span>file that contains the model settings for your experiment in a way that is <text:span text:style-name="T1">largely </text:span>independent of the job description that is later used to run it.</text:p> <text:p text:style-name="P4">To make this an easy task, MPI-M's models are delivered with a number of standard experiment types. Your own .config file will chose one of these, thus inheriting their settings for use in your experiment. Typically, it will also override or amend these settings for the purpose of your experiment.</text:p> <text:p text:style-name="P2">While the .config fil<text:span text:style-name="T2">e contains all necessary settings, there is much more to the actual job description. Therefore, the standard experiment types also provide templates (.tmpl files) for the jobs to run, that are then converted to the final job step descriptions, using the .config file settings. Besides, the .config file contains a 'jobs' section, where the job control flow and parameters of the job description itself may be adjusted, e.g. requiring more resources or disabling certain job steps.</text:span></text:p> <text:h text:style-name="Heading_20_2" text:outline-level="2"><text:bookmark-start text:name="__RefHeading__2520_1114405012"/>Example: <text:span text:style-name="T3">ECHAM experiment setup</text:span><text:bookmark-end text:name="__RefHeading__2520_1114405012"/></text:h> <text:p text:style-name="P32">To illustrate the way <text:span text:style-name="T9">mkexp</text:span> works, let us look at the way that experiments with ECHAM, MPI-M's atmospheric circulation model, are set up.</text:p> - <text:h text:style-name="P211" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2522_1114405012"/>Experiments are defined by custom and default settings<text:bookmark-end text:name="__RefHeading__2522_1114405012"/></text:h> + <text:h text:style-name="P212" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2522_1114405012"/>Experiments are defined by custom and default settings<text:bookmark-end text:name="__RefHeading__2522_1114405012"/></text:h> <text:p text:style-name="P3">ECHAM comes with five <text:span text:style-name="T166">pre-defined </text:span>experiment types, amip-LR, amip-MR, amip-HR, sstClim-LR and sstClim-MR. <text:span text:style-name="T3">To set up an experiment based on one of these, like amip-LR, all you have to do is create your own experiment configuration file within ECHAM's run subdirectory, e.g. 'joe1234.config', setting amip-LR as experiment type and providing an experiment description with the header comment:</text:span></text:p> <text:p text:style-name="P89"><text:soft-page-break/># Standard AMIP experiment as baseline for further experiments (LR)</text:p> <text:p text:style-name="P89"/> @@ -1982,7 +1988,7 @@ <text:p text:style-name="P94">ATMO_INPUT_ROOT = /pool/data/ECHAM6/input/r0004 </text:p> <text:p text:style-name="P94">LAND_INPUT_ROOT = /pool/data/JSBACH/input/r0004 </text:p> <text:p text:style-name="P6">The final configuration is then merged from all of these three sources, where the experiment configuration may override <text:span text:style-name="T35">or amend </text:span>settings from the experiment type, and the type config may in turn change the model defaults.</text:p> - <text:h text:style-name="P212" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2524_1114405012"/>Job templates are completed by settings to create scripts<text:bookmark-end text:name="__RefHeading__2524_1114405012"/></text:h> + <text:h text:style-name="P213" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2524_1114405012"/>Job templates are completed by settings to create scripts<text:bookmark-end text:name="__RefHeading__2524_1114405012"/></text:h> <text:p text:style-name="P6"><text:span text:style-name="T165">Now the experiment configuration is finalized, the </text:span>settings are used to fill in <text:span text:style-name="T165">a kind of job description forms, so called </text:span><text:span text:style-name="T9">templates</text:span><text:span text:style-name="T165">, </text:span>from which eventually the <text:span text:style-name="T165">actual </text:span>job description files are created. As the structure of<text:span text:style-name="T165"> </text:span>jobs is largely independent of the model resolution, all amip- experiment types share the same set of template files. One of them is <text:span text:style-name="T186">'</text:span>amip.run.tmpl<text:span text:style-name="T186">'</text:span>, also within the run/standard_experiments subdirectory. <text:span text:style-name="T6">The excerpt below shows that t</text:span>his looks mostly like a shell script, but contains <text:span text:style-name="T123">placeholders</text:span> that are filled using the .config file information:</text:p> <text:p text:style-name="P94"><text:soft-page-break/>#! /bin/bash</text:p> <text:p text:style-name="P94"/> @@ -2049,28 +2055,28 @@ <text:p text:style-name="P13"><text:span text:style-name="T165">So, as soon as</text:span> <text:span text:style-name="T165">you have set up '</text:span>joe1234.config<text:span text:style-name="T165">'</text:span>, you may create the job scripts that are needed to run your experiment. Still within ECHAM's <text:span text:style-name="T167">'</text:span>run<text:span text:style-name="T167">'</text:span> subdirectory, type the following into your terminal:</text:p> <text:p text:style-name="Preformatted_20_Text">../util/mkexp/mkexp joe1234.config</text:p> <text:p text:style-name="P14">This will <text:span text:style-name="T124">read all configuration information and </text:span>create all job scripts that are defined within your experiment's setup, <text:span text:style-name="T124">using their respective templates as shown in the previous section</text:span>. <text:span text:style-name="T9">mkexp</text:span> will put these <text:span text:style-name="T124">scripts </text:span>in <text:span text:style-name="T124">a common</text:span> directory defined by the .config variable <text:span text:style-name="T167">'</text:span>SCRIPT_DIR<text:span text:style-name="T167">'</text:span>, and <text:span text:style-name="T167">print</text:span> the name of this directory on your terminal.</text:p> - <text:h text:style-name="P209" text:outline-level="1"><text:bookmark-start text:name="__RefHeading__2528_1114405012"/>Details on <text:span text:style-name="T185">experiment</text:span> <text:span text:style-name="T185">definition</text:span><text:bookmark-end text:name="__RefHeading__2528_1114405012"/></text:h> + <text:h text:style-name="P210" text:outline-level="1"><text:bookmark-start text:name="__RefHeading__2528_1114405012"/>Details on <text:span text:style-name="T185">experiment</text:span> <text:span text:style-name="T185">definition</text:span><text:bookmark-end text:name="__RefHeading__2528_1114405012"/></text:h> <text:p text:style-name="P15">With the introductory example of the previous section in mind, this section will give some more detailed information on specific aspects of <text:span text:style-name="T9">mkexp</text:span><text:span text:style-name="T38">.</text:span></text:p> - <text:h text:style-name="P226" text:outline-level="2"><text:bookmark-start text:name="__RefHeading__2530_1114405012"/><text:soft-page-break/>Design<text:bookmark-end text:name="__RefHeading__2530_1114405012"/></text:h> + <text:h text:style-name="P227" text:outline-level="2"><text:bookmark-start text:name="__RefHeading__2530_1114405012"/><text:soft-page-break/>Design<text:bookmark-end text:name="__RefHeading__2530_1114405012"/></text:h> <text:p text:style-name="P34">Experiment definition with <text:span text:style-name="T9">mkexp</text:span> <text:span text:style-name="T147">is organized</text:span> <text:span text:style-name="T147">in</text:span> three levels.</text:p> <text:p text:style-name="P34">The first level is the <text:span text:style-name="T9">mkexp</text:span> toolbox. It provides the front end to create an executable job description from a generic experiment configuration, <text:span text:style-name="T146">but does not contain any model specific information. Instead a basic set of conventions is defined that should be applicable to a very large range of model systems. When this document uses the term </text:span><text:span text:style-name="T18">mkexp</text:span><text:span text:style-name="T44">, it refers to this system level.</text:span></text:p> <text:p text:style-name="P34"><text:span text:style-name="T146">At a second level, a model needs to provide a number of files containing the information needed by </text:span><text:span text:style-name="T17">mkexp</text:span><text:span text:style-name="T146">: the required job steps and their interaction, the basic contents of job scripts, model specific information, and building blocks that may be combined to define a specific experiment. This is called the </text:span><text:span text:style-name="T17">model setup</text:span><text:span text:style-name="T43">. The files must maintain the naming conventions prescribed by </text:span><text:span text:style-name="T17">mkexp</text:span><text:span text:style-name="T43">.</text:span></text:p> <text:p text:style-name="P35"><text:span text:style-name="T38">Finally, the third level is the actual experiment definition. Here the user decides which of the building blocks from the previous level are needed, and </text:span><text:span text:style-name="T75">defines</text:span><text:span text:style-name="T38"> experiment specific settings that override or amend the information from the model setup. It is also essential to supply an experiment description and a – possibly unique – experiment identifier. All this is called the </text:span><text:span text:style-name="T9">user setup</text:span><text:span text:style-name="T38">.</text:span></text:p> <text:p text:style-name="P36"><text:span text:style-name="T38">All levels should make a clear distinction </text:span><text:span text:style-name="T45">between </text:span><text:span text:style-name="T38">the .config files, containing the experiment's configuration information, </text:span><text:span text:style-name="T45">and </text:span><text:span text:style-name="T38">the .tmpl files, containing the actual job description and job control syntax.</text:span></text:p> - <text:h text:style-name="P227" text:outline-level="2"><text:bookmark-start text:name="__RefHeading__2532_1114405012"/>Tools<text:bookmark-end text:name="__RefHeading__2532_1114405012"/></text:h> + <text:h text:style-name="P228" text:outline-level="2"><text:bookmark-start text:name="__RefHeading__2532_1114405012"/>Tools<text:bookmark-end text:name="__RefHeading__2532_1114405012"/></text:h> <text:p text:style-name="P81"><text:span text:style-name="T124">The </text:span><text:span text:style-name="T32">mkexp</text:span><text:span text:style-name="T124"> package provides a number of tools for working with script configurations and setups.</text:span></text:p> <text:p text:style-name="Preformatted_20_List_20_Heading">mkexp <text:span text:style-name="T23">file</text:span><text:span text:style-name="T56">.</text:span><text:span text:style-name="T38">config</text:span> [<text:span text:style-name="T9">name</text:span>=<text:span text:style-name="T9">value</text:span> ...]</text:p> - <text:p text:style-name="P180"><text:span text:style-name="T124">This is the main tool for generating an experiment setup. It </text:span>takes <text:span text:style-name="T168">the given</text:span> <text:span text:style-name="T168">user setup</text:span> and <text:span text:style-name="T187">the model setup that is referenced by the user setup </text:span>to generate <text:span text:style-name="T168">the</text:span> <text:span text:style-name="T168">job description files or</text:span> scripts that <text:span text:style-name="T187">are required to run a model experiment as specified in </text:span><text:span text:style-name="T21">file.</text:span><text:span text:style-name="T56">config</text:span><text:span text:style-name="T168">.</text:span></text:p> - <text:p text:style-name="P184">When running, <text:span text:style-name="T9">mkexp</text:span><text:span text:style-name="T38"> creates three directories, one each for the job scripts, run-time data, and output data, as defined by the setup. The names of these are printed, plus warnings if they already exist.</text:span></text:p> - <text:p text:style-name="P183">mkexp<text:span text:style-name="T38"> allows to override </text:span><text:span text:style-name="T54">or amend </text:span><text:span text:style-name="T38">the .config file settings on the command line </text:span><text:span text:style-name="T54">by defining or re-defining a variable </text:span><text:span text:style-name="T169">name</text:span><text:span text:style-name="T54"> set to </text:span><text:span text:style-name="T169">value</text:span><text:span text:style-name="T54">. Section variables are referenced as </text:span><text:span text:style-name="T169">sectionname</text:span><text:span text:style-name="T54">.</text:span><text:span text:style-name="T169">variablename</text:span><text:span text:style-name="T54">. Any periods in the variable name have to be duplicated, e.g. to set '.remove' in section 'jobs' to 'post', use 'jobs...remove=post'. Note that three periods will always be read as '.' followed by </text:span><text:soft-page-break/><text:span text:style-name="T54">'..', thus it is not possible to use variable names th</text:span><text:span text:style-name="T76">at</text:span><text:span text:style-name="T54"> </text:span><text:span text:style-name="T169">end</text:span><text:span text:style-name="T54"> </text:span><text:span text:style-name="T76">i</text:span><text:span text:style-name="T54">n a period.</text:span></text:p> - <text:p text:style-name="P193"><text:span text:style-name="T54">g</text:span><text:span text:style-name="T38">etexp [-v] </text:span><text:span text:style-name="T9">file</text:span><text:span text:style-name="T38">.config [</text:span><text:span text:style-name="T9">name</text:span><text:span text:style-name="T38">=</text:span><text:span text:style-name="T9">value ...</text:span><text:span text:style-name="T38">]</text:span></text:p> - <text:p text:style-name="P181">getexp<text:span text:style-name="T38"> reads the experiment setup the same way </text:span><text:span text:style-name="T76">as</text:span><text:span text:style-name="T38"> </text:span>mkexp<text:span text:style-name="T38">, but does not generate job scripts. Instead it prints the experiment name and directories to be generated in a shell-readable form. It is intended for debugging or passing setup information to utility scripts.</text:span></text:p> - <text:p text:style-name="P185"><text:span text:style-name="T38">When given the '-v' (verbose) option, </text:span><text:span text:style-name="T9">all</text:span><text:span text:style-name="T38"> global configuration variables and their values are printed in alphabetical order.</text:span></text:p> - <text:p text:style-name="P192">diffexp <text:span text:style-name="T22">file</text:span><text:span text:style-name="T23">1</text:span><text:span text:style-name="T170">.config </text:span><text:span text:style-name="T22">file2</text:span><text:span text:style-name="T55">.</text:span><text:span text:style-name="T56">config</text:span></text:p> - <text:p text:style-name="P173">For an easy comparison of the whole set of generated scripts for two different experiments, this tool takes the directories defined in each configuration, locates the job scripts corresponding to each other (e.g. exp0001.run and exp0002.run), equalizes all occurrences of the experiment name in the scripts and then uses the diff tool to show differences. The environment variable 'DIFF' may be set to an alternative tool to be called instead.</text:p> - <text:p text:style-name="P194">rmexp <text:span text:style-name="T24">file</text:span><text:span text:style-name="T171">.config</text:span><text:span text:style-name="T57"> [</text:span><text:span text:style-name="T24">name</text:span><text:span text:style-name="T57">=</text:span><text:span text:style-name="T24">value ...</text:span><text:span text:style-name="T57">]</text:span></text:p> - <text:p text:style-name="P186">This allows <text:span text:style-name="T174">interactive </text:span>remov<text:span text:style-name="T174">al for </text:span>all scripting and run-time data of an experiment without having to deal with path names, as these are read from the configuration.</text:p> - <text:h text:style-name="P228" text:outline-level="2"><text:bookmark-start text:name="__RefHeading__2534_1114405012"/><text:span text:style-name="T130">F</text:span>ormat of .config files<text:bookmark-end text:name="__RefHeading__2534_1114405012"/></text:h> + <text:p text:style-name="P181"><text:span text:style-name="T124">This is the main tool for generating an experiment setup. It </text:span>takes <text:span text:style-name="T168">the given</text:span> <text:span text:style-name="T168">user setup</text:span> and <text:span text:style-name="T187">the model setup that is referenced by the user setup </text:span>to generate <text:span text:style-name="T168">the</text:span> <text:span text:style-name="T168">job description files or</text:span> scripts that <text:span text:style-name="T187">are required to run a model experiment as specified in </text:span><text:span text:style-name="T21">file.</text:span><text:span text:style-name="T56">config</text:span><text:span text:style-name="T168">.</text:span></text:p> + <text:p text:style-name="P185">When running, <text:span text:style-name="T9">mkexp</text:span><text:span text:style-name="T38"> creates three directories, one each for the job scripts, run-time data, and output data, as defined by the setup. The names of these are printed, plus warnings if they already exist.</text:span></text:p> + <text:p text:style-name="P184">mkexp<text:span text:style-name="T38"> allows to override </text:span><text:span text:style-name="T54">or amend </text:span><text:span text:style-name="T38">the .config file settings on the command line </text:span><text:span text:style-name="T54">by defining or re-defining a variable </text:span><text:span text:style-name="T169">name</text:span><text:span text:style-name="T54"> set to </text:span><text:span text:style-name="T169">value</text:span><text:span text:style-name="T54">. Section variables are referenced as </text:span><text:span text:style-name="T169">sectionname</text:span><text:span text:style-name="T54">.</text:span><text:span text:style-name="T169">variablename</text:span><text:span text:style-name="T54">. Any periods in the variable name have to be duplicated, e.g. to set '.remove' in section 'jobs' to 'post', use 'jobs...remove=post'. Note that three periods will always be read as '.' followed by </text:span><text:soft-page-break/><text:span text:style-name="T54">'..', thus it is not possible to use variable names th</text:span><text:span text:style-name="T76">at</text:span><text:span text:style-name="T54"> </text:span><text:span text:style-name="T169">end</text:span><text:span text:style-name="T54"> </text:span><text:span text:style-name="T76">i</text:span><text:span text:style-name="T54">n a period.</text:span></text:p> + <text:p text:style-name="P194"><text:span text:style-name="T54">g</text:span><text:span text:style-name="T38">etexp [-v] </text:span><text:span text:style-name="T9">file</text:span><text:span text:style-name="T38">.config [</text:span><text:span text:style-name="T9">name</text:span><text:span text:style-name="T38">=</text:span><text:span text:style-name="T9">value ...</text:span><text:span text:style-name="T38">]</text:span></text:p> + <text:p text:style-name="P182">getexp<text:span text:style-name="T38"> reads the experiment setup the same way </text:span><text:span text:style-name="T76">as</text:span><text:span text:style-name="T38"> </text:span>mkexp<text:span text:style-name="T38">, but does not generate job scripts. Instead it prints the experiment name and directories to be generated in a shell-readable form. It is intended for debugging or passing setup information to utility scripts.</text:span></text:p> + <text:p text:style-name="P186"><text:span text:style-name="T38">When given the '-v' (verbose) option, </text:span><text:span text:style-name="T9">all</text:span><text:span text:style-name="T38"> global configuration variables and their values are printed in alphabetical order.</text:span></text:p> + <text:p text:style-name="P193">diffexp <text:span text:style-name="T22">file</text:span><text:span text:style-name="T23">1</text:span><text:span text:style-name="T170">.config </text:span><text:span text:style-name="T22">file2</text:span><text:span text:style-name="T55">.</text:span><text:span text:style-name="T56">config</text:span></text:p> + <text:p text:style-name="P174">For an easy comparison of the whole set of generated scripts for two different experiments, this tool takes the directories defined in each configuration, locates the job scripts corresponding to each other (e.g. exp0001.run and exp0002.run), equalizes all occurrences of the experiment name in the scripts and then uses the diff tool to show differences. The environment variable 'DIFF' may be set to an alternative tool to be called instead.</text:p> + <text:p text:style-name="P195">rmexp <text:span text:style-name="T24">file</text:span><text:span text:style-name="T171">.config</text:span><text:span text:style-name="T57"> [</text:span><text:span text:style-name="T24">name</text:span><text:span text:style-name="T57">=</text:span><text:span text:style-name="T24">value ...</text:span><text:span text:style-name="T57">]</text:span></text:p> + <text:p text:style-name="P187">This allows <text:span text:style-name="T174">interactive </text:span>remov<text:span text:style-name="T174">al for </text:span>all scripting and run-time data of an experiment without having to deal with path names, as these are read from the configuration.</text:p> + <text:h text:style-name="P229" text:outline-level="2"><text:bookmark-start text:name="__RefHeading__2534_1114405012"/><text:span text:style-name="T130">F</text:span>ormat of .config files<text:bookmark-end text:name="__RefHeading__2534_1114405012"/></text:h> <text:p text:style-name="P15">The .config files are simple text files containing a dictionary of variables with their respective values. They may be structured using sections and comments. <text:span text:style-name="T125">For reading these files, </text:span><text:span text:style-name="T12">mkexp</text:span><text:span text:style-name="T125"> uses the </text:span><text:span text:style-name="T12">configobj</text:span><text:span text:style-name="T125"> Python library. All settings found in the .config files are handled as Python variables internally.</text:span></text:p> <text:h text:style-name="Heading_20_3" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__1669_1438093122"/>Variables<text:bookmark-end text:name="__RefHeading__1669_1438093122"/></text:h> <text:p text:style-name="P18">A <text:span text:style-name="T126">configuration variable is set by simply assigning a text value to a name, as in</text:span></text:p> @@ -2100,46 +2106,46 @@ <text:h text:style-name="Heading_20_3" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2538_1114405012"/>Special <text:span text:style-name="T164">v</text:span>ariables <text:span text:style-name="T164">and sections</text:span><text:bookmark-end text:name="__RefHeading__2538_1114405012"/></text:h> <text:p text:style-name="P39"><text:span text:style-name="T38">There are a number of special variables that influence the way </text:span>mkexp<text:span text:style-name="T38"> works. They must be present in one of the .config files, unless noted otherwise below. </text:span><text:span text:style-name="T42">They are </text:span><text:soft-page-break/><text:span text:style-name="T42">listed here for a first overview. Their exact meaning is explained in more detail in the upcoming sections.</text:span></text:p> <text:p text:style-name="P40"><text:span text:style-name="T42">T</text:span><text:span text:style-name="T38">he first set of variables is usually defined in the model setup:</text:span></text:p> - <text:p text:style-name="P152">SCRIPT_DIR</text:p> - <text:p text:style-name="P165"><text:span text:style-name="T41">D</text:span><text:span text:style-name="T38">irectory where the generated job descriptions are stored. This directory and its parents are created by </text:span><text:span text:style-name="T9">mkexp</text:span><text:span text:style-name="T38"> if they do not exist.</text:span></text:p> - <text:p text:style-name="P153">WORK_DIR</text:p> - <text:p text:style-name="P168">Directory where the experiment is run. The jobs will use this for providing input data and configuration files needed for model execution. This directory and its parents are created if they do not exist.</text:p> - <text:p text:style-name="P154">DATA_DIR</text:p> - <text:p text:style-name="P168">Directory for storing output data. When a model run finishes, output will be stored there for further processing. Will also be created when non-existent.</text:p> - <text:p text:style-name="P158">VERSION_</text:p> - <text:p text:style-name="P174">Each .config file in the model setup must set this variable to a suitable value, e.g. version control information. The values are collected in a variable 'VERSIONS_' which is usually written to the resulting job descriptions.</text:p> + <text:p text:style-name="P153">SCRIPT_DIR</text:p> + <text:p text:style-name="P166"><text:span text:style-name="T41">D</text:span><text:span text:style-name="T38">irectory where the generated job descriptions are stored. This directory and its parents are created by </text:span><text:span text:style-name="T9">mkexp</text:span><text:span text:style-name="T38"> if they do not exist.</text:span></text:p> + <text:p text:style-name="P154">WORK_DIR</text:p> + <text:p text:style-name="P169">Directory where the experiment is run. The jobs will use this for providing input data and configuration files needed for model execution. This directory and its parents are created if they do not exist.</text:p> + <text:p text:style-name="P155">DATA_DIR</text:p> + <text:p text:style-name="P169">Directory for storing output data. When a model run finishes, output will be stored there for further processing. Will also be created when non-existent.</text:p> + <text:p text:style-name="P159">VERSION_</text:p> + <text:p text:style-name="P175">Each .config file in the model setup <text:span text:style-name="T202">should</text:span> set this variable to a suitable value, e.g. version control information. The values are collected in a variable 'VERSIONS_' which is usually written to the resulting job descriptions.</text:p> <text:p text:style-name="P41">There is a second set of variables that belongs in the user setup:</text:p> - <text:p text:style-name="P156">EXP_TYPE</text:p> - <text:p text:style-name="P170">Selects one of the standard experiments that are pre-defined in the model setup as basis of the current experiment definition.</text:p> - <text:p text:style-name="P157">ENVIRONMENT</text:p> - <text:p text:style-name="P167">Selects one of the standard host environments that are available for the model.</text:p> - <text:p text:style-name="P161"><text:span text:style-name="T38">EXP_OPTIONS (</text:span><text:span text:style-name="T9">optional</text:span><text:span text:style-name="T38">)</text:span></text:p> - <text:p text:style-name="P171">Subset of the model's standard options that should be applied to the current experiment definition.</text:p> - <text:p text:style-name="P162">EXP_ID (<text:span text:style-name="T9">optional</text:span>)</text:p> - <text:p text:style-name="P178">Name of the experiment to be created. If not set, this will be set to the base name of the user's .config file, e.g. 'joe1234' in the introductory example. All job description files will carry this as the first part of their name. For almost all model setups, this will be used in the definitions of SCRIPT_DIR, WORK_DIR, and DATA_DIR.</text:p> - <text:p text:style-name="P151">EXP_DESCRIPTION <text:span text:style-name="T145">(</text:span><text:span text:style-name="T16">optional</text:span><text:span text:style-name="T145">)</text:span></text:p> - <text:p text:style-name="P169">Extensive description of the experiment to be created. If not set, this will contain all text in the header comment of the user's .config file. The leading comment characters and leading and trailing empty lines are removed. Note that <text:span text:style-name="T188">both header comment and </text:span>EXP_DESCRIPTION may reference any other global variable defined in the experiment configuration <text:span text:style-name="T188">(see section </text:span><text:span text:style-name="T188"><text:bookmark-ref text:reference-format="chapter" text:ref-name="__RefHeading__2540_1114405012">2.3.4</text:bookmark-ref></text:span><text:span text:style-name="T188">)</text:span>.</text:p> - <text:p text:style-name="P169">The contents of this variable is written to a 'README' file in SCRIPT_DIR.</text:p> + <text:p text:style-name="P157">EXP_TYPE</text:p> + <text:p text:style-name="P171">Selects one of the standard experiments that are pre-defined in the model setup as basis of the current experiment definition.</text:p> + <text:p text:style-name="P158">ENVIRONMENT</text:p> + <text:p text:style-name="P168">Selects one of the standard host environments that are available for the model.</text:p> + <text:p text:style-name="P162"><text:span text:style-name="T38">EXP_OPTIONS (</text:span><text:span text:style-name="T9">optional</text:span><text:span text:style-name="T38">)</text:span></text:p> + <text:p text:style-name="P172">Subset of the model's standard options that should be applied to the current experiment definition.</text:p> + <text:p text:style-name="P163">EXP_ID (<text:span text:style-name="T9">optional</text:span>)</text:p> + <text:p text:style-name="P179">Name of the experiment to be created. If not set, this will be set to the base name of the user's .config file, e.g. 'joe1234' in the introductory example. All job description files will carry this as the first part of their name. For almost all model setups, this will be used in the definitions of SCRIPT_DIR, WORK_DIR, and DATA_DIR.</text:p> + <text:p text:style-name="P152">EXP_DESCRIPTION <text:span text:style-name="T145">(</text:span><text:span text:style-name="T16">optional</text:span><text:span text:style-name="T145">)</text:span></text:p> + <text:p text:style-name="P170">Extensive description of the experiment to be created. If not set, this will contain all text in the header comment of the user's .config file. The leading comment characters and leading and trailing empty lines are removed. Note that <text:span text:style-name="T188">both header comment and </text:span>EXP_DESCRIPTION may reference any other global variable defined in the experiment configuration <text:span text:style-name="T188">(see section </text:span><text:span text:style-name="T188"><text:bookmark-ref text:reference-format="chapter" text:ref-name="__RefHeading__2540_1114405012">2.3.4</text:bookmark-ref></text:span><text:span text:style-name="T188">)</text:span>.</text:p> + <text:p text:style-name="P170">The contents of this variable is written to a 'README' file in SCRIPT_DIR.</text:p> <text:p text:style-name="P38"><text:span text:style-name="T38">Another set of variables is automatically added to the job specific experiment configuration. </text:span><text:span text:style-name="T53">These are considered read-only</text:span><text:span text:style-name="T38"> </text:span><text:span text:style-name="T46">and may not be altered</text:span><text:span text:style-name="T38">.</text:span></text:p> - <text:p text:style-name="P150"><text:soft-page-break/>JOB</text:p> - <text:p text:style-name="P166">A dictionary of system settings pertaining to the current job.</text:p> - <text:p text:style-name="P155">VARIABLES_</text:p> - <text:p text:style-name="P172">List of all names that were recognized as native variables of the current job. May be used to maintain a variable definition list in the generated script.</text:p> - <text:p text:style-name="P163"><text:span text:style-name="T50">m</text:span><text:span text:style-name="T38">kexp_input</text:span></text:p> - <text:p text:style-name="P175">Descriptive string for script headers. It is set to 'Generated by … mkexp …' where the ellipses are filled with version information.</text:p> - <text:p text:style-name="P158">VERSIONS_</text:p> - <text:p text:style-name="P174">List of all 'VERSION_' strings that were found in the different .config files.</text:p> + <text:p text:style-name="P151"><text:soft-page-break/>JOB</text:p> + <text:p text:style-name="P167">A dictionary of system settings pertaining to the current job.</text:p> + <text:p text:style-name="P156">VARIABLES_</text:p> + <text:p text:style-name="P173">List of all names that were recognized as native variables of the current job. May be used to maintain a variable definition list in the generated script.</text:p> + <text:p text:style-name="P164"><text:span text:style-name="T50">m</text:span><text:span text:style-name="T38">kexp_input</text:span></text:p> + <text:p text:style-name="P176">Descriptive string for script headers. It is set to 'Generated by … mkexp …' where the ellipses are filled with version information.</text:p> + <text:p text:style-name="P159">VERSIONS_</text:p> + <text:p text:style-name="P175">List of all 'VERSION_' strings that were found in the different .config files.</text:p> <text:p text:style-name="P63">These special sections are usually pre-defined in the model setup, but are commonly altered by the user.</text:p> <text:p text:style-name="List_20_Heading">[jobs]</text:p> - <text:p text:style-name="P179">This section defines the job description set needed for an experiment. It also provides job specific settings. Details are given in section <text:bookmark-ref text:reference-format="chapter" text:ref-name="__RefHeading__1508_1711940803">2.8</text:bookmark-ref>, '<text:bookmark-ref text:reference-format="text" text:ref-name="__RefHeading__1508_1711940803">Generating jobs</text:bookmark-ref>'.</text:p> + <text:p text:style-name="P180">This section defines the job description set needed for an experiment. It also provides job specific settings. Details are given in section <text:bookmark-ref text:reference-format="chapter" text:ref-name="__RefHeading__1508_1711940803">2.8</text:bookmark-ref>, '<text:bookmark-ref text:reference-format="text" text:ref-name="__RefHeading__1508_1711940803">Generating jobs</text:bookmark-ref>'.</text:p> <text:p text:style-name="List_20_Heading">[namelists]</text:p> - <text:p text:style-name="P179">Information that is contained in model configuration or namelist files is set in this section. For further details see section <text:bookmark-ref text:reference-format="chapter" text:ref-name="__RefHeading__1883_1672291846">2.9</text:bookmark-ref>, <text:span text:style-name="T177">'</text:span><text:span text:style-name="T177"><text:bookmark-ref text:reference-format="text" text:ref-name="__RefHeading__1883_1672291846">Defining namelists and other configuration files</text:bookmark-ref></text:span><text:span text:style-name="T177">'.</text:span></text:p> - <text:p text:style-name="P164">[files]</text:p> - <text:p text:style-name="P191">All input files that are needed for an experiment and <text:span text:style-name="T199">information</text:span> to provide them go into this section. <text:span text:style-name="T199">See section </text:span><text:span text:style-name="T199"><text:bookmark-ref text:reference-format="chapter" text:ref-name="__RefHeading__2831_1132221942">2.10</text:bookmark-ref></text:span><text:span text:style-name="T199">, '</text:span><text:span text:style-name="T199"><text:bookmark-ref text:reference-format="text" text:ref-name="__RefHeading__2831_1132221942">Defining input files for an experiment</text:bookmark-ref></text:span><text:span text:style-name="T199">'.</text:span></text:p> + <text:p text:style-name="P180">Information that is contained in model configuration or namelist files is set in this section. For further details see section <text:bookmark-ref text:reference-format="chapter" text:ref-name="__RefHeading__1883_1672291846">2.9</text:bookmark-ref>, <text:span text:style-name="T177">'</text:span><text:span text:style-name="T177"><text:bookmark-ref text:reference-format="text" text:ref-name="__RefHeading__1883_1672291846">Defining namelists and other configuration files</text:bookmark-ref></text:span><text:span text:style-name="T177">'.</text:span></text:p> + <text:p text:style-name="P165">[files]</text:p> + <text:p text:style-name="P192">All input files that are needed for an experiment and <text:span text:style-name="T199">information</text:span> to provide them go into this section. <text:span text:style-name="T199">See section </text:span><text:span text:style-name="T199"><text:bookmark-ref text:reference-format="chapter" text:ref-name="__RefHeading__2831_1132221942">2.10</text:bookmark-ref></text:span><text:span text:style-name="T199">, '</text:span><text:span text:style-name="T199"><text:bookmark-ref text:reference-format="text" text:ref-name="__RefHeading__2831_1132221942">Defining input files for an experiment</text:bookmark-ref></text:span><text:span text:style-name="T199">'.</text:span></text:p> <text:h text:style-name="Heading_20_3" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2540_1114405012"/>Variable interpolation<text:bookmark-end text:name="__RefHeading__2540_1114405012"/></text:h> <text:p text:style-name="P70">The value of a .config variable may reference the value of another variable by prefixing its name with <text:span text:style-name="T178">a </text:span>dollar sign. <text:span text:style-name="T178">This is called </text:span><text:span text:style-name="T26">interpolation</text:span><text:span text:style-name="T64"> of variables. E.g.</text:span></text:p> - <text:p text:style-name="P140"># joe1234.config</text:p> - <text:p text:style-name="P146">WORK_ROOT = /scratch/joe</text:p> + <text:p text:style-name="P141"># joe1234.config</text:p> + <text:p text:style-name="P147">WORK_ROOT = /scratch/joe</text:p> <text:p text:style-name="Preformatted_20_Text">WORK_DIR = $WORK_ROOT/experiments/<text:span text:style-name="T179">$EXP_ID</text:span></text:p> <text:p text:style-name="P72">will set 'WORK_DIR' to '/scratch/joe/experiments/joe1234'.</text:p> <text:p text:style-name="P71">Interpolation only works for variables of the current section or its ancestor sections.</text:p> @@ -2152,20 +2158,20 @@ <text:p text:style-name="P71">because 'size' is not defined in 'jobs', nor on the global level.</text:p> <text:p text:style-name="P73"><text:soft-page-break/>As in shell scripts, the variable name must be enclosed in braces if the interpolation continues with a word character (alphanumerical or underscore), or if the variable name contains a space (which is perfectly legal):</text:p> <text:p text:style-name="Preformatted_20_Text">WORK_DIR = /tmp/$EXP_ID_test <text:s text:c="3"/><text:span text:style-name="T179"># ERROR: missing option "EXP_ID_test"</text:span></text:p> - <text:p text:style-name="P141"><text:span text:style-name="T179">WORK_DIR = /tmp/</text:span><text:span text:style-name="T119">${EXP_ID}_test</text:span><text:span text:style-name="T179"> <text:s/># OK</text:span></text:p> - <text:p text:style-name="P140"/> - <text:p text:style-name="P140">SPACY <text:span text:style-name="T180">VAR</text:span> = Whew! </text:p> - <text:p text:style-name="P140"><text:span text:style-name="T180">MESSAGE</text:span> = He said: $SPACY VAR <text:s text:c="2"/><text:span text:style-name="T180"># ERROR: missing option </text:span>"<text:span text:style-name="T180">SPACY</text:span>"</text:p> - <text:p text:style-name="P142">MESSAGE = <text:span text:style-name="T179">He said: </text:span><text:span text:style-name="T119">$</text:span><text:span text:style-name="T112">{</text:span><text:span text:style-name="T119">SPACY VAR</text:span><text:span text:style-name="T112">}</text:span> # OK</text:p> + <text:p text:style-name="P142"><text:span text:style-name="T179">WORK_DIR = /tmp/</text:span><text:span text:style-name="T119">${EXP_ID}_test</text:span><text:span text:style-name="T179"> <text:s/># OK</text:span></text:p> + <text:p text:style-name="P141"/> + <text:p text:style-name="P141">SPACY <text:span text:style-name="T180">VAR</text:span> = Whew! </text:p> + <text:p text:style-name="P141"><text:span text:style-name="T180">MESSAGE</text:span> = He said: $SPACY VAR <text:s text:c="2"/><text:span text:style-name="T180"># ERROR: missing option </text:span>"<text:span text:style-name="T180">SPACY</text:span>"</text:p> + <text:p text:style-name="P143">MESSAGE = <text:span text:style-name="T179">He said: </text:span><text:span text:style-name="T119">$</text:span><text:span text:style-name="T112">{</text:span><text:span text:style-name="T119">SPACY VAR</text:span><text:span text:style-name="T112">}</text:span> # OK</text:p> <text:p text:style-name="P73">The user<text:span text:style-name="T189">'</text:span>s <text:span text:style-name="T9">environment variables</text:span> may be referenced as global variables in a .config file. Thus a user may write something like</text:p> <text:p text:style-name="Preformatted_20_Text">SCRIPT_ROOT = $HOME/experiments/$EXP_ID</text:p> <text:p text:style-name="P73">setting 'SCRIPT_ROOT' to a subdirectory of the user's home directory.</text:p> <text:h text:style-name="Heading_20_3" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2542_1114405012"/>Evaluation of interpolation<text:bookmark-end text:name="__RefHeading__2542_1114405012"/></text:h> <text:p text:style-name="P74">While interpolation looks a lot like in shell scripts, there is a major difference: interpolation is – as in Makefiles – only evaluated when the final value is written or passed on. This has the advantage that the model setup may define settings based on variables that are only defined later in the user setup.</text:p> - <text:p text:style-name="P143"># model setup</text:p> - <text:p text:style-name="P201"><text:span text:style-name="T181">MODEL</text:span>_<text:span text:style-name="T181">DIR</text:span> = $HOME/<text:span text:style-name="T181">$MODEL_SUBDIR</text:span></text:p> - <text:p text:style-name="P144"># user setup</text:p> - <text:p text:style-name="P144">MODEL_SUBDIR = echam</text:p> + <text:p text:style-name="P144"># model setup</text:p> + <text:p text:style-name="P202"><text:span text:style-name="T181">MODEL</text:span>_<text:span text:style-name="T181">DIR</text:span> = $HOME/<text:span text:style-name="T181">$MODEL_SUBDIR</text:span></text:p> + <text:p text:style-name="P145"># user setup</text:p> + <text:p text:style-name="P145">MODEL_SUBDIR = echam</text:p> <text:p text:style-name="P75">Here, as the model setup is read before the user setup, 'MODEL_SUBDIR' is not set when 'MODEL_ROOT' is defined. <text:span text:style-name="T182">This works, because i</text:span>nterpolation of 'MODEL_ROOT's value is postponed until all levels of setup have been read.</text:p> <text:p text:style-name="P75">The disadvantage is that there may be no incremental adding of values to a given variable because this would cause circular dependencies. Imagine</text:p> <text:p text:style-name="Preformatted_20_Text">SUBMODELS = $SUBMODELS jsbach</text:p> @@ -2173,21 +2179,21 @@ <text:p text:style-name="Preformatted_20_Text"><text:soft-page-break/>Oops: interpolation loop detected in value "SUBMODELS" while reading key 'SUBMODELS'</text:p> <text:h text:style-name="Heading_20_3" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2544_1114405012"/>Special expressions<text:bookmark-end text:name="__RefHeading__2544_1114405012"/></text:h> <text:p text:style-name="P77">For some applications, simply including some other variable is not enough. You might want to compute a time limit from a given constant divided by the number of computing nodes, or convert a time stamp to a list of values. For these purposes, <text:span text:style-name="T9">mkexp</text:span><text:span text:style-name="T38"> includes some special expressions, that are evaluated when interpolation occurs.</text:span></text:p> - <text:p text:style-name="P195"><text:span text:style-name="T9">variable</text:span><text:span text:style-name="T38"> = </text:span><text:span text:style-name="T108">eval(</text:span><text:span text:style-name="T9">expression</text:span><text:span text:style-name="T108">)</text:span><text:span text:style-name="T38"><text:line-break/></text:span><text:span text:style-name="T9">variable</text:span><text:span text:style-name="T38"> = </text:span><text:span text:style-name="T108">evals(</text:span><text:span text:style-name="T9">expression</text:span><text:span text:style-name="T108">)</text:span></text:p> - <text:p text:style-name="P187"><text:span text:style-name="T68">I</text:span><text:span text:style-name="T38">nterpret </text:span><text:span text:style-name="T9">expression</text:span><text:span text:style-name="T38"> as a valid Python expression and assign the result to </text:span><text:span text:style-name="T9">variable</text:span><text:span text:style-name="T38"> as a string. When the result is a list, </text:span><text:span text:style-name="T9">eval</text:span><text:span text:style-name="T38"> will return a list of strings, while </text:span><text:span text:style-name="T9">evals</text:span><text:span text:style-name="T38"> will return a single string, where elements are joined by a comma and a space.</text:span></text:p> - <text:p text:style-name="P187"><text:span text:style-name="T38">Note that interpolation does not work for list values; if you need this, consider to set the original variable </text:span><text:span text:style-name="T65">to a string containing a Python list expression</text:span><text:span text:style-name="T38">, and </text:span><text:span text:style-name="T65">then </text:span><text:span text:style-name="T38">use </text:span><text:span text:style-name="T9">eval</text:span><text:span text:style-name="T38"> </text:span><text:span text:style-name="T78">a</text:span><text:span text:style-name="T38">round the interpolation expression:</text:span></text:p> - <text:p text:style-name="P202">DATE_<text:span text:style-name="T190">STRING</text:span> = '[2010, 10, 20]' # need quotes here!</text:p> - <text:p text:style-name="P202">DATE_<text:span text:style-name="T190">LIST</text:span> = eval($DATE_<text:span text:style-name="T191">STRING</text:span>) # becomes a 3 element list</text:p> - <text:p text:style-name="P196">variable<text:span text:style-name="T38"> = </text:span><text:span text:style-name="T108">read(</text:span>file_name<text:span text:style-name="T108">)</text:span></text:p> - <text:p text:style-name="P182"><text:span text:style-name="T38">Read the contents of the file </text:span>file_name<text:span text:style-name="T38"> and assign its contents to </text:span>variable<text:span text:style-name="T38"> as a string.</text:span></text:p> - <text:p text:style-name="P197"><text:span text:style-name="T27">variable</text:span><text:span text:style-name="T66"> = </text:span><text:span text:style-name="T110">split_date(</text:span><text:span text:style-name="T27">timestamp</text:span><text:span text:style-name="T110">)</text:span></text:p> - <text:p text:style-name="P188"><text:span text:style-name="T183">T</text:span>ake <text:span text:style-name="T9">timestamp</text:span><text:span text:style-name="T38"> and split it into a list of numerical date/time elements. </text:span><text:span text:style-name="T9">tim</text:span><text:span text:style-name="T28">e</text:span><text:span text:style-name="T9">stamp</text:span><text:span text:style-name="T38"> </text:span><text:span text:style-name="T67">must have </text:span><text:span text:style-name="T38">an ISO-like format (date elements separated by '-'; 'T' or space as date/time separator; time elements separated by ':</text:span><text:span text:style-name="T67">'; </text:span><text:span text:style-name="T38">trailing time elements </text:span><text:span text:style-name="T68">and their separators </text:span><text:span text:style-name="T67">are optional</text:span><text:span text:style-name="T38">; time zone indicator is not supported). </text:span><text:span text:style-name="T80">Unlike ISO, </text:span><text:span text:style-name="T31">split_date</text:span><text:span text:style-name="T80"> also</text:span><text:span text:style-name="T38"> </text:span><text:span text:style-name="T80">allows the date to be in the form YYYYMMDD</text:span><text:span text:style-name="T38">. </text:span><text:span text:style-name="T68">Unset fields default to zero.</text:span></text:p> - <text:p text:style-name="P198"><text:span text:style-name="T9">variable</text:span><text:span text:style-name="T38"> = </text:span><text:span text:style-name="T108">sec2time(</text:span><text:span text:style-name="T9">second_of_day</text:span><text:span text:style-name="T108">)</text:span></text:p> - <text:p text:style-name="P176">Take integer <text:span text:style-name="T9">second_of_day</text:span> (from 0 to 86399) and return the corresponding time stamp as string of the form HH:MM:SS.</text:p> - <text:p text:style-name="P199"><text:span text:style-name="T9">variable</text:span> = '<text:span text:style-name="T112">add_years</text:span>(<text:span text:style-name="T9">datestamp</text:span>, <text:span text:style-name="T9">offset</text:span>)'</text:p> - <text:p text:style-name="P189">Take integer <text:span text:style-name="T9">offset</text:span><text:span text:style-name="T38"> (may be negative), add it to the year portion of </text:span><text:span text:style-name="T9">datestamp</text:span><text:span text:style-name="T38"> and return the resulting date string.</text:span></text:p> - <text:p text:style-name="P200"><text:span text:style-name="T9">variable</text:span> = '<text:span text:style-name="T112">add_</text:span><text:span text:style-name="T120">days</text:span>(<text:span text:style-name="T9">datestamp</text:span>, <text:span text:style-name="T9">offset</text:span>)'</text:p> - <text:p text:style-name="P190"><text:span text:style-name="T38">Take integer </text:span><text:span text:style-name="T9">offset</text:span><text:span text:style-name="T38"> (may be negative), add it to the </text:span><text:span text:style-name="T81">day</text:span><text:span text:style-name="T38"> portion of </text:span><text:span text:style-name="T9">datestamp</text:span><text:span text:style-name="T38"> and return the resulting date string. </text:span><text:span text:style-name="T81">Year and month portions will be set as </text:span><text:soft-page-break/><text:span text:style-name="T81">appropriate, assuming a Proleptic Gregorian calendar with year 0.</text:span></text:p> + <text:p text:style-name="P196"><text:span text:style-name="T9">variable</text:span><text:span text:style-name="T38"> = </text:span><text:span text:style-name="T108">eval(</text:span><text:span text:style-name="T9">expression</text:span><text:span text:style-name="T108">)</text:span><text:span text:style-name="T38"><text:line-break/></text:span><text:span text:style-name="T9">variable</text:span><text:span text:style-name="T38"> = </text:span><text:span text:style-name="T108">evals(</text:span><text:span text:style-name="T9">expression</text:span><text:span text:style-name="T108">)</text:span></text:p> + <text:p text:style-name="P188"><text:span text:style-name="T68">I</text:span><text:span text:style-name="T38">nterpret </text:span><text:span text:style-name="T9">expression</text:span><text:span text:style-name="T38"> as a valid Python expression and assign the result to </text:span><text:span text:style-name="T9">variable</text:span><text:span text:style-name="T38"> as a string. When the result is a list, </text:span><text:span text:style-name="T9">eval</text:span><text:span text:style-name="T38"> will return a list of strings, while </text:span><text:span text:style-name="T9">evals</text:span><text:span text:style-name="T38"> will return a single string, where elements are joined by a comma and a space.</text:span></text:p> + <text:p text:style-name="P188"><text:span text:style-name="T38">Note that interpolation does not work for list values; if you need this, consider to set the original variable </text:span><text:span text:style-name="T65">to a string containing a Python list expression</text:span><text:span text:style-name="T38">, and </text:span><text:span text:style-name="T65">then </text:span><text:span text:style-name="T38">use </text:span><text:span text:style-name="T9">eval</text:span><text:span text:style-name="T38"> </text:span><text:span text:style-name="T78">a</text:span><text:span text:style-name="T38">round the interpolation expression:</text:span></text:p> + <text:p text:style-name="P203">DATE_<text:span text:style-name="T190">STRING</text:span> = '[2010, 10, 20]' # need quotes here!</text:p> + <text:p text:style-name="P203">DATE_<text:span text:style-name="T190">LIST</text:span> = eval($DATE_<text:span text:style-name="T191">STRING</text:span>) # becomes a 3 element list</text:p> + <text:p text:style-name="P197">variable<text:span text:style-name="T38"> = </text:span><text:span text:style-name="T108">read(</text:span>file_name<text:span text:style-name="T108">)</text:span></text:p> + <text:p text:style-name="P183"><text:span text:style-name="T38">Read the contents of the file </text:span>file_name<text:span text:style-name="T38"> and assign its contents to </text:span>variable<text:span text:style-name="T38"> as a string.</text:span></text:p> + <text:p text:style-name="P198"><text:span text:style-name="T27">variable</text:span><text:span text:style-name="T66"> = </text:span><text:span text:style-name="T110">split_date(</text:span><text:span text:style-name="T27">timestamp</text:span><text:span text:style-name="T110">)</text:span></text:p> + <text:p text:style-name="P189"><text:span text:style-name="T183">T</text:span>ake <text:span text:style-name="T9">timestamp</text:span><text:span text:style-name="T38"> and split it into a list of numerical date/time elements. </text:span><text:span text:style-name="T9">tim</text:span><text:span text:style-name="T28">e</text:span><text:span text:style-name="T9">stamp</text:span><text:span text:style-name="T38"> </text:span><text:span text:style-name="T67">must have </text:span><text:span text:style-name="T38">an ISO-like format (date elements separated by '-'; 'T' or space as date/time separator; time elements separated by ':</text:span><text:span text:style-name="T67">'; </text:span><text:span text:style-name="T38">trailing time elements </text:span><text:span text:style-name="T68">and their separators </text:span><text:span text:style-name="T67">are optional</text:span><text:span text:style-name="T38">; time zone indicator is not supported). </text:span><text:span text:style-name="T80">Unlike ISO, </text:span><text:span text:style-name="T31">split_date</text:span><text:span text:style-name="T80"> also</text:span><text:span text:style-name="T38"> </text:span><text:span text:style-name="T80">allows the date to be in the form YYYYMMDD</text:span><text:span text:style-name="T38">. </text:span><text:span text:style-name="T68">Unset fields default to zero.</text:span></text:p> + <text:p text:style-name="P199"><text:span text:style-name="T9">variable</text:span><text:span text:style-name="T38"> = </text:span><text:span text:style-name="T108">sec2time(</text:span><text:span text:style-name="T9">second_of_day</text:span><text:span text:style-name="T108">)</text:span></text:p> + <text:p text:style-name="P177">Take integer <text:span text:style-name="T9">second_of_day</text:span> (from 0 to 86399) and return the corresponding time stamp as string of the form HH:MM:SS.</text:p> + <text:p text:style-name="P200"><text:span text:style-name="T9">variable</text:span> = '<text:span text:style-name="T112">add_years</text:span>(<text:span text:style-name="T9">datestamp</text:span>, <text:span text:style-name="T9">offset</text:span>)'</text:p> + <text:p text:style-name="P190">Take integer <text:span text:style-name="T9">offset</text:span><text:span text:style-name="T38"> (may be negative), add it to the year portion of </text:span><text:span text:style-name="T9">datestamp</text:span><text:span text:style-name="T38"> and return the resulting date string.</text:span></text:p> + <text:p text:style-name="P201"><text:span text:style-name="T9">variable</text:span> = '<text:span text:style-name="T112">add_</text:span><text:span text:style-name="T120">days</text:span>(<text:span text:style-name="T9">datestamp</text:span>, <text:span text:style-name="T9">offset</text:span>)'</text:p> + <text:p text:style-name="P191"><text:span text:style-name="T38">Take integer </text:span><text:span text:style-name="T9">offset</text:span><text:span text:style-name="T38"> (may be negative), add it to the </text:span><text:span text:style-name="T81">day</text:span><text:span text:style-name="T38"> portion of </text:span><text:span text:style-name="T9">datestamp</text:span><text:span text:style-name="T38"> and return the resulting date string. </text:span><text:span text:style-name="T81">Year and month portions will be set as </text:span><text:soft-page-break/><text:span text:style-name="T81">appropriate, assuming a Proleptic Gregorian calendar with year 0.</text:span></text:p> <text:h text:style-name="Heading_20_2" text:outline-level="2"><text:bookmark-start text:name="__RefHeading__2546_1114405012"/>Format of .tmpl files<text:bookmark-end text:name="__RefHeading__2546_1114405012"/></text:h> <text:p text:style-name="P24">The .tmpl files are also text files mostly written in the syntax of the job description that <text:span text:style-name="T9">mkexp</text:span> is meant to create. Currently this is usually the ksh or bash shell script syntax, but may also be any other interpreted language, like Perl or Python, or even a configuration or namelist file. The main difference are placeholders and structured comments that are embedded in the program text. These are evaluated or expanded using the information that comes with the .config files, to create the final text files, defining the jobs to be run on the target system.</text:p> <text:p text:style-name="P24">The expansion of .tmpl files into the job description uses the <text:span text:style-name="T9">Jinja</text:span> Python library. It provides a default set of facilities that can be used to expand any textual template. The proposed default syntax was slightly customized to fit the needs of <text:span text:style-name="T9">mkexp</text:span>.</text:p> @@ -2241,7 +2247,7 @@ <text:p text:style-name="P29">A template may contain alternative parts <text:span text:style-name="T139">that are selected depending on the .config data</text:span>, <text:span text:style-name="T139">similar to an 'if' statement. This is useful for e.g. skipping certain parts of the script template that are not applicable to runs of a given resolution but required for others. They are also implemented as structured comments, starting with '#% if …:' and ending in '#% endif', with optional '#% elif …:' and '#% else:' parts.</text:span></text:p> <text:p text:style-name="P30"><text:span text:style-name="T139">For testing, you may use expressions with comparisons (==, !=, >, >=, <, <=), querying a certain list element (… in …), and logical operators (and, or, not). Sub-expressions may be parenthesized to change the order of evaluation. Besides, </text:span><text:span text:style-name="T14">Jinja</text:span><text:span text:style-name="T139"> provides a number of named tests that use the '… is …' Syntax.</text:span></text:p> <text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="T112">#% if </text:span><text:span text:style-name="T141">PATH|length()</text:span><text:span text:style-name="T140"> </text:span><text:span text:style-name="T116">is divisibleby 3:</text:span></text:p> - <text:p text:style-name="P126">diff3 %{PATH[:3]|join(' ')}</text:p> + <text:p text:style-name="P127">diff3 %{PATH[:3]|join(' ')}</text:p> <text:p text:style-name="P102">#% elif <text:span text:style-name="T141">PATH|length()</text:span> is even:</text:p> <text:p text:style-name="P112">diff %{PATH[:2]|join(' ')}</text:p> <text:p text:style-name="P99">#% else:</text:p> @@ -2268,134 +2274,134 @@ <text:p text:style-name="P13">For this, a standard environment, like a standard experiment, consists of a .config file and a corresponding template. The <text:span text:style-name="T9">environmentname</text:span>.config file contains settings like directory paths or a description of machine capacities for job control</text:p> <text:p text:style-name="P13">The actual job control headers needed to run a certain job step are saved as <text:span text:style-name="T9">environmentname</text:span>.tmpl. This template will be filled using configuration information from both experiment, options, and environment. <text:span text:style-name="T124">The resulting job header</text:span> is usually included at the beginning of the experiment's job script templates.</text:p> <text:p text:style-name="P9">An experiment configuration <text:span text:style-name="T163">may</text:span> <text:span text:style-name="T163">set</text:span> the special variable E<text:span text:style-name="T163">NVIRONMENT</text:span> to the name of <text:span text:style-name="T163">the host </text:span>e<text:span text:style-name="T163">nvironment</text:span> to use. <text:span text:style-name="T163">If it is not set, the 'DEFAULT' environment settings will be used.</text:span></text:p> - <text:h text:style-name="P229" text:outline-level="2"><text:bookmark-start text:name="__RefHeading__1508_1711940803"/>Generating <text:span text:style-name="T160">j</text:span>obs<text:bookmark-end text:name="__RefHeading__1508_1711940803"/></text:h> + <text:h text:style-name="P230" text:outline-level="2"><text:bookmark-start text:name="__RefHeading__1508_1711940803"/>Generating <text:span text:style-name="T160">j</text:span>obs<text:bookmark-end text:name="__RefHeading__1508_1711940803"/></text:h> <text:p text:style-name="P42">When<text:span text:style-name="T148"> </text:span>running <text:span text:style-name="T9">mkexp</text:span><text:span text:style-name="T86">, </text:span><text:span text:style-name="T87">the special configuration section [jobs]</text:span><text:span text:style-name="T34"> </text:span><text:span text:style-name="T87">is read and evaluated. Each of its subsections, e.g. [[run]], defines a job definition file or job script to be created.</text:span></text:p> - <text:p text:style-name="P127"># <text:span text:style-name="T149">model setup: experiment type 'control'</text:span></text:p> - <text:p text:style-name="P114">[jobs]</text:p> - <text:p text:style-name="P114"><text:s text:c="2"/>[[pre]]</text:p> - <text:p text:style-name="P114"><text:s text:c="2"/>[[run]]</text:p> - <text:p text:style-name="P114"><text:s text:c="2"/>[[post]]</text:p> + <text:p text:style-name="P128"># <text:span text:style-name="T149">model setup: experiment type 'control'</text:span></text:p> + <text:p text:style-name="P115">[jobs]</text:p> + <text:p text:style-name="P115"><text:s text:c="2"/>[[pre]]</text:p> + <text:p text:style-name="P115"><text:s text:c="2"/>[[run]]</text:p> + <text:p text:style-name="P115"><text:s text:c="2"/>[[post]]</text:p> <text:p text:style-name="P43"><text:span text:style-name="T87">For each of </text:span><text:span text:style-name="T89">the jobs defined in the model setup above</text:span><text:span text:style-name="T87">, there </text:span><text:span text:style-name="T89">must</text:span><text:span text:style-name="T87"> be a template file in the model setup, </text:span><text:span text:style-name="T89">e.g. for [[run]] </text:span><text:span text:style-name="T87">either as 'control.run.tmpl' or 'DEFAULT.run.tmpl'. </text:span><text:span text:style-name="T88">The corresponding</text:span><text:span text:style-name="T87"> file is expanded to its final form using the </text:span><text:span text:style-name="T88">full</text:span><text:span text:style-name="T87"> experiment configuration, </text:span><text:span text:style-name="T88">as described before</text:span><text:span text:style-name="T87">. Besides, the </text:span><text:span text:style-name="T88">job specific </text:span><text:span text:style-name="T87">variable</text:span><text:span text:style-name="T88">s</text:span><text:span text:style-name="T87"> </text:span><text:span text:style-name="T88">are set and passed according to their respective template</text:span><text:span text:style-name="T87">.</text:span></text:p> <text:p text:style-name="P43"><text:span text:style-name="T90">The resulting job scripts are </text:span><text:span text:style-name="T89">written to the directory defined by SCRIPT_DIR, </text:span><text:span text:style-name="T90">e.g. </text:span><text:span text:style-name="T89">as 'joe1234.run', </text:span><text:span text:style-name="T90">and marked as being executable. </text:span><text:span text:style-name="T96">Besides, as mentioned before, the contents of the special variable EXP_DESCRIPTION is written to a README file in that same directory. </text:span><text:span text:style-name="T99">Also, an update script is created that allows to re-generate all output files with identical environment and command line settings by simply running './update' from the script directory.</text:span></text:p> <text:h text:style-name="Heading_20_3" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2566_1114405012"/><text:soft-page-break/><text:span text:style-name="T90">C</text:span><text:span text:style-name="T86">hanging the model job list</text:span><text:bookmark-end text:name="__RefHeading__2566_1114405012"/></text:h> <text:p text:style-name="P44"><text:span text:style-name="T87">U</text:span><text:span text:style-name="T86">sually, the job list is defined in the model setup. The user may chose to add </text:span><text:span text:style-name="T92">jobs </text:span><text:span text:style-name="T86">and delete jobs from this list as appropriate. While adding a job is straightforward, removing a job uses a special section variable '.remove' (note the leading period). It </text:span><text:span text:style-name="T92">is</text:span><text:span text:style-name="T86"> defined in the [jobs] section and contains a list of the jobs to be suppressed.</text:span></text:p> - <text:p text:style-name="P114"># joe1234.config</text:p> - <text:p text:style-name="P114">EXP_TYPE = control</text:p> - <text:p text:style-name="P114">[jobs]</text:p> - <text:p text:style-name="P114"><text:s text:c="2"/>.remove = post, pre</text:p> - <text:p text:style-name="P114"><text:s text:c="2"/>[[my_pre]]</text:p> - <text:p text:style-name="P114"><text:s text:c="2"/>[[my_post]]</text:p> + <text:p text:style-name="P115"># joe1234.config</text:p> + <text:p text:style-name="P115">EXP_TYPE = control</text:p> + <text:p text:style-name="P115">[jobs]</text:p> + <text:p text:style-name="P115"><text:s text:c="2"/>.remove = post, pre</text:p> + <text:p text:style-name="P115"><text:s text:c="2"/>[[my_pre]]</text:p> + <text:p text:style-name="P115"><text:s text:c="2"/>[[my_post]]</text:p> <text:p text:style-name="P49">This way, the 'pre' and 'post' jobs will not be created in favor of two new jobs, 'my_pre' and 'my_post'. In this case, the user setup must provide two templates 'joe1234.my_pre.tmpl' and 'joe1234.my_post.tmpl', together with the .config file.</text:p> <text:p text:style-name="P45">Alternatively, you may want to introduce a new 'my_p<text:span text:style-name="T150">ost</text:span>' job, that is basically the same as the old 'p<text:span text:style-name="T150">ost</text:span>' job but uses a slightly different configuration. This may be done using the special section variable '.extends'.</text:p> - <text:p text:style-name="P114">[jobs]</text:p> - <text:p text:style-name="P128"><text:span text:style-name="T86"><text:s text:c="2"/>[[my_p</text:span><text:span text:style-name="T91">ost</text:span><text:span text:style-name="T86">]]</text:span></text:p> - <text:p text:style-name="P128"><text:span text:style-name="T86"><text:s text:c="4"/>.</text:span><text:span text:style-name="T90">extends</text:span><text:span text:style-name="T86"> = p</text:span><text:span text:style-name="T91">ost</text:span></text:p> - <text:p text:style-name="P115"><text:s text:c="4"/>command = $HOME/bin/my_special_command</text:p> + <text:p text:style-name="P115">[jobs]</text:p> + <text:p text:style-name="P129"><text:span text:style-name="T86"><text:s text:c="2"/>[[my_p</text:span><text:span text:style-name="T91">ost</text:span><text:span text:style-name="T86">]]</text:span></text:p> + <text:p text:style-name="P129"><text:span text:style-name="T86"><text:s text:c="4"/>.</text:span><text:span text:style-name="T90">extends</text:span><text:span text:style-name="T86"> = p</text:span><text:span text:style-name="T91">ost</text:span></text:p> + <text:p text:style-name="P116"><text:s text:c="4"/>command = $HOME/bin/my_special_command</text:p> <text:p text:style-name="P50">With this configuration, an additional 'joe1234.my_post' is created based on the existing 'post' template. A dedicated 'joe1234.my_post.tmpl' file is not needed here. The 'command' setting is <text:span text:style-name="T151">made available </text:span>to <text:span text:style-name="T151">the template via the</text:span> 'JOB' dictionary.</text:p> - <text:h text:style-name="P214" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2568_1114405012"/>Pre-defined job variables<text:bookmark-end text:name="__RefHeading__2568_1114405012"/></text:h> + <text:h text:style-name="P215" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2568_1114405012"/>Pre-defined job variables<text:bookmark-end text:name="__RefHeading__2568_1114405012"/></text:h> <text:p text:style-name="P55">While <text:span text:style-name="T9">mkexp</text:span> in general does not impose any naming convention on the variable names used in the job sections and leaves the details to the respective model setup, there are a few exceptions.</text:p> - <text:p text:style-name="P159">tasks</text:p> - <text:p text:style-name="P177">The total number of parallel (MPI) tasks that will be started when running the model. If a job section does not define 'tasks', its value defaults to 'nodes' times 'tasks_per_node'. Some models require that 'tasks' may explicitly be set to some artificial value to trigger the testing mode.</text:p> - <text:p text:style-name="P160">nodes</text:p> - <text:p text:style-name="P177">Number of computing nodes required on the computing system. Needed if 'tasks' is not set.</text:p> - <text:p text:style-name="P160">tasks_per_node</text:p> - <text:p text:style-name="P177">Number of parallel (MPI) tasks on a single node. Needed if 'tasks' is not set.</text:p> - <text:h text:style-name="P213" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2570_1114405012"/><text:soft-page-break/>Overriding namelist settings in derived jobs<text:bookmark-end text:name="__RefHeading__2570_1114405012"/></text:h> + <text:p text:style-name="P160">tasks</text:p> + <text:p text:style-name="P178">The total number of parallel (MPI) tasks that will be started when running the model. If a job section does not define 'tasks', its value defaults to 'nodes' times 'tasks_per_node'. Some models require that 'tasks' may explicitly be set to some artificial value to trigger the testing mode.</text:p> + <text:p text:style-name="P161">nodes</text:p> + <text:p text:style-name="P178">Number of computing nodes required on the computing system. Needed if 'tasks' is not set.</text:p> + <text:p text:style-name="P161">tasks_per_node</text:p> + <text:p text:style-name="P178">Number of parallel (MPI) tasks on a single node. Needed if 'tasks' is not set.</text:p> + <text:h text:style-name="P214" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2570_1114405012"/><text:soft-page-break/>Overriding namelist settings in derived jobs<text:bookmark-end text:name="__RefHeading__2570_1114405012"/></text:h> <text:p text:style-name="P50">There is special provision to change namelist files settings for a specific job. Consider this setting from the introductory example.</text:p> - <text:p text:style-name="P129">[namelists]</text:p> + <text:p text:style-name="P130">[namelists]</text:p> <text:p text:style-name="P91"><text:s text:c="2"/>[[namelist.jsbach]]</text:p> <text:p text:style-name="P91"><text:s text:c="4"/>[[[jsbach_ctl]]]</text:p> <text:p text:style-name="P91"><text:s text:c="6"/>use_dynveg = false</text:p> <text:p text:style-name="P46"><text:span text:style-name="T86">If – for some reason – your experiments needs 'use_dynveg' set to 'true' for the first year only, you may create an additional 'run_first' job, </text:span><text:span text:style-name="T92">with a job specific namelists subsection that – apart from the addition</text:span><text:span text:style-name="T94">al</text:span><text:span text:style-name="T92"> brackets – has the same structure as</text:span><text:span text:style-name="T86"> </text:span><text:span text:style-name="T92">the global namelists section.</text:span></text:p> - <text:p text:style-name="P129">[jobs]</text:p> - <text:p text:style-name="P129"><text:s text:c="2"/>[[run_first]]</text:p> - <text:p text:style-name="P129"><text:s text:c="4"/>.extends = run</text:p> - <text:p text:style-name="P129"><text:s text:c="4"/><text:span text:style-name="T112">[[[namelists]]</text:span><text:span text:style-name="T121">]</text:span></text:p> + <text:p text:style-name="P130">[jobs]</text:p> + <text:p text:style-name="P130"><text:s text:c="2"/>[[run_first]]</text:p> + <text:p text:style-name="P130"><text:s text:c="4"/>.extends = run</text:p> + <text:p text:style-name="P130"><text:s text:c="4"/><text:span text:style-name="T112">[[[namelists]]</text:span><text:span text:style-name="T121">]</text:span></text:p> <text:p text:style-name="P91"><text:s text:c="6"/><text:span text:style-name="T150">[[</text:span>[[namelist.jsbach]]<text:span text:style-name="T150">]]</text:span></text:p> <text:p text:style-name="P91"><text:s text:c="8"/><text:span text:style-name="T150">[[</text:span>[[[jsbach_ctl]]]<text:span text:style-name="T150">]]</text:span></text:p> <text:p text:style-name="P91"><text:span text:style-name="T86"><text:s text:c="10"/>use_dynveg = </text:span><text:span text:style-name="T91">true</text:span></text:p> <text:p text:style-name="P46"><text:span text:style-name="T92">This</text:span><text:span text:style-name="T86"> will result in a 'joe1234.run_first' file that is identical to 'joe1234.run' except for the 'use_dynveg' setting.</text:span></text:p> - <text:h text:style-name="P213" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2572_1114405012"/>Native script variables<text:bookmark-end text:name="__RefHeading__2572_1114405012"/></text:h> + <text:h text:style-name="P214" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2572_1114405012"/>Native script variables<text:bookmark-end text:name="__RefHeading__2572_1114405012"/></text:h> <text:p text:style-name="P48"><text:span text:style-name="T86">While the definition of .config variables may use</text:span><text:span text:style-name="T93"> variable references like</text:span><text:span text:style-name="T86"> $NAME or ${NAME} to include the </text:span><text:span text:style-name="T93">verbatim </text:span><text:span text:style-name="T86">value of other .config variables, this may not always be what you want. If you want to create a job </text:span><text:span text:style-name="T93">script</text:span><text:span text:style-name="T86"> that is supposed to be 'user-serviceable' for certain applications, the users will not appreciate having to change the same value several times in the same script. </text:span><text:span text:style-name="T93">Instead they will want to have a single, native script variable that is used throughout the job script, and that may be re-defined on a single line.</text:span></text:p> <text:p text:style-name="P52">To allow this, <text:span text:style-name="T9">mkexp</text:span> locates all expressions like $${NAME} in the configuration values, and re-formats them to the syntax of the current job script:</text:p> - <text:p text:style-name="P114"># joe1234.config</text:p> - <text:p text:style-name="P114">NAME = Joe User</text:p> + <text:p text:style-name="P115"># joe1234.config</text:p> + <text:p text:style-name="P115">NAME = Joe User</text:p> <text:p text:style-name="Preformatted_20_Text_20_Interrupt">MESSAGE = This experiment was generated by $${NAME}</text:p> - <text:p text:style-name="P120">#%# joe1234.job.tmpl</text:p> - <text:p text:style-name="P114">#! /bin/sh</text:p> - <text:p text:style-name="P118">NAME='%{NAME}'</text:p> - <text:p text:style-name="P114">echo %{MESSAGE}</text:p> + <text:p text:style-name="P121">#%# joe1234.job.tmpl</text:p> + <text:p text:style-name="P115">#! /bin/sh</text:p> + <text:p text:style-name="P119">NAME='%{NAME}'</text:p> + <text:p text:style-name="P115">echo %{MESSAGE}</text:p> <text:p text:style-name="P52">By default, <text:span text:style-name="T152">native variables are formatted as </text:span>shell script, namely ${NAME}:</text:p> - <text:p text:style-name="P117"><text:soft-page-break/>#! /bin/sh</text:p> - <text:p text:style-name="P120">NAME='Joe User'</text:p> - <text:p text:style-name="P116">echo This experiment was generated by ${NAME}</text:p> + <text:p text:style-name="P118"><text:soft-page-break/>#! /bin/sh</text:p> + <text:p text:style-name="P121">NAME='Joe User'</text:p> + <text:p text:style-name="P117">echo This experiment was generated by ${NAME}</text:p> <text:p text:style-name="P53"><text:span text:style-name="T159">T</text:span>o support variable reference<text:span text:style-name="T158">s for other script languages, a</text:span> job specific variable '.var_format' may be defined. <text:span text:style-name="T158">It defines an output format string where any occurrence of '%s' will be replaced by the respective variable name. </text:span>For a Python based script, <text:span text:style-name="T152">this may look like:</text:span></text:p> - <text:p text:style-name="P119"># joe1234.config</text:p> - <text:p text:style-name="P119">NAME = Joe User</text:p> - <text:p text:style-name="P119">MESSAGE = This experiment was generated by $${NAME}</text:p> - <text:p text:style-name="P131">[jobs]</text:p> + <text:p text:style-name="P120"># joe1234.config</text:p> + <text:p text:style-name="P120">NAME = Joe User</text:p> + <text:p text:style-name="P120">MESSAGE = This experiment was generated by $${NAME}</text:p> + <text:p text:style-name="P132">[jobs]</text:p> <text:p text:style-name="Preformatted_20_Text"><text:s text:c="2"/>[[job]]</text:p> <text:p text:style-name="Preformatted_20_Text_20_Interrupt"><text:s text:c="4"/>.var_format = <text:span text:style-name="T155">"</text:span><text:span text:style-name="T153">' + str(</text:span>%s<text:span text:style-name="T157">)</text:span> <text:span text:style-name="T153">+ '</text:span><text:span text:style-name="T155">"</text:span></text:p> - <text:p text:style-name="P120">#%# joe1234.job.tmpl</text:p> - <text:p text:style-name="P132">#! /usr/bin/env python </text:p> + <text:p text:style-name="P121">#%# joe1234.job.tmpl</text:p> + <text:p text:style-name="P133">#! /usr/bin/env python </text:p> <text:p text:style-name="Preformatted_20_Text">NAME = '%{NAME}' </text:p> <text:p text:style-name="Preformatted_20_Text">print<text:span text:style-name="T194">(</text:span>'%{MESSAGE}'<text:span text:style-name="T194">)</text:span> </text:p> <text:p text:style-name="P58">This setup will expand to</text:p> - <text:p text:style-name="P132">#! /usr/bin/env python </text:p> - <text:p text:style-name="P132">NAME = '<text:span text:style-name="T157">Joe User</text:span>' </text:p> - <text:p text:style-name="P133">print<text:span text:style-name="T194">(</text:span>'<text:span text:style-name="T86">This experiment was generated by </text:span><text:span text:style-name="T95">' + str(</text:span><text:span text:style-name="T86">NAME) </text:span><text:span text:style-name="T95">+ '</text:span>'<text:span text:style-name="T194">)</text:span></text:p> - <text:h text:style-name="P220" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2574_1114405012"/>Initializing native script variables<text:bookmark-end text:name="__RefHeading__2574_1114405012"/></text:h> + <text:p text:style-name="P133">#! /usr/bin/env python </text:p> + <text:p text:style-name="P133">NAME = '<text:span text:style-name="T157">Joe User</text:span>' </text:p> + <text:p text:style-name="P134">print<text:span text:style-name="T194">(</text:span>'<text:span text:style-name="T86">This experiment was generated by </text:span><text:span text:style-name="T95">' + str(</text:span><text:span text:style-name="T86">NAME) </text:span><text:span text:style-name="T95">+ '</text:span>'<text:span text:style-name="T194">)</text:span></text:p> + <text:h text:style-name="P221" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2574_1114405012"/>Initializing native script variables<text:bookmark-end text:name="__RefHeading__2574_1114405012"/></text:h> <text:p text:style-name="P60">In the previous section, the native variables were initialized by an addition<text:span text:style-name="T161">al script line. While this is sufficient for a small number of variables, it may be difficult to maintain these initialization lines for a more complex setup with changing requirements.</text:span></text:p> <text:p text:style-name="P60"><text:span text:style-name="T162">To allow a self-maintaining variable list based on the current configuration, </text:span><text:span text:style-name="T20">mkexp</text:span><text:span text:style-name="T162"> maintains the special variable VARIABLES_. When generating output for</text:span></text:p> - <text:p text:style-name="P121">NAME = Joe User</text:p> - <text:p text:style-name="P122">EMAIL = joe@domain.tld</text:p> - <text:p text:style-name="P134"><text:span text:style-name="T86">MESSAGE = This experiment was generated by $${NAME} </text:span><text:span text:style-name="T97"><$${EMAIL}></text:span></text:p> + <text:p text:style-name="P122">NAME = Joe User</text:p> + <text:p text:style-name="P123">EMAIL = joe@domain.tld</text:p> + <text:p text:style-name="P135"><text:span text:style-name="T86">MESSAGE = This experiment was generated by $${NAME} </text:span><text:span text:style-name="T97"><$${EMAIL}></text:span></text:p> <text:p text:style-name="P61"><text:span text:style-name="T33">mkexp</text:span><text:span text:style-name="T86"> will parse all values, recognize 'NAME' and 'EMAIL' as native variables, and </text:span><text:span text:style-name="T98">will </text:span><text:span text:style-name="T86">put their names in the VARIABLES_ list. Now we may use the 'for' template directive to generate an additional line for each member of VARIABLES_. To query the value for a given variable name, </text:span><text:span text:style-name="T33">mkexp</text:span><text:span text:style-name="T86"> provides the 'context' function, such that the template</text:span></text:p> - <text:p text:style-name="P121"><text:soft-page-break/>#! /bin/sh</text:p> - <text:p text:style-name="P122">#%# for <text:span text:style-name="T112">variable</text:span> in <text:span text:style-name="T112">VARIABLES_</text:span>:</text:p> - <text:p text:style-name="P122">%{<text:span text:style-name="T112">variable</text:span>}='%{<text:span text:style-name="T112">context(variable)</text:span>}'</text:p> - <text:p text:style-name="P122">#%# endfor</text:p> - <text:p text:style-name="P122">echo <text:span text:style-name="T154">"</text:span>%{MESSAGE}<text:span text:style-name="T154">"</text:span></text:p> + <text:p text:style-name="P122"><text:soft-page-break/>#! /bin/sh</text:p> + <text:p text:style-name="P123">#%# for <text:span text:style-name="T112">variable</text:span> in <text:span text:style-name="T112">VARIABLES_</text:span>:</text:p> + <text:p text:style-name="P123">%{<text:span text:style-name="T112">variable</text:span>}='%{<text:span text:style-name="T112">context(variable)</text:span>}'</text:p> + <text:p text:style-name="P123">#%# endfor</text:p> + <text:p text:style-name="P123">echo <text:span text:style-name="T154">"</text:span>%{MESSAGE}<text:span text:style-name="T154">"</text:span></text:p> <text:p text:style-name="P54">eventually yields</text:p> - <text:p text:style-name="P121">#! /bin/sh</text:p> - <text:p text:style-name="P134"><text:span text:style-name="T103">EMAIL</text:span><text:span text:style-name="T107">='</text:span><text:span text:style-name="T103">joe@domain.tld</text:span><text:span text:style-name="T107">'</text:span></text:p> - <text:p text:style-name="P134"><text:span text:style-name="T102">NAME</text:span><text:span text:style-name="T106">=</text:span><text:span text:style-name="T107">'</text:span><text:span text:style-name="T102">Joe User</text:span><text:span text:style-name="T107">'</text:span></text:p> - <text:p text:style-name="P134"><text:span text:style-name="T97">echo </text:span><text:span text:style-name="T156">"This experiment was generated by ${NAME} <${EMAIL}>"</text:span></text:p> + <text:p text:style-name="P122">#! /bin/sh</text:p> + <text:p text:style-name="P135"><text:span text:style-name="T103">EMAIL</text:span><text:span text:style-name="T107">='</text:span><text:span text:style-name="T103">joe@domain.tld</text:span><text:span text:style-name="T107">'</text:span></text:p> + <text:p text:style-name="P135"><text:span text:style-name="T102">NAME</text:span><text:span text:style-name="T106">=</text:span><text:span text:style-name="T107">'</text:span><text:span text:style-name="T102">Joe User</text:span><text:span text:style-name="T107">'</text:span></text:p> + <text:p text:style-name="P135"><text:span text:style-name="T97">echo </text:span><text:span text:style-name="T156">"This experiment was generated by ${NAME} <${EMAIL}>"</text:span></text:p> <text:p text:style-name="P62">Note that the order of variable names is not necessarily the order in which they were defined in the .config file.</text:p> <text:h text:style-name="Heading_20_3" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2576_1114405012"/>Re-generation of <text:span text:style-name="T160">s</text:span>cripts and <text:span text:style-name="T160">b</text:span>ackup<text:bookmark-end text:name="__RefHeading__2576_1114405012"/></text:h> <text:p text:style-name="P59">Even the simplest user setup may contain an error. In this case, it is considered good practice to fix this error in the user setup, and to rerun <text:span text:style-name="T9">mkexp.</text:span><text:span text:style-name="T38"> If you want to be really good, you might even start a new experiment from the previous one's restart data.</text:span></text:p> <text:p text:style-name="P84"><text:span text:style-name="T48">A</text:span><text:span text:style-name="T38">s a convenient short-cut, </text:span><text:span text:style-name="T9">mkexp</text:span><text:span text:style-name="T38"> provides the script 'update' in the script directory. It may be called instead of going back to the 'run' and re-running </text:span><text:span text:style-name="T9">mkexp </text:span><text:span text:style-name="T38">directly. The update script records all command line settings and environment settings that were used for running </text:span><text:span text:style-name="T9">mkexp</text:span><text:span text:style-name="T38"> so that './update' reg</text:span><text:span text:style-name="T83">e</text:span><text:span text:style-name="T38">nerates the scripts exactly as they were created, without having to re-construct the exact settings. Like mkexp, update allows to set or change variables on the command line, e.g.</text:span></text:p> - <text:p text:style-name="P250">./update FINAL_DATE=2015-12-31</text:p> + <text:p text:style-name="P114">./update FINAL_DATE=2015-12-31</text:p> <text:p text:style-name="P84">may be used to regenerate scripts with a new final date. Note that these settings are also recorded, i.e. running just './update' the next time will again set FINAL_DATE.</text:p> <text:p text:style-name="P59"><text:span text:style-name="T38">Of course, there is also the possibility to </text:span><text:span text:style-name="T48">change</text:span><text:span text:style-name="T38"> the </text:span><text:span text:style-name="T19">generated</text:span><text:span text:style-name="T47"> </text:span><text:span text:style-name="T38">job scripts directly, and then go on. This is fine as long as the required setting is using a native variable or is otherwise easily editable. On the other hand, </text:span><text:span text:style-name="T49">facing</text:span><text:span text:style-name="T38"> the next </text:span><text:span text:style-name="T49">change,</text:span><text:span text:style-name="T38"> this might not be the case, so eventually you </text:span><text:span text:style-name="T47">may</text:span><text:span text:style-name="T38"> need to re-generate the whole thing. What now about those manual changes to the job scripts?</text:span></text:p> <text:p text:style-name="P59"><text:span text:style-name="T38">Whenever </text:span><text:span text:style-name="T9">mkexp</text:span><text:span text:style-name="T38"> sees existing job scripts while trying to generate the new description, it will automatically create backup files. They are placed in a subdirectory of SCRIPT_DIR, named 'backup'. </text:span><text:span text:style-name="T47">Also, the scripts for each regeneration are bundled in their own subdirectory, named after the current date-time stamp. </text:span><text:span text:style-name="T48">This way you may easily compare old and new scripts to evaluate and possibly transfer any manual changes </text:span><text:span text:style-name="T83">after a necessary regeneration</text:span><text:span text:style-name="T48">.</text:span></text:p> - <text:h text:style-name="P230" text:outline-level="2"><text:bookmark-start text:name="__RefHeading__1883_1672291846"/><text:soft-page-break/>Defining namelists and other configuration files<text:bookmark-end text:name="__RefHeading__1883_1672291846"/></text:h> + <text:h text:style-name="P231" text:outline-level="2"><text:bookmark-start text:name="__RefHeading__1883_1672291846"/><text:soft-page-break/>Defining namelists and other configuration files<text:bookmark-end text:name="__RefHeading__1883_1672291846"/></text:h> <text:p text:style-name="P67"><text:span text:style-name="T60">Most models need at least one Fortran namelist file or another form of configuration file to run. </text:span><text:span text:style-name="T61">The special section [namelists] </text:span><text:span text:style-name="T60">is designed to </text:span><text:span text:style-name="T61">contain all information that goes into </text:span><text:span text:style-name="T60">these</text:span><text:span text:style-name="T61"> files. Each </text:span><text:span text:style-name="T58">immediate </text:span><text:span text:style-name="T61">subsection defines settings for a single file that will </text:span><text:span text:style-name="T60">by default be </text:span><text:span text:style-name="T61">formatted as a Fortran namelist. </text:span><text:span text:style-name="T60">For </text:span><text:span text:style-name="T61">example,</text:span></text:p> - <text:p text:style-name="P135">[namelists]</text:p> - <text:p text:style-name="P145"/> - <text:p text:style-name="P135"><text:s text:c="2"/>[[<text:span text:style-name="T175">namelist.echam</text:span>]] </text:p> - <text:p text:style-name="P135"><text:s text:c="4"/>[[[runctl]]] </text:p> - <text:p text:style-name="P135"><text:s text:c="6"/>lamip = true</text:p> - <text:p text:style-name="P135"><text:s text:c="6"/><text:span text:style-name="T184">nproma = 48</text:span></text:p> - <text:p text:style-name="P137"><text:s text:c="6"/>earth_angular_velocity = 7.3e-5</text:p> - <text:p text:style-name="P137"><text:s text:c="6"/>out_expname = joe1234</text:p> - <text:p text:style-name="P137"><text:s text:c="6"/><text:span text:style-name="T176">dt_stop = 2009, 1, 1, 0, 0, 0</text:span></text:p> + <text:p text:style-name="P136">[namelists]</text:p> + <text:p text:style-name="P146"/> + <text:p text:style-name="P136"><text:s text:c="2"/>[[<text:span text:style-name="T175">namelist.echam</text:span>]] </text:p> + <text:p text:style-name="P136"><text:s text:c="4"/>[[[runctl]]] </text:p> + <text:p text:style-name="P136"><text:s text:c="6"/>lamip = true</text:p> + <text:p text:style-name="P136"><text:s text:c="6"/><text:span text:style-name="T184">nproma = 48</text:span></text:p> + <text:p text:style-name="P138"><text:s text:c="6"/>earth_angular_velocity = 7.3e-5</text:p> + <text:p text:style-name="P138"><text:s text:c="6"/>out_expname = joe1234</text:p> + <text:p text:style-name="P138"><text:s text:c="6"/><text:span text:style-name="T176">dt_stop = 2009, 1, 1, 0, 0, 0</text:span></text:p> <text:p text:style-name="P64"><text:span text:style-name="T38">defines </text:span><text:span text:style-name="T59">a single </text:span><text:span text:style-name="T38">namelist file, </text:span><text:span text:style-name="T62">'namelist.echam'</text:span><text:span text:style-name="T38">, </text:span><text:span text:style-name="T60">containing a single namelist group with four variables of different types. Note </text:span><text:span text:style-name="T79">that you do not </text:span><text:span text:style-name="T60">need to use quotes for strings nor periods for logical values.</text:span></text:p> - <text:h text:style-name="P216" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2578_1114405012"/>Formatting the namelist information<text:bookmark-end text:name="__RefHeading__2578_1114405012"/></text:h> + <text:h text:style-name="P217" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2578_1114405012"/>Formatting the namelist information<text:bookmark-end text:name="__RefHeading__2578_1114405012"/></text:h> <text:p text:style-name="P69"><text:span text:style-name="T58">The </text:span><text:span text:style-name="T59">names of the </text:span><text:span text:style-name="T58">subsections of each namelist file entry, i.e. the second level subsections under the immediate subsections of [namelists], are taken as namelist group </text:span><text:span text:style-name="T59">name</text:span><text:span text:style-name="T58">s, and their variables are formatted as fields of this namelist </text:span><text:span text:style-name="T59">group</text:span><text:span text:style-name="T58">. </text:span><text:span text:style-name="T59">In the example above, there is a single namelist group 'runctl', which will be converted to the Fortran namelist convention. </text:span><text:span text:style-name="T175">The values of the group's fields are checked to determine whether they are numerical, logical, or string values. Logical and string values will then be formatted using periods or quotes, respectively.</text:span></text:p> <text:p text:style-name="P69"><text:span text:style-name="T195">In the example above, the first four fields are single values of logical, integer, floating point, and string type.</text:span><text:span text:style-name="T62"> The fifth is a list of integer values, that will be passed as such to the namelist file:</text:span></text:p> - <text:p text:style-name="P106">&runctl</text:p> - <text:p text:style-name="P139"><text:s text:c="4"/>lamip = <text:span text:style-name="T112">.true.</text:span></text:p> - <text:p text:style-name="P139"><text:s text:c="4"/><text:span text:style-name="T175">nproma = </text:span><text:span text:style-name="T117">48</text:span></text:p> - <text:p text:style-name="P138"><text:s text:c="4"/>earth_angular_velocity = <text:span text:style-name="T112">7.3e-5</text:span></text:p> - <text:p text:style-name="P138"><text:s text:c="4"/>out_expname = <text:span text:style-name="T118">'</text:span><text:span text:style-name="T112">joe1234</text:span><text:span text:style-name="T118">'</text:span></text:p> - <text:p text:style-name="P138"><text:span text:style-name="T62"><text:s text:c="4"/>dt_stop = </text:span><text:span text:style-name="T109">2009, 1, 1, 0, 0, 0</text:span></text:p> - <text:p text:style-name="P123">/</text:p> - <text:h text:style-name="P221" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2580_1114405012"/><text:span text:style-name="T60">S</text:span><text:span text:style-name="T38">uppressing namelist groups or variables</text:span><text:bookmark-end text:name="__RefHeading__2580_1114405012"/></text:h> + <text:p text:style-name="P106"><text:soft-page-break/>&runctl</text:p> + <text:p text:style-name="P140"><text:s text:c="4"/>lamip = <text:span text:style-name="T112">.true.</text:span></text:p> + <text:p text:style-name="P140"><text:s text:c="4"/><text:span text:style-name="T175">nproma = </text:span><text:span text:style-name="T117">48</text:span></text:p> + <text:p text:style-name="P139"><text:s text:c="4"/>earth_angular_velocity = <text:span text:style-name="T112">7.3e-5</text:span></text:p> + <text:p text:style-name="P139"><text:s text:c="4"/>out_expname = <text:span text:style-name="T118">'</text:span><text:span text:style-name="T112">joe1234</text:span><text:span text:style-name="T118">'</text:span></text:p> + <text:p text:style-name="P139"><text:span text:style-name="T62"><text:s text:c="4"/>dt_stop = </text:span><text:span text:style-name="T109">2009, 1, 1, 0, 0, 0</text:span></text:p> + <text:p text:style-name="P124">/</text:p> + <text:h text:style-name="P222" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2580_1114405012"/><text:span text:style-name="T60">S</text:span><text:span text:style-name="T38">uppressing namelist groups or variables</text:span><text:bookmark-end text:name="__RefHeading__2580_1114405012"/></text:h> <text:p text:style-name="P56">Both the namelist file sections and the namelist group section honor the special variable '.remove' which may be set to a list of names. Any namelist groups listed in the file's '.remove' variable, and any variables listed in the group's '.remove' variable will be deleted from the namelist definition.</text:p> - <text:p text:style-name="P56"><text:soft-page-break/>The names may contain the usual file wildcards, '*' and '?' to remove a whole range of groups or variables.</text:p> + <text:p text:style-name="P56">The names may contain the usual file wildcards, '*' and '?' to remove a whole range of groups or variables.</text:p> <text:p text:style-name="P78"><text:span text:style-name="T38">While '.remove' is useful to </text:span><text:span text:style-name="T69">suppress</text:span><text:span text:style-name="T38"> default settings that must not be present for the experiment setup, currently there is no way to resurrect a removed setting in a later setup level. </text:span><text:span text:style-name="T70">Therefore, its use in model setups is strongly discouraged.</text:span></text:p> - <text:h text:style-name="P217" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2714_1114405012"/>Using the namelist text<text:bookmark-end text:name="__RefHeading__2714_1114405012"/></text:h> + <text:h text:style-name="P218" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2714_1114405012"/>Using the namelist text<text:bookmark-end text:name="__RefHeading__2714_1114405012"/></text:h> <text:p text:style-name="P65"><text:span text:style-name="T60">T</text:span><text:span text:style-name="T62">he </text:span><text:span text:style-name="T51">formatted namelist text </text:span><text:span text:style-name="T38">is </text:span><text:span text:style-name="T62">stor</text:span><text:span text:style-name="T38">ed </text:span><text:span text:style-name="T62">in</text:span><text:span text:style-name="T38"> a global variable </text:span><text:span text:style-name="T62">that may be used by a template placeholder</text:span><text:span text:style-name="T38">. </text:span><text:span text:style-name="T60">This way, </text:span><text:span text:style-name="T38">all job information </text:span><text:span text:style-name="T62">available </text:span><text:span text:style-name="T60">is written to</text:span><text:span text:style-name="T38"> a single script or description file, </text:span><text:span text:style-name="T60">and </text:span><text:span text:style-name="T38">native script variables </text:span><text:span text:style-name="T60">may be used</text:span><text:span text:style-name="T38"> in the namelist definitions.</text:span></text:p> <text:p text:style-name="P67"><text:span text:style-name="T51">The name of </text:span><text:span text:style-name="T62">this </text:span><text:span text:style-name="T51">variable</text:span><text:span text:style-name="T52"> </text:span><text:span text:style-name="T62">is</text:span><text:span text:style-name="T51"> generated from </text:span><text:span text:style-name="T62">its</text:span><text:span text:style-name="T51"> </text:span><text:span text:style-name="T52">respective</text:span><text:span text:style-name="T51"> file name, </text:span><text:span text:style-name="T62">like</text:span><text:span text:style-name="T51"> 'namelist.echam', by </text:span><text:span text:style-name="T61">converting all letters to upper case </text:span><text:span text:style-name="T51">(</text:span><text:span text:style-name="T61">namelist.echam →</text:span><text:span text:style-name="T51"> </text:span><text:span text:style-name="T61">NAMELIST.ECHAM</text:span><text:span text:style-name="T51">) </text:span><text:span text:style-name="T52">and </text:span><text:span text:style-name="T51">replacing non-word characters by an underscore (NAMELIST.ECHAM → NAMELIST_ECHAM).</text:span></text:p> <text:p text:style-name="Preformatted_20_Text"># joe1234.config</text:p> @@ -2403,13 +2409,13 @@ <text:p text:style-name="Preformatted_20_Text"><text:s text:c="2"/><text:span text:style-name="T112">[[namelist.echam]]</text:span></text:p> <text:p text:style-name="Preformatted_20_Text"><text:s text:c="4"/>[[[runctl]]]</text:p> <text:p text:style-name="Preformatted_20_Text_20_Interrupt"><text:s text:c="6"/>out_expname = $${EXP_ID}</text:p> - <text:p text:style-name="P136">#! /bin/sh</text:p> + <text:p text:style-name="P137">#! /bin/sh</text:p> <text:p text:style-name="Preformatted_20_Text">EXP_ID=%{EXP_ID}</text:p> <text:p text:style-name="P96">cat > namelist.echam << EOF</text:p> <text:p text:style-name="P103">%{NAMELIST_ECHAM}</text:p> <text:p text:style-name="P96">EOF</text:p> <text:p text:style-name="P66">which expand to</text:p> - <text:p text:style-name="P136">#! /bin/sh</text:p> + <text:p text:style-name="P137"><text:soft-page-break/>#! /bin/sh</text:p> <text:p text:style-name="Preformatted_20_Text">EXP_ID=joe1234</text:p> <text:p text:style-name="P96">cat > namelist.echam << EOF</text:p> <text:p text:style-name="P105">&runctl</text:p> @@ -2418,33 +2424,33 @@ <text:p text:style-name="P96">EOF</text:p> <text:p text:style-name="P68"><text:span text:style-name="T62">Note how this setup uses the native script variable 'EXP_ID' to set the </text:span><text:span text:style-name="T58">namelist contents.</text:span></text:p> <text:p text:style-name="P68"><text:span text:style-name="T63">As in the example above, the script template is responsible for writing the namelist text to an actual file. </text:span><text:span text:style-name="T62">While in general the namelist file takes the same name as the .config subsection defining it, </text:span><text:span text:style-name="T25">mkexp</text:span><text:span text:style-name="T62"> </text:span><text:span text:style-name="T63">ha</text:span><text:span text:style-name="T62">s currently no way to enforce this. The template needs to be set up accordingly.</text:span></text:p> - <text:h text:style-name="P222" text:outline-level="3"><text:soft-page-break/>Using native script variables in namelists</text:h> + <text:h text:style-name="P223" text:outline-level="3">Using native script variables in namelists</text:h> <text:p text:style-name="P85">When using native script variables in a namelist, it may be necessary to suppress the conversion of values to namelist conventions. Consider</text:p> - <text:p text:style-name="P148">[namelists]</text:p> - <text:p text:style-name="P148"><text:s text:c="2"/><text:span text:style-name="T200">[[namelist.echam]]</text:span></text:p> - <text:p text:style-name="P148"><text:s text:c="4"/><text:span text:style-name="T200">[[[runctl]]]</text:span></text:p> + <text:p text:style-name="P149">[namelists]</text:p> + <text:p text:style-name="P149"><text:s text:c="2"/><text:span text:style-name="T200">[[namelist.echam]]</text:span></text:p> + <text:p text:style-name="P149"><text:s text:c="4"/><text:span text:style-name="T200">[[[runctl]]]</text:span></text:p> <text:p text:style-name="Preformatted_20_Text_20_Interrupt"><text:s text:c="6"/><text:span text:style-name="T200">dt_stop = $$final_date</text:span></text:p> - <text:p text:style-name="P124">final_date='2015, 12, 31, 23, 52, 30'</text:p> + <text:p text:style-name="P125">final_date='2015, 12, 31, 23, 52, 30'</text:p> <text:p text:style-name="P97">cat > namelist.echam << EOF</text:p> <text:p text:style-name="P104">%{NAMELIST_ECHAM}</text:p> - <text:p text:style-name="P125">EOF</text:p> + <text:p text:style-name="P126">EOF</text:p> <text:p text:style-name="P85">When the text for NAMELIST_ECHAM is generated, <text:span text:style-name="T9">mkexp</text:span><text:span text:style-name="T38"> converts the value of 'dt_stop' to a string surrounded by single quotes (see 'EXP_ID' in the previous example), as '$$final_date' cannot be </text:span><text:span text:style-name="T85">recognized</text:span><text:span text:style-name="T38"> as a numer</text:span><text:span text:style-name="T85">ic</text:span><text:span text:style-name="T38"> or logical value. In the namelist context however it is </text:span><text:span text:style-name="T85">needed</text:span><text:span text:style-name="T38"> as a</text:span><text:span text:style-name="T85">n unquoted</text:span><text:span text:style-name="T38"> list of integers. </text:span><text:span text:style-name="T84">To fix this, simply use the special syntax 'raw(…)' </text:span><text:span text:style-name="T85">around the value:</text:span></text:p> <text:p text:style-name="Preformatted_20_Text"><text:span text:style-name="T85"><text:s text:c="6"/></text:span><text:span text:style-name="T83">dt_stop = </text:span><text:span text:style-name="T85">raw(</text:span><text:span text:style-name="T83">$$final_date</text:span><text:span text:style-name="T85">)</text:span></text:p> - <text:p text:style-name="P86"><text:span text:style-name="T38">which disables the conversion to a valid namelist value, leaving the correct formatting of the native variable to the script.</text:span></text:p> - <text:h text:style-name="P219" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2584_1114405012"/>Non-namelist configuration files<text:bookmark-end text:name="__RefHeading__2584_1114405012"/></text:h> + <text:p text:style-name="P232">which disables the conversion to a valid namelist value, leaving the correct formatting of the native variable to the script.</text:p> + <text:h text:style-name="P220" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2584_1114405012"/><text:soft-page-break/>Non-namelist configuration files<text:bookmark-end text:name="__RefHeading__2584_1114405012"/></text:h> <text:p text:style-name="P79"><text:span text:style-name="T73">A [namelists] subsection may not only define a Fortran namelist file but also a custom format configuration file. </text:span><text:span text:style-name="T71">F</text:span><text:span text:style-name="T38">or any </text:span><text:span text:style-name="T73">of these</text:span><text:span text:style-name="T72"> files, the special section variable '.use_template' must be set to 'true', </text:span><text:span text:style-name="T73">and the model setup must provide a template '</text:span><text:span text:style-name="T29">subsection</text:span><text:span text:style-name="T73">.tmpl'. This template is expanded using the subsection's variables to create a suitably formatted text. </text:span><text:span text:style-name="T74">As for genuine namelists, the result is stored in a global variable.</text:span></text:p> <text:h text:style-name="Heading_20_2" text:outline-level="2"><text:bookmark-start text:name="__RefHeading__2831_1132221942"/><text:span text:style-name="T74">D</text:span><text:span text:style-name="T38">efining input files for an experiment</text:span><text:bookmark-end text:name="__RefHeading__2831_1132221942"/></text:h> <text:p text:style-name="P82"><text:span text:style-name="T38">While the namelist files determine the model properties, the model state </text:span><text:span text:style-name="T82">also </text:span><text:span text:style-name="T38">depends on input files for initial and boundary conditions or assimilation data. These files are defined in the [files] special section. </text:span><text:span text:style-name="T82">There are no restrictions on the content structure of this section, and the job script templates are responsible for converting this content into a suitable script text.</text:span></text:p> - <text:h text:style-name="P215" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2833_1132221942"/>Overriding <text:span text:style-name="T198">input file</text:span>s <text:span text:style-name="T198">for certain</text:span> jobs<text:bookmark-end text:name="__RefHeading__2833_1132221942"/></text:h> - <text:p text:style-name="P51"><text:span text:style-name="T199">As for namelists, t</text:span>here is special provision to change <text:span text:style-name="T198">the [</text:span>files<text:span text:style-name="T198">]</text:span> settings for a specific job. <text:span text:style-name="T198">Let us assume</text:span> <text:span text:style-name="T198">that a model run continues a previous run and reads that run's </text:span><text:soft-page-break/><text:span text:style-name="T198">state from a restart file that may be defined like this:</text:span></text:p> - <text:p text:style-name="P130">[<text:span text:style-name="T198">files</text:span>]</text:p> + <text:h text:style-name="P216" text:outline-level="3"><text:bookmark-start text:name="__RefHeading__2833_1132221942"/>Overriding <text:span text:style-name="T198">input file</text:span>s <text:span text:style-name="T198">for certain</text:span> jobs<text:bookmark-end text:name="__RefHeading__2833_1132221942"/></text:h> + <text:p text:style-name="P51"><text:span text:style-name="T199">As for namelists, t</text:span>here is special provision to change <text:span text:style-name="T198">the [</text:span>files<text:span text:style-name="T198">]</text:span> settings for a specific job. <text:span text:style-name="T198">Let us assume</text:span> <text:span text:style-name="T198">that a model run continues a previous run and reads that run's state from a restart file that may be defined like this:</text:span></text:p> + <text:p text:style-name="P131">[<text:span text:style-name="T198">files</text:span>]</text:p> <text:p text:style-name="P92"><text:s text:c="2"/>[[<text:span text:style-name="T198">echam</text:span>]]</text:p> <text:p text:style-name="P92"><text:s text:c="4"/>[[[<text:span text:style-name="T198">restart</text:span>]]]</text:p> <text:p text:style-name="P92"><text:s text:c="6"/><text:span text:style-name="T198">restart_myexp_echam.nc = restart_myexp_echam_18491231.nc</text:span></text:p> <text:p text:style-name="P83">The first run <text:span text:style-name="T199">will instead pick up its state from another experiment. This is done with </text:span><text:span text:style-name="T92"><text:s/>a job specific </text:span><text:span text:style-name="T101">'file</text:span><text:span text:style-name="T92">s</text:span><text:span text:style-name="T101">'</text:span><text:span text:style-name="T92"> subsection that – apart from the addition</text:span><text:span text:style-name="T94">al</text:span><text:span text:style-name="T92"> brackets – has the same structure as</text:span><text:span text:style-name="T91"> </text:span><text:span text:style-name="T92">the global </text:span><text:span text:style-name="T101">'files'</text:span><text:span text:style-name="T92"> section.</text:span></text:p> - <text:p text:style-name="P130">[jobs]</text:p> - <text:p text:style-name="P130"><text:s text:c="2"/>[[run_first]]</text:p> - <text:p text:style-name="P130"><text:s text:c="4"/><text:span text:style-name="T112">[[[</text:span><text:span text:style-name="T121">file</text:span><text:span text:style-name="T112">s]</text:span><text:span text:style-name="T121">]</text:span><text:span text:style-name="T112">]</text:span></text:p> + <text:p text:style-name="P131">[jobs]</text:p> + <text:p text:style-name="P131"><text:s text:c="2"/>[[run_first]]</text:p> + <text:p text:style-name="P131"><text:s text:c="4"/><text:span text:style-name="T112">[[[</text:span><text:span text:style-name="T121">file</text:span><text:span text:style-name="T112">s]</text:span><text:span text:style-name="T121">]</text:span><text:span text:style-name="T112">]</text:span></text:p> <text:p text:style-name="P92"><text:s text:c="6"/><text:span text:style-name="T150">[[</text:span>[[<text:span text:style-name="T199">echam</text:span>]]<text:span text:style-name="T150">]]</text:span></text:p> <text:p text:style-name="P92"><text:s text:c="8"/><text:span text:style-name="T150">[[</text:span>[[[<text:span text:style-name="T199">restart</text:span>]]]<text:span text:style-name="T150">]]</text:span></text:p> <text:p text:style-name="P93"><text:span text:style-name="T86"><text:s text:c="10"/></text:span><text:span text:style-name="T100">restart_myexp_echam.nc = restart_</text:span><text:span text:style-name="T104">another</text:span><text:span text:style-name="T105">exp</text:span><text:span text:style-name="T100">_echam_18491231.nc</text:span></text:p> diff --git a/doc/mkexp.pdf b/doc/mkexp.pdf index f4881d0cb0e4374d702cbbd4e0facf76811b590d..ca0cb5611dca116218ac7eae2ae243d9f555a957 100644 GIT binary patch delta 48333 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 EfBjKON&o-= delta 48325 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 RM&=U~h|9tvt|)=~{{fBwRyY6v diff --git a/expconfig.py b/expconfig.py index d9c84be..746ff2c 100644 --- a/expconfig.py +++ b/expconfig.py @@ -87,6 +87,9 @@ class ExpConfig(ConfigObj): TODO: probably nicer if default experiment is given as argument ''' + # State variables + self.version_info_missing = False + # # Helper functions # @@ -261,6 +264,14 @@ class ExpConfig(ConfigObj): raise ExpConfigError(error.message, key) section[key] = value + # Move version info from local config to global list + def register_version(pre_config, config_versions): + if 'VERSION_' in pre_config: + config_versions.append(pre_config['VERSION_']) + del pre_config['VERSION_'] + else: + self.version_info_missing = True + # # Method body # @@ -323,22 +334,19 @@ class ExpConfig(ConfigObj): ExpConfig.default_name+'.config') pre_config.merge(ConfigObj(lib_config_name, interpolation=False)) split_jobs(pre_config) - config_versions.append(pre_config['VERSION_']) - del pre_config['VERSION_'] + register_version(pre_config, config_versions) if os.path.exists(setup_config_name): pre_config.merge(ConfigObj(setup_config_name, interpolation=False)) split_jobs(pre_config) - config_versions.append(pre_config['VERSION_']) - del pre_config['VERSION_'] + register_version(pre_config, config_versions) lib_config_name = get_config_name(ExpConfig.exp_lib_dir, experiment_type+'.config') if os.path.exists(lib_config_name): pre_config.merge(ConfigObj(lib_config_name, interpolation=False)) split_jobs(pre_config) - config_versions.append(pre_config['VERSION_']) - del pre_config['VERSION_'] + register_version(pre_config, config_versions) else: feedback.warning("cannot find experiment config for '%s', "+ "using default only", experiment_type) @@ -349,8 +357,7 @@ class ExpConfig(ConfigObj): if os.path.exists(lib_config_name): pre_config.merge(ConfigObj(lib_config_name, interpolation=False)) split_jobs(pre_config) - config_versions.append(pre_config['VERSION_']) - del pre_config['VERSION_'] + register_version(pre_config, config_versions) else: feedback.warning("cannot find option config for '%s', using"+ "default/experiment only", experiment_type) @@ -362,8 +369,11 @@ class ExpConfig(ConfigObj): if os.path.exists(lib_config_name): pre_config.merge(ConfigObj(lib_config_name, interpolation=False)) - config_versions.append(pre_config['VERSION_']) - del pre_config['VERSION_'] + register_version(pre_config, config_versions) + + # Warn user if at least one config had no version info + if self.version_info_missing: + feedback.info("version info for standard config is incomplete") # Re-read config to allow overriding default settings # TODO: probably nicer if default experiment is given as argument diff --git a/mkexp b/mkexp index e39e5b7..2d512e1 100755 --- a/mkexp +++ b/mkexp @@ -83,7 +83,7 @@ def expand_template_file(template_dict, template_names, expanded_name, backup_na def move_file_to_backup(file_name, backup_name): '''If given file name exists, move it to the backup location''' if os.path.exists(file_name): - feedback.info("renaming '%s' to '%s'", file_name, backup_name) + feedback.debug("renaming '%s' to '%s'", file_name, backup_name) os.rename(file_name, backup_name) @@ -239,6 +239,10 @@ def assign_to_dict(assign): # Main routine # +# Set verbosity + +feedback.setLevel(feedback.INFO) + # Check environment config_roots = os.environ.get('MKEXP_PATH', '').split(':') diff --git a/setup.py b/setup.py index e42a1c7..f88fe0c 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from distutils.core import setup name = 'mkexp' -version = '0.3.4dev' +version = '0.3.4' setup( name = name, -- GitLab