コード例 #1
0
ファイル: 1pvwatts.py プロジェクト: acmbc68/omf
ssc.data_set_number(dat, 'inv_eff', 0.92)
ssc.data_set_number(dat, 'fd', 1.0)
ssc.data_set_number(dat, 'i_ref', 1000)
ssc.data_set_number(dat, 'poa_cutin', 0)
ssc.data_set_number(dat, 'w_stow', 0)
# complicated optional inputs
# ssc.data_set_array(dat, 'shading_hourly', ...) 	Hourly beam shading factors
# ssc.data_set_matrix(dat, 'shading_mxh', ...) 		Month x Hour beam shading factors
# ssc.data_set_matrix(dat, 'shading_azal', ...) 	Azimuth x altitude beam shading factors
# ssc.data_set_number(dat, 'shading_diff', ...) 	Diffuse shading factor
# ssc.data_set_number(dat, 'enable_user_poa', ...)	Enable user-defined POA irradiance input = 0 or 1
# ssc.data_set_array(dat, 'user_poa', ...) 			User-defined POA irradiance in W/m2


# run PV system simulation
mod = ssc.module_create("pvwattsv1")
ssc.module_exec(mod, dat)

# OLD print results
# ac = ssc.data_get_array(dat, "ac")
# ann = sum([x/1000 for x in ac])
# print "PVWatts V1 Simulation ok, e_net (annual kW)=", ann

# Extract data.
# Geodata.
city = ssc.data_get_string(dat, 'city')
state = ssc.data_get_string(dat, 'state')
lat = ssc.data_get_number(dat, 'lat')
lon = ssc.data_get_number(dat, 'lon')
elev = ssc.data_get_number(dat, 'elev')
# Weather
コード例 #2
0
ファイル: simpleSamMatrix.py プロジェクト: cdkkim/omf
                         0, 0, 0, 0, 0, 0, 0, 0.6625, 0.9625, 1, 1, 1, 1, 1,
                         0.6125, 0.4, 0, 0, 0, 0, 0, 0, 0, 0
                     ],
                     [
                         0, 0, 0, 0, 0, 0, 0, 0.2, 0.9125, 1, 1, 1, 1, 1,
                         0.7375, 0.2125, 0, 0, 0, 0, 0, 0, 0, 0
                     ],
                     [
                         0, 0, 0, 0, 0, 0, 0, 0.0625, 0.7, 1, 1, 1, 0.9375,
                         0.8, 0.7, 0.1875, 0, 0, 0, 0, 0, 0, 0, 0
                     ],
                     [
                         0, 0, 0, 0, 0, 0, 0, 0, 0.45, 0.95, 1, 1, 0.8125,
                         0.3625, 0.3625, 0.375, 0, 0, 0, 0, 0, 0, 0, 0
                     ],
                     [
                         0, 0, 0, 0, 0, 0, 0, 0.0125, 0.525, 0.95, 1, 0.9875,
                         0.75, 0.175, 0.2125, 0.275, 0, 0, 0, 0, 0, 0, 0, 0
                     ]])

# run PV system simulation
mod = ssc.module_create("pvwattsv1")
ssc.module_exec(mod, dat)

# print results
ann = 0
ac = ssc.data_get_array(dat, "ac")
for i in range(len(ac)):
    ac[i] = ac[i] / 1000
    ann += ac[i]
print "PVWatts V1 Simulation ok, e_net (annual kW)=", ann
コード例 #3
0
ファイル: 2swh.py プロジェクト: acmbc68/omf
ssc.data_set_number(dat, "hx_eff", 0.5) 				#Heat exchanger effectiveness			0..1 POSITIVE
ssc.data_set_number(dat, "T_room", 18.3) 				#Ambient temperature in mech room		C POSITIVE
ssc.data_set_number(dat, "T_tank_max", 66) 				#Max temperature in storage tank		C POSITIVE
ssc.data_set_number(dat, "T_set", 50) 					#Set temperature						C POSITIVE
ssc.data_set_number(dat, "pump_power", 40) 				#Pump power								W POSITIVE
ssc.data_set_number(dat, "pump_eff", 0.8) 				#Pumping efficiency						%
ssc.data_set_number(dat, "FRta", 0.681) 				#FRta									?
ssc.data_set_number(dat, "FRUL", 3.82) 					#FRUL									?
ssc.data_set_number(dat, "iam", -0.43) 					#Incidence angle modifier				?
ssc.data_set_number(dat, "max_iter", 100) 				#Max iterations allowed					? ?=100	MIN=0,MAX=1000,INTEGER
ssc.data_set_number(dat, "ftol_iter", 0.01) 			#Iteration tolerance					? ?=0.01 POSITIVE



