| | | 1 | | using Morpho25.Geometry; |
| | | 2 | | using System; |
| | | 3 | | using System.Collections.Generic; |
| | | 4 | | using System.Linq; |
| | | 5 | | |
| | | 6 | | |
| | | 7 | | namespace Morpho25.Settings |
| | | 8 | | { |
| | | 9 | | /// <summary> |
| | | 10 | | /// OutputSettings class. |
| | | 11 | | /// </summary> |
| | | 12 | | public class OutputSettings : Configuration |
| | | 13 | | { |
| | | 14 | | public const int NESTING_GRID = 0; |
| | | 15 | | |
| | | 16 | | private int _mainFiles; |
| | | 17 | | private int _textFiles; |
| | | 18 | | |
| | | 19 | | /// </summary> |
| | | 20 | | /// Enable NetCDF output. |
| | | 21 | | /// </summary> |
| | 3 | 22 | | public Active NetCDF { get; set; } |
| | | 23 | | |
| | | 24 | | /// <summary> |
| | | 25 | | /// Merge NetCDF files. |
| | | 26 | | /// </summary> |
| | 3 | 27 | | public Active NetCDFAllDataInOneFile { get; set; } |
| | | 28 | | |
| | | 29 | | /// <summary> |
| | | 30 | | /// NetCDF small size. |
| | | 31 | | /// </summary> |
| | 3 | 32 | | public Active NetCDFWriteOnlySmallFiles { get; set; } |
| | | 33 | | |
| | | 34 | | /// <summary> |
| | | 35 | | /// Include nesting grid. |
| | | 36 | | /// </summary> |
| | 1 | 37 | | public Active IncludeNestingGrid { get; set; } |
| | | 38 | | |
| | | 39 | | /// <summary> |
| | | 40 | | /// Decide in which output interval save output files. |
| | | 41 | | /// </summary> |
| | | 42 | | public int MainFiles |
| | | 43 | | { |
| | 3 | 44 | | get { return _mainFiles; } |
| | | 45 | | set |
| | 2 | 46 | | { |
| | 2 | 47 | | ItIsPositive(value); |
| | 2 | 48 | | _mainFiles = value; |
| | 2 | 49 | | } |
| | | 50 | | } |
| | | 51 | | /// <summary> |
| | | 52 | | /// Decide in which output interval save receptor and building files. |
| | | 53 | | /// </summary> |
| | | 54 | | public int TextFiles |
| | | 55 | | { |
| | 3 | 56 | | get { return _textFiles; } |
| | | 57 | | set |
| | 2 | 58 | | { |
| | 2 | 59 | | ItIsPositive(value); |
| | 2 | 60 | | _textFiles = value; |
| | 2 | 61 | | } |
| | | 62 | | } |
| | | 63 | | |
| | | 64 | | /// </summary> |
| | | 65 | | /// Enable Agent output. |
| | | 66 | | /// </summary> |
| | 5 | 67 | | public Active WriteAgents { get; set; } |
| | | 68 | | |
| | | 69 | | |
| | | 70 | | /// </summary> |
| | | 71 | | /// Enable Atmosphere output. |
| | | 72 | | /// </summary> |
| | 3 | 73 | | public Active WriteAtmosphere { get; set; } |
| | | 74 | | |
| | | 75 | | /// </summary> |
| | | 76 | | /// Enable Buildings output. |
| | | 77 | | /// </summary> |
| | 3 | 78 | | public Active WriteBuildings { get; set; } |
| | | 79 | | |
| | | 80 | | /// </summary> |
| | | 81 | | /// Enable Objects output. |
| | | 82 | | /// </summary> |
| | 3 | 83 | | public Active WriteObjects { get; set; } |
| | | 84 | | |
| | | 85 | | /// </summary> |
| | | 86 | | /// Enable Greenpass output. |
| | | 87 | | /// </summary> |
| | 3 | 88 | | public Active WriteGreenpass { get; set; } |
| | | 89 | | |
| | | 90 | | /// </summary> |
| | | 91 | | /// Enable Nesting output. |
| | | 92 | | /// </summary> |
| | 3 | 93 | | public Active WriteNesting { get; set; } |
| | | 94 | | |
| | | 95 | | /// </summary> |
| | | 96 | | /// Enable Radiation output. |
| | | 97 | | /// </summary> |
| | 3 | 98 | | public Active WriteRadiation { get; set; } |
| | | 99 | | |
| | | 100 | | /// </summary> |
| | | 101 | | /// Enable Soil output. |
| | | 102 | | /// </summary> |
| | 3 | 103 | | public Active WriteSoil { get; set; } |
| | | 104 | | |
| | | 105 | | /// </summary> |
| | | 106 | | /// Enable SolarAccess output. |
| | | 107 | | /// </summary> |
| | 3 | 108 | | public Active WriteSolarAccess { get; set; } |
| | | 109 | | |
| | | 110 | | /// </summary> |
| | | 111 | | /// Enable Surface output. |
| | | 112 | | /// </summary> |
| | 4 | 113 | | public Active WriteSurface { get; set; } |
| | | 114 | | |
| | | 115 | | /// </summary> |
| | | 116 | | /// Enable Buildings output. |
| | | 117 | | /// </summary> |
| | 3 | 118 | | public Active WriteVegetation { get; set; } |
| | | 119 | | |
| | | 120 | | /// <summary> |
| | | 121 | | /// Create new OutputSettings. |
| | | 122 | | /// </summary> |
| | 2 | 123 | | public OutputSettings() |
| | 2 | 124 | | { |
| | 2 | 125 | | MainFiles = 60; |
| | 2 | 126 | | TextFiles = 60; |
| | 2 | 127 | | NetCDF = Active.NO; |
| | 2 | 128 | | NetCDFAllDataInOneFile = Active.NO; |
| | 2 | 129 | | NetCDFWriteOnlySmallFiles = Active.NO; |
| | 2 | 130 | | WriteAgents = Active.NO; |
| | 2 | 131 | | WriteAtmosphere = Active.YES; |
| | 2 | 132 | | WriteBuildings = Active.YES; |
| | 2 | 133 | | WriteObjects = Active.NO; |
| | 2 | 134 | | WriteGreenpass = Active.NO; |
| | 2 | 135 | | WriteNesting = Active.NO; |
| | 2 | 136 | | WriteRadiation = Active.YES; |
| | 2 | 137 | | WriteSoil = Active.YES; |
| | 2 | 138 | | WriteSolarAccess = Active.YES; |
| | 2 | 139 | | WriteSurface = Active.YES; |
| | 2 | 140 | | WriteVegetation = Active.YES; |
| | 2 | 141 | | } |
| | | 142 | | |
| | | 143 | | /// <summary> |
| | | 144 | | /// Title of the XML section |
| | | 145 | | /// </summary> |
| | 1 | 146 | | public string Title => "OutputSettings"; |
| | | 147 | | |
| | | 148 | | /// <summary> |
| | | 149 | | /// Values of the XML section |
| | | 150 | | /// </summary> |
| | 1 | 151 | | public string[] Values => new[] { |
| | 1 | 152 | | MainFiles.ToString(), |
| | 1 | 153 | | TextFiles.ToString(), |
| | 1 | 154 | | ((int)NetCDF).ToString(), |
| | 1 | 155 | | ((int)NetCDFAllDataInOneFile).ToString(), |
| | 1 | 156 | | ((int)NetCDFWriteOnlySmallFiles).ToString(), |
| | 1 | 157 | | ((int)IncludeNestingGrid).ToString(), |
| | 1 | 158 | | ((int)WriteAgents).ToString(), |
| | 1 | 159 | | ((int)WriteAtmosphere).ToString(), |
| | 1 | 160 | | ((int)WriteBuildings).ToString(), |
| | 1 | 161 | | ((int)WriteObjects).ToString(), |
| | 1 | 162 | | ((int)WriteGreenpass).ToString(), |
| | 1 | 163 | | ((int)WriteNesting).ToString(), |
| | 1 | 164 | | ((int)WriteRadiation).ToString(), |
| | 1 | 165 | | ((int)WriteSoil).ToString(), |
| | 1 | 166 | | ((int)WriteSolarAccess).ToString(), |
| | 1 | 167 | | ((int)WriteSurface).ToString(), |
| | 1 | 168 | | ((int)WriteVegetation).ToString(), |
| | 1 | 169 | | }; |
| | | 170 | | |
| | | 171 | | /// <summary> |
| | | 172 | | /// Tags of the XML section |
| | | 173 | | /// </summary> |
| | 1 | 174 | | public string[] Tags => new[] { |
| | 1 | 175 | | "mainFiles", |
| | 1 | 176 | | "textFiles", |
| | 1 | 177 | | "netCDF", |
| | 1 | 178 | | "netCDFAllDataInOneFile", |
| | 1 | 179 | | "netCDFWriteOnlySmallFile", |
| | 1 | 180 | | "inclNestingGrids", |
| | 1 | 181 | | "writeAgents", |
| | 1 | 182 | | "writeAtmosphere", |
| | 1 | 183 | | "writeBuildings", |
| | 1 | 184 | | "writeObjects", |
| | 1 | 185 | | "writeGreenpass", |
| | 1 | 186 | | "writeNesting", |
| | 1 | 187 | | "writeRadiation", |
| | 1 | 188 | | "writeSoil", |
| | 1 | 189 | | "writeSolarAccess", |
| | 1 | 190 | | "writeSurface", |
| | 1 | 191 | | "writeVegetation" |
| | 1 | 192 | | }; |
| | | 193 | | |
| | | 194 | | /// <summary> |
| | | 195 | | /// String representation of OutputSettings. |
| | | 196 | | /// </summary> |
| | | 197 | | /// <returns>String representation.</returns> |
| | 0 | 198 | | public override string ToString() => $"Config::OutputSettings::{NetCDF}"; |
| | | 199 | | } |
| | | 200 | | |
| | | 201 | | } |