Exemple #1
0
    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 = []