The physical model for the incident angle modifier is based on Snell’s and Bougher’s laws, and was published by De Soto et al. (2006). Our presentation here includes correction to a few errors present in that paper. The first step is to calculate the angle of refraction ($$\theta_r$$) using Snell’s law.
$$\theta_{r}=\arcsin \left(\frac{1}{n} \sin \left( \theta\right)\right)$$, where $$n$$ is the index of refraction of the cover glass and the 1 in the numerator is the index of refraction of the air.
The incident angle modifier at an angle, $$\theta$$, is a ratio between the transmittance $$\tau \left( \theta \right)$$ at that angle and the transmittance when normal to the sun $$\tau \left( 0\right)$$:
$$IAM_B= \frac{\tau \left(\theta \right)}{\tau \left(0\right)}$$.
A good approximation of the transmittance of the module cover is given by:
$$\tau \left( \theta \right) = e^{-\left( \frac{KL}{ \cos \left ( \theta_r \right)} \right)} \left[ 1-\frac{1}{2}\left( \frac{\sin ^2\left (\theta_{r}- \theta \right)}{ \sin ^2 \left ( \theta_r + \theta \right ) } + \frac{\tan ^2\left (\theta_{r}- \theta \right)}{\tan^{2}\left ( \theta_ {r} +\theta \right)}\right) \right]$$,
where $$K$$ is the glazing extinction coefficient (1/meters) and $$L$$ is the glazing thickness (meters).
$$\tau \left(0\right)$$ can be determined by $$\tau\left(0\right) = \lim_{\theta \rightarrow 0} \tau \left ( \theta \right ) = \exp\left ( -KL \right ) \left[ 1-\left(\frac{1-n}{1+n} \right)^2 \right]$$ .
DeSoto et. al lists the following typical input parameters for PV modules:
$$n=1.526$$ for glass
$$K=4\; \textrm{m}^{-1}$$ and
$$L=0.002 \: \textrm{m}$$
The resulting IAM function is plotted below:

References
De Soto, W., S. A. Klein and W. A. Beckman (2006). “Improvement and validation of a model for photovoltaic array performance.” Solar Energy 80(1): 78-88.