diff --git a/CMakeLists.txt b/CMakeLists.txt index ca8a17c..5df0af6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.8) -project(BSDFXMLParser VERSION 0.0.3 LANGUAGES CXX) +project(BSDFXMLParser VERSION 0.0.4 LANGUAGES CXX) set(LIB_NAME ${PROJECT_NAME}) if (MSVC) diff --git a/src/bsdfdata/Enumerators.cpp b/src/bsdfdata/Enumerators.cpp index 027806f..d049981 100644 --- a/src/bsdfdata/Enumerators.cpp +++ b/src/bsdfdata/Enumerators.cpp @@ -21,7 +21,7 @@ namespace BSDFData return FileParse::enumToString(type, WindowElementTypeStrings); } - const std::array DeviceTypeStrings = {"Unknown", + const std::array DeviceTypeStrings = {"Unknown", "Venetian blind horizontal", "Venetian blind vertical", "Woven shade", @@ -30,7 +30,11 @@ namespace BSDFData "Fritted Glass", "Cellular Shade", "Pleated Shade", + "Roman Shade", + "Roller Shutter", + "Insulated Quilts", "Louvered Shutter", + "Awning", "Solid Layer", "Other"}; diff --git a/src/bsdfdata/Enumerators.hpp b/src/bsdfdata/Enumerators.hpp index fe771c9..91faea3 100644 --- a/src/bsdfdata/Enumerators.hpp +++ b/src/bsdfdata/Enumerators.hpp @@ -30,7 +30,11 @@ namespace BSDFData FrittedGlass, CellularShade, PleatedShade, + RomanShade, + RollerShutter, + InsulatedQuilts, LouveredShutter, + Awning, SolidLayer, Other }; diff --git a/src/schemas/BSDF-v1.7.7.xsd b/src/schemas/BSDF-v1.7.7.xsd new file mode 100644 index 0000000..659fbc5 --- /dev/null +++ b/src/schemas/BSDF-v1.7.7.xsd @@ -0,0 +1,800 @@ + + + + + Schema version 1.0 designed by LBNL to store Bidirectional Scattering Data for complex glazing systems +Intended to be read by WINDOW6 and other software. Designed by Christian Kohler, Robin Mitchell and Luis Fernandes. Created September 4 2005, updated Oct 7: added emissivity and TIR. Updated November 3rd, added nPhis to basis definition. jckohler@lbl.gov. Update March 7 2006, expanded the bounds section in AngleBasisBlock to consist of a upper and lower bound. This information is not always needed, you can usually figure it out by working backwards from 90 degrees +Update: February 9th 2007, added version number, started with 1.0 +Changed ThicknessUniteEnam to LengthUnitEnum +Add Geometry tag +February 12th version 1.1, changed order in AngleBasisBlock to be ThetaBounds before nPhis +March 14th version 1.2 added SourceSpectrum and DetectorSpectrum to WavelengthData section + added DiffusingGlassCoverageFraction and WovenShadeOpenessFraction to Geometry + added Transmittance, ReflectanceFront and ReflectanceBack to OpticalProperties under Material, +September 2007 version 1.3 added TarcogInput element, added WovenshadeThreadDiameter, WovenshadeThickness and WovenshadeThreadSpacing to Geometry section +2009 version 1.4 : compatible with Radiance MkIllum come +February 2010 version 1.5: added framing section, +Feburary 2010 version 1.5.1 added back and front to absorptance in WaveLengthDataDirectionEnum, changed scateringdatatypeenum from Bi-Directional Transmittance to Fractional +March 2010, version 1.5.2, changed wavelengthunit to Nanometer, instead of Nanometers +August 2012, version 1.7.0, added WindowElementType Material, added DeviceType: Cellular Shade, added Fractional Diffuse and Fractional Specular to ScatteringDataType +1.7.3 added ProductName (October 10-2012) +1.7.4 added Pleated Shade (July 2014) +1.7.5 added Solid Layer (Aug 2014) +1.7.6 added choice to AngleBasisBlock, so it wouldn't complain about being out of order + added targetNamespace="http://windows.lbl.gov" elementFormDefault="qualified" version="1.7.6" to the header + made Checksum and FileType optional + added PermeabilityFactor, AERCAcceptance + Changes made by Christian 9/30/2020 +1.7.7. added height and width to material. set whitespace=collapse in WindowElementType, added MGFBlock and unit attribute to Geometry + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AngleBasisTypeEnum lists the various values possible for AngleBasisType, it specifies what angular basis that follows is defined for, usually you will have one for incidence, one for transmission and one for Reflection Front and Back + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + These are the overall Optical Properties for the system. these are generic system properties and are not required. Comments field can be used to describe if this is normal incidence etc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + If this element is not defined it is assumed to be the same angle basis as in the Layer block + + + + + + + Define what the structure of the BSDF matrix is. The only option currently is Column, which means that every incident angle is in a column, and the outgoing directions are in rows. Not required for Non-BSDF filetypes + + + + + + + + + + + + + + + This is where the Name of the The basis that WINDOW6 will be using as a default: "WINDOW6 basis" + + + + AngleBasisName gives a name to the following AngleBasis. Values could be LBNL/Klems or IEA Task 21 Incident,IEA Task 21 Transmitted, IEA Task 21 Reflected . + + + + + AngleBasisBlock contains the actual Theta, Phi pairs for the angular basis. The Solid Angle can also be specified, for each Theta, Phi pair, but is not required. The order of these pairs is very important, it is later used to figure out the order in the ScatteringData element. nPhis is used when defining a basis with evenly spaced phi's around 360 degrees. ThetaBounds is used to specify what the boundaries of the theta band are (theta is the midpoint of the band). It is a complextype defined below with an upper and lower parameter + + + + + + + + + + AngleBasisBlock is the actual Theta, Phi pairs for the angular basis. The Solid Angle can also be specified, for each Theta, Phi pair, but is not required. The order of these pairs is very important, it is later used to figure out the order in the ScatteringData element. nPhis is used when defining a basis with evenly spaced phi's around 360 degrees. ThetaBounds is used with nPhis, to specify what the boundaries of the theta band are (theta is the midpoint of the band). It is a complextype defined below with an upper and lower parameter + + + + + + nPhis stands for number of Phi's within a theta band. They are assumed to be evenly spaced, and starting at Phi=0. This element should not be used in combination with the Phi element. + + + + + The user can only ue either Phi values, or specifying the number of Phis that are evenly spaced + + + + + + + + + + + + + + + + ThetaBounds is a element that describes the upper and lower bounds around a theta midpoint of a band. It is a sub of the AngleBasisBlock + + + + + + + + + + + + + + Wavelength is a string that holds the description for what spectral wavelength this property is valid. Entries could be Visible (380-780 nm), Solar (300-2500nm), NIR (near infrared 780-2500) FIR (far infrared), UV, or value. Value is a value in nanometers, such as 300 + + + + + + + This could be System if the properties are for a whole system, or 1,2,3 etc referring to a layer in the system. For the absorbed fraction we need to provide it per layer + + + + + + + Describes what the Source Spectrum was for the spectrally averaged optical properties (ie visible transmittance and solar transmittance). References can be to the WINDOW6 Standards File name.This can be ignored if spectral data is used in WavelengthData. + default in WINDOW6 for visible is:CIE Illuminant D65 1nm.ssp and for solar:ASTM E891 Table 1 Direct AM1_5.ssp + + + + + Describes what the Detector Spectrum was for the spectrally averaged optical properties (ie visible transmittance and solar transmittance). This can be ignored if spectral data is used in WavelengthData. + default in WINDOW6 for visible is:ASTM E308 1931 Y.dsp and for solar:None + + + + + + + + + + + + Used to specify data sets at various angles (non-bsdf), used for Angle Tubes data + + + + + + + + + + + + + + + + + + + + + WavelengthDataBlock is a complex data type that contains the WavelengthDataType (Transmittance etc) and the actual ScatteringData + + + + + + + + This entry defines which Angular Basis is used for the columns in the matrix. This should reference an entry from (AngleBasisName) + + + + + This entry defines which Angular Basis is used for the rows in the matrix. This should reference an entry from (AngleBasisName) + + + + + + + + + + Create an attribute for wavelength called unit, that defines the units for the wavelength. + this could be , for a integrated wavelength band such as solar, visible etc, or nanometers, or microns + + + + ScatteringData is a long string that contains the BSDF values space seperated. for the AbsorbedFraction this is a 2d matrix for BSDF's This string is long, for the Klems Basis it is 145*145 values long. The order in which these values are presented is defined in the DataDefinition element. For the absorbed fraction it is only a 1-d array of 145 values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + EmissivityFront or Back is a decimal value that describes the emissivity of the whole system, not just the material. THis value is only needed if there is no BTDF data for the IR range + + + + + TIR is a decimal value that describes the InfraRed transmittance. THis value is only needed if there is no BTDF data for the IR range + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + WavelengthDataDirection is a string that describes what type the following data is. Valid values are: "Transmission Front, Transmission Back, Reflection Front and Reflection Back or Absorbed + + + + + ScatteringDataType is a string that describes what type the following data is. Valid values are: "BTDF, Fractional. BTDF has values from 0 to infinity and the units are per steradian, Fractional has values from 0-1. Reflection and Transmission are usually BTDF. Absorption is fractional since it is only a vector, not a matrix + + + + + + + + + + + + + + This element contains the full angular definition, headers and BSDF data for a layer or a system (collection of layers) + + + + + + + + + + + + + + + + + + This element stores all the thermal information that WINDOW6 uses to calculate the thermal performance of the blind. + It is derived from the Tarcog.dbg (debug) file that is written by the Tarcog.dll which performs all the Center-Of-Glass (COG) thermal calculations + Created by Christian Kohler / LBNL in September 2007 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This could be Outdoor, Indoor, or the gap number (1,2,3 ec) + + + + + + + + + + + + + This is the sequence of the number of gases a mix it made from + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Not sure why this section exists in the tarcog.dbg file, but it is replicated here for consistency + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + This section contains the thermal information related to frames, such as film coeff, conductance, PDF + + + + + + + + + +