Reciprocal lattices
Written by D Ködderitzsch
1 Reciprocal lattices
1.1 Real space lattice sc
(%i1) |
asc : [ [1,0,0] ,[0,1,0] ,[0,0,1] ]; |
(%i2) |
load(draw); plot_lattice( alat ) := block([], local(ndiv,n1,n2,n3), ndiv : 4, lattice : [], for n1: 0 while n1 <= ndiv do for n2 : 0 while n2 <= ndiv do for n3 : 0 while n3 <= ndiv do lattice : append (lattice,[ n1*alat[1]+n2*alat[2]+n3*alat[3] ] ), draw3d( line_width = 2, color =red, vector([0,0,0],alat[1]), vector([0,0,0],alat[2]), vector([0,0,0],alat[3]), point_size = 2, color = blue, point_type = filled_circle, points(lattice) ) )$ plot_lattice(asc)$ |
1.2 Reciprocal lattice sc
(%i5) |
cross (v1, v2) := determinant(matrix([[1, 0, 0], [0, 1, 0], [0, 0,1]], v1, v2))$ gen_rec_lattice(alat) := block([], b1 : 2 * %pi* cross(alat[2],alat[3]) / (alat[1].cross(alat[2],alat[3]) ), b2 : 2 * %pi* cross(alat[3],alat[1]) / (alat[2].cross(alat[3],alat[1]) ), b3 : 2 * %pi* cross(alat[1],alat[2]) / (alat[3].cross(alat[1],alat[2]) ), blat : [b1,b2,b3] )$ gen_rec_lattice(asc) ; asc[1] . blat[1]; asc[1] . blat[2]; asc[1] . blat[3]; alat : asc; draw3d( line_width = 4, color = blue, vector([0,0,0],alat[1]), vector([0,0,0],alat[2]), vector([0,0,0],alat[3]), line_width = 2, color = red, vector([0,0,0],blat[1]), vector([0,0,0],blat[2]), vector([0,0,0],blat[3]) )$ |
1.3 fcc
(%i13) |
afcc : [ [ 0.5 , 0.5 , 0 ], [ 0 , 0.5 , 0.5 ], [ 0.5 , 0 , 0.5 ] ]; plot_lattice(afcc)$ gen_rec_lattice(afcc) ; |
(%i16) | plot_lattice(blat )$ |
1.4 bcc
(%i17) |
abcc : [ [ -0.5, 0.5, 0.5], [ 0.5, -0.5, 0.5], [ 0.5, 0.5, -0.5] ]; plot_lattice(abcc)$ gen_rec_lattice(abcc) ; |
(%i20) | plot_lattice(blat)$ |