Plotting a 2D crystal lattice from two primitive lattice vectors
42 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Jennifer Garrison
el 7 de Sept. de 2019
Comentada: savitha muthanna
el 16 de Ag. de 2021
I am trying generate a plot of a crystal lattice based on two prmitive lattice vectors:
v1= -0.5i + -sqrt(3)/2j
v2= 1i
where i and j are orhtogonal unit vecotors to represent the x and y directions.
I am not sure where to begin.
2 comentarios
Respuesta aceptada
John D'Errico
el 8 de Sept. de 2019
First, you need to understand that MATLAB does not understand what you intend by this notation:
v1= -0.5i + -sqrt(3)/2j
Both i and j are sqrt(-1) in MATLAB. They are not distinct. Instead, just write them as vectors:
v1= [-0.5, -sqrt(3)/2];
v2= [1 , 0];
[x,y] = meshgrid(0:10,0:5);
xy = [x(:),y(:)];
T = [v1;v2];
xyt = xy*T;
xt = reshape(xyt(:,1),size(x));
yt = reshape(xyt(:,2),size(y));
plot(xt,yt,'ro-')
hold on
plot(xt',yt','r-')
axis equal
axis square
3 comentarios
Bjorn Gustavsson
el 29 de Abr. de 2020
Simply extend John's or my suggestion to 3-D. You can call meshgrid (or ndgrid) with 3 inputs and 3 outputs:
[i1,j2,k3] = meshgrid(0:3,0:4,0:2);
Then define your 3 lattice-vectors, and use plot3 to plot the grid.
savitha muthanna
el 16 de Ag. de 2021
@John D'Errico Would you know the primitive lattice vectors to generate a hex lattice with triangular(equilateral) cells?
Más respuestas (2)
Bjorn Gustavsson
el 8 de Sept. de 2019
If you do it stepwise it becomes "not too tricky":
e1 = [-0.5; -sqrt(3)/2]; % Your unit
e2 = [1; 0]; % vectors
[I1,I2] = meshgrid(-10:10,-8:8); % A 2-D set of points
r_crystal = [e1,e2]*[I1(:)';I2(:)']; % calculate r_c = n*e1 + m*e2 for all points
plot(r_crystal(1,:),r_crystal(2,:),'.')
You can dood.e with how big crystal you want or what shape, but this should give you something.
HTH
Ver también
Categorías
Más información sobre Condensed Matter & Materials Physics en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!