Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Компьютерная визуализация нанообъектов. Учебное пособие
.pdf
71
Задание:
1) Построить в среде Octave/Matlab атомный скелет углеродной
нанотрубки типа «armchair» длиной 2 нм, состоящей из 6 углеродных
шестигранников по окружности. Сохранить модель в виде графического файла.
2) Построить в среде Octave/Matlab атомный скелет углеродной
нанотрубки типа «armchair» длиной 8 нм, состоящей из 18 углеродных
шестигранников по окружности. Сохранить модель в виде графического файла.
Вариант работающей программы:
clc
t=0.1422;
% нм, длина связи
l=2;
% нм, длина нанотрубки
r=3*t;
% нм, расстояние между ячейками по окружности нм
n= 6;
% количество ячеек по окружности
h=2*t*sin(pi/3);
% нм, высота ячейки
H=round(l/h);
% количество ячеек вдоль нанотрубки
Rt=r/(2*sin(pi/n));
% нм, радиус нанотрубки
X=[];
Y=[];
Z=[];
% Первый этап – задание координат ячеек первого ряда вокруг
нанотрубки
phi=0:2*pi/n:2*pi;
x0=Rt.*cos(phi);
y0=Rt.*sin(phi);
z0=zeros(size(x0));
x1=Rt.*cos(phi+pi/(3*n/2));
y1=Rt.*sin(phi+pi/(3*n/2));

72
x2=Rt.*cos(phi+pi/(4*n));
y2=Rt.*sin(phi+pi/(4*n));
x3=Rt.*cos(phi-pi/(4*n));
y3=Rt.*sin(phi-pi/(4*n));
x4=Rt.*cos(phi-pi/(3*n/2));
y4=Rt.*sin(phi-pi/(3*n/2));
x8=Rt.*cos(phi+pi*4/(3*n));
y8=Rt.*sin(phi+pi*4/(3*n));
z=zeros(size(x1));
% Второй этап – задание координат ячеек вдоль нанотрубки
for i=1:1:H;
Xs=[];
Ys=[];
Zs=[];
X=vertcat(X,x1,x2,x3,x4,x3,x2,x1,x8);
Y=vertcat(Y,y1,y2,y3,y4,y3,y2,y1,y8);
Z=vertcat(Z,z+h*(.5+i-1),z+h*i,z+h*i,z+h*(.5+i-1),z+h*(i-1),
z+h*(i-1), z+h*(.5+i-1),z+h*(.5+i-1));
Xs=[x1;x2;x3;x4;x3;x2;x1;x8];
Ys=[y1;y2;y3;y4;y3;y2;y1;y8];
Zs=[z+h*(.5+i-1);z+h*i;z+h*i;z+h*(.5+i-1);z+h*(i-1);z+h*(i-1);
z+h*(.5+i-1);z+h*(.5+i-1)];
plot3(Xs,Ys,Zs,'k')
hold on
end
% Третий этап – построение межатомных связей с помощью
линий, а атомов с помощью круглого маркера
plot3(X,Y,Z,'o','markeredgecolor','k','markerfacecolor','k', 'markersize', 5)
hold on
axis equal

73
Рис. 30. Пример визуализации фрагмента углеродной
нанотрубки средствами Octave/Matlab
Содержание отчета по работе:
- Код программы.
- Визуализация модели атомного скелета углеродной нанотрубки
длиной 5 нм, состоящей из 12 углеродных шестигранников по окружности.
- Визуализация модели атомного скелета углеродной нанотрубки
длиной 8 нм, состоящей из 18 углеродных шестигранников по окружности.
- Вывод.