# run solar water heating system simulation
mod = ssc.module_create("swh")
ssc.module_exec(mod, dat)

# extract results 
varNames = ['beam','diffuse','T_dry','Q_deliv','Q_useful', 'T_hot', 'T_cold', 'draw']
rezzies = {var:ssc.data_get_array(dat, var) for var in varNames}

# print results
for key in rezzies:	print key, len(rezzies[key]), rezzies[key][1:24]

# graph results
pyp.figure('swh annual output')
pyp.subplots_adjust(left=0.03, bottom=0.05, right=0.98, top=0.98)
pyp.subplot(411)
pyp.plot(rezzies['beam'], label='beam')
pyp.plot(rezzies['diffuse'], label='diffuse')
コード例 #4
0
ファイル: solarTSPPA.py プロジェクト: acmbc68/omf
ssc.data_set_number(data, 'inv_snl_c0', inv_snl_c0 )
ssc.data_set_number(data, 'inv_snl_c1', inv_snl_c1 )
ssc.data_set_number(data, 'inv_snl_c2', inv_snl_c2 )
ssc.data_set_number(data, 'inv_snl_c3', inv_snl_c3 )
ssc.data_set_number(data, 'inv_snl_paco', inv_snl_paco )
ssc.data_set_number(data, 'inv_snl_pdco', inv_snl_pdco )
ssc.data_set_number(data, 'inv_snl_pnt', inv_snl_pnt )
ssc.data_set_number(data, 'inv_snl_pso', inv_snl_pso )
ssc.data_set_number(data, 'inv_snl_vdco', inv_snl_vdco )
ssc.data_set_number(data, 'inv_snl_vdcmax', inv_snl_vdcmax )


# all variables have been set up for pvsamv1
# run the model

mod = ssc.module_create('pvsamv1')
ssc.module_exec(mod, data)


# return the relevant outputs desired

# ac_hourly = var('hourly_ac_net')
# ac_monthly = var('monthly_ac_net')
# ac_annual = var('annual_ac_net')

# outln( 'ac_monthly (kWh) = ' + ac_monthly)
# outln( 'ac_annual (kWh) = ' + ac_annual)

# end of PV performance calculations
コード例 #5
0
    0, 0, 0, 0, 0.08, 0.02, 0.35, 0.6, 1, 1.6, 2, 2.25, 2.35, 2.4, 2.4, 2.37,
    2.3, 2.09, 2, 2, 2, 2, 2, 1.98, 1.95, 1.8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    0, 0, 0
]
ssc.data_set_array(data, 'pc_power', pc_power)
ssc.data_set_number(data, 'rotor_di', 3.7)
ssc.data_set_number(data, 'shear', 0.14)
ssc.data_set_number(data, 'turbul', 0.1)
ssc.data_set_array(data, 'wt_x', [0])
ssc.data_set_array(data, 'wt_y', [0])
ssc.data_set_number(data, 'wake_model', 0)
ssc.data_set_number(data, 'model_choice', 0)
# Took wind model Weibull parameter from here: http://www.wind-power-program.com/wind_statistics.htm
ssc.data_set_number(data, 'weibullK', 2)
ssc.data_set_number(data, 'max_cp', 0.45)
ssc.data_set_number(data, 'resource_class', 0.45)
hub_efficiency = [
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
]
ssc.data_set_array(data, 'hub_efficiency', hub_efficiency)

# run wind system simulation
mod = ssc.module_create("windpower")
ssc.module_exec(mod, data)
ann = 0
ac = ssc.data_get_array(data, "farmpwr")
for i in range(len(ac)):
    ann += ac[i]
print 'WindWatts Simulation ok, e_net (annual kW)=', ann
コード例 #6
0
ssc.data_set_number(data, 'inverter_model', 1)

ssc.data_set_number(data, 'inv_snl_c0', inv_snl_c0)
ssc.data_set_number(data, 'inv_snl_c1', inv_snl_c1)
ssc.data_set_number(data, 'inv_snl_c2', inv_snl_c2)
ssc.data_set_number(data, 'inv_snl_c3', inv_snl_c3)
ssc.data_set_number(data, 'inv_snl_paco', inv_snl_paco)
ssc.data_set_number(data, 'inv_snl_pdco', inv_snl_pdco)
ssc.data_set_number(data, 'inv_snl_pnt', inv_snl_pnt)
ssc.data_set_number(data, 'inv_snl_pso', inv_snl_pso)
ssc.data_set_number(data, 'inv_snl_vdco', inv_snl_vdco)
ssc.data_set_number(data, 'inv_snl_vdcmax', inv_snl_vdcmax)

