module photovoltaic
struct pv_module
    module_type # 模块类型
    stc_watts
    stc_eff
    ff
    aspect_ratio
    width
    length
    area
    vmp
    ndiode
    gamma
    ar_glass
    bifaciality  
    function pv_module(;module_type::Int=0,bifaciality::Float64=0.001
    )
        new(
        tilt,
        array_type,
        module_type,
        losses,
        azimuth,
        gcr,
        radius,
        name,
        location,
        existing_kw,
        min_kw,
        max_kw,
        installed_cost_per_kw,
        om_cost_per_kw,
        degradation_pct,
        macrs_option_years,
        macrs_bonus_pct,
        macrs_itc_reduction,
        kw_per_square_foot,
        acres_per_kw,
        inv_eff,
        dc_ac_ratio,
        prod_factor_series_kw,
        federal_itc_pct,
        federal_rebate_per_kw,
        state_ibi_pct,
        state_ibi_max,
        state_rebate_per_kw,
        state_rebate_max,
        utility_ibi_pct,
        utility_ibi_max,
        utility_rebate_per_kw,
        utility_rebate_max,
        production_incentive_per_kwh,
        production_incentive_max_benefit,
        production_incentive_years,
        production_incentive_max_kw
    )        
    end  
end

struct pv_array
    array_type

    dc_nameplate
    dc_ac_ratio
    ac_nameplate
    xfmr_rating
    ac_plant_max
    inv_eff_percent
    dc_loss_percent
    tilt
    azimuth
    rotlim
    function pv_array(;)
        new(

        )        
    end
end

function prodfactor(pv::PV,latitude::Real, longitude::Real; timeframe="hourly")
    
end

end



