Skip to content

Commit 3853d31

Browse files
authored
Merge pull request #48 from LBNL-ETA/VariableAirflowCoefficients
Variable airflow coefficients
2 parents 7b7d32f + 06e0e3a commit 3853d31

File tree

5 files changed

+81
-31
lines changed

5 files changed

+81
-31
lines changed

.github/workflows/build_wheels.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ jobs:
1212
matrix:
1313
os: [windows-2019]
1414
arch: [x86, x64]
15-
python-version: [3.7, 3.8, 3.9, "3.10", "3.11", "3.12"]
15+
python-version: [3.8, 3.9, "3.10", "3.11", "3.12"]
1616

1717
steps:
1818
- name: Checkout repository
@@ -46,7 +46,7 @@ jobs:
4646
# There is documentation here https://github.com/pypa/cibuildwheel/blob/main/docs/cpp_standards.md on how to
4747
# set it but I could not get it to work while using the standard images provided by github actions does work.
4848
os: [macos-latest]
49-
python-version: [3.7, 3.8, 3.9, "3.10", "3.11", "3.12"]
49+
python-version: [3.8, 3.9, "3.10", "3.11", "3.12"]
5050
env:
5151
SYSTEM_VERSION_COMPAT: 0
5252

CMakeLists-WinCalc.txt.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ include(ExternalProject)
44

