Module Import alias Import alias identifier FunctionDef arguments args NameParam NameParam NameParam NameParam defaults body Expr Str Assign NameStore Call NameLoad Assign NameStore Dict Str Str Str Str Str Str Str Str Assign NameStore Call AttributeLoad NameLoad attr NameLoad NameLoad If Call NameLoad BinOpBitOr CompareLt AttributeLoad NameLoad attr Num CompareGtE AttributeLoad NameLoad attr Num body Print BinOpAdd BinOpAdd Str Str Str Assign SubscriptStore AttributeLoad NameLoad attr Index BinOpBitOr CompareLt AttributeLoad NameLoad attr Num CompareGtE AttributeLoad NameLoad attr Num Call NameLoad BinOpBitOr CompareLt AttributeLoad NameLoad attr Num CompareGtE AttributeLoad NameLoad attr Num Assign NameStore Call AttributeLoad NameLoad attr BinOpMult BinOpDiv Num NameLoad Call AttributeLoad NameLoad attr NameLoad Assign NameStore BinOpMult Call AttributeLoad NameLoad attr BinOpMult Num BinOpDiv BinOpMult NameLoad NameLoad Call AttributeLoad NameLoad attr NameLoad BinOpSub Num BinOpMult Num BinOpAdd BinOpDiv BinOpPow Call AttributeLoad NameLoad attr BinOpSub NameLoad NameLoad Num BinOpPow Call AttributeLoad NameLoad attr BinOpAdd NameLoad NameLoad Num BinOpDiv BinOpPow Call AttributeLoad NameLoad attr BinOpSub NameLoad NameLoad Num BinOpPow Call AttributeLoad NameLoad attr BinOpAdd NameLoad NameLoad Num Assign NameStore Num Assign NameStore Call AttributeLoad NameLoad attr BinOpMult BinOpDiv Num NameLoad Call AttributeLoad NameLoad attr NameLoad Assign NameStore BinOpMult Call AttributeLoad NameLoad attr BinOpMult Num BinOpDiv BinOpMult NameLoad NameLoad Call AttributeLoad NameLoad attr NameLoad BinOpSub Num BinOpMult Num BinOpAdd BinOpDiv BinOpPow Call AttributeLoad NameLoad attr BinOpSub NameLoad NameLoad Num BinOpPow Call AttributeLoad NameLoad attr BinOpAdd NameLoad NameLoad Num BinOpDiv BinOpPow Call AttributeLoad NameLoad attr BinOpSub NameLoad NameLoad Num BinOpPow Call AttributeLoad NameLoad attr BinOpAdd NameLoad NameLoad Num Assign NameStore BinOpDiv NameLoad NameLoad Assign SubscriptStore NameLoad Index CompareEq NameLoad Num Num Assign SubscriptStore NameLoad Index CompareGt Call NameLoad NameLoad BinOpBitOr Num CompareLt NameLoad Num Num Return NameLoad decorator_list
N/A N/A pvl_tools N/A numpy np pvl_physicaliam N/A N/A K L n theta N/A N/A N/A 
    Determine the incidence angle modifier using refractive 
    index, glazing thickness, and extinction coefficient

    pvl_physicaliam calculates the incidence angle modifier as described in
    De Soto et al. "Improvement and validation of a model for photovoltaic
    array performance", section 3. The calculation is based upon a physical
    model of absorbtion and transmission through a cover. Required
    information includes, incident angle, cover extinction coefficient,
    cover thickness

    Note: The authors of this function believe that eqn. 14 in [1] is
    incorrect. This function uses the following equation in its place:
    theta_r = arcsin(1/n * sin(theta))

    Parameters
    ----------

    K : float

            The glazing extinction coefficient in units of 1/meters. Reference
            [1] indicates that a value of  4 is reasonable for "water white"
            glass. K must be a numeric scalar or vector with all values >=0. If K
            is a vector, it must be the same size as all other input vectors.

    L : float

            The glazing thickness in units of meters. Reference [1] indicates
            that 0.002 meters (2 mm) is reasonable for most glass-covered
            PV panels. L must be a numeric scalar or vector with all values >=0. 
            If L is a vector, it must be the same size as all other input vectors.

    n : float

            The effective index of refraction (unitless). Reference [1]
            indicates that a value of 1.526 is acceptable for glass. n must be a 
            numeric scalar or vector with all values >=0. If n is a vector, it 
            must be the same size as all other input vectors.

    theta :float

            The angle of incidence between the module normal vector and the
            sun-beam vector in degrees. Theta must be a numeric scalar or vector.
            For any values of theta where abs(theta)>90, IAM is set to 0. For any
            values of theta where -90 < theta < 0, theta is set to abs(theta) and
            evaluated. A warning will be generated if any(theta<0 or theta>90).

    Returns
    -------

    IAM : float

       The incident angle modifier as specified in eqns. 14-16 of [1].
         IAM is a column vector with the same number of elements as the
         largest input vector.

    References
    ----------

    [1] W. De Soto et al., "Improvement and validation of a model for
     photovoltaic array performance", Solar Energy, vol 80, pp. 78-88,
     2006.

    [2] Duffie, John A. & Beckman, William A.. (2006). Solar Engineering 
     of Thermal Processes, third edition. [Books24x7 version] Available 
     from http://common.books24x7.com/toc.aspx?bookid=17160. 

    See Also 
    --------
          
    pvl_getaoi   
    pvl_ephemeris   
    pvl_spa    
    pvl_ashraeiam

     N/A Vars N/A locals N/A Expect N/A K L n theta x >= 0 x >= 0 x >= 0 num N/A var N/A N/A pvl_tools Parse Vars Expect N/A N/A any N/A N/A N/A var theta 0 N/A N/A var theta 90 N/A N/A N/A N/A Input incident angles <0 or >=90 detected For input angles with absolute value greater than 90, the  modifier is set to 0. For input angles between -90 and 0, the  angle is changed to its absolute value and evaluated. N/A N/A N/A var theta N/A N/A N/A N/A var theta 0 N/A N/A var theta 90 N/A abs N/A N/A N/A var theta 0 N/A N/A var theta 90 N/A thetar_deg N/A N/A pvl_tools asind N/A N/A 1.0 n N/A N/A pvl_tools sind theta N/A tau N/A N/A N/A np exp N/A -1.0 N/A N/A K L N/A N/A pvl_tools cosd thetar_deg N/A 1 N/A 0.5 N/A N/A N/A N/A N/A pvl_tools sind N/A thetar_deg theta 2 N/A N/A N/A pvl_tools sind N/A thetar_deg theta 2 N/A N/A N/A N/A pvl_tools tand N/A thetar_deg theta 2 N/A N/A N/A pvl_tools tand N/A thetar_deg theta 2 N/A zeroang 1e-06 N/A thetar_deg0 N/A N/A pvl_tools asind N/A N/A 1.0 n N/A N/A pvl_tools sind zeroang N/A tau0 N/A N/A N/A np exp N/A -1.0 N/A N/A K L N/A N/A pvl_tools cosd thetar_deg0 N/A 1 N/A 0.5 N/A N/A N/A N/A N/A pvl_tools sind N/A thetar_deg0 zeroang 2 N/A N/A N/A pvl_tools sind N/A thetar_deg0 zeroang 2 N/A N/A N/A N/A pvl_tools tand N/A thetar_deg0 zeroang 2 N/A N/A N/A pvl_tools tand N/A thetar_deg0 zeroang 2 N/A IAM N/A tau tau0 N/A N/A IAM N/A N/A theta 0 1 N/A N/A IAM N/A N/A N/A abs theta N/A 90 N/A IAM 0 0 N/A IAM N/A