From 42f93d3a5ac3c27c134b5a16a714a143fbb081fe Mon Sep 17 00:00:00 2001 From: Magne Sjaastad Date: Tue, 5 Mar 2019 11:42:20 +0100 Subject: [PATCH] #4169 Saturation-Pressure plot : Read keyword data and add test files --- .../RifEclipseInputFileTools.cpp | 179 +++ .../FileInterface/RifEclipseInputFileTools.h | 16 + .../RifEclipseInputFileTools-Test.cpp | 92 +- .../include/grid/FAULT_JUN_05.INC | 1062 +++++++++++++++++ .../include/solution/equilibiration.inc | 13 + .../simulation/MY_CASE.DATA | 6 + 6 files changed, 1366 insertions(+), 2 deletions(-) create mode 100644 ApplicationCode/UnitTests/TestData/ParsingOfDataKeywords/include/grid/FAULT_JUN_05.INC create mode 100644 ApplicationCode/UnitTests/TestData/ParsingOfDataKeywords/include/solution/equilibiration.inc create mode 100644 ApplicationCode/UnitTests/TestData/ParsingOfDataKeywords/simulation/MY_CASE.DATA diff --git a/ApplicationCode/FileInterface/RifEclipseInputFileTools.cpp b/ApplicationCode/FileInterface/RifEclipseInputFileTools.cpp index 13928c3a76..6162c3314a 100644 --- a/ApplicationCode/FileInterface/RifEclipseInputFileTools.cpp +++ b/ApplicationCode/FileInterface/RifEclipseInputFileTools.cpp @@ -785,6 +785,185 @@ bool RifEclipseInputFileTools::readFaultsAndParseIncludeStatementsRecursively( return true; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +bool RifEclipseInputFileTools::readKeywordAndParseIncludeStatementsRecursively( + const QString& keyword, + const QString& keywordToStopParsing, + QFile& file, + qint64 startPos, + const std::vector>& pathAliasDefinitions, + QStringList* keywordDataContent, + std::vector* filenamesContainingKeyword, + bool* isStopParsingKeywordDetected, + const QString& faultIncludeFileAbsolutePathPrefix /* rename to includeStatementAbsolutePathPrefix */) +{ + QString line; + + if (!file.seek(startPos)) + { + return false; + } + + bool continueParsing = true; + + do + { + line = file.readLine(); + line = line.trimmed(); + + if (line.startsWith("--", Qt::CaseInsensitive)) + { + continue; + } + + if (!keywordToStopParsing.isEmpty() && line.startsWith(keywordToStopParsing, Qt::CaseInsensitive)) + { + if (isStopParsingKeywordDetected) + { + *isStopParsingKeywordDetected = true; + } + + return false; + } + + if (line.startsWith(includeKeyword, Qt::CaseInsensitive)) + { + line = file.readLine(); + line = line.trimmed(); + + while (line.startsWith("--", Qt::CaseInsensitive)) + { + line = file.readLine(); + line = line.trimmed(); + } + + int firstQuote = line.indexOf("'"); + int lastQuote = line.lastIndexOf("'"); + + if (!(firstQuote < 0 || lastQuote < 0 || firstQuote == lastQuote)) + { + QDir currentFileFolder; + { + QFileInfo fi(file.fileName()); + currentFileFolder = fi.absoluteDir(); + } + + // Read include file name, and both relative and absolute path is supported + QString includeFilename = line.mid(firstQuote + 1, lastQuote - firstQuote - 1); + + for (auto entry : pathAliasDefinitions) + { + QString textToReplace = "$" + entry.first; + includeFilename.replace(textToReplace, entry.second); + } + +#ifdef WIN32 + if (includeFilename.startsWith('/')) + { + // Absolute UNIX path, prefix on Windows + includeFilename = faultIncludeFileAbsolutePathPrefix + includeFilename; + } +#endif + + QFileInfo fi(currentFileFolder, includeFilename); + if (fi.exists()) + { + QString absoluteFilename = fi.canonicalFilePath(); + QFile includeFile(absoluteFilename); + if (includeFile.open(QFile::ReadOnly)) + { + // qDebug() << "Found include statement, and start parsing of\n " << absoluteFilename; + + if (!readKeywordAndParseIncludeStatementsRecursively(keyword, + keywordToStopParsing, + includeFile, + 0, + pathAliasDefinitions, + keywordDataContent, + filenamesContainingKeyword, + isStopParsingKeywordDetected, + faultIncludeFileAbsolutePathPrefix)) + { + qDebug() << "Error when parsing include file : " << absoluteFilename; + } + } + } + } + } + else if (line.startsWith(keyword, Qt::CaseInsensitive)) + { + if (!line.contains("/")) + { + readKeywordDataContent(file, file.pos(), keywordDataContent, isStopParsingKeywordDetected); + filenamesContainingKeyword->push_back(file.fileName()); + } + } + + if (isStopParsingKeywordDetected && *isStopParsingKeywordDetected) + { + continueParsing = false; + } + + if (file.atEnd()) + { + continueParsing = false; + } + + } while (continueParsing); + + return true; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RifEclipseInputFileTools::readKeywordDataContent(QFile& data, + qint64 filePos, + QStringList* textContent, + bool* isEditKeywordDetected) +{ + if (!data.seek(filePos)) + { + return; + } + + // This function assumes the keyword is read from file, and the file pointer is pointing to the first line containing data for + // the keyword + + do + { + QString line = data.readLine(); + line = line.trimmed(); + + if (line.startsWith("--", Qt::CaseInsensitive)) + { + // Skip comment lines + continue; + } + else if (line.startsWith("/", Qt::CaseInsensitive)) + { + // Detected end of keyword data section + return; + } + else if (line.startsWith(editKeyword, Qt::CaseInsensitive)) + { + // End parsing when edit keyword is detected + + if (isEditKeywordDetected) + { + *isEditKeywordDetected = true; + } + + return; + } + + textContent->push_back(line); + + } while (!data.atEnd()); +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/FileInterface/RifEclipseInputFileTools.h b/ApplicationCode/FileInterface/RifEclipseInputFileTools.h index 4e17e70f6a..a0de88bdef 100644 --- a/ApplicationCode/FileInterface/RifEclipseInputFileTools.h +++ b/ApplicationCode/FileInterface/RifEclipseInputFileTools.h @@ -82,6 +82,22 @@ public: bool* isEditKeywordDetected, const QString& faultIncludeFileAbsolutePathPrefix); + + + static bool readKeywordAndParseIncludeStatementsRecursively(const QString& keyword, + const QString& keywordToStopParsing, + QFile& file, + qint64 startPos, + const std::vector< std::pair >& pathAliasDefinitions, + QStringList* keywordDataContent, + std::vector* filenamesContainingKeyword, + bool* isEditKeywordDetected, + const QString& faultIncludeFileAbsolutePathPrefix // rename to includeStatementAbsolutePathPrefix + ); + + static void readKeywordDataContent(QFile &data, qint64 filePos, QStringList* textContent, bool* isEditKeywordDetected); + + static cvf::StructGridInterface::FaceEnum faceEnumFromText(const QString& faceString); private: diff --git a/ApplicationCode/UnitTests/RifEclipseInputFileTools-Test.cpp b/ApplicationCode/UnitTests/RifEclipseInputFileTools-Test.cpp index d4f0cf9d3e..f59a35c414 100644 --- a/ApplicationCode/UnitTests/RifEclipseInputFileTools-Test.cpp +++ b/ApplicationCode/UnitTests/RifEclipseInputFileTools-Test.cpp @@ -1,10 +1,11 @@ #include "gtest/gtest.h" +#include "RiaTestDataDirectory.h" +#include "RifEclipseInputFileTools.h" #include "RigEclipseCaseData.h" -#include "RifEclipseInputFileTools.h" - #include +#include //-------------------------------------------------------------------------------------------------- /// @@ -149,3 +150,90 @@ TEST(RifEclipseInputFileToolsTest, FaultFaces) } } + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +TEST(RifEclipseInputFileToolsTest, EquilData) +{ + static const QString testDataRootFolder = QString("%1/ParsingOfDataKeywords/").arg(TEST_DATA_DIR); + + { + QString fileName = testDataRootFolder + "simulation/MY_CASE.DATA"; + + QFile data(fileName); + if (!data.open(QFile::ReadOnly)) + { + return; + } + + std::vector> pathAliasDefinitions; + RifEclipseInputFileTools::parseAndReadPathAliasKeyword(fileName, &pathAliasDefinitions); + + const QString keyword("EQUIL"); + const QString keywordToStopParsing; + const qint64 startPositionInFile = 0; + QStringList keywordContent; + std::vector fileNamesContainingKeyword; + bool isEditKeywordDetected = false; + const QString includeStatementAbsolutePathPrefix; + + RifEclipseInputFileTools::readKeywordAndParseIncludeStatementsRecursively(keyword, + keywordToStopParsing, + data, + startPositionInFile, + pathAliasDefinitions, + &keywordContent, + &fileNamesContainingKeyword, + &isEditKeywordDetected, + includeStatementAbsolutePathPrefix); + + for (const auto& s : keywordContent) + { + qDebug() << s; + } + } +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +TEST(RifEclipseInputFileToolsTest, FaultData) +{ + static const QString testDataRootFolder = QString("%1/ParsingOfDataKeywords/").arg(TEST_DATA_DIR); + + { + QString fileName = testDataRootFolder + "simulation/MY_CASE.DATA"; + + QFile data(fileName); + if (!data.open(QFile::ReadOnly)) + { + return; + } + + std::vector> pathAliasDefinitions; + RifEclipseInputFileTools::parseAndReadPathAliasKeyword(fileName, &pathAliasDefinitions); + + const QString keyword("FAULTS"); + const QString keywordToStopParsing; + const qint64 startPositionInFile = 0; + QStringList keywordContent; + std::vector fileNamesContainingKeyword; + bool isEditKeywordDetected = false; + const QString includeStatementAbsolutePathPrefix; + + RifEclipseInputFileTools::readKeywordAndParseIncludeStatementsRecursively(keyword, + keywordToStopParsing, + data, + startPositionInFile, + pathAliasDefinitions, + &keywordContent, + &fileNamesContainingKeyword, + &isEditKeywordDetected, + includeStatementAbsolutePathPrefix); + for (const auto& s : keywordContent) + { + qDebug() << s; + } + } +} diff --git a/ApplicationCode/UnitTests/TestData/ParsingOfDataKeywords/include/grid/FAULT_JUN_05.INC b/ApplicationCode/UnitTests/TestData/ParsingOfDataKeywords/include/grid/FAULT_JUN_05.INC new file mode 100644 index 0000000000..4f2047b8ed --- /dev/null +++ b/ApplicationCode/UnitTests/TestData/ParsingOfDataKeywords/include/grid/FAULT_JUN_05.INC @@ -0,0 +1,1062 @@ +-- This reservoir simulation deck is made available under the Open Database +-- License: http://opendatacommons.org/licenses/odbl/1.0/. Any rights in +-- individual contents of the database are licensed under the Database Contents +-- License: http://opendatacommons.org/licenses/dbcl/1.0/ + +-- Copyright (C) 2015 Statoil + + +FAULTS +-- NAME IX1 IX2 IY1 IY2 IZ1 IZ2 FACE + +'m_west' 5 5 3 3 1 22 'X' / +'m_west' 5 5 4 4 1 22 'X' / +'m_west' 5 5 5 5 1 22 'X' / +'m_west' 5 5 6 6 1 22 'X' / +'m_west' 5 5 7 7 1 22 'X' / +'m_west' 5 5 8 8 1 22 'X' / +'m_west' 5 5 9 9 1 22 'X' / +'m_west' 5 5 10 10 1 22 'X' / +'m_west' 5 5 11 11 1 22 'X' / +'m_west' 5 5 12 12 1 22 'X' / +'m_west' 5 5 13 13 1 22 'X' / +'m_west' 5 5 14 14 1 22 'X' / +'m_west' 5 5 15 15 1 22 'X' / +'m_west' 5 5 16 16 1 22 'X' / +'m_west' 5 5 17 17 1 22 'X' / +'m_west' 5 5 18 18 1 22 'X' / +'m_west' 5 5 19 19 1 22 'X' / +'m_west' 5 5 20 20 1 22 'X' / +'m_west' 5 5 21 21 1 22 'X' / +'m_west' 5 5 22 22 1 22 'X' / +'m_west' 5 5 23 23 1 22 'X' / +'m_west' 5 5 24 24 1 22 'X' / +'m_west' 5 5 25 25 1 22 'X' / +'m_west' 5 5 26 26 1 22 'X' / +'m_west' 5 5 27 27 1 22 'X' / +'m_west' 5 5 28 28 1 22 'X' / +'m_west' 5 5 29 29 1 22 'X' / +'m_west' 5 5 30 30 1 22 'X' / +'m_west' 5 5 31 31 1 22 'X' / +'m_west' 5 5 32 32 1 22 'X' / +'m_west' 5 5 33 33 1 22 'X' / +'m_west' 5 5 34 34 1 22 'X' / +'m_west' 5 5 35 35 1 22 'X' / +'m_west' 5 5 36 36 1 22 'X' / +'m_west' 5 5 37 37 1 22 'X' / +'m_west' 5 5 38 38 1 22 'X' / +'m_west' 5 5 39 39 1 22 'X' / +'m_west' 5 5 40 40 1 22 'X' / +'m_west' 5 5 41 41 1 22 'X' / +'m_west' 5 5 42 42 1 22 'X' / +'m_west' 5 5 43 43 1 22 'X' / +'m_west' 5 5 44 44 1 22 'X' / +'m_west' 5 5 45 45 1 22 'X' / +'m_west' 5 5 46 46 1 22 'X' / +'m_west' 5 5 47 47 1 22 'X' / +'m_west' 5 5 48 48 1 22 'X' / +'m_west' 5 5 49 49 1 22 'X' / +'m_west' 5 5 50 50 1 22 'X' / +'m_west' 5 5 51 51 1 22 'X' / +'m_west' 5 5 52 52 1 22 'X' / +'m_west' 5 5 53 53 1 22 'X' / +'m_west' 5 5 54 54 1 22 'X' / +'m_west' 5 5 55 55 1 22 'X' / +'m_west' 5 5 56 56 1 22 'X' / +'m_west' 5 5 57 57 1 22 'X' / +'m_west' 5 5 58 58 1 22 'X' / +'m_west' 5 5 59 59 1 22 'X' / +'m_west' 5 5 60 60 1 22 'X' / +'m_west' 5 5 61 61 1 22 'X' / +'m_west' 5 5 62 62 1 22 'X' / +'m_west' 5 5 63 63 1 22 'X' / +'m_west' 5 5 64 64 1 22 'X' / +'m_west' 5 5 65 65 1 22 'X' / +'m_west' 5 5 66 66 1 22 'X' / +'m_west' 5 5 67 67 1 22 'X' / +'m_west' 5 5 68 68 1 22 'X' / +'m_west' 5 5 69 69 1 22 'X' / +'m_west' 5 5 70 70 1 22 'X' / +'m_west' 5 5 71 71 1 22 'X' / +'m_west' 5 5 72 72 1 22 'X' / +'m_west' 5 5 73 73 1 22 'X' / +'m_west' 5 5 74 74 1 22 'X' / +'m_west' 5 5 75 75 1 22 'X' / +'m_west' 5 5 76 76 1 22 'X' / +'m_west' 5 5 77 77 1 22 'X' / +'m_west' 5 5 78 78 1 22 'X' / +'m_west' 5 5 79 79 1 22 'X' / +'m_west' 5 5 80 80 1 22 'X' / +'m_west' 5 5 81 81 1 22 'X' / +'m_west' 5 5 82 82 1 22 'X' / +'m_west' 5 5 83 83 1 22 'X' / +'m_west' 5 5 84 84 1 22 'X' / +'m_west' 5 5 85 85 1 22 'X' / +'m_west' 5 5 86 86 1 22 'X' / +'m_west' 5 5 87 87 1 22 'X' / +'m_west' 5 5 88 88 1 22 'X' / + +'BC' 43 43 8 8 1 22 'Y' / +'BC' 42 42 9 9 1 22 'X' / +'BC' 44 44 8 8 1 22 'Y' / +'BC' 45 45 8 8 1 22 'Y' / +'BC' 46 46 8 8 1 22 'Y' / +'BC' 31 31 9 9 1 22 'Y' / +'BC' 30 30 10 10 1 22 'X' / +'BC' 32 32 9 9 1 22 'Y' / +'BC' 33 33 9 9 1 22 'Y' / +'BC' 34 34 9 9 1 22 'Y' / +'BC' 35 35 9 9 1 22 'Y' / +'BC' 36 36 9 9 1 22 'Y' / +'BC' 37 37 9 9 1 22 'Y' / +'BC' 38 38 9 9 1 22 'Y' / +'BC' 39 39 9 9 1 22 'Y' / +'BC' 40 40 9 9 1 22 'Y' / +'BC' 41 41 9 9 1 22 'Y' / +'BC' 42 42 9 9 1 22 'Y' / +'BC' 6 6 10 10 1 22 'Y' / +'BC' 7 7 10 10 1 22 'Y' / +'BC' 8 8 10 10 1 22 'Y' / +'BC' 9 9 10 10 1 22 'Y' / +'BC' 10 10 10 10 1 22 'Y' / +'BC' 11 11 10 10 1 22 'Y' / +'BC' 12 12 10 10 1 22 'Y' / +'BC' 13 13 10 10 1 22 'Y' / +'BC' 14 14 10 10 1 22 'Y' / +'BC' 15 15 10 10 1 22 'Y' / +'BC' 16 16 10 10 1 22 'Y' / +'BC' 17 17 10 10 1 22 'Y' / +'BC' 18 18 10 10 1 22 'Y' / +'BC' 19 19 10 10 1 22 'Y' / +'BC' 20 20 10 10 1 22 'Y' / +'BC' 21 21 10 10 1 22 'Y' / +'BC' 22 22 10 10 1 22 'Y' / +'BC' 23 23 10 10 1 22 'Y' / +'BC' 24 24 10 10 1 22 'Y' / +'BC' 25 25 10 10 1 22 'Y' / +'BC' 26 26 10 10 1 22 'Y' / +'BC' 27 27 10 10 1 22 'Y' / +'BC' 28 28 10 10 1 22 'Y' / +'BC' 29 29 10 10 1 22 'Y' / +'BC' 30 30 10 10 1 22 'Y' / + +'m_north' 6 6 89 89 1 22 'Y' / +'m_north' 5 5 89 89 1 22 'X' / +'m_north' 7 7 90 90 1 22 'Y' / +'m_north' 6 6 90 90 1 22 'X' / +'m_north' 8 8 91 91 1 22 'Y' / +'m_north' 7 7 91 91 1 22 'X' / +'m_north' 9 9 92 92 1 22 'Y' / +'m_north' 8 8 92 92 1 22 'X' / +'m_north' 9 9 93 93 1 22 'X' / +'m_north' 10 10 94 94 1 22 'Y' / +'m_north' 9 9 94 94 1 22 'X' / +'m_north' 11 11 94 94 1 22 'Y' / +'m_north' 11 11 95 95 1 22 'X' / +'m_north' 12 12 96 96 1 22 'Y' / +'m_north' 11 11 96 96 1 22 'X' / +'m_north' 13 13 97 97 1 22 'Y' / +'m_north' 12 12 97 97 1 22 'X' / +'m_north' 13 13 98 98 1 22 'X' / +'m_north' 14 14 99 99 1 22 'Y' / +'m_north' 13 13 99 99 1 22 'X' / +'m_north' 15 15 100 100 1 22 'Y' / +'m_north' 14 14 100 100 1 22 'X' / +'m_north' 16 16 100 100 1 22 'Y' / +'m_north' 17 17 100 100 1 22 'Y' / +'m_north' 18 18 101 101 1 22 'Y' / +'m_north' 17 17 101 101 1 22 'X' / +'m_north' 19 19 101 101 1 22 'Y' / +'m_north' 20 20 102 102 1 22 'Y' / +'m_north' 19 19 102 102 1 22 'X' / +'m_north' 21 21 102 102 1 22 'Y' / +'m_north' 22 22 103 103 1 22 'Y' / +'m_north' 21 21 103 103 1 22 'X' / +'m_north' 23 23 103 103 1 22 'Y' / +'m_north' 24 24 104 104 1 22 'Y' / +'m_north' 23 23 104 104 1 22 'X' / +'m_north' 25 25 104 104 1 22 'Y' / +'m_north' 26 26 105 105 1 22 'Y' / +'m_north' 25 25 105 105 1 22 'X' / +'m_north' 27 27 105 105 1 22 'Y' / +'m_north' 28 28 106 106 1 22 'Y' / +'m_north' 27 27 106 106 1 22 'X' / +'m_north' 29 29 107 107 1 22 'Y' / +'m_north' 28 28 107 107 1 22 'X' / +'m_north' 30 30 107 107 1 22 'Y' / +'m_north' 31 31 108 108 1 22 'Y' / +'m_north' 30 30 108 108 1 22 'X' / +'m_north' 32 32 108 108 1 22 'Y' / +'m_north' 33 33 109 109 1 22 'Y' / +'m_north' 32 32 109 109 1 22 'X' / +'m_north' 34 34 109 109 1 22 'Y' / +'m_north' 35 35 109 109 1 22 'Y' / +'m_north' 35 35 110 110 1 22 'X' / +'m_north' 35 35 110 110 1 22 'Y' / +'m_north' 34 34 111 111 1 22 'X' / +'m_north' 34 34 112 112 1 22 'X' / + +'EF' 7 7 79 79 1 22 'X' / +'EF' 7 7 80 80 1 22 'X' / +'EF' 8 8 81 81 1 22 'Y' / +'EF' 7 7 81 81 1 22 'X' / +'EF' 8 8 82 82 1 22 'X' / +'EF' 8 8 82 82 1 22 'Y' / +'EF' 8 8 83 83 1 22 'Y' / +'EF' 7 7 83 83 1 22 'X' / +'EF' 8 8 84 84 1 22 'X' / +'EF' 9 9 85 85 1 22 'Y' / +'EF' 8 8 85 85 1 22 'X' / +'EF' 9 9 86 86 1 22 'X' / +'EF' 9 9 87 87 1 22 'X' / +'EF' 9 9 88 88 1 22 'X' / +'EF' 9 9 89 89 1 22 'X' / +'EF' 9 9 90 90 1 22 'X' / +'EF' 9 9 91 91 1 22 'X' / +'EF' 9 9 92 92 1 22 'X' / + +--simopt +'DE_0' 8 8 49 49 1 22 'Y' / +'DE_0' 7 7 49 49 1 22 'X' / +'DE_0' 7 7 48 48 1 22 'X' / +'DE_0' 6 7 47 47 1 22 'Y' / + +'DE_B3' 9 9 49 49 1 22 'Y' / +'DE_B3' 9 9 50 50 1 22 'X' / +'DE_B3' 9 9 51 51 1 22 'X' / +'DE_B3' 9 9 52 52 1 22 'X' / +'DE_B3' 9 9 53 53 1 22 'X' / +'DE_B3' 10 10 53 53 1 22 'Y' / + +'DE_1' 10 10 54 54 1 15 'X' / +'DE_1' 11 11 54 54 1 15 'Y' / +'DE_1' 11 11 55 55 1 15 'X' / +'DE_1' 11 11 56 56 1 15 'X' / +'DE_1' 12 12 56 56 1 15 'Y' / +'DE_1' 12 12 57 57 1 15 'X' / +'DE_1' 12 12 58 58 1 15 'X' / +'DE_1' 12 12 59 59 1 15 'X' / +'DE_1' 13 13 59 59 1 15 'Y' / +'DE_1' 13 13 60 60 1 15 'X' / +'DE_1' 13 13 61 61 1 15 'X' / +'DE_1' 13 13 62 62 1 15 'X' / +'DE_1' 14 14 62 62 1 15 'Y' / +'DE_1' 14 14 63 63 1 15 'X' / +'DE_1' 14 14 64 64 1 15 'X' / +'DE_1' 14 14 65 65 1 15 'X' / +'DE_1' 15 15 65 65 1 15 'Y' / +'DE_1' 15 15 66 66 1 15 'X' / +'DE_1' 15 15 67 67 1 15 'X' / +'DE_1' 15 15 68 68 1 15 'X' / +'DE_1' 15 15 69 69 1 15 'X' / +'DE_1' 16 16 69 69 1 15 'Y' / + +'DE_1_LTo' 10 10 54 54 16 22 'X' / +'DE_1_LTo' 11 11 54 54 16 22 'Y' / +'DE_1_LTo' 11 11 55 55 16 22 'X' / +'DE_1_LTo' 11 11 56 56 16 22 'X' / +'DE_1_LTo' 12 12 56 56 16 22 'Y' / +'DE_1_LTo' 12 12 57 57 16 22 'X' / +'DE_1_LTo' 12 12 58 58 16 22 'X' / +'DE_1_LTo' 12 12 59 59 16 22 'X' / +'DE_1_LTo' 13 13 59 59 16 22 'Y' / +'DE_1_LTo' 13 13 60 60 16 22 'X' / +'DE_1_LTo' 13 13 61 61 16 22 'X' / +'DE_1_LTo' 13 13 62 62 16 22 'X' / +'DE_1_LTo' 14 14 62 62 16 22 'Y' / +'DE_1_LTo' 14 14 63 63 16 22 'X' / +'DE_1_LTo' 14 14 64 64 16 22 'X' / +'DE_1_LTo' 14 14 65 65 16 22 'X' / +'DE_1_LTo' 15 15 65 65 16 22 'Y' / +'DE_1_LTo' 15 15 66 66 16 22 'X' / +'DE_1_LTo' 15 15 67 67 16 22 'X' / +'DE_1_LTo' 15 15 68 68 16 22 'X' / +'DE_1_LTo' 15 15 69 69 16 22 'X' / +'DE_1_LTo' 16 16 69 69 16 22 'Y' / + +'DE_2' 16 16 70 70 1 22 'X' / +'DE_2' 16 16 71 71 1 22 'X' / +'DE_2' 16 16 72 72 1 22 'X' / +'DE_2' 16 16 73 73 1 22 'X' / +'DE_2' 16 16 74 74 1 22 'X' / +'DE_2' 16 16 75 75 1 22 'X' / +'DE_2' 16 16 76 76 1 22 'X' / +'DE_2' 16 16 77 77 1 22 'X' / +'DE_2' 16 16 78 78 1 22 'X' / +'DE_2' 16 16 79 79 1 22 'X' / +'DE_2' 16 16 80 80 1 22 'X' / +'DE_2' 16 16 81 81 1 22 'X' / +'DE_2' 16 16 82 82 1 22 'X' / +'DE_2' 16 16 83 83 1 22 'X' / +'DE_2' 16 16 84 84 1 22 'X' / +'DE_2' 16 16 85 85 1 22 'X' / +'DE_2' 16 16 86 86 1 22 'X' / +'DE_2' 16 16 87 87 1 22 'X' / +'DE_2' 16 16 88 88 1 22 'X' / +'DE_2' 16 16 89 89 1 22 'X' / +'DE_2' 16 16 90 90 1 22 'X' / +'DE_2' 16 16 91 91 1 22 'X' / +'DE_2' 16 16 92 92 1 22 'X' / +'DE_2' 16 16 93 93 1 22 'X' / +'DE_2' 16 16 94 94 1 22 'X' / +'DE_2' 16 16 95 95 1 22 'X' / +'DE_2' 16 16 96 96 1 22 'X' / +'DE_2' 16 16 97 97 1 22 'X' / +'DE_2' 16 16 98 98 1 22 'X' / +'DE_2' 16 16 99 99 1 22 'X' / +'DE_2' 16 16 100 100 1 22 'X' / + +'DI_S' 19 19 45 45 1 22 'X' / +'DI_S' 19 19 46 46 1 22 'X' / +'DI_S' 19 19 47 47 1 22 'X' / + +'DI' 19 19 48 48 1 22 'X' / +'DI' 19 19 49 49 1 22 'X' / +'DI' 19 19 50 50 1 22 'X' / +'DI' 19 19 51 51 1 22 'X' / +'DI' 19 19 52 52 1 22 'X' / +'DI' 19 19 53 53 1 22 'X' / +'DI' 19 19 54 54 1 22 'X' / +'DI' 19 19 55 55 1 22 'X' / +'DI' 19 19 56 56 1 22 'X' / +'DI' 19 19 57 57 1 22 'X' / +'DI' 19 19 58 58 1 22 'X' / +'DI' 19 19 59 59 1 22 'X' / +'DI' 19 19 60 60 1 22 'X' / +'DI' 19 19 61 61 1 22 'X' / +'DI' 19 19 62 62 1 22 'X' / +'DI' 19 19 63 63 1 22 'X' / +'DI' 19 19 64 64 1 22 'X' / +'DI' 19 19 65 65 1 22 'X' / +'DI' 19 19 66 66 1 22 'X' / +'DI' 19 19 67 67 1 22 'X' / +'DI' 19 19 68 68 1 22 'X' / +'DI' 19 19 69 69 1 22 'X' / +'DI' 19 19 70 70 1 22 'X' / +'DI' 19 19 71 71 1 22 'X' / +'DI' 19 19 72 72 1 22 'X' / +'DI' 19 19 73 73 1 22 'X' / +'DI' 19 19 74 74 1 22 'X' / +'DI' 19 19 75 75 1 22 'X' / +'DI' 19 19 76 76 1 22 'X' / +'DI' 19 19 77 77 1 22 'X' / +'DI' 19 19 78 78 1 22 'X' / +'DI' 19 19 79 79 1 22 'X' / +'DI' 19 19 80 80 1 22 'X' / +'DI' 19 19 81 81 1 22 'X' / +'DI' 19 19 82 82 1 22 'X' / +'DI' 19 19 83 83 1 22 'X' / +'DI' 19 19 84 84 1 22 'X' / +'DI' 19 19 85 85 1 22 'X' / +'DI' 19 19 86 86 1 22 'X' / +'DI' 19 19 87 87 1 22 'X' / +'DI' 19 19 88 88 1 22 'X' / + +-- simopt +'CD_0' 6 7 39 39 1 22 'Y' / + +'CD_B3' 7 7 39 39 1 22 'X' / +'CD_B3' 8 8 40 40 1 22 'Y' / +'CD_B3' 7 7 40 40 1 22 'X' / +'CD_B3' 9 9 41 41 1 22 'Y' / +'CD_B3' 8 8 41 41 1 22 'X' / +'CD_B3' 9 9 42 42 1 22 'X' / +'CD_B3' 10 10 43 43 1 22 'Y' / +'CD_B3' 9 9 43 43 1 22 'X' / +'CD_B3' 11 11 44 44 1 22 'Y' / +'CD_B3' 10 10 44 44 1 22 'X' / + +'CD' 12 12 45 45 1 11 'Y' / +'CD' 11 11 45 45 1 11 'X' / +'CD' 12 12 46 46 1 11 'X' / +'CD' 13 13 47 47 1 11 'Y' / +'CD' 12 12 47 47 1 11 'X' / +'CD' 14 14 48 48 1 11 'Y' / +'CD' 13 13 48 48 1 11 'X' / +'CD' 14 14 49 49 1 11 'X' / +'CD' 15 15 50 50 1 11 'Y' / +'CD' 14 14 50 50 1 11 'X' / +'CD' 16 16 51 51 1 11 'Y' / +'CD' 15 15 51 51 1 11 'X' / +'CD' 16 16 52 52 1 11 'X' / +'CD_To' 12 12 45 45 12 22 'Y' / +'CD_To' 11 11 45 45 12 22 'X' / +'CD_To' 12 12 46 46 12 22 'X' / +'CD_To' 13 13 47 47 12 22 'Y' / +'CD_To' 12 12 47 47 12 22 'X' / +'CD_To' 14 14 48 48 12 22 'Y' / +'CD_To' 13 13 48 48 12 22 'X' / +'CD_To' 14 14 49 49 12 22 'X' / +'CD_To' 15 15 50 50 12 22 'Y' / +'CD_To' 14 14 50 50 12 22 'X' / +'CD_To' 16 16 51 51 12 22 'Y' / +'CD_To' 15 15 51 51 12 22 'X' / +'CD_To' 16 16 52 52 12 22 'X' / +-- simopt +'CD_1' 16 16 53 53 1 22 'X' / +'CD_1' 17 17 53 53 1 22 'Y' / +'CD_1' 17 17 54 54 1 22 'X' / +'CD_1' 18 19 54 54 1 22 'Y' / + +'m_east' 29 29 2 2 1 22 'Y' / +'m_east' 29 29 3 3 1 22 'X' / +'m_east' 29 29 4 4 1 22 'X' / +'m_east' 29 29 5 5 1 22 'X' / +'m_east' 29 29 6 6 1 22 'X' / +'m_east' 29 29 7 7 1 22 'X' / +'m_east' 29 29 8 8 1 22 'X' / +'m_east' 29 29 9 9 1 22 'X' / +'m_east' 29 29 10 10 1 22 'X' / +'m_east' 29 29 11 11 1 22 'X' / +'m_east' 29 29 12 12 1 22 'X' / +'m_east' 29 29 13 13 1 22 'X' / +'m_east' 29 29 14 14 1 22 'X' / +'m_east' 29 29 15 15 1 22 'X' / +'m_east' 29 29 16 16 1 22 'X' / +'m_east' 29 29 17 17 1 22 'X' / +'m_east' 29 29 18 18 1 22 'X' / +'m_east' 29 29 19 19 1 22 'X' / +'m_east' 29 29 20 20 1 22 'X' / +'m_east' 29 29 21 21 1 22 'X' / +'m_east' 29 29 22 22 1 22 'X' / +'m_east' 29 29 23 23 1 22 'X' / +'m_east' 29 29 24 24 1 22 'X' / +'m_east' 29 29 25 25 1 22 'X' / +'m_east' 29 29 26 26 1 22 'X' / +'m_east' 29 29 27 27 1 22 'X' / +'m_east' 29 29 28 28 1 22 'X' / +'m_east' 29 29 29 29 1 22 'X' / +'m_east' 29 29 30 30 1 22 'X' / +'m_east' 29 29 31 31 1 22 'X' / +'m_east' 29 29 32 32 1 22 'X' / +'m_east' 29 29 33 33 1 22 'X' / +'m_east' 29 29 34 34 1 22 'X' / +'m_east' 29 29 35 35 1 22 'X' / +'m_east' 29 29 36 36 1 22 'X' / +'m_east' 29 29 37 37 1 22 'X' / +'m_east' 29 29 38 38 1 22 'X' / +'m_east' 29 29 39 39 1 22 'X' / +'m_east' 29 29 40 40 1 22 'X' / +'m_east' 29 29 41 41 1 22 'X' / +'m_east' 29 29 42 42 1 22 'X' / +'m_east' 29 29 43 43 1 22 'X' / +'m_east' 29 29 44 44 1 22 'X' / +'m_east' 29 29 45 45 1 22 'X' / +'m_east' 29 29 46 46 1 22 'X' / +'m_east' 29 29 47 47 1 22 'X' / +'m_east' 29 29 48 48 1 22 'X' / +'m_east' 29 29 49 49 1 22 'X' / +'m_east' 30 30 49 49 1 22 'Y' / +'m_east' 30 30 50 50 1 22 'X' / +'m_east' 30 30 51 51 1 22 'X' / +'m_east' 31 31 51 51 1 22 'Y' / +'m_east' 31 31 52 52 1 22 'X' / +'m_east' 32 32 52 52 1 22 'Y' / +'m_east' 32 32 53 53 1 22 'X' / +'m_east' 33 33 53 53 1 22 'Y' / +'m_east' 33 33 54 54 1 22 'X' / +'m_east' 33 33 55 55 1 22 'X' / +'m_east' 34 34 55 55 1 22 'Y' / +'m_east' 34 34 56 56 1 22 'X' / +'m_east' 34 34 57 57 1 22 'X' / +'m_east' 35 35 57 57 1 22 'Y' / +'m_east' 35 35 58 58 1 22 'X' / +'m_east' 36 36 58 58 1 22 'Y' / +'m_east' 36 36 59 59 1 22 'X' / +'m_east' 37 37 59 59 1 22 'Y' / +'m_east' 37 37 60 60 1 22 'X' / +'m_east' 38 38 60 60 1 22 'Y' / +'m_east' 38 38 61 61 1 22 'X' / +'m_east' 38 38 62 62 1 22 'X' / +'m_east' 39 39 62 62 1 22 'Y' / +'m_east' 39 39 63 63 1 22 'X' / +'m_east' 40 40 63 63 1 22 'Y' / +'m_east' 40 40 64 64 1 22 'X' / +'m_east' 41 41 64 64 1 22 'Y' / +'m_east' 41 41 65 65 1 22 'X' / +'m_east' 41 41 66 66 1 22 'X' / +'m_east' 41 41 67 67 1 22 'X' / +'m_east' 41 41 68 68 1 22 'X' / +'m_east' 41 41 69 69 1 22 'X' / +'m_east' 41 41 70 70 1 22 'X' / +'m_east' 41 41 71 71 1 22 'X' / +'m_east' 41 41 72 72 1 22 'X' / +'m_east' 41 41 73 73 1 22 'X' / +'m_east' 41 41 74 74 1 22 'X' / +'m_east' 41 41 75 75 1 22 'X' / +'m_east' 41 41 76 76 1 22 'X' / +'m_east' 41 41 77 77 1 22 'X' / +'m_east' 41 41 78 78 1 22 'X' / +'m_east' 41 41 79 79 1 22 'X' / +'m_east' 41 41 80 80 1 22 'X' / +'m_east' 41 41 81 81 1 22 'X' / +'m_east' 41 41 82 82 1 22 'X' / +'m_east' 41 41 83 83 1 22 'X' / +'m_east' 41 41 84 84 1 22 'X' / +'m_east' 41 41 85 85 1 22 'X' / +'m_east' 41 41 86 86 1 22 'X' / +'m_east' 41 41 87 87 1 22 'X' / +'m_east' 41 41 88 88 1 22 'X' / +'m_east' 41 41 89 89 1 22 'X' / +'m_east' 41 41 90 90 1 22 'X' / +'m_east' 41 41 91 91 1 22 'X' / +'m_east' 41 41 92 92 1 22 'X' / +'m_east' 41 41 93 93 1 22 'X' / +'m_east' 41 41 94 94 1 22 'X' / +'m_east' 41 41 95 95 1 22 'X' / +'m_east' 41 41 96 96 1 22 'X' / +'m_east' 41 41 97 97 1 22 'X' / +'m_east' 41 41 98 98 1 22 'X' / +'m_east' 41 41 99 99 1 22 'X' / +'m_east' 41 41 100 100 1 22 'X' / +'m_east' 41 41 101 101 1 22 'X' / +'m_east' 41 41 102 102 1 22 'X' / +'m_east' 41 41 103 103 1 22 'X' / +'m_east' 41 41 104 104 1 22 'X' / + +'B2' 23 23 6 6 1 22 'Y' / +'B2' 24 24 6 6 1 22 'Y' / +'B2' 25 25 6 6 1 22 'Y' / +'B2' 26 26 6 6 1 22 'Y' / +'B2' 27 27 6 6 1 22 'Y' / +'B2' 28 28 6 6 1 22 'Y' / +'B2' 29 29 6 6 1 22 'Y' / +'B2' 19 19 7 7 1 22 'Y' / +'B2' 20 20 7 7 1 22 'Y' / +'B2' 21 21 7 7 1 22 'Y' / +'B2' 22 22 7 7 1 22 'Y' / +'B2' 22 22 7 7 1 22 'X' / + +'D_05' 18 18 56 56 1 22 'X' / +'D_05' 18 18 57 57 1 22 'X' / +'D_05' 18 18 58 58 1 22 'X' / +'D_05' 18 18 59 59 1 22 'X' / +'D_05' 18 18 60 60 1 22 'X' / +'D_05' 18 18 61 61 1 22 'X' / +'D_05' 18 18 62 62 1 22 'X' / +'D_05' 18 18 63 63 1 22 'X' / +'D_05' 18 18 64 64 1 22 'X' / +'D_05' 18 18 64 64 1 22 'Y' / +'D_05' 17 17 65 65 1 22 'X' / + +'IH' 29 29 71 71 1 22 'Y' / +'IH' 28 28 72 72 1 22 'X' / +'IH' 28 28 73 73 1 22 'X' / +'IH' 28 28 73 73 1 22 'Y' / +'IH' 27 27 74 74 1 22 'X' / +'IH' 27 27 75 75 1 22 'X' / +'IH' 27 27 76 76 1 22 'X' / +'IH' 27 27 76 76 1 22 'Y' / +'IH' 26 26 77 77 1 22 'X' / +'IH' 26 26 78 78 1 22 'X' / +'IH' 26 26 79 79 1 22 'X' / +'IH' 26 26 80 80 1 22 'X' / +'IH' 26 26 81 81 1 22 'X' / +'IH' 26 26 82 82 1 22 'X' / +'IH' 26 26 83 83 1 22 'X' / +'IH' 26 26 83 83 1 22 'Y' / +'IH' 25 25 84 84 1 22 'X' / +'IH' 25 25 85 85 1 22 'X' / +'IH' 25 25 86 86 1 22 'X' / +'IH' 25 25 86 86 1 22 'Y' / +'IH' 24 24 87 87 1 22 'X' / +'IH' 24 24 88 88 1 22 'X' / +'IH' 24 24 89 89 1 22 'X' / +'IH' 24 24 90 90 1 22 'X' / +'IH' 24 24 91 91 1 22 'X' / +'IH' 24 24 92 92 1 22 'X' / +'IH' 24 24 93 93 1 22 'X' / +'IH' 24 24 94 94 1 22 'X' / +'IH' 24 24 95 95 1 22 'X' / +'IH' 24 24 96 96 1 22 'X' / +'IH' 24 24 97 97 1 22 'X' / +'IH' 24 24 98 98 1 22 'X' / +'IH' 24 24 99 99 1 22 'X' / +'IH' 24 24 100 100 1 22 'X' / +'IH' 24 24 101 101 1 22 'X' / + +'GH' 29 29 54 54 1 22 'Y' / +'GH' 28 28 54 54 1 22 'X' / +'GH' 29 29 55 55 1 22 'X' / +'GH' 29 29 56 56 1 22 'X' / +'GH' 29 29 57 57 1 22 'X' / +'GH' 29 29 58 58 1 22 'X' / +'GH' 29 29 59 59 1 22 'X' / +'GH' 29 29 60 60 1 22 'X' / +'GH' 29 29 61 61 1 22 'X' / +'GH' 29 29 62 62 1 22 'X' / +'GH' 29 29 63 63 1 22 'X' / +'GH' 29 29 64 64 1 22 'X' / +'GH' 29 29 65 65 1 22 'X' / +'GH' 29 29 66 66 1 22 'X' / +'GH' 29 29 67 67 1 22 'X' / +'GH' 29 29 68 68 1 22 'X' / +'GH' 29 29 69 69 1 22 'X' / +'GH' 29 29 70 70 1 22 'X' / +'GH' 29 29 71 71 1 22 'X' / +'GH' 29 29 72 72 1 22 'X' / +'GH' 29 29 73 73 1 22 'X' / +'GH' 29 29 74 74 1 22 'X' / +'GH' 29 29 75 75 1 22 'X' / +'GH' 29 29 76 76 1 22 'X' / +'GH' 29 29 77 77 1 22 'X' / +'GH' 29 29 78 78 1 22 'X' / +'GH' 29 29 79 79 1 22 'X' / +'GH' 29 29 80 80 1 22 'X' / +'GH' 29 29 81 81 1 22 'X' / +'GH' 29 29 82 82 1 22 'X' / +'GH' 29 29 83 83 1 22 'X' / +'GH' 29 29 84 84 1 22 'X' / +'GH' 29 29 85 85 1 22 'X' / +'GH' 29 29 86 86 1 22 'X' / +'GH' 29 29 87 87 1 22 'X' / +'GH' 29 29 88 88 1 22 'X' / +'GH' 29 29 89 89 1 22 'X' / +'GH' 29 29 90 90 1 22 'X' / +'GH' 29 29 91 91 1 22 'X' / +'GH' 29 29 92 92 1 22 'X' / +'GH' 30 30 93 93 1 22 'Y' / +'GH' 29 29 93 93 1 22 'X' / +'GH' 30 30 94 94 1 22 'X' / +'GH' 31 31 95 95 1 22 'Y' / +'GH' 30 30 95 95 1 22 'X' / +'GH' 32 32 95 95 1 22 'Y' / +'GH' 33 33 96 96 1 22 'Y' / +'GH' 32 32 96 96 1 22 'X' / +'GH' 34 34 97 97 1 22 'Y' / +'GH' 33 33 97 97 1 22 'X' / +'GH' 35 35 98 98 1 22 'Y' / +'GH' 34 34 98 98 1 22 'X' / +'GH' 36 36 99 99 1 22 'Y' / +'GH' 35 35 99 99 1 22 'X' / +'GH' 37 37 99 99 1 22 'Y' / +'GH' 38 38 100 100 1 22 'Y' / +'GH' 37 37 100 100 1 22 'X' / +'GH' 38 38 101 101 1 22 'X' / +'GH' 38 38 102 102 1 22 'X' / +'GH' 38 38 103 103 1 22 'X' / +'GH' 38 38 103 103 1 22 'Y' / + +'C_01' 27 27 14 14 1 22 'X' / +'C_01' 27 27 15 15 1 22 'X' / +'C_01' 27 27 16 16 1 22 'X' / +'C_01' 27 27 17 17 1 22 'X' / +'C_01' 27 27 18 18 1 22 'X' / +'C_01' 27 27 19 19 1 22 'X' / +'C_01' 27 27 20 20 1 22 'X' / +'C_01' 27 27 21 21 1 22 'X' / +'C_01' 27 27 22 22 1 22 'X' / +'C_01' 27 27 23 23 1 22 'X' / +'C_01' 27 27 24 24 1 22 'X' / +'C_01' 27 27 25 25 1 22 'X' / +'C_01' 27 27 26 26 1 22 'X' / +'C_01' 27 27 27 27 1 22 'X' / +'C_01' 27 27 28 28 1 22 'X' / +'C_01' 27 27 29 29 1 22 'X' / +'C_01' 27 27 30 30 1 22 'X' / +'C_01' 27 27 31 31 1 22 'X' / +'C_01' 27 27 32 32 1 22 'X' / +'C_01' 27 27 33 33 1 22 'X' / +'C_01' 27 27 34 34 1 22 'X' / +'C_01' 27 27 35 35 1 22 'X' / +'C_01' 27 27 36 36 1 22 'X' / +'C_01' 27 27 37 37 1 22 'X' / +'C_01' 27 27 38 38 1 22 'X' / +'C_01' 27 27 39 39 1 22 'X' / +'C_01' 27 27 40 40 1 22 'X' / +'C_01' 27 27 41 41 1 22 'X' / +'C_01' 27 27 42 42 1 22 'X' / +'C_01' 27 27 43 43 1 18 'X' / +'C_01' 27 27 44 44 1 18 'X' / +'C_01' 27 27 45 45 1 18 'X' / +'C_01' 27 27 46 46 1 18 'X' / +'C_01' 27 27 47 47 1 18 'X' / +'C_01' 27 27 48 48 1 18 'X' / + +'C_01_Ti' 27 27 43 43 19 22 'X' / +'C_01_Ti' 27 27 44 44 19 22 'X' / +'C_01_Ti' 27 27 45 45 19 22 'X' / +'C_01_Ti' 27 27 46 46 19 22 'X' / +'C_01_Ti' 27 27 47 47 19 22 'X' / +'C_01_Ti' 27 27 48 48 19 22 'X' / + +'m_northe' 43 43 105 105 1 22 'Y' / +'m_northe' 39 39 106 106 1 22 'Y' / +'m_northe' 40 40 106 106 1 22 'Y' / +'m_northe' 41 41 106 106 1 22 'Y' / +'m_northe' 42 42 106 106 1 22 'Y' / +'m_northe' 42 42 106 106 1 22 'X' / +'m_northe' 34 34 107 107 1 22 'Y' / +'m_northe' 35 35 107 107 1 22 'Y' / +'m_northe' 36 36 107 107 1 22 'Y' / +'m_northe' 37 37 107 107 1 22 'Y' / +'m_northe' 38 38 107 107 1 22 'Y' / +'m_northe' 38 38 107 107 1 22 'X' / +'m_northe' 33 33 108 108 1 22 'Y' / +'m_northe' 33 33 108 108 1 22 'X' / + +'m_east_2' 44 44 100 100 1 22 'Y' / +'m_east_2' 44 44 100 100 1 22 'X' / +'m_east_2' 43 43 101 101 1 22 'X' / +'m_east_2' 43 43 102 102 1 22 'X' / +'m_east_2' 43 43 103 103 1 22 'X' / +'m_east_2' 43 43 104 104 1 22 'X' / +'m_east_2' 43 43 105 105 1 22 'X' / + +'C_02' 7 7 19 19 1 22 'X' / +'C_02' 7 7 20 20 1 22 'X' / +'C_02' 7 7 20 20 1 22 'Y' / +'C_02' 6 6 21 21 1 22 'X' / +'C_02' 6 6 22 22 1 22 'X' / + +'C_04' 24 24 26 26 1 22 'X' / +'C_04' 24 24 27 27 1 22 'X' / +'C_04' 24 24 28 28 1 22 'X' / +'C_04' 25 25 28 28 1 22 'Y' / +'C_04' 25 25 29 29 1 22 'X' / +'C_04' 25 25 30 30 1 22 'X' / +'C_04' 25 25 31 31 1 22 'X' / +'C_04' 25 25 32 32 1 22 'X' / +'C_04' 25 25 33 33 1 22 'X' / +'C_04' 25 25 34 34 1 22 'X' / +'C_04' 25 25 35 35 1 22 'Y' / +'C_04' 25 25 35 35 1 22 'X' / + +'C_05' 13 13 42 42 1 22 'X' / +'C_05' 14 14 43 43 1 22 'Y' / +'C_05' 13 13 43 43 1 22 'X' / +'C_05' 14 14 44 44 1 22 'X' / + +'C_06' 17 17 48 48 1 22 'X' / +'C_06' 17 17 49 49 1 22 'X' / +'C_06' 18 18 50 50 1 22 'Y' / +'C_06' 17 17 50 50 1 22 'X' / +'C_06' 18 18 51 51 1 22 'X' / +'C_06' 18 18 52 52 1 22 'X' / +'C_06' 18 18 52 52 1 22 'X' / +'C_06' 19 19 52 52 1 22 'Y' / -- utvidelse for simopt + +'C_09' 22 22 49 49 1 22 'Y' / +'C_09' 22 22 50 50 1 22 'X' / +'C_09' 22 22 51 51 1 22 'X' / +'C_09' 22 22 52 52 1 22 'X' / +'C_09' 23 23 53 53 1 22 'Y' / +'C_09' 22 22 53 53 1 22 'X' / +'C_09' 23 23 54 54 1 22 'X' / +'C_09' 23 23 55 55 1 22 'X' / +'C_09' 23 23 56 56 1 22 'X' / +'C_09' 24 24 57 57 1 22 'Y' / +'C_09' 23 23 57 57 1 22 'X' / +'C_09' 24 24 58 58 1 22 'X' / +'C_09' 25 25 59 59 1 22 'Y' / +'C_09' 24 24 59 59 1 22 'X' / +'C_09' 25 25 60 60 1 22 'X' / +'C_09' 25 25 61 61 1 22 'X' / +'C_09' 25 25 62 62 1 22 'X' / +'C_09' 25 25 63 63 1 22 'X' / +'C_09' 25 25 64 64 1 22 'X' / +'C_09' 25 25 65 65 1 22 'X' / +'C_09' 25 25 66 66 1 22 'X' / +'C_09' 25 25 67 67 1 22 'X' / +'C_09' 25 25 68 68 1 22 'X' / + +'C_10' 12 12 21 21 1 22 'Y' / +'C_10' 11 11 22 22 1 22 'X' / +'C_10' 13 13 21 21 1 22 'Y' / +'C_10' 14 14 21 21 1 22 'Y' / +'C_10' 15 15 21 21 1 22 'Y' / +'C_10' 16 16 21 21 1 22 'Y' / +'C_10' 17 17 21 21 1 22 'Y' / +'C_10' 18 18 21 21 1 22 'Y' / +'C_10' 7 7 22 22 1 22 'Y' / +'C_10' 8 8 22 22 1 22 'Y' / +'C_10' 9 9 22 22 1 22 'Y' / +'C_10' 10 10 22 22 1 22 'Y' / +'C_10' 11 11 22 22 1 22 'Y' / + +'C_12' 26 26 52 52 1 22 'X' / +'C_12' 26 26 53 53 1 22 'X' / +'C_12' 26 26 54 54 1 22 'X' / +'C_12' 26 26 55 55 1 22 'X' / +'C_12' 26 26 56 56 1 22 'X' / +'C_12' 26 26 57 57 1 22 'X' / + +'C_21' 13 13 13 13 1 17 'X' / +'C_21' 13 13 14 14 1 17 'X' / +'C_21' 13 13 15 15 1 17 'X' / +'C_21' 13 13 16 16 1 17 'X' / +'C_21' 13 13 17 17 1 17 'Y' / +'C_21' 13 13 17 17 1 17 'X' / +'C_21' 12 12 18 18 1 17 'X' / +'C_21' 12 12 19 19 1 17 'X' / +'C_21' 12 12 20 20 1 17 'X' / +'C_21' 12 12 21 21 1 17 'X' / +'C_21' 12 12 22 22 1 17 'X' / +'C_21' 12 12 23 23 1 17 'X' / +'C_21' 12 12 24 24 1 17 'X' / + +'C_21_Ti' 13 13 13 13 18 22 'X' / +'C_21_Ti' 13 13 14 14 18 22 'X' / +'C_21_Ti' 13 13 15 15 18 22 'X' / +'C_21_Ti' 13 13 16 16 18 22 'X' / +'C_21_Ti' 13 13 17 17 18 22 'Y' / +'C_21_Ti' 13 13 17 17 18 22 'X' / +'C_21_Ti' 12 12 18 18 18 22 'X' / +'C_21_Ti' 12 12 19 19 18 22 'X' / +'C_21_Ti' 12 12 20 20 18 22 'X' / +'C_21_Ti' 12 12 21 21 18 22 'X' / +'C_21_Ti' 12 12 22 22 18 22 'X' / +'C_21_Ti' 12 12 23 23 18 22 'X' / +'C_21_Ti' 12 12 24 24 18 22 'X' / + +'C_22' 14 14 15 15 1 22 'X' / +'C_22' 14 14 16 16 1 22 'X' / +'C_22' 14 14 16 16 1 22 'Y' / +'C_22' 13 13 17 17 1 22 'X' / +'C_22' 13 13 18 18 1 22 'X' / + +'C_23' 20 20 20 20 1 22 'Y' / +'C_23' 21 21 20 20 1 22 'Y' / +'C_23' 22 22 20 20 1 22 'Y' / + +'C_24' 18 18 26 26 1 22 'Y' / +'C_24' 17 17 27 27 1 22 'X' / + +'C_25' 22 22 25 25 1 22 'X' / +'C_25' 22 22 25 25 1 22 'Y' / +'C_25' 21 21 26 26 1 22 'X' / +'C_25' 21 21 27 27 1 22 'X' / +'C_25' 21 21 28 28 1 22 'X' / +'C_25' 21 21 29 29 1 22 'X' / +'C_25' 21 21 30 30 1 22 'X' / + +'C_26' 9 9 28 28 1 22 'X' / +'C_26' 9 9 29 29 1 22 'X' / +'C_26' 9 9 30 30 1 22 'X' / +'C_26' 9 9 31 31 1 22 'X' / +'C_26' 9 9 32 32 1 22 'Y' / +'C_26' 9 9 32 32 1 22 'X' / +'C_26' 8 8 33 33 1 22 'X' / +'C_26' 8 8 34 34 1 22 'X' / +'C_26' 8 8 35 35 1 22 'X' / +'C_26' 8 8 36 36 1 22 'Y' / +'C_26' 8 8 36 36 1 22 'X' / + +'C_26N' 7 7 37 37 1 22 'X' / +'C_26N' 7 7 38 38 1 22 'X' / +'C_26N' 7 7 39 39 1 22 'X' / +'C_26N' 7 7 40 40 1 22 'X' / +'C_26N' 7 7 41 41 1 22 'X' / +'C_26N' 7 7 42 42 1 22 'X' / +'C_26N' 7 7 43 43 1 22 'X' / +'C_26N' 8 8 43 43 1 22 'Y' / +'C_26N' 8 8 44 44 1 22 'X' / + +'C_27' 10 10 30 30 1 22 'Y' / +'C_27' 10 10 31 31 1 22 'X' / +'C_27' 10 10 32 32 1 22 'X' / +'C_27' 10 10 33 33 1 22 'X' / +'C_27' 10 10 34 34 1 22 'X' / +'C_27' 10 10 35 35 1 22 'X' / +'C_27' 10 10 36 36 1 22 'X' / +'C_27' 10 10 37 37 1 22 'X' / +'C_27' 10 10 38 38 1 22 'X' / + +'C_28' 16 16 39 39 1 22 'Y' / +'C_28' 16 16 39 39 1 22 'X' / +'C_28' 15 15 40 40 1 22 'X' / + +'C_29' 15 15 44 44 1 22 'X' / +'C_29' 15 15 45 45 1 22 'X' / +'C_29' 16 16 46 46 1 22 'Y' / +'C_29' 15 15 46 46 1 22 'X' / +'C_29' 16 16 47 47 1 22 'X' / + +'C_08_S' 25 25 41 41 1 19 'X' / +'C_08_S' 25 25 42 42 1 19 'X' / +'C_08_S' 25 25 43 43 1 19 'X' / +'C_08_S' 25 25 44 44 1 19 'X' / +'C_08_S' 25 25 45 45 1 19 'X' / + +'C_08' 25 25 46 46 11 19 'X' / +'C_08' 25 25 47 47 11 19 'X' / +'C_08' 25 25 48 48 11 19 'X' / +'C_08' 25 25 49 49 11 19 'X' / +'C_08' 25 25 50 50 11 19 'X' / +'C_08' 25 25 51 51 11 19 'X' / +'C_08' 25 25 52 52 11 19 'X' / + +'C_08_Ile' 25 25 46 46 1 10 'X' / +'C_08_Ile' 25 25 47 47 1 10 'X' / +'C_08_Ile' 25 25 48 48 1 10 'X' / +'C_08_Ile' 25 25 49 49 1 10 'X' / +'C_08_Ile' 25 25 50 50 1 10 'X' / +'C_08_Ile' 25 25 51 51 1 10 'X' / +'C_08_Ile' 25 25 52 52 1 10 'X' / + + +'C_08_S_Ti' 25 25 41 41 20 22 'X' / +'C_08_S_Ti' 25 25 42 42 20 22 'X' / +'C_08_S_Ti' 25 25 43 43 20 22 'X' / +'C_08_S_Ti' 25 25 44 44 20 22 'X' / +'C_08_S_Ti' 25 25 45 45 20 22 'X' / + +'C_08_Ti' 25 25 46 46 20 22 'X' / +'C_08_Ti' 25 25 47 47 20 22 'X' / +'C_08_Ti' 25 25 48 48 20 22 'X' / +'C_08_Ti' 25 25 49 49 20 22 'X' / +'C_08_Ti' 25 25 50 50 20 22 'X' / +'C_08_Ti' 25 25 51 51 20 22 'X' / +'C_08_Ti' 25 25 52 52 20 22 'X' / + +'C_20' 24 24 36 36 1 15 'Y' / +'C_20' 23 23 37 37 1 15 'X' / +'C_20' 23 23 38 38 1 15 'X' / +'C_20' 23 23 38 38 1 15 'Y' / +'C_20' 22 22 39 39 1 15 'X' / + +'C_20_LTo' 24 24 36 36 16 22 'Y' / +'C_20_LTo' 23 23 37 37 16 22 'X' / +'C_20_LTo' 23 23 38 38 16 22 'X' / +'C_20_LTo' 23 23 38 38 16 22 'Y' / +'C_20_LTo' 22 22 39 39 16 22 'X' / + +--'E_01_2' 7 7 54 54 1 22 'X' / +--'E_01_2' 7 7 55 55 1 22 'X' / +--'E_01_2' 8 8 56 56 1 22 'Y' / +--'E_01_2' 7 7 56 56 1 22 'X' / +'E_01_F3' 8 8 57 57 1 22 'X' / +'E_01_F3' 8 8 58 58 1 22 'X' / +'E_01_F3' 8 8 59 59 1 22 'X' / +'E_01_F3' 8 8 60 60 1 22 'X' / +'E_01_F3' 9 9 61 61 1 22 'Y' / +'E_01_F3' 8 8 61 61 1 22 'X' / + +'E_01' 9 9 62 62 1 22 'X' / +'E_01' 9 9 63 63 1 22 'X' / + +'E_01' 9 9 64 64 1 22 'X' / +'E_01' 9 9 65 65 1 22 'X' / +'E_01' 10 10 66 66 1 22 'Y' / +'E_01' 9 9 66 66 1 22 'X' / +'E_01' 10 10 67 67 1 22 'X' / +'E_01' 10 10 68 68 1 22 'X' / +'E_01' 10 10 69 69 1 22 'X' / +'E_01' 11 11 70 70 1 22 'Y' / +'E_01' 10 10 70 70 1 22 'X' / +'E_01' 11 11 71 71 1 22 'X' / +'E_01' 11 11 72 72 1 22 'X' / +'E_01' 12 12 73 73 1 22 'Y' / +'E_01' 11 11 73 73 1 22 'X' / + +'E_01' 12 12 74 74 1 22 'X' / +'E_01' 12 12 75 75 1 22 'X' / +'E_01' 12 12 76 76 1 22 'X' / +'E_01' 13 13 77 77 1 22 'Y' / +'E_01' 12 12 77 77 1 22 'X' / +'E_01' 13 13 78 78 1 22 'X' / +'E_01' 13 13 79 79 1 22 'X' / +'E_01' 14 14 80 80 1 22 'Y' / +'E_01' 13 13 80 80 1 22 'X' / +'E_01' 14 14 81 81 1 22 'X' / + +-- simopt +'E_01' 15 16 81 81 1 22 'Y' / + +'G_01' 33 33 72 72 1 22 'Y' / +'G_01' 32 32 72 72 1 22 'X' / +'G_01' 33 33 73 73 1 22 'X' / +'G_01' 33 33 74 74 1 22 'X' / +'G_01' 33 33 75 75 1 22 'X' / +'G_01' 33 33 76 76 1 22 'X' / +'G_01' 33 33 77 77 1 22 'X' / +'G_01' 33 33 78 78 1 22 'X' / +'G_01' 33 33 79 79 1 22 'X' / +'G_01' 33 33 80 80 1 22 'X' / +'G_01' 33 33 81 81 1 22 'X' / +'G_01' 33 33 81 81 1 22 'Y' / +'G_01' 32 32 82 82 1 22 'X' / +'G_01' 32 32 83 83 1 22 'X' / +'G_01' 32 32 84 84 1 22 'X' / +'G_01' 32 32 84 84 1 22 'Y' / +'G_01' 31 31 85 85 1 22 'X' / +'G_01' 31 31 85 85 1 22 'Y' / +'G_01' 30 30 86 86 1 22 'X' / + +'G_02' 35 35 73 73 1 22 'X' / +'G_02' 36 36 74 74 1 22 'Y' / +'G_02' 35 35 74 74 1 22 'X' / +'G_02' 36 36 75 75 1 22 'X' / + +'G_03' 34 34 70 70 1 22 'Y' / +'G_03' 35 35 70 70 1 22 'Y' / +'G_03' 36 36 70 70 1 22 'Y' / +'G_03' 37 37 70 70 1 22 'Y' / + +'G_05' 34 34 62 62 1 22 'Y' / +'G_05' 35 35 62 62 1 22 'Y' / +'G_05' 35 35 62 62 1 22 'X' / +'G_05' 33 33 63 63 1 22 'Y' / +'G_05' 33 33 63 63 1 22 'X' / +'G_05' 32 32 64 64 1 22 'Y' / +'G_05' 32 32 64 64 1 22 'X' / +'G_05' 31 31 65 65 1 22 'X' / + +'G_07' 37 37 80 80 1 22 'Y' / +'G_07' 36 36 81 81 1 22 'X' / +'G_07' 36 36 82 82 1 22 'X' / +'G_07' 36 36 83 83 1 22 'X' / +'G_07' 36 36 84 84 1 22 'X' / +'G_07' 36 36 84 84 1 22 'Y' / +'G_07' 35 35 85 85 1 22 'X' / +'G_07' 35 35 85 85 1 22 'Y' / +'G_07' 34 34 86 86 1 22 'X' / +'G_07' 34 34 86 86 1 22 'Y' / +'G_07' 33 33 87 87 1 22 'X' / +'G_07' 33 33 87 87 1 22 'Y' / +'G_07' 32 32 88 88 1 22 'X' / +'G_07' 32 32 88 88 1 22 'Y' / +'G_07' 31 31 89 89 1 22 'X' / +'G_07' 31 31 90 90 1 22 'X' / +'G_07' 31 31 91 91 1 22 'X' / +'G_07' 31 31 92 92 1 22 'X' / + +'G_08' 34 34 105 105 1 22 'X' / +'G_08' 34 34 106 106 1 22 'X' / +'G_08' 34 34 107 107 1 22 'X' / + +'G_09' 36 36 67 67 1 22 'Y' / +'G_09' 35 35 68 68 1 22 'X' / +'G_09' 37 37 67 67 1 22 'Y' / +'G_09' 34 34 68 68 1 22 'Y' / +'G_09' 33 33 69 69 1 22 'X' / +'G_09' 35 35 68 68 1 22 'Y' / +'G_09' 32 32 69 69 1 22 'Y' / +'G_09' 31 31 70 70 1 22 'X' / +'G_09' 33 33 69 69 1 22 'Y' / +'G_09' 31 31 70 70 1 22 'Y' / + +'G_13' 36 36 65 65 1 22 'X' / +'G_13' 37 37 65 65 1 22 'Y' / +'G_13' 38 38 65 65 1 22 'Y' / +'G_13' 38 38 66 66 1 22 'X' / +'G_13' 38 38 67 67 1 22 'X' / +'G_13' 39 39 67 67 1 22 'Y' / +'G_13' 39 39 68 68 1 22 'X' / +'G_13' 40 40 68 68 1 22 'Y' / +'G_13' 40 40 69 69 1 22 'X' / + +'H_03' 21 21 96 96 1 22 'X' / +'H_03' 21 21 97 97 1 22 'X' / +'H_03' 22 22 97 97 1 22 'Y' / +'H_03' 22 22 98 98 1 22 'X' / +'H_03' 22 22 99 99 1 22 'X' / +'H_03' 22 22 100 100 1 22 'X' / +'H_03' 23 23 100 100 1 22 'Y' / +'H_03' 23 23 101 101 1 22 'X' / +'H_03' 23 23 102 102 1 22 'X' / +'H_03' 24 24 102 102 1 22 'Y' / + +/ +-- MFSEGS should be set to at least 891 +-- in the FAULTDIM keyword in RUNSPEC section diff --git a/ApplicationCode/UnitTests/TestData/ParsingOfDataKeywords/include/solution/equilibiration.inc b/ApplicationCode/UnitTests/TestData/ParsingOfDataKeywords/include/solution/equilibiration.inc new file mode 100644 index 0000000000..206a2df308 --- /dev/null +++ b/ApplicationCode/UnitTests/TestData/ParsingOfDataKeywords/include/solution/equilibiration.inc @@ -0,0 +1,13 @@ +EQUIL +-- Datum P-datum WOC Pcwoc GOC Pcgoc RSVD RSVD + 1950 634.8 1940 0.00 3904 0.00 1 1 / asdf + 1950 634.8 1944 0.00 3904 0.00 2 2 / asdf + 1950 634.8 1898.5 0.00 3898.5 0.00 3 3 / sdfsdfsdf + 1950 634 2020 0.00 4020 0.00 4 4 / ssss + 1821.94 629.35 1883 0.00 3000 0.00 5 5 20/ sdfsdf + 1821.94 629.35 1877 0.00 3000 0.00 6 6 / abab + 1950 634.8 1944 0.00 3650 0.00 7 7 / aaa + 1950 634.8 1944 0.00 3650 0.00 8 8 / bbb + 1950 634.8 1820.5 0.00 3811 0.00 9 9 / ddd + 1950 634.8 1892 0.00 3821 0.00 10 10 / sdf +-- 1950 634.8 1913 0.00 3871 0.00 11 11 / sdf diff --git a/ApplicationCode/UnitTests/TestData/ParsingOfDataKeywords/simulation/MY_CASE.DATA b/ApplicationCode/UnitTests/TestData/ParsingOfDataKeywords/simulation/MY_CASE.DATA new file mode 100644 index 0000000000..f6fdc5e427 --- /dev/null +++ b/ApplicationCode/UnitTests/TestData/ParsingOfDataKeywords/simulation/MY_CASE.DATA @@ -0,0 +1,6 @@ +INCLUDE + '../include/solution/equilibiration.inc' / + + INCLUDE +'../include/grid/FAULT_JUN_05.INC'/ +