55
ExternalProject_Add(wincalc
66
GIT_REPOSITORY https://github.com/LBNL-ETA/WinCalc.git
7-
GIT_TAG "VacuumDec2023"
7+
GIT_TAG "VariableAirflowCoefficients"
88

99
UPDATE_COMMAND ""
1010
PATCH_COMMAND ""

pywincalc/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@
3030
from wincalcbindings import AirHorizontalDirection, BSDF, BSDFBasisType, BSDFDirection, BSDFDirections, BSDFHemisphere, \
3131
BSDFIntegrator, BoundaryConditionsCoefficientModelType, CMABestWorstUFactors, CMAResult, CMAWindow, \
3232
CMAWindowDualVisionHorizontal, CMAWindowDualVisionVertical, CMAWindowSingleVision, CellSpacingType, PolygonType, pillar_cell_area, \
33-
PillarData, CylindricalPillar, SphericalPillar, RectangularPillar, PolygonalPillar, LinearBearingPillar, TruncatedConePillar, Glass, PillarMeasurement, \
34-
AnnulusCylinderPillar, UniversalSupportPillar, CylindricalPillarLayer, SphericalPillarLayer, RectangularPillarLayer, \
33+
PillarData, CylindricalPillar, SphericalPillar, RectangularPillar, TriangularPillar, PentagonPillar, HexagonPillar, LinearBearingPillar, TruncatedConePillar, Glass, PillarMeasurement, \
34+
AnnulusCylinderPillar, CShapedCylinderPillar, UniversalSupportPillar, CylindricalPillarLayer, SphericalPillarLayer, RectangularPillarLayer, \
3535
TriangularPillarLayer, PentagonPillarLayer, HexagonPillarLayer, LinearBearingPillarLayer, TruncatedConePillarLayer, \
36-
AnnulusCylinderPillarLayer, MeasuredPillarLayer, CoatedSide, \
36+
AnnulusCylinderPillarLayer, CShapedCylinderPillarLayer, MeasuredPillarLayer, CoatedSide, \
3737
ColorResult, DeflectionResults, DistributionMethodType, DualBandBSDF, EffectiveOpenness, Environment, Environments, \
3838
FlippableSolidLayer, Gas, GasCoefficients, GasData, GlazingSystem as _GlazingSystem, GlazingSystemDimensions, \
3939
IGUGapLayer, IntegrationRule, IntegrationRuleType, Lab, Layers, MaterialType, \

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[metadata]
22
name = pywincalc
3-
version = 3.4.0
3+
version = 3.5.0
44
description = A Python library for calculating thermal and optical properties of glazing systems
55
long_description = file: README.md
66
long_description_content_type = text/markdown; charset=UTF-8

src/wincalcbindings.cpp

Lines changed: 74 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -263,39 +263,57 @@ PYBIND11_MODULE(wincalcbindings, m) {
263263
.def(py::init<Tarcog::ISO15099::CIGUGapLayer const &,
264264
Tarcog::ISO15099::RectangularPillar const &>(),
265265
py::arg("gap_layer"), py::arg("rectangular_pillar"));
266-
267-
py::class_<Tarcog::ISO15099::PolygonalPillar, Tarcog::ISO15099::PillarData,
268-
std::shared_ptr<Tarcog::ISO15099::PolygonalPillar>>(
269-
m, "PolygonalPillar")
270-
.def(py::init<double, double, double, double,
271-
Tarcog::ISO15099::PolygonType>(),
272-
py::arg("height"), py::arg("material_conductivity"),
273-
py::arg("cell_area"), py::arg("length"), py::arg("polygon_type"))
274-
.def_readwrite("length", &Tarcog::ISO15099::PolygonalPillar::length)
275-
.def_readwrite("polygon_type", &Tarcog::ISO15099::PolygonalPillar::type);
266+
267+
py::class_<Tarcog::ISO15099::PolygonalPillar,
268+
Tarcog::ISO15099::PillarData,
269+
std::shared_ptr<Tarcog::ISO15099::PolygonalPillar>>(m, "PolygonalPillar")
270+
.def(py::init<double, double, double, double>(), py::arg("height"),
271+
py::arg("material_conductivity"), py::arg("cell_area"), py::arg("length"))
272+
.def_readwrite("legnth", &Tarcog::ISO15099::PolygonalPillar::length);
273+
274+
py::class_<Tarcog::ISO15099::TriangularPillar,
275+
Tarcog::ISO15099::PolygonalPillar,
276+
Tarcog::ISO15099::PillarData,
277+
std::shared_ptr<Tarcog::ISO15099::TriangularPillar>>(m, "TriangularPillar")
278+
.def(py::init<double, double, double, double>(), py::arg("height"),
279+
py::arg("material_conductivity"), py::arg("cell_area"), py::arg("length"));
276280

277281
py::class_<Tarcog::ISO15099::TriangularPillarLayer,
278282
Tarcog::ISO15099::UniversalSupportPillar,
279283
std::shared_ptr<Tarcog::ISO15099::TriangularPillarLayer>>(
280284
m, "TriangularPillarLayer")
281285
.def(py::init<Tarcog::ISO15099::CIGUGapLayer const &,
282-
Tarcog::ISO15099::PolygonalPillar const &>(),
286+
Tarcog::ISO15099::TriangularPillar const &>(),
283287
py::arg("gap_layer"), py::arg("polygon_pillar"));
288+
289+
py::class_<Tarcog::ISO15099::PentagonPillar,
290+
Tarcog::ISO15099::PolygonalPillar,
291+
Tarcog::ISO15099::PillarData,
292+
std::shared_ptr<Tarcog::ISO15099::PentagonPillar>>(m, "PentagonPillar")
293+
.def(py::init<double, double, double, double>(), py::arg("height"),
294+
py::arg("material_conductivity"), py::arg("cell_area"), py::arg("length"));
284295

285296
py::class_<Tarcog::ISO15099::PentagonPillarLayer,
286297
Tarcog::ISO15099::UniversalSupportPillar,
287298
std::shared_ptr<Tarcog::ISO15099::PentagonPillarLayer>>(
288299
m, "PentagonPillarLayer")
289300
.def(py::init<Tarcog::ISO15099::CIGUGapLayer const &,
290-
Tarcog::ISO15099::PolygonalPillar const &>(),
301+
Tarcog::ISO15099::PentagonPillar const &>(),
291302
py::arg("gap_layer"), py::arg("polygon_pillar"));
303+
304+
py::class_<Tarcog::ISO15099::HexagonPillar,
305+
Tarcog::ISO15099::PolygonalPillar,
306+
Tarcog::ISO15099::PillarData,
307+
std::shared_ptr<Tarcog::ISO15099::HexagonPillar>>(m, "HexagonPillar")
308+
.def(py::init<double, double, double, double>(), py::arg("height"),
309+
py::arg("material_conductivity"), py::arg("cell_area"), py::arg("length"));
292310

293311
py::class_<Tarcog::ISO15099::HexagonPillarLayer,
294312
Tarcog::ISO15099::UniversalSupportPillar,
295313
std::shared_ptr<Tarcog::ISO15099::HexagonPillarLayer>>(
296314
m, "HexagonPillarLayer")
297315
.def(py::init<Tarcog::ISO15099::CIGUGapLayer const &,
298-
Tarcog::ISO15099::PolygonalPillar const &>(),
316+
Tarcog::ISO15099::HexagonPillar const &>(),
299317
py::arg("gap_layer"), py::arg("polygon_pillar"));
300318

301319
py::class_<Tarcog::ISO15099::LinearBearingPillar,
@@ -356,6 +374,29 @@ PYBIND11_MODULE(wincalcbindings, m) {
356374
.def(py::init<Tarcog::ISO15099::CIGUGapLayer const &,
357375
Tarcog::ISO15099::AnnulusCylinderPillar const &>(),
358376
py::arg("gap_layer"), py::arg("annulus_cylinder_pillar"));
377+
378+
py::class_<Tarcog::ISO15099::CShapedCylinderPillar,
379+
Tarcog::ISO15099::PillarData,
380+
std::shared_ptr<Tarcog::ISO15099::CShapedCylinderPillar>>(
381+
m, "CShapedCylinderPillar")
382+
.def(py::init<double, double, double, double, double, double>(),
383+
py::arg("height"), py::arg("material_conductivity"),
384+
py::arg("cell_area"), py::arg("inner_radius"),
385+
py::arg("outer_radius"), py::arg("fraction_covered"))
386+
.def_readwrite("inner_radius",
387+
&Tarcog::ISO15099::CShapedCylinderPillar::innerRadius)
388+
.def_readwrite("outer_radius",
389+
&Tarcog::ISO15099::CShapedCylinderPillar::outerRadius)
390+
.def_readwrite("fraction_covered",
391+
&Tarcog::ISO15099::CShapedCylinderPillar::fractionCovered);
392+
393+
py::class_<Tarcog::ISO15099::CShapedCylinderPillarLayer,
394+
Tarcog::ISO15099::UniversalSupportPillar,
395+
std::shared_ptr<Tarcog::ISO15099::CShapedCylinderPillarLayer>>(
396+
m, "CShapedCylinderPillarLayer")
397+
.def(py::init<Tarcog::ISO15099::CIGUGapLayer const &,
398+
Tarcog::ISO15099::CShapedCylinderPillar const &>(),
399+
py::arg("gap_layer"), py::arg("cshaped_cylinder_pillar"));
359400

360401
py::class_<Tarcog::ISO15099::Glass, std::shared_ptr<Tarcog::ISO15099::Glass>>(
361402
m, "Glass")
@@ -756,12 +797,11 @@ PYBIND11_MODULE(wincalcbindings, m) {
756797
py::class_<wincalc::Product_Data_Thermal, wincalc::Flippable_Solid_Layer,
757798
std::shared_ptr<wincalc::Product_Data_Thermal>>(
758799
m, "ProductDataThermal")
759-
.def(py::init<double, double, bool, double, double, double, double,
760-
double>(),
800+
.def(py::init<double, double, bool, double, double, double, double, double>(),
761801
py::arg("conductivity"), py::arg("thickness_meters"),
762802
py::arg("flipped") = false, py::arg("opening_top") = 0,
763803
py::arg("opening_bottom") = 0, py::arg("opening_left") = 0,
764-
py::arg("opening_right") = 0)
804+
py::arg("opening_right") = 0, py::arg("opening_front") = 0)
765805
.def_readwrite("conductivity",
766806
&wincalc::Product_Data_Thermal::conductivity)
767807
.def_readwrite("opening_top", &wincalc::Product_Data_Thermal::opening_top)
@@ -771,10 +811,6 @@ PYBIND11_MODULE(wincalcbindings, m) {
771811
&wincalc::Product_Data_Thermal::opening_left)
772812
.def_readwrite("opening_right",
773813
&wincalc::Product_Data_Thermal::opening_right)
774-
.def_readwrite("effective_openness",
775-
&wincalc::Product_Data_Thermal::effective_openness)
776-
.def_readwrite("effective_thickness",
777-
&wincalc::Product_Data_Thermal::effective_thickness)
778814
.def_readwrite("youngs_modulus",
779815
&wincalc::Product_Data_Thermal::youngs_modulus)
780816
.def_readwrite("density", &wincalc::Product_Data_Thermal::density);
@@ -923,7 +959,7 @@ PYBIND11_MODULE(wincalcbindings, m) {
923959
SingleLayerOptics::BSDFHemisphere const &, double,
924960
std::optional<double>, std::optional<double>,
925961
std::optional<double>, std::optional<double>, double,
926-
bool>(),
962+
bool, bool>(),
927963
py::arg("solar_transmittance_front"),
928964
py::arg("solar_transmittance_back"),
929965
py::arg("solar_reflectance_front"),
@@ -937,7 +973,7 @@ PYBIND11_MODULE(wincalcbindings, m) {
937973
py::arg("ir_transmittance_back") = std::optional<double>(),
938974
py::arg("emissivity_front") = std::optional<double>(),
939975
py::arg("emissivity_back") = std::optional<double>(),
940-
py::arg("permeability_factor") = 0.0, py::arg("flipped") = false)
976+
py::arg("permeability_factor") = 0.0, py::arg("flipped") = false, py::arg("user_defined_effective_values") = false)
941977
.def_readwrite("solar_transmittance_front",
942978
&wincalc::Product_Data_Dual_Band_Optical_BSDF::tf_solar)
943979
.def_readwrite("solar_transmittance_back",
@@ -954,6 +990,8 @@ PYBIND11_MODULE(wincalcbindings, m) {
954990
&wincalc::Product_Data_Dual_Band_Optical_BSDF::rf_visible)
955991
.def_readwrite("visible_reflectance_back",
956992
&wincalc::Product_Data_Dual_Band_Optical_BSDF::rb_visible)
993+
.def_readwrite("user_defined_effective_values",
994+
&wincalc::Product_Data_Dual_Band_Optical_BSDF::user_defined_effective_values)
957995
.def("effective_thermal_values",
958996
&wincalc::Product_Data_Dual_Band_Optical_BSDF::
959997
effective_thermal_values);
@@ -1796,9 +1834,21 @@ PYBIND11_MODULE(wincalcbindings, m) {
17961834
py::arg("pillar"), py::arg("pressure"))
17971835
.def_static(
17981836
"create_pillar",
1799-
py::overload_cast<Tarcog::ISO15099::PolygonalPillar const &, double>(
1837+
py::overload_cast<Tarcog::ISO15099::TriangularPillar const &, double>(
1838+
&Tarcog::ISO15099::Layers::createPillar),
1839+
"Static function to add a triangular pillar to a Tarcog gap",
1840+
py::arg("pillar"), py::arg("pressure"))
1841+
.def_static(
1842+
"create_pillar",
1843+
py::overload_cast<Tarcog::ISO15099::PentagonPillar const &, double>(
1844+
&Tarcog::ISO15099::Layers::createPillar),
1845+
"Static function to add a pentagon pillar to a Tarcog gap",
1846+
py::arg("pillar"), py::arg("pressure"))
1847+
.def_static(
1848+
"create_pillar",
1849+
py::overload_cast<Tarcog::ISO15099::HexagonPillar const &, double>(
18001850
&Tarcog::ISO15099::Layers::createPillar),
1801-
"Static function to add a polygonal pillar to a Tarcog gap",
1851+
"Static function to add a hexagon pillar to a Tarcog gap",
18021852
py::arg("pillar"), py::arg("pressure"))
18031853
.def_static(
18041854
"create_pillar",

0 commit comments

Comments
 (0)