| 95 | |
| 96 | |
| 97 | const HashTable<dimensionedScalar>& unitSet() |
| 98 | { |
| 99 | if (!unitSetPtr_) |
| 100 | { |
| 101 | const dictionary& dict = dimensionSystems(); |
| 102 | |
| 103 | if (!dict.found("unitSet")) |
| 104 | { |
| 105 | FatalIOErrorInFunction(dict) |
| 106 | << "Cannot find unitSet in dictionary " << dict.name() |
| 107 | << exit(FatalIOError); |
| 108 | } |
| 109 | |
| 110 | const word unitSetCoeffs(word(dict.lookup("unitSet")) + "Coeffs"); |
| 111 | |
| 112 | if (!dict.found(unitSetCoeffs)) |
| 113 | { |
| 114 | FatalIOErrorInFunction(dict) |
| 115 | << "Cannot find " << unitSetCoeffs << " in dictionary " |
| 116 | << dict.name() << exit(FatalIOError); |
| 117 | } |
| 118 | |
| 119 | const dictionary& unitDict = dict.subDict(unitSetCoeffs); |
| 120 | |
| 121 | unitSetPtr_ = new HashTable<dimensionedScalar>(unitDict.size()); |
| 122 | |
| 123 | forAllConstIter(dictionary, unitDict, iter) |
| 124 | { |
| 125 | if (iter().keyword() != "writeUnits") |
| 126 | { |
| 127 | dimensionedScalar dt; |
| 128 | dt.read(iter().stream(), unitDict); |
| 129 | bool ok = unitSetPtr_->insert(iter().keyword(), dt); |
| 130 | if (!ok) |
| 131 | { |
| 132 | FatalIOErrorInFunction(dict) |
| 133 | << "Duplicate unit " << iter().keyword() |
| 134 | << " in DimensionSets dictionary" |
| 135 | << exit(FatalIOError); |
| 136 | } |
| 137 | } |
| 138 | } |
| 139 | |
| 140 | wordList writeUnitNames |
| 141 | ( |
| 142 | unitDict.lookupOrDefault<wordList> |
| 143 | ( |
| 144 | "writeUnits", |
| 145 | wordList(0) |
| 146 | ) |
| 147 | ); |
| 148 | |
| 149 | writeUnitSetPtr_ = new dimensionSets(*unitSetPtr_, writeUnitNames); |
| 150 | |
| 151 | if (writeUnitNames.size() != 0 && writeUnitNames.size() != 7) |
| 152 | { |
| 153 | FatalIOErrorInFunction(dict) |
| 154 | << "Cannot find entry \"writeUnits\" in " << unitDict.name() |
no test coverage detected