Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Компьютерная визуализация нанообъектов. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
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', 'mark­ersize', 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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]