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] ];

Result

(%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)$

Result

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])
       )$

Result

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) ;

Result

(%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) ;

Result

(%i20) plot_lattice(blat)$


Created with wxMaxima.