# all variables have been set up for pvsamv1
# run the model

mod = ssc.module_create('pvsamv1')
ssc.module_exec(mod, data)

# return the relevant outputs desired

# ac_hourly = var('hourly_ac_net')
# ac_monthly = var('monthly_ac_net')
# ac_annual = var('annual_ac_net')

# outln( 'ac_monthly (kWh) = ' + ac_monthly)
# outln( 'ac_annual (kWh) = ' + ac_annual)

# end of PV performance calculations
コード例 #7
0
ファイル: sam_simulation.py プロジェクト: pesap/swc
def sam_simulation(nsrdb_data, meta=None, verbose=False, **kwargs):
    """SAM solar PV simulation

    Perform a PVWATTS5 simulation using some input information about the
    solar plant.

    Parameters
    ----------
        weather (pd.DataFrame): Solar radiation dataframe
        meta (pd.DataFrame): NSRDB metadata
        kwargs (dictionary): Dictionary containing simulation parameters

    Returns
    ----------
        CF (float): Capacity factor
        Generation (float): Generation over the year of simulation
        meto_data (pd.DataFrame): Dataframe with hourly generation
    """

    params = {
        "lat": kwargs["lat"],
        "lng": kwargs["lon"],
        "system_capacity": kwargs["system_capacity"],
        "dc_ac_ratio": kwargs["dc_ac_ratio"],
        "inv_eff": kwargs["inv_eff"],
        "losses": kwargs["losses"],
        "tilt": kwargs["tilt"],
        "gcr": kwargs["gcr"],
        "azimuth": kwargs["azimuth"],
        "interval": kwargs["interval"],
    }
    if verbose:
        print({key: value for key, value in params.items()})

    # Start sscapi module
    ssc = PySSC()
    weather_data = ssc.data_create()
    valid_keys = [
        "lat",
        "lon",
        "tz",
        "elev",
    ]
    for key, value in kwargs.items():
        bytestr = key.encode()  # Convert string to byte to read it on C
        if key in valid_keys:
            ssc.data_set_number(weather_data, bytestr, value)
    # Set tilt of system in degrees
    ssc.data_set_array(weather_data, b"year", nsrdb_data.index.year)
    ssc.data_set_array(weather_data, b"month", nsrdb_data.index.month)
    ssc.data_set_array(weather_data, b"day", nsrdb_data.index.day)
    ssc.data_set_array(weather_data, b"hour", nsrdb_data.index.hour)
    ssc.data_set_array(weather_data, b"minute", nsrdb_data.index.minute)
    ssc.data_set_array(weather_data, b"dn", nsrdb_data["DNI"])
    ssc.data_set_array(weather_data, b"df", nsrdb_data["DHI"])
    ssc.data_set_array(weather_data, b"wspd", nsrdb_data["Wind Speed"])
    ssc.data_set_array(weather_data, b"tdry", nsrdb_data["Temperature"])

    # Create SAM compliant object
    sam_data = ssc.data_create()
    ssc.data_set_table(sam_data, b"solar_resource_data", weather_data)
    ssc.data_free(weather_data)
    valid_keys = [
        "system_capacity",  # kW
        "dc_ac_ratio",
        "array_type",
        "inv_eff",
        "losses",
        "gcr",
        "tilt",
        "azimuth",
        "interval",
        "adjust:constant",
    ]
    for key, value in kwargs.items():
        bytestr = key.encode()  # Convert string to byte to read it on C
        if key in valid_keys:
            ssc.data_set_number(sam_data, bytestr, value)
    if kwargs["model"] == "pvwattsv7" and "module_type" in kwargs:
        ssc.data_set_number(sam_data, b"module_type",
                            kwargs.get("module_type", 0))
    mod = ssc.module_create(kwargs.get("model").encode())

    ssc.module_exec(mod, sam_data)

    nsrdb_data["ac_generation_W"] = np.array(
        ssc.data_get_array(sam_data, b"ac"))
    nsrdb_data["dc_generation_W"] = np.array(
        ssc.data_get_array(sam_data, b"dc"))
    nsrdb_data["dc_capacity_factor"] = (nsrdb_data["dc_generation_W"] *
                                        1e3) / kwargs["system_capacity"]
    nsrdb_data["POA"] = np.array(ssc.data_get_array(sam_data, b"poa"))

    # Module temperature in ºC
    nsrdb_data["TCell"] = np.array(ssc.data_get_array(sam_data, b"tcell"))

    # free the memory
    ssc.data_free(sam_data)
    ssc.module_free(mod)

    return nsrdb_data
