-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Experiment adding python code to pybind11-based pyWinCalc.
- Loading branch information
1 parent
c82e828
commit 99bf5ed
Showing
13 changed files
with
4,367 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
from _pywincalc import * | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
from pywincalc.optical import IntegratedSpectralAveragesSummary | ||
from pywincalc.product import Product | ||
from pywincalc.standard import CalculationStandardName | ||
|
||
|
||
def generate_integrated_spectral_averages_summary(product: Product, | ||
standard: CalculationStandardName) \ | ||
-> IntegratedSpectralAveragesSummary: | ||
""" | ||
Generate integrated spectral averages summary for a given product and standard. | ||
:param product: | ||
:param standard: | ||
:return: | ||
""" | ||
|
||
# TODO: Business logic that generates integrated spectral averages summary | ||
# TODO: for the given product and calculation standard. | ||
|
||
values: IntegratedSpectralAveragesSummary = IntegratedSpectralAveragesSummary(standard=standard) | ||
values.standard = standard | ||
values.tf_sol = 0.123 | ||
|
||
return values |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
from pydantic.dataclasses import dataclass | ||
from enum import Enum | ||
|
||
|
||
class MaterialType(Enum): | ||
UNKNOWN = "Unknown" | ||
NA = "Not applicable" | ||
GLASS = "glass" | ||
PVB = "PVB" | ||
POLYCARBONATE = "polycarbonate" | ||
ACRYLIC = "acrylic" | ||
PET = "PET" | ||
|
||
|
||
material_type_lookup = { | ||
1: "UNKNOWN", | ||
2: "NA", | ||
3: "GLASS", | ||
4: "PVB", | ||
5: "POLYCARBONATE", | ||
6: "ACRYLIC", | ||
7: "PET" | ||
} | ||
|
||
|
||
@dataclass | ||
class MaterialBulkProperties: | ||
name: str | ||
display_name: str | ||
version: str | ||
conductivity: float | ||
youngs_modulus: float | ||
poissons_ratio: float | ||
elasticity: float | ||
moisture_properties: dict |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
from pydantic.dataclasses import dataclass | ||
from enum import Enum | ||
|
||
from pywincalc.standard import CalculationStandardName | ||
|
||
|
||
class OpticalDataType(Enum): | ||
DISCRETE = "Discrete" | ||
BAND = "Band" | ||
|
||
|
||
class AngularResolutionType(Enum): | ||
DIRECT = "Direct" | ||
DIRECT_DIFFUSE = "Direct / Diffuse" | ||
DIFFUSE_DIFFUSE = "Diffuse / Diffuse" | ||
BSDF = "BSDF" | ||
|
||
|
||
INCIDENCE_ANGULAR_RESOLUTION_TYPES = [ | ||
AngularResolutionType.DIRECT, | ||
AngularResolutionType.BSDF | ||
] | ||
|
||
OUTGOING_ANGULAR_RESOLUTION_TYPES = [ | ||
AngularResolutionType.DIRECT, | ||
AngularResolutionType.BSDF | ||
] | ||
|
||
|
||
@dataclass | ||
class OpticalProperties: | ||
optical_data_type: str = OpticalDataType.DISCRETE.name | ||
incidence_angular_resolution_type: str = AngularResolutionType.DIRECT.name | ||
outgoing_angular_resolution_type: str = AngularResolutionType.DIRECT.name | ||
optical_data: dict = None | ||
|
||
|
||
@dataclass | ||
class IntegratedSpectralAveragesSummary: | ||
standard: CalculationStandardName | ||
|
||
tf_sol: float = 0 | ||
tb_sol: float = 0 | ||
rf_sol: float = 0 | ||
rb_sol: float = 0 | ||
|
||
tf_vis: float = 0 | ||
tb_vis: float = 0 | ||
rf_vis: float = 0 | ||
rb_vis: float = 0 | ||
|
||
tf_tdw: float = 0 | ||
tf_tuv: float = 0 | ||
tf_spf: float = 0 | ||
tf_tkr: float = 0 | ||
|
||
tf_ciex: float = 0 | ||
tf_ciey: float = 0 | ||
tf_ciez: float = 0 | ||
tf_r: float = 0 | ||
tf_g: float = 0 | ||
tf_b: float = 0 | ||
|
||
rf_ciex: float = 0 | ||
rf_ciey: float = 0 | ||
rf_ciez: float = 0 | ||
rf_r: float = 0 | ||
rf_g: float = 0 | ||
rf_b: float = 0 | ||
|
||
rb_ciex: float = 0 | ||
rb_ciey: float = 0 | ||
rb_ciez: float = 0 | ||
rb_r: float = 0 | ||
rb_g: float = 0 | ||
rb_b: float = 0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
from pydantic.dataclasses import dataclass | ||
from enum import Enum | ||
from typing import List, Dict | ||
from decimal import * | ||
from pydantic.dataclasses import dataclass | ||
|
||
from pywincalc.material import MaterialBulkProperties | ||
from pywincalc.optical import OpticalProperties, IntegratedSpectralAveragesSummary | ||
|
||
|
||
class TokenType(Enum): | ||
PUBLISHED = "PUBLISHED" | ||
UNDEFINED = "UNDEFINED" | ||
PROPOSED = "PROPOSED" | ||
INTRAGROUP = "INTRAGROUP" | ||
|
||
|
||
class ProductType(Enum): | ||
GLAZING = "GLAZING" | ||
SHADING = "SHADING" | ||
MATERIAL = "MATERIAL" | ||
|
||
|
||
class ProductSubtype(Enum): | ||
# glazing types | ||
MONOLITHIC = "MONOLITHIC" | ||
LAMINATE = "LAMINATE" | ||
INTERLAYER = "INTERLAYER" | ||
EMBEDDED_COATING = "EMBEDDED_COATING" | ||
COATED = "COATED" | ||
COATING = "COATING" | ||
APPLIED_FILM = "APPLIED_FILM" | ||
FILM = "FILM" | ||
FRITTED_GLASS = "FRITTED_GLASS" | ||
CHROMOGENIC = "CHROMOGENIC" | ||
|
||
# shading and material types | ||
VENETIAN_BLIND = "VENETIAN_BLIND" | ||
DIFFUSING_SHADE = "DIFFUSING_SHADE" | ||
WOVEN_SHADE = "WOVEN_SHADE" | ||
VERTICAL_LOUVER = "VERTICAL_LOUVER" | ||
PERFORATED_SCREEN = "PERFORATED_SCREEN" | ||
CELLULAR_SHADE = "CELLULAR_SHADE" | ||
|
||
# other | ||
OTHER = "OTHER" | ||
UNKNOWN = "UNKNOWN" | ||
|
||
|
||
@dataclass | ||
class PhysicalProperties: | ||
thickness: float = None | ||
tir_front: float = None | ||
tir_back: float = 0.0 | ||
emissivity_front: float = None | ||
emissivity_back: float = None | ||
permeability_factor: float = None | ||
optical_openness: float = None | ||
bulk_properties_override: dict = None | ||
is_specular: bool = True | ||
optical_properties: OpticalProperties = None | ||
|
||
|
||
@dataclass | ||
class Product: | ||
type: ProductType | ||
subtype: ProductSubtype | ||
product_id: int = None | ||
token: str = None | ||
token_type: TokenType = None | ||
data_file_name: str = None | ||
data_file_type: str = None | ||
# This product can be decomposed into parts | ||
deconstructable: bool = False | ||
# This product is a 'reference' product, meaning it's sole purpose is | ||
# to get a child product into the IGSDB using reference substrates. | ||
# This is method of submittal is only valid for APPLIED_FILM and LAMINATE products. | ||
reference: bool = False | ||
igsdb_version: str = None | ||
coated_side: str = None | ||
coating_name: str = None | ||
owner: str = None | ||
manufacturer: str = None | ||
coating_id: int = None | ||
product_description: Dict = None | ||
igsdb_checksum: int = None | ||
material: str = None | ||
published_date: str = None | ||
hidden: bool = None | ||
active: bool = True | ||
appearance: str = None | ||
acceptance: str = None | ||
nfrc_id: str = None | ||
composition: list = None | ||
material_bulk_properties: MaterialBulkProperties = None | ||
integrated_spectral_averages_summaries: List[IntegratedSpectralAveragesSummary] = None | ||
physical_properties: PhysicalProperties = None | ||
extra_data: dict = None | ||
created_at: str = None | ||
updated_at: str = None |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
from pydantic.dataclasses import dataclass | ||
from enum import Enum | ||
|
||
|
||
class CalculationStandardName(Enum): | ||
NFRC = "NFRC" | ||
CES = "CES" | ||
|
||
|
||
class CalculationStandardMethodTypes(Enum): | ||
SOLAR = "Solar" | ||
PHOTOPIC = "Photopic" | ||
THERMAL_IR = "Thermal IR" | ||
TUV = "TUV" | ||
SPF = "SPF" | ||
TDW = "TDW" | ||
TKR = "TKR" |
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
from _pywincalc import * | ||
|
||
|
Oops, something went wrong.