Surface configurations for contact challenge

Real-space representations of the 0.1mm x 0.1mm surface (Fourier representation further below)

Units for x, y, and h: 0.1 mm

When reading in data and plotting it, make sure it looks like the original representation (modulo symmetry operations, such as a 90 degree rotation), see bottom of this page.

Format 1 (ASCII, xyz)
# comments
x, y, h
x, y, h

empty line after n lines, where n is the discretization as stated in the name of the file, e.g., n=512.
surface.0512× (11MB)
surface.1024× (42MB)
surface.2048× (112MB)

Format 2 (ASCII, matrix form)
h(x=0,y=0), h(x=dX,y=0), h(x=2dX,y=0), …
h(x=0,y=dY), h(x=dX,y=dY), h, …

dX = dY = 0.1mm/n, where n is again the discretization, e.g., n = 512
surface.0512×0512.ASCII.dat (3.3MB)
surface.1024×1024.ASCII.dat (14MB)
surface.2048×2048.ASCII.dat (80MB)

Format 3 (hdf5, high precision, see
similar to format 2, get more info on files with h5dump
surface.2048×2048.h5 (17MB)
surface.4096×4096.h5 (65MB)
surface.8192×8192.h5 (257MB)

Fourier representation
# comments
qX, qY, Re{h(q)}, Im{h(q)}
qX, qY, Re{h(q)}, Im{h(q)}

qX and qY are written as integers. Convert into real units via: qX → 2 pi qX / 0.1mm
For the Fourier transform, we use FFTW3. If you use another Fourier transform, make sure to scale h(q) such that your surface image looks like the one shown below.

Format 4 (ASCII, high precision)
Only non-zero Fourier coefficients are included to keep the file size small.
surface.Fourier.ASCII.dat (74MB)

Format 5 (hdf5, high precision, see
Only non-zero Fourier components are included. Get more information on file with h5dump.
surface.Fourier.h5 (36MB)

A code generating real-space surfaces for your own desired dimensions can be downloaded here: makeReal.cpp.
The code uses the FFTW, which you may have to install. Compile with:
g++ makeReal.cpp -std=c++11 -lfftw3 -o makeReal.exe

Note: Dark areas of shown surface touch the counter face first.