From 8a8b6c11801ee523fca8a799f60463c6e5222518 Mon Sep 17 00:00:00 2001 From: tbeu Date: Sat, 24 Apr 2021 14:50:23 +0200 Subject: [PATCH] Add leap year handling for EPW --- .../Resources/C-Sources/ModelicaIOAdditions.c | 72 +++++++++++++----- .../Library/linux64/libModelicaIOAdditions.a | Bin 30692 -> 32348 bytes .../Library/win32/ModelicaIOAdditions.lib | Bin 41722 -> 41930 bytes .../Library/win64/ModelicaIOAdditions.lib | Bin 58598 -> 58916 bytes 4 files changed, 55 insertions(+), 17 deletions(-) diff --git a/ModelicaTableAdditions/Resources/C-Sources/ModelicaIOAdditions.c b/ModelicaTableAdditions/Resources/C-Sources/ModelicaIOAdditions.c index e367ed8..4644b01 100644 --- a/ModelicaTableAdditions/Resources/C-Sources/ModelicaIOAdditions.c +++ b/ModelicaTableAdditions/Resources/C-Sources/ModelicaIOAdditions.c @@ -923,27 +923,27 @@ static double* readCsvTable(_In_z_ const char* fileName, _In_z_ const char* tabl return table; } -static double epwSimulationTime(const long* time) { +static double epwSimulationTime(const long* time, int leap) { double simtime; switch (time[1]) { /* Month to days */ case 1: simtime = 0; break; case 2: simtime = 31; break; - case 3: simtime = 59; break; - case 4: simtime = 90; break; - case 5: simtime = 120; break; - case 6: simtime = 151; break; - case 7: simtime = 181; break; - case 8: simtime = 212; break; - case 9: simtime = 243; break; - case 10: simtime = 273; break; - case 11: simtime = 304; break; - case 12: simtime = 334; break; + case 3: simtime = 59 + leap; break; + case 4: simtime = 90 + leap; break; + case 5: simtime = 120 + leap; break; + case 6: simtime = 151 + leap; break; + case 7: simtime = 181 + leap; break; + case 8: simtime = 212 + leap; break; + case 9: simtime = 243 + leap; break; + case 10: simtime = 273 + leap; break; + case 11: simtime = 304 + leap; break; + case 12: simtime = 334 + leap; break; default: simtime = 0; } simtime = 24 * (simtime + (time[2] - 1)); /* Days to hours */ - simtime = 60 * (simtime +time[3]); /* Hours to minutes */ + simtime = 60 * (simtime + time[3]); /* Hours to minutes */ simtime = 60 * (simtime + time[4]); /* Minutes to seconds */ return simtime; @@ -956,6 +956,8 @@ static double* readEpwTable(_In_z_ const char* fileName, _In_z_ const char* tabl int bufLen = LINE_BUFFER_LENGTH; FILE* fp; int readError; + int leap = 0; + unsigned long foundFeb29 = 0; unsigned long nRow = 0; unsigned long nCol = 30; unsigned long lineNo = 1; @@ -1059,6 +1061,11 @@ static double* readEpwTable(_In_z_ const char* fileName, _In_z_ const char* tabl } return NULL; } + if (5 == lineNo && 0 == strncmp(buf, "HOLIDAYS/DAYLIGHT SAVINGS,Yes", 27)) { + ModelicaFormatMessage("Leap year observed in line %lu of file " + "\"%s\".\n", lineNo, fileName); + leap = 1; + } lineNo++; } @@ -1088,6 +1095,7 @@ static double* readEpwTable(_In_z_ const char* fileName, _In_z_ const char* tabl { size_t i = 0; + size_t k = 0; long line9min = 0; long line10min = 0; @@ -1109,7 +1117,7 @@ static double* readEpwTable(_In_z_ const char* fileName, _In_z_ const char* tabl readError = 0; /* Loop over rows and store table row-wise */ - for (i = 1; i < nRow; i++) { + for (k = 1; k < nRow; k++) { long time[5]; size_t j = 0; char* token; @@ -1169,8 +1177,29 @@ static double* readEpwTable(_In_z_ const char* fileName, _In_z_ const char* tabl line10min = time[4]; } + /* Check for 29th of February */ + if (2 == time[1] && 29 == time[2]) { + foundFeb29++; + if (0 == leap) { + /* Ignore leap year data if not specified */ + ModelicaFormatMessage( + "Ignoring data for 29th of February in line %lu when reading weather data of " + "matrix \"%s(%lu,%lu)\" from file \"%s\"\n", lineNo, tableName, nRow, nCol, + fileName); + continue; + } + + } + /* Check if valid leap year data */ + else if (1 == leap && time[1] > 2 && 0 == foundFeb29) { + readError = 29; + break; + } + + i++; + /* Convert the time in seconds */ - table[i*nCol] = epwSimulationTime(time); + table[i*nCol] = epwSimulationTime(time, leap); /* Skip the flag for data quality */ token = strtok_r(NULL, delimTable, &nextToken); @@ -1196,7 +1225,7 @@ static double* readEpwTable(_In_z_ const char* fileName, _In_z_ const char* tabl table[i*nCol + j] = table[(i - 1)*nCol + j]; } ModelicaFormatWarning( - "Missing data in line %lu when reading numeric data of matrix " + "Missing data in line %lu when reading weather data of matrix " "\"%s(%lu,%lu)\" from file \"%s\"\n", lineNo, tableName, nRow, nCol, fileName); } @@ -1252,6 +1281,10 @@ static double* readEpwTable(_In_z_ const char* fileName, _In_z_ const char* tabl } } + if (0 == leap) { + nRow -= foundFeb29; + } + /* Use the data at first recorded time for time equal to 0s */ memcpy(&table[1], &table[31], 29*sizeof(double)); @@ -1283,12 +1316,17 @@ static double* readEpwTable(_In_z_ const char* fileName, _In_z_ const char* tabl *n = 0; if (readError == 9) { ModelicaFormatError( - "Error: Missing data in line 9 when reading numeric data of matrix " + "Error: Missing data in line 9 when reading weather data of matrix " + "\"%s(%lu,%lu)\" from file \"%s\"\n", tableName, nRow, nCol, fileName); + } + else if (readError == 29) { + ModelicaFormatError( + "Error: Missing data for 29th of February when reading weather data of matrix " "\"%s(%lu,%lu)\" from file \"%s\"\n", tableName, nRow, nCol, fileName); } else { ModelicaFormatError( - "Error in line %lu when reading numeric data of matrix " + "Error in line %lu when reading weather data of matrix " "\"%s(%lu,%lu)\" from file \"%s\"\n", lineNo, tableName, nRow, nCol, fileName); } diff --git a/ModelicaTableAdditions/Resources/Library/linux64/libModelicaIOAdditions.a b/ModelicaTableAdditions/Resources/Library/linux64/libModelicaIOAdditions.a index 465f0341c0250b7ae25e9f0669ecfd2fd6de725e..27cf1d242e438a0c7ff59b2f1509bcea5b5a846d 100644 GIT binary patch literal 32348 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 Lw3p(^t-t>TGM3n; delta 9860 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 Q^22xE#kq~_%9@1#1*ZUFlK=n! diff --git a/ModelicaTableAdditions/Resources/Library/win32/ModelicaIOAdditions.lib b/ModelicaTableAdditions/Resources/Library/win32/ModelicaIOAdditions.lib index c9236d0cdde41e3b32804bc861e6cbf9362673b3..f7f43fc68ef34deed4346790688fddc8e90ab55c 100644 GIT binary patch delta 11131 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 YHRWq~`5}$B97^IP>ae!A4&5^R3mX@C1poj5 diff --git a/ModelicaTableAdditions/Resources/Library/win64/ModelicaIOAdditions.lib b/ModelicaTableAdditions/Resources/Library/win64/ModelicaIOAdditions.lib index 2ca4167e2a946ddf918630a7655ec62fd17cc24f..a9a5ac50820d2b31364addf4f3eda3dc2fd6bf4d 100644 GIT binary patch delta 18137 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