A surface profilometer was used to measure fracture profiles every 10 microns over the surfaces of a replica of a fracture in a red Permian sandstone, to within an accuracy of a few microns. These surface data were used as input to two finite element codes that solve the Navier-Stokes equations and the Reynolds equation, respectively. Numerical simulations of flow through these measured aperture fields were carried out at different values of the mean aperture, corresponding to different values of the relative roughness. Flow experiments were also conducted in casts of two regions of the fracture. At low Reynolds numbers, the Navier-Stokes simulations yielded transmissivities for the two fracture regions that were closer to the experimental values than were the values predicted by the lubrication model. In general, the lubrication model overestimated the transmissivity by an amount that varied as a function of the relative roughness, defined as the standard deviation of the aperture divided by the mean aperture. The initial deviations from linearity, for Reynolds numbers in the range 1-10, were consistent with the "weak inertia" model developed by Mei and Auriault for porous media, and with the results obtained computationally by Skjetne et al. in 1999 on a two-dimensional self-affine fracture. In the regime 10 < Re < 40, both the computed and measured transmissivities could be fit very well to a Forchheimer-type equation, in which the additional pressure drop varies quadratically with the Reynolds number.