Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
Mayer
CircularGreenSimCity
Commits
5b161862
Commit
5b161862
authored
Jun 01, 2023
by
Eric Duminil
Browse files
CSV table with many intermediate values, for debugging
parent
a2247488
Changes
2
Expand all
Hide whitespace changes
Inline
Side-by-side
tree-water-demand/all_values.csv
0 → 100644
View file @
5b161862
This diff is collapsed.
Click to expand it.
tree-water-demand/src/main/java/de/hft/stuttgart/water/TreeWaterDemand.java
View file @
5b161862
package
de.hft.stuttgart.water
;
import
java.io.BufferedWriter
;
import
java.io.IOException
;
import
java.nio.charset.StandardCharsets
;
import
java.nio.file.Files
;
import
java.nio.file.Path
;
import
java.nio.file.Paths
;
import
java.time.Duration
;
import
java.time.LocalDateTime
;
import
java.time.
Month
;
import
java.time.
format.DateTimeFormatter
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
com.opencsv.CSVReader
;
import
com.opencsv.exceptions.CsvException
;
public
class
TreeWaterDemand
{
public
class
TreeWaterDemand
{
/**
* Rs/Rso für Nacht = 0.5
*
* @param args
* @throws IOException
* @throws CsvException
...
...
@@ -58,13 +62,13 @@ public class TreeWaterDemand {
double
tr
=
0.9
;
LocalDateTime
startOfYear
=
LocalDateTime
.
of
(
2005
,
1
,
1
,
0
,
0
);
LocalDateTime
start
=
LocalDateTime
.
of
(
2005
,
1
,
1
,
0
,
0
);
LocalDateTime
end
=
LocalDateTime
.
of
(
2006
,
1
,
1
,
0
,
0
);
// LocalDateTime start = LocalDateTime.of(2005, 4, 1, 0, 0);
// LocalDateTime end = LocalDateTime.of(2005, 10, 1, 0, 0);
// LocalDateTime start = LocalDateTime.of(2005, 4, 1, 0, 0);
// LocalDateTime end = LocalDateTime.of(2005, 10, 1, 0, 0);
List
<
Double
>
et0us
=
new
ArrayList
<>();
List
<
Double
>
et0s
=
new
ArrayList
<>();
List
<
Double
>
demands
=
new
ArrayList
<>();
...
...
@@ -73,39 +77,57 @@ public class TreeWaterDemand {
System
.
out
.
println
(
"Date,ETIa (L/m²/d),ET0 (L/m²/d)"
);
int
startHours
=
(
int
)
Duration
.
between
(
startOfYear
,
start
).
toHours
();
int
hours
=
(
int
)
Duration
.
between
(
start
,
end
).
toHours
();
for
(
int
i
=
startHours
;
i
<
startHours
+
hours
;
i
++)
{
String
[]
row
=
csvValues
.
get
(
i
+
2
);
double
temp
=
Double
.
parseDouble
(
row
[
tempIndex
]);
double
humidity
=
Double
.
parseDouble
(
row
[
humidityIndex
]);
double
incomingRadiation
=
Double
.
parseDouble
(
row
[
irrIndex
]);
// convert to MJ/h - 1 W = 0.0036 MJ/h
incomingRadiation
*=
0.0036
;
double
windSpeed
=
Double
.
parseDouble
(
row
[
windSpeedIndex
]);
double
saturationVaporPressure
=
e0
(
temp
);
double
actualVaporPressure
=
ea
(
saturationVaporPressure
,
humidity
);
int
dayOfYear
=
counter
.
getDayOfYear
();
double
hourOfDay
=
counter
.
getHour
()
+
0.5
;
double
et0
=
et0
(
temp
,
actualVaporPressure
,
incomingRadiation
,
height
,
windSpeed
,
humidity
,
dayOfYear
,
hourOfDay
,
lz
,
lm
);
double
et0u
=
et0u
(
svf
,
advection
,
et0
);
et0s
.
add
(
et0
);
// System.out.println("et0: " + et0);
// System.out.println("etia: " + etia);
et0us
.
add
(
et0u
);
counter
=
counter
.
plusHours
(
1
);
DateTimeFormatter
f
=
DateTimeFormatter
.
ofPattern
(
"dd/MM/yyyy HH:mm"
);
try
(
BufferedWriter
bw
=
Files
.
newBufferedWriter
(
Paths
.
get
(
"all_values.csv"
),
StandardCharsets
.
UTF_8
))
{
bw
.
write
(
"DateTime;Temperature;Humidity;GHI;WindSpeed;SaturationVaporPressure;ActualVaporPressure;ET0;ET0u\n"
);
bw
.
write
(
"dd/mm/yyyy HH:MM;[°C];[%];[W/m²];[m/s];[?];[?];[l/h];[l/h]\n"
);
for
(
int
i
=
startHours
;
i
<
startHours
+
hours
;
i
++)
{
bw
.
write
(
String
.
format
(
"%s;"
,
counter
.
format
(
f
)));
String
[]
row
=
csvValues
.
get
(
i
+
2
);
double
temp
=
Double
.
parseDouble
(
row
[
tempIndex
]);
double
humidity
=
Double
.
parseDouble
(
row
[
humidityIndex
]);
double
incomingRadiation
=
Double
.
parseDouble
(
row
[
irrIndex
]);
bw
.
write
(
String
.
format
(
"%.1f;"
,
temp
));
bw
.
write
(
String
.
format
(
"%.0f;"
,
humidity
));
bw
.
write
(
String
.
format
(
"%.0f;"
,
incomingRadiation
));
// convert to MJ/h - 1 W = 0.0036 MJ/h
incomingRadiation
*=
0.0036
;
double
windSpeed
=
Double
.
parseDouble
(
row
[
windSpeedIndex
]);
double
saturationVaporPressure
=
e0
(
temp
);
double
actualVaporPressure
=
ea
(
saturationVaporPressure
,
humidity
);
int
dayOfYear
=
counter
.
getDayOfYear
();
double
hourOfDay
=
counter
.
getHour
()
+
0.5
;
double
et0
=
et0
(
temp
,
actualVaporPressure
,
incomingRadiation
,
height
,
windSpeed
,
humidity
,
dayOfYear
,
hourOfDay
,
lz
,
lm
);
double
et0u
=
et0u
(
svf
,
advection
,
et0
);
bw
.
write
(
String
.
format
(
"%.1f;"
,
windSpeed
));
bw
.
write
(
String
.
format
(
"%.3f;"
,
saturationVaporPressure
));
bw
.
write
(
String
.
format
(
"%.3f;"
,
actualVaporPressure
));
bw
.
write
(
String
.
format
(
"%.3f;"
,
et0
));
bw
.
write
(
String
.
format
(
"%.3f;"
,
et0u
));
et0s
.
add
(
et0
);
// System.out.println("et0: " + et0);
// System.out.println("etia: " + etia);
et0us
.
add
(
et0u
);
counter
=
counter
.
plusHours
(
1
);
bw
.
write
(
"\n"
);
}
}
// System.out.println(rain.stream().collect(Collectors.summarizingDouble(Double::doubleValue)));
// System.out.println(rain.stream().collect(Collectors.summarizingDouble(Double::doubleValue)));
Double
et0Sum
=
et0s
.
stream
().
collect
(
Collectors
.
summingDouble
(
Double:
:
doubleValue
));
System
.
out
.
println
(
"Summe aller ET0: "
+
et0Sum
);
Double
et0uSum
=
et0us
.
stream
().
collect
(
Collectors
.
summingDouble
(
Double:
:
doubleValue
));
System
.
out
.
println
(
"Summe aller ET0u: "
+
et0uSum
);
double
et0uFactor
=
(
0.865
*
Math
.
log10
(
1
/
et0uSum
)
+
3.36
);
for
(
double
et0u
:
et0us
)
{
double
etia
=
0
;
if
(
et0u
>
0
)
{
...
...
@@ -114,13 +136,14 @@ public class TreeWaterDemand {
demands
.
add
(
etia
);
}
System
.
out
.
println
(
"Summe aller ETIa: "
+
demands
.
stream
().
collect
(
Collectors
.
summingDouble
(
Double:
:
doubleValue
)));
System
.
out
.
println
(
"Summe aller ETIa: "
+
demands
.
stream
().
collect
(
Collectors
.
summingDouble
(
Double:
:
doubleValue
)));
// printHourly(start, et0s, demands);
// printHourly(start, et0s, demands);
// printDaily(start, et0s, demands);
// printDaily(start, et0s, demands);
// test();
// test();
}
private
static
void
printHourly
(
LocalDateTime
start
,
List
<
Double
>
et0s
,
List
<
Double
>
demands
)
{
...
...
@@ -165,9 +188,9 @@ public class TreeWaterDemand {
}
private
static
double
etia
(
double
tr
,
double
et0u
,
double
et0uFactor
)
{
// return 1 * 1.6 * et0u;
// return 1 * 1.6 * et0u;
return
tr
*
1.25
*
et0u
*
et0uFactor
;
// return tr * (1.61 * Math.log10(800) - 3.39) * et0u * (0.865 * Math.log10(1 / et0u) + 3.36);
// return tr * (1.61 * Math.log10(800) - 3.39) * et0u * (0.865 * Math.log10(1 / et0u) + 3.36);
}
private
static
double
et0u
(
double
svf
,
double
advection
,
double
et0
)
{
...
...
@@ -184,7 +207,7 @@ public class TreeWaterDemand {
double
g
=
g
(
nominalRadiation
,
shortWaveRadiation
>
0
);
double
n
=
0.408
*
delta
*
(
nominalRadiation
-
g
)
+
gamma
*
(
37
/
(
temperature
+
273
))
*
windSpeed
*
(
saturationVaporPressure
-
actualVaporPressure
);
return
n
/
(
delta
+
gamma
*
(
1
+
0.34
*
windSpeed
));
return
n
/
(
delta
+
gamma
*
(
1
+
0.34
*
windSpeed
));
}
private
static
double
ea
(
double
saturationVaporPressure
,
double
humidity
)
{
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment