def __init__(self, path = None): self.input_time_series = path_manager.SinglePathManager() self.path = path if path != None: self.isNew = False doc = self.readDoc(path) configurationNode = self.getNode(doc, 'Configuration') if self.nodeExists(configurationNode, 'GeneralSettings'): collectorNode = self.getNode(configurationNode, 'GeneralSettings') else: collectorNode = configurationNode self.name = self.getNodeValue(collectorNode, 'Name') self.startDate = self.getNodeDate(collectorNode, 'StartDate') if self.nodeValueExists(collectorNode, 'StartDate') else None self.endDate = self.getNodeDate(collectorNode, 'EndDate') if self.nodeValueExists(collectorNode, 'EndDate') else None self.hubWindSpeedMode = self.getNodeValue(collectorNode, 'HubWindSpeedMode') self.calculateHubWindSpeed = self.getCalculateMode(self.hubWindSpeedMode) self.densityMode = self.getNodeValue(collectorNode, 'DensityMode') self.calculateDensity = self.getCalculateMode(self.densityMode) if self.nodeExists(collectorNode, 'CalibrationMethod'): try: self.calibrationMethod = self.getNodeValue(collectorNode, 'CalibrationMethod') except: self.calibrationMethod = "" else: self.calibrationMethod = "" self.turbulenceWSsource = self.getNodeValueIfExists(collectorNode, 'TurbulenceWindSpeedSource', 'Reference') self.referenceWindDirection = self.getNodeValueIfExists(configurationNode, 'ReferenceWindDirection', None) profileNode = self.getNode(configurationNode, 'ProfileLevels') if self.nodeExists(configurationNode, 'ProfileLevels') else configurationNode self.readProfileLevels(profileNode) self.readREWS(configurationNode) # duplicate? self.readMeasurements(configurationNode) measNode = self.getNode(configurationNode, 'Measurements') shearNode = measNode if self.nodeExists(measNode, 'ShearMeasurements') else configurationNode self.setUpShearMeasurements(shearNode) if self.nodeExists(configurationNode,"Filters"): self.filters = self.readFilters([n for n in self.getNode(configurationNode,"Filters").childNodes if not n.nodeType in (n.TEXT_NODE,n.COMMENT_NODE)]) self.hasFilters = (len(self.filters) > 0) self.readExclusions(configurationNode) self.readCalibration(configurationNode) if self.nodeExists(configurationNode, 'SensitivityAnalysis'): self.readSensitivityAnalysis(configurationNode) else: self.sensitivityDataColumns = [] self.readTurbine(configurationNode) self.read_meta_data(configurationNode) self.read_pre_density(configurationNode) else: self.isNew = True self.name = None self.startDate = None self.endDate = None self.hubWindSpeedMode = 'None' self.calculateHubWindSpeed = False self.densityMode = 'None' self.calculateDensity = False self.turbulenceWSsource = 'Reference' self.calibrationMethod = 'None' self.rewsDefined = False self.numberOfRotorLevels = 0 self.rotorMode = '' self.hubMode = '' self.inputTimeSeriesPath = '' self.badData = -99.99 self.timeStepInSeconds = 600 self.dateFormat = '%Y-%m-%d %H:%M:%S' self.separator = "TAB" self.decimal = "FULL STOP" self.headerRows = 0 self.timeStamp = '' self.referenceWindSpeed = '' self.referenceWindSpeedStdDev = '' self.referenceWindDirection = None self.referenceWindDirectionOffset = 0 self.turbineLocationWindSpeed = '' self.turbineAvailabilityCount = '' self.hubWindSpeed= '' self.hubTurbulence = '' self.temperature = '' self.pressure = '' self.power = '' self.powerMin = '' self.powerMax = '' self.powerSD = '' self.density = '' self.inflowAngle = '' self.shearCalibrationMethod = 'None' self.referenceShearMeasurements = [] self.turbineShearMeasurements = [] self.rewsProfileLevels = [] self.filters = [] self.exclusions = [] self.calibrationStartDate = None self.calibrationEndDate = None self.siteCalibrationNumberOfSectors = 36 self.siteCalibrationCenterOfFirstSector = 0 self.calibrationFilters = [] self.calibrationSectors = [] self.hubHeight = None self.diameter = None self.cutInWindSpeed = None self.cutOutWindSpeed = None self.ratedPower = None self.rotor_tilt = None self.density_pre_correction_active = False self.density_pre_correction_wind_speed = None self.density_pre_correction_reference_density = None self.initialize_meta_data()
def __init__(self, path=None): self.datasets = path_manager.PathManager() self.specified_power_curve = path_manager.SinglePathManager() self.nominal_wind_speed_distribution = path_manager.SinglePathManager() self.specified_power_deviation_matrix = path_manager.SinglePathManager( ) self.path = path defaultExtrapolationMode = 'None' if path != None: self.isNew = False doc = self.readDoc(path) configurationNode = self.getNode(doc, 'Configuration') self.Name = self.getNodeValueIfExists(configurationNode, 'Name', None) self.powerCurveMinimumCount = self.getNodeInt( configurationNode, 'PowerCurveMinimumCount') if self.nodeExists(configurationNode, 'NegativePowerPeriodTreatment'): self.negative_power_period_treatment = self.get_power_treatment( configurationNode, 'NegativePowerPeriodTreatment') else: self.negative_power_period_treatment = 'Remove' if self.nodeExists(configurationNode, 'NegativePowerBinAverageTreatment'): self.negative_power_bin_average_treatment = self.get_power_treatment( configurationNode, 'NegativePowerBinAverageTreatment') else: self.negative_power_bin_average_treatment = 'Remove' if self.nodeExists(configurationNode, 'InterpolationMode'): self.interpolationMode = self.getNodeValue( configurationNode, 'InterpolationMode') else: self.interpolationMode = 'Linear' if self.interpolationMode == "Cubic": self.interpolationMode = "Cubic Spline" self.powerCurveMode = self.getNodeValue(configurationNode, 'PowerCurveMode') if self.nodeExists(configurationNode, 'PowerCurveExtrapolationMode'): self.powerCurveExtrapolationMode = self.getNodeValue( configurationNode, 'PowerCurveExtrapolationMode') else: if self.nodeExists(configurationNode, 'PowerCurvePaddingMode'): self.powerCurveExtrapolationMode = self.getNodeValue( configurationNode, 'PowerCurvePaddingMode') else: self.powerCurveExtrapolationMode = defaultExtrapolationMode #backwards compatibility if self.powerCurveExtrapolationMode == "Observed": self.powerCurveExtrapolationMode = "Last Observed" if self.nodeExists(configurationNode, 'PowerCurveBins'): powerCurveBinsNode = self.getNode(configurationNode, 'PowerCurveBins') self.powerCurveFirstBin = self.getNodeFloat( powerCurveBinsNode, 'FirstBinCentre') self.powerCurveLastBin = self.getNodeFloat( powerCurveBinsNode, 'LastBinCentre') self.powerCurveBinSize = self.getNodeFloat( powerCurveBinsNode, 'BinSize') else: self.setDefaultPowerCurveBins() self.readDatasets(configurationNode) self.read_inner_range(configurationNode) self.readTurbine(configurationNode) self.nominal_wind_speed_distribution.relative_path = self.getNodeValueIfExists( configurationNode, 'NominalWindSpeedDistribution', None) self.readDensityCorrection(configurationNode) self.readREWS(configurationNode) self.readTurbRenorm(configurationNode) self.readPowerDeviationMatrix(configurationNode) self.readProductionByHeight(configurationNode) self.readWebService(configurationNode) self.read_alternative_corrections(configurationNode) else: self.isNew = True self.Name = "" self.powerCurveMinimumCount = 10 self.powerCurveMode = 'Specified' self.powerCurveExtrapolationMode = defaultExtrapolationMode self.negative_power_period_treatment = 'Remove' self.negative_power_bin_average_treatment = 'Remove' self.setDefaultPowerCurveBins() self.set_default_inner_range() self.rewsActive = False self.rewsVeer = True self.rewsUpflow = False self.rewsExponent = 3.0 self.turbRenormActive = False self.densityCorrectionActive = False self.powerDeviationMatrixActive = False self.productionByHeightActive = False self.web_service_active = False self.web_service_url = '' self.interpolationMode = 'Cubic Spline' self.calculated_power_deviation_matrix_dimensions = self.default_calculated_power_deviation_matrix_dimensions( ) self.power_deviation_matrix_minimum_count = 0 self.power_deviation_matrix_method = 'Average of Deviations' self.alternative_corrections = []