예제 #1
0
def parameterSweep(dataFile, inputs, inputs2, index):
    # Record time to solve
    t0 = time.time()

    # Load_Data - Expected Columns (units): DatetimeUTC (UTC format), t (min), dt (min), demand (MW), solar (MW)
    data = pd.read_csv(dataFile)
    data.loc[:, 'solar'] = data.loc[:, 'solar'] * inputs2.solarCapacity / 32.3

    # Solar Plant - All inputs are optional (default values shown below)
    solar = Solar(plantType='PV',
                  capacity=inputs2.solarCapacity,
                  cost_install=2004.,
                  cost_OM_fix=22.02)

    # Battery Storage - All inputs are optional (default values shown below)
    batt = Battery(capacity=inputs2.battSize,
                   rateMax=inputs2.battSize,
                   roundTripEff=90.0,
                   cost_install=2067.,
                   cost_OM_fix=35.6,
                   initCharge=100.0)

    # Fuel - All inputs are optional (default values shown below)
    fuel = Fuel(fuelType='NATGAS', cost=23.27, emissions=0.18)

    # Create power plant
    # 1 - create pandas series of power plant characteristics
    plant_inputs = defaultInputs(
        plantType='CCGT'
    )  # Start with CCGT default inputs and then adjust to specific case
    plant_inputs.plantType = inputs.sheetname
    plant_inputs.Eff_A = inputs.Eff_A
    plant_inputs.Eff_B = inputs.Eff_B
    plant_inputs.Eff_C = inputs.Eff_C
    plant_inputs.maxEfficiency = inputs.maxEfficiency
    plant_inputs.rampRate = inputs.rampRate
    plant_inputs.minRange = inputs.minRange
    plant_inputs.cost_install = inputs.cost_install
    plant_inputs.cost_OM_fix = inputs.cost_OM_fix
    plant_inputs.cost_OM_var = inputs.cost_OM_var
    plant_inputs.co2CaptureEff = inputs.co2CaptureEff
    plant_inputs.capacity = inputs2.plantSize  # MW

    # 2 - create power plant
    plant = PowerPlant(plant_inputs)

    # Create HRES (controller is built-in), data and plant are only required inputs
    # all other components will revert to default if not specified
    hres = HRES(data, plant, solar=solar, batt=batt, fuel=fuel, i=0.02, n=20)

    # Run Simulation
    results = hres.run()

    # Display Elapsed Time
    t1 = time.time()
    print("Time Elapsed: " + str(round(t1 - t0, 2)) + " s")

    # Combine inputs and results into output and then return
    output = pd.concat([inputs, inputs2, results], axis=0)
    return output
예제 #2
0
    def __init__(self,
                 data,
                 solar=Solar(),
                 batt=Battery(),
                 grid=Grid(capacity=1000.),
                 i=0.02,
                 n=20):
        # Create PowerPlant with 0.0 MW Capacity
        plant_inputs = defaultInputs(plantType='CCGT')
        plant_inputs.capacity = 0.0  # (MW)
        plant_inputs.maxEfficiency = 100.0  # (%)
        plant = PowerPlant(plant_inputs)

        # Create default fuel, will not be used
        fuel = Fuel()

        # All other inputs are passed on to HRES function
        HRES.__init__(self,
                      data,
                      plant=plant,
                      solar=solar,
                      batt=batt,
                      fuel=fuel,
                      grid=grid,
                      i=0.02,
                      n=20)
예제 #3
0
def parameter_sweep(batt_size):
    # Record time to solve
    t0 = time.time()

    # Load_Data - Expected Columns (units): DatetimeUTC (UTC format), t (min), dt (min), demand (MW), solar (MW)
    data = pd.read_csv('data063_Oct30th.csv')

    # Solar Plant - All inputs are optional (default values shown below)
    solar = Solar(plantType='PV',
                  capacity=31.2,
                  cost_install=2004.,
                  cost_OM_fix=22.02)

    # Battery Storage - All inputs are optional (default values shown below)
    batt = Battery(capacity=batt_size,
                   rateMax=batt_size,
                   roundTripEff=90.0,
                   cost_install=2067.,
                   cost_OM_fix=35.6)

    # Fuel - All inputs are optional (default values shown below)
    fuel = Fuel(fuelType='NATGAS', cost=23.27, emissions=0.18)

    # Create power plant
    # 1 - create pandas series of power plant characteristics
    plant_inputs = defaultInputs(
        plantType='CCGT'
    )  # CCGT(default) or OCGT (Combined Cycle Gas Turbine or Open Cycle Gas Turbine)
    # 2 - create power plant
    plant = PowerPlant(plant_inputs)

    # Create HRES (controller is built-in)
    # data and plant are only required inputs, all other components will revert to default if not specified
    hres = HRES(data, plant, solar=solar, batt=batt, fuel=fuel, i=0.02, n=20)

    # Run Simulation
    results = hres.run()

    # Display Elapsed Time
    t1 = time.time()
    print("Time Elapsed: " + str(round(t1 - t0, 2)) + " s")

    # Extract LCOE
    return results
예제 #4
0
    fuel = Fuel(fuelType='NATGAS', cost=10.58, emissions=0.18)

    # Create power plant
    # 1 - create pandas series of power plant characteristics
    plant_inputs = defaultInputs(
        plantType='CCGT'
    )  # Start with CCGT default inputs and then adjust to specific case
    plant_inputs.plantType = "sCO2"
    plant_inputs.Eff_A = -5.60E-03
    plant_inputs.Eff_B = 1.05E+00
    plant_inputs.Eff_C = 5.00E+01
    plant_inputs.maxEfficiency = 53.1
    plant_inputs.rampRate = 50.0
    plant_inputs.minRange = minRange
    # 2 - create power plant
    plant = PowerPlant(plant_inputs)

    # Create HRES (controller is built-in), data and plant are only required inputs
    # all other components will revert to default if not specified
    hres = HRES(data, plant, solar=solar, batt=batt, fuel=fuel, i=0.02, n=20)

    # Run Simulation
    results = hres.run()

    # Create Plots and save time series data
    saveName = 'Results_SampleDay_Oct30th_sCO2_' + str(minRange)
    # hres.plot_battStatus(caseName = saveName)
    # hres.plot_EBalance(caseName = saveName)
    # hres.plot_efficiency(caseName = saveName)
    # hres.plot_pwrRamps(caseName = saveName)
    hres.save(saveName)