74
Лабораторная работа № 7
Тема: Визуализация структуры фрагмента спиральной
углеродной нанотрубки типа «zigzag» средствами программной
среды Matlab/Octave
Цель работы: Освоить навыки визуализации спиральной угле-
родной нанотрубки типа «zigzag» средствами программной среды
Matlab/Octave.
Приборы и материалы: Компьютер с предустановленой про-
граммным пакетом Octave (Matlab или аналогичным).
Задание:
1) Построить в среде Octave/Matlab атомный скелет спиральной
углеродной нанотрубки типа «zigzag» длиной 5 нм и диаметром 2,5 нм.
Сохранить модель в виде графического файла.
2) Построить в среде Octave/Matlab атомный скелет углеродной
нанотрубки типа «armchair» длиной 8 нм, состоящей из трех полных
витков. Сохранить модель в виде графического файла.
Вариант работающей программы:
clc
t=0.1422;
% нм, длина связи
k=10;
% степень закручивания нанотрубки
l=5;
% длина нанотрубки, нм
h=3*t;
% нм, высота ячейки
H=round(l/h);
% количество ячеек вдоль нанотрубки
phi=0:pi/3:24*pi;
% равномерно возрастающий угловой параметр
r=t*sqrt(3);
X=[];
Y=[];
X0=[];

75
Y0=[];
Z=[];
% Первый этап – задание координат ячеек первого ряда вокруг
нанотрубки
L0=25;
%нм, исключенный внутренний отрезок дуги спирали
L1=35;
% нм, длина дуги спирали за вычетом отрезка L0
L2=L0:r:L1;
ddL=t*sin(pi/3);
L3=L2+ddL;
L4=L2-ddL;
phi1=k*(L2).^.5;
kk=.082;
x1=kk*r*phi1.*cos(phi1);
y1=kk*r*phi1.*sin(phi1);
phi2=k*(L3).^.5;
x2=kk*r*phi2.*cos(phi2);
y2=kk*r*phi2.*sin(phi2);
phi3=k*(L4).^.5;
x3=kk*r*phi3.*cos(phi3);
y3=kk*r*phi3.*sin(phi3);
z=zeros(size(x1));
% Второй этап – задание координат ячеек вдоль нанотрубки
for i=1:1:H;
X=vertcat(X,x1,x2,x2,x1);
Y=vertcat(Y,y1,y2,y2,y1);
Z=vertcat(Z,z+3*t*(i-1),(z+t/2)+3*t*(i-1), (z+3*t/2)+3*t*(i-1),
z+2*t+3*t*(i-1));
X0=vertcat(X0,x1,x3,x3,x1);
Y0=vertcat(Y0,y1,y3,y3,y1);
End
% Третий этап – построение межатомных связей с помощью
линий, а атомов с помощью круглого маркера
lot3(X,Y,Z,'o','markeredgecolor','k','markerfacecolor','k','MarkerS
ize',3)

76
hold on
plot3(X,Y,Z,'k')
hold on
plot3(X0,Y0,Z,'k')
axis equal
Рис. 31. Пример визуализации фрагмента углеродной
спирализованой нанотрубки средствами Octave/Matlab
Содержание отчета по работе:
- Код программы.
- Визуализация модели атомного скелета спирализованой угле-
родной нанотрубки типа «zigzag» длиной 5 нм и диаметром 2,5 нм.
- Визуализация модели атомного скелета углеродной нанотрубки
типа «armchair» длиной 8 нм, состоящей из трех полных витков.
- Вывод.

77
Лабораторная работа № 8
(± 3φ, 0, ± 1);
(1)
(± (1 + 2φ), ± φ, ± 2);
(2)
(± (2 + φ), ± 2φ, ± 1)/
(3)
(± 1, ± 3φ, 0);
(4)
(± 2, ± (1 + 2φ), ± φ);
(5)
(± 1, ± (2 + φ), ± 2φ).
(6)
(0, ± 1, ± 3φ);
(7)
(± φ, ± 2, ± (1 + 2φ));
(8)
(± 2φ, ± 1, ± (2 + φ)).
(9)
Тема: Визуализация атомного скелета фрагмента фуллерена С60
средствами программной среды Matlab/Octave
Цель работы: Освоить навыки визуализации фуллерена C60
средствами программной среды Matlab/Octave.
Приборы и материалы: Компьютер с предустановленой про-
граммным пакетом Octave (Matlab или аналогичным).
Задание:
1) Построить в среде Octave/Matlab фуллереноподобну структуру.
Основой построения являются аналитические формулы расчета координат усеченного икосаэдра (Weisstein Eric W. «Icosahedral group»,
Mathworld):
Ось X:
Ось Y:
Ось Z:
2) Соединить вершины модели фуллерена в 6 и 5-угольники.
3) Изменить параметры визуализации: толщина линий связи, размер сфер в вершине.
Вариант работающей программы:
%Расчет координат вершин фуллерена
clc
f=[];
phi=(1+sqrt(5))/2;
A=[];