コード例 #8
0
ファイル: geothermal.py プロジェクト: acmbc68/omf
ssc.data_set_number(dat, "eta_ref", 0.17)						#Desgin conversion efficiency	%
ssc.data_set_number(dat, "q_sby_frac", 0.2)						#% thermal power for standby mode	%
ssc.data_set_number(dat, "startup_frac", 0.2)					#% thermal power for startup	%
ssc.data_set_number(dat, "startup_time", 1)						#Hours to start power block	hours
ssc.data_set_number(dat, "pb_bd_frac", 0.1)						#Blowdown steam fraction	%
ssc.data_set_number(dat, "T_amb_des", 15)						#Design ambient temperature	C
ssc.data_set_number(dat, "CT", 1)								#Condenser type (Wet, Dry,Hybrid)	(1-3)		INTEGER
ssc.data_set_number(dat, "dT_cw_ref", 10)						#Design condenser cooling water inlet/outlet T diff	C
ssc.data_set_number(dat, "T_approach", 5)						#Approach Temperature	C
ssc.data_set_number(dat, "T_ITD_des", 16)						#Design ITD for dry system	C
ssc.data_set_number(dat, "P_cond_ratio", 1.0028)				#Condenser pressure ratio
ssc.data_set_number(dat, "P_cond_min", 1.25)					#Minimum condenser pressure	in Hg
ssc.data_set_number(dat, "hr_pl_nlev", 0)						## part-load increments	(0-9)		INTEGER
ssc.data_set_number(dat, "hc_ctl1", 0)							#HC Control 1
ssc.data_set_number(dat, "hc_ctl2", 0)							#HC Control 2
ssc.data_set_number(dat, "hc_ctl3", 0)							#HC Control 3
ssc.data_set_number(dat, "hc_ctl4", 0)							#HC Control 4
ssc.data_set_number(dat, "hc_ctl5", 0)							#HC Control 5
ssc.data_set_number(dat, "hc_ctl6", 0)							#HC Control 6
ssc.data_set_number(dat, "hc_ctl7", 0)							#HC Control 7
ssc.data_set_number(dat, "hc_ctl8", 0)							#HC Control 8
ssc.data_set_number(dat, "hc_ctl9", 0)							#HC Control 9
ssc.data_set_string(dat, "hybrid_dispatch_schedule", '1'*288)	#Daily dispatch schedule	TOUSCHED

# run PV system simulation
mod = ssc.module_create("geothermal")
ssc.module_exec(mod, dat)

# print results
ac = ssc.data_get_array(dat, "monthly_power")
print "Monthly Power", ac
コード例 #9
0
ファイル: geothermal.py プロジェクト: cdkkim/omf
ssc.data_set_number(dat, "pb_bd_frac", 0.1)  #Blowdown steam fraction	%
ssc.data_set_number(dat, "T_amb_des", 15)  #Design ambient temperature	C
ssc.data_set_number(dat, "CT",
                    1)  #Condenser type (Wet, Dry,Hybrid)	(1-3)		INTEGER
ssc.data_set_number(dat, "dT_cw_ref",
                    10)  #Design condenser cooling water inlet/outlet T diff	C
ssc.data_set_number(dat, "T_approach", 5)  #Approach Temperature	C
ssc.data_set_number(dat, "T_ITD_des", 16)  #Design ITD for dry system	C
ssc.data_set_number(dat, "P_cond_ratio", 1.0028)  #Condenser pressure ratio
ssc.data_set_number(dat, "P_cond_min", 1.25)  #Minimum condenser pressure	in Hg
ssc.data_set_number(dat, "hr_pl_nlev",
                    0)  ## part-load increments	(0-9)		INTEGER
ssc.data_set_number(dat, "hc_ctl1", 0)  #HC Control 1
ssc.data_set_number(dat, "hc_ctl2", 0)  #HC Control 2
ssc.data_set_number(dat, "hc_ctl3", 0)  #HC Control 3
ssc.data_set_number(dat, "hc_ctl4", 0)  #HC Control 4
ssc.data_set_number(dat, "hc_ctl5", 0)  #HC Control 5
ssc.data_set_number(dat, "hc_ctl6", 0)  #HC Control 6
ssc.data_set_number(dat, "hc_ctl7", 0)  #HC Control 7
ssc.data_set_number(dat, "hc_ctl8", 0)  #HC Control 8
ssc.data_set_number(dat, "hc_ctl9", 0)  #HC Control 9
ssc.data_set_string(dat, "hybrid_dispatch_schedule",
                    '1' * 288)  #Daily dispatch schedule	TOUSCHED

# run PV system simulation
mod = ssc.module_create("geothermal")
ssc.module_exec(mod, dat)

# print results
ac = ssc.data_get_array(dat, "monthly_power")
print "Monthly Power", ac