def dia_111_pandey(sym, a0, nx=nx, ny=nx, nz=nz):
sym = string2symbols(sym)<EOL>if len(sym) == <NUM_LIT:1>:<EOL><INDENT>a = Diamond(sym[<NUM_LIT:0>],<EOL>size             = [nx, ny, nz],<EOL>latticeconstant  = a0,<EOL>directions=[ [<NUM_LIT:1>,-<NUM_LIT:1>,<NUM_LIT:0>], [<NUM_LIT:1>,<NUM_LIT:1>,-<NUM_LIT:2>], [<NUM_LIT:1>,<NUM_LIT:1>,<NUM_LIT:1>] ]<EOL>)<EOL><DEDENT>else:<EOL><INDENT>a = B3(sym,<EOL>size             = [nx, ny, nz],<EOL>latticeconstant  = a0,<EOL>directions=[ [<NUM_LIT:1>,-<NUM_LIT:1>,<NUM_LIT:0>], [<NUM_LIT:1>,<NUM_LIT:1>,-<NUM_LIT:2>], [<NUM_LIT:1>,<NUM_LIT:1>,<NUM_LIT:1>] ]<EOL>)<EOL><DEDENT>sx, sy, sz = a.get_cell().diagonal()<EOL>a.translate([sx/(<NUM_LIT:12>*nx), sy/(<NUM_LIT:4>*ny), sz/(<NUM_LIT:6>*nz)])<EOL>a.set_scaled_positions(a.get_scaled_positions()%<NUM_LIT:1.0>)<EOL>bulk = a.copy()<EOL>bondlen = a0*sqrt(<NUM_LIT:3>)/<NUM_LIT:4><EOL>x, y, z = a.positions.T<EOL>mask = np.abs(z-z.max()) < <NUM_LIT:0.1>*a0<EOL>top1, top2 = np.arange(len(a))[mask].reshape(-<NUM_LIT:1>, <NUM_LIT:2>).T<EOL>mask = np.logical_and(np.abs(z-z.max()) < bondlen, np.logical_not(mask))<EOL>topA, topB = np.arange(len(a))[mask].reshape(-<NUM_LIT:1>, <NUM_LIT:2>).T<EOL>y[topA] += bondlen/<NUM_LIT:3><EOL>y[topB] -= bondlen/<NUM_LIT:3><EOL>y[top1] += bondlen<EOL>x[top1] += a.cell[<NUM_LIT:0>,<NUM_LIT:0>]/(<NUM_LIT:2>*nx)<EOL>x[top2] += a.cell[<NUM_LIT:0>,<NUM_LIT:0>]/(<NUM_LIT:2>*nx)<EOL>mask = np.abs(z-z.min()) < <NUM_LIT:0.1>*a0<EOL>bot1, bot2 = np.arange(len(a))[mask].reshape(-<NUM_LIT:1>, <NUM_LIT:2>).T<EOL>mask = np.logical_and(np.abs(z-z.min()) < bondlen, np.logical_not(mask))<EOL>botA, botB = np.arange(len(a))[mask].reshape(-<NUM_LIT:1>, <NUM_LIT:2>).T<EOL>y[botA] += bondlen/<NUM_LIT:3><EOL>y[botB] -= bondlen/<NUM_LIT:3><EOL>y[bot2] -= bondlen<EOL>x[bot2] += a.cell[<NUM_LIT:0>,<NUM_LIT:0>]/(<NUM_LIT:2>*nx)<EOL>x[bot1] += a.cell[<NUM_LIT:0>,<NUM_LIT:0>]/(<NUM_LIT:2>*nx)<EOL>a.set_scaled_positions(a.get_scaled_positions()%<NUM_LIT:1.0>)<EOL>return bulk, a<EOL>
2x1 Pandey reconstructed (111) surface.