78
B=[];
C=[];
XA=[];
XB=[];
XC=[];
YA=[];
YB=[];
YC=[];
ZA=[];
ZB=[];
ZC=[];
% Расчет координат X по формуле (1)
xay=0;
for xax=-3*phi:6*phi:3*phi;
for xaz=-1:2:1;
XA=vertcat(XA,[xax,xay,xaz]);
end
end
% Расчет координат X по формуле (2)
for xbx=-(1+2*phi):2*(1+2*phi):(1+2*phi);
for xby=-phi:2*phi:phi
for xbz=-2:4:2
XB=vertcat(XB,[xbx,xby,xbz]);
end
end
end
% Расчет координат X по формуле (3)
for xcx=-(2+phi):2*(2+phi):2+phi;
for xcy=-2*phi:4*phi:2*phi
for xcz=-1:2:2
XC=vertcat(XC,[xcx,xcy,xcz]);
end
end
end
% Расчет координат Y по формуле (4)
yaz=0;

79
for yax=-1:2:1;
for yay=-3*phi:6*phi:3*phi
YA=vertcat(YA,[yax,yay,yaz]);
end
end
% Расчет координат Y по формуле (5)
for ybx=-2:4:2;
for yby=-(1+2*phi):(1+2*phi)*2:(1+2*phi)
for ybz=-phi:2*phi:phi
YB=vertcat(YB,[ybx,yby,ybz]);
end
end
end
% Расчет координат Y по формуле (6)
for ycx=-1:2:1;
for ycy=-(2+phi):(2+phi)*2:(2+phi)
for ycz=-2*phi:4*phi:2*phi
YC=vertcat(YC,[ycx,ycy,ycz]);
end
end
end
% Расчет координат Z по формуле (7)
zax=0;
for zay=-1:2:1
for zaz=-3*phi:6*phi:3*phi
ZA=vertcat(ZA,[zax,zay,zaz]);
end
end
% Расчет координат Z по формуле (8)
for zbx=-phi:2*phi:phi;
for zby=-2:4:2
for zbz=-(1+2*phi):(1+2*phi)*2:(1+2*phi)
ZB=vertcat(ZB,[zbx,zby,zbz]);
end
end
end

80
% Расчет координат Z по формуле (9)
for zcx=-2*phi:4*phi:2*phi;
for zcy=-1:2:1
for zcz=-(2+phi):(2+phi)*2:(2+phi)
ZC=vertcat(ZC,[zcx,zcy,zcz]);
end
end
end
% Объединение массива координат
F=vertcat(A,B,C,XA,XB,XC,YA,YB,YC,ZA,ZB,ZC);
%Визуализация вершин фуллерена
plot3(F(:,1),F(:,2),F(:,3),'o','markeredgecolor','k', 'markerfacecol-
or','k', 'markersize', 10);
axis equal
% Соединение вершин фуллерена путем сортировки взаимных
расстояний
[i,j]=size(F);
R1=[];
R2=[];
xr=[];
yr=[];
zr=[];
for i1=1:1:i;
for i2=1:1:i;
R=sqrt((F(i1,1)-F(i2,1))^2+(F(i1,2)-F(i2,2))^2+(F(i1,3)-
F(i2,3))^2);
if R>0 & R<3
xr=horzcat(F(i1,1),F(i2,1));
yr=horzcat(F(i1,2),F(i2,2));
zr=horzcat(F(i1,3),F(i2,3));
hold on
plot3(xr,yr,zr,'color','k','Linewidth', 3);
hold on
end
end
end
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
