-
Notifications
You must be signed in to change notification settings - Fork 0
/
Model.cs
76 lines (61 loc) · 3.12 KB
/
Model.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WallSectionWidget
{
public class Model
{
public Construction Construction;
public Parameters Parameters;
public List<double> Depths = new List<double>();
public List<double> Temperatures = new List<double>();
public List<double> VapourPressures = new List<double>();
public List<double> DewPoints = new List<double>();
public List<double> RelativeHumidityLevels = new List<double>();
public GHIOParam<Model> GHIOParam => new GHIOParam<Model>(this);
public Model(Construction construction, Parameters parameters)
{
Parameters = parameters;
List<Layer> layers = new List<Layer>();
construction.Layers.ForEach(L => layers.Add(L));
Construction = new Construction { Layers = layers };
Construction.Layers.Insert(0, new Layer(Material.Air, Parameters.InteriorContactDistance));
Construction.Layers.Add(new Layer(Material.Air, Parameters.ExteriorContactDistance));
Construction.InteriorTemperature = Parameters.InteriorTemperature;
Construction.InteriorHumidity = Parameters.InteriorHumidity;
Construction.ExteriorTemperature = Parameters.ExteriorTemperature;
Construction.ExteriorHumidity = Parameters.ExteriorHumidity;
Construction.UpdateLayers();
Construction.Layers.ForEach(L => L.IntermediateConditions.MaxStepLength = Parameters.MaxStepLength);
Solve();
}
void Solve()
{
foreach (Layer layer in Construction.Layers)
{
List<double> Depths = layer.IntermediateConditions.Depths;
Depths.RemoveAt(Depths.Count - 1);
this.Depths.AddRange(Depths);
List<double> Temperatures = layer.IntermediateConditions.Temperatures;
Temperatures.RemoveAt(Temperatures.Count - 1);
this.Temperatures.AddRange(Temperatures);
List<double> VapourPressures = layer.IntermediateConditions.VapourPressures;
VapourPressures.RemoveAt(VapourPressures.Count - 1);
this.VapourPressures.AddRange(VapourPressures);
List<double> DewPoints = layer.IntermediateConditions.DewPoints;
DewPoints.RemoveAt(DewPoints.Count - 1);
this.DewPoints.AddRange(DewPoints);
List<double> RelativeHumidities = layer.IntermediateConditions.RelativeHumidities;
RelativeHumidities.RemoveAt(RelativeHumidities.Count - 1);
RelativeHumidityLevels.AddRange(RelativeHumidities);
}
Depths.Add(Construction.Thickness);
Temperatures.Add(Construction.ExteriorTemperature);
VapourPressures.Add(Construction.ExteriorVapourPressure);
DewPoints.Add(Psychrometrics.DewPoint(Construction.ExteriorVapourPressure));
RelativeHumidityLevels.Add(Construction.ExteriorHumidity);
}
}
}