Главная » Все файлы » Просмотр файлов из архивов » Документы » II.3 Метод Монте-Карло пробной частицы для свободномолекулярного режима

II.3 Метод Монте-Карло пробной частицы для свободномолекулярного режима (Нестреров С.Б., Васильев Ю.К., Андросов А.В. Методы расчета вакуумных систем), страница 2

2018-01-10СтудИзба

Описание файла

Файл "II.3 Метод Монте-Карло пробной частицы для свободномолекулярного режима" внутри архива находится в папке "Нестреров С.Б., Васильев Ю.К., Андросов А.В. Методы расчета вакуумных систем". Документ из архива "Нестреров С.Б., Васильев Ю.К., Андросов А.В. Методы расчета вакуумных систем", который расположен в категории "". Всё это находится в предмете "вакуумная и плазменная электроника" из 3 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "вакуумная и плазменная электроника (вакплазэл)" в общих файлах.

Онлайн просмотр документа "II.3 Метод Монте-Карло пробной частицы для свободномолекулярного режима"

Текст 2 страницы из документа "II.3 Метод Монте-Карло пробной частицы для свободномолекулярного режима"

Угловое распределение частиц может быть не только диффузным. Однако, с точки зрения построения программы, при изменении типа углового распределения изменится только одна строка, в которой определяется угол θ (во фрагменте кода переменная T). Подробно о разных типах распределения см. параграф II.3.5.

Траектория полета молекулы представляет собой прямую линию, параметрическое уравнение которой представим в виде

(II.3.5)

где x , y , z – координаты точки вылета частицы; l, m, n – направляющие косинусы, определяющие направление полета; t – параметр; x, y, z – координаты возможной точки «посадки». Таким образом, выбор направления полета частицы сводится к определению значений направляющих косинусов, которые зависят, во-первых, от положения точки вылета в пространстве (необходимо учитывать тип поверхности вылета – плоскость, цилиндр, конус, сфера и углы наклона касательной плоскости по отношению к глобальным осям), а во-вторых, от описанных выше углов ψ и θ, которые определяют направление вылета с касательной плоскости.

Направляющие косинусы определяются по следующим соотношениям.

Формулы для нахождения направляющих косинусов при вылете с плоскости z=c:

(II.3.6)

где – углы, определяющие направление вылета
( – значение датчика случайных чисел).

Формулы для нахождения направляющих косинусов при старте с цилиндрической поверхности :

(II.3.7)

где – углы, определяющие направление вылета
( – значение датчика случайных чисел);

– угол наклона точки (x0, y0) в плоскости XOY.

Формулы для нахождения направляющих косинусов при старте с конической или сферической поверхности:

(II.3.8)

где – углы, определяющие направление вылета
( – значение датчика случайных чисел);

– угол наклона точки (x0, y0) в плоскости XOY;

– угол наклона точки (x0, z0) в плоскости XOZ или угол между осью OZ и образующей конуса.

Фрагмент кода на языке Паскаль (выполненный в среде Delphi 3), реализующий функцию нахождения направляющих косинусов в зависимости от типа поверхности (аргумент P: 1 – плоскость c, 2 – цилиндр, 3 – конус или сфера), углов определяющих направление вылета ψ и θ (вызов процедуры GetAngleDiff) и углов наклона точки вылета и (аргументы A и G соответственно), показан ниже:

procedure UpdateDirect(var P:Integer; A,G:Extended);
var
Psi,Tetta:Extended;
label UpdateDirect1;
begin
UpdateDirect1:
GetAngleDiff(Psi,Tetta); // отдельно вызывать не нужно
Case P of
1:
begin
NCos:=Cos(Tetta);

// Направляющие косинусы в зависимости от
LCos:=Sin(Tetta)*Cos(Psi); // типа поверхности P: 1-плоскость z=С 2-цилиндр x2+y2=r2
MCos:=Sin(Tetta)*Sin(Psi);

// 3-конус, сфера или плоскость Ax+By+Cz+D=0
end;
2:
begin
NCos:=Sin(Tetta)*Sin(Psi);
LCos:=Sin(Tetta)*Cos(Psi)*Cos(A)-Cos(Tetta)*Sin(A);
MCos:=Sin(Tetta)*Cos(Psi)*Sin(A)+Cos(Tetta)*Cos(A);
end;
3:
begin
NCos:=Cos(Tetta)*Sin(G)-Sin(Tetta)*Cos(Psi)*Cos(G);
LCos:=Sin(Tetta)*Sin(Psi)*Sin(A)-Sin(Tetta)*Cos(Psi)*Sin(G)*Cos(A)-Cos(Tetta)*Cos(G)*Cos(A);
MCos:=Sin(Tetta)*Sin(Psi)*Cos(A)+Sin(Tetta)*Cos(Psi)*Sin(G)*Sin(A)+Cos(Tetta)*Cos(G)*Sin(A);
end;
end;
if ((NCos=0) or (LCos=0) or (MCos=0)) then goto UpdateDirect1;
end;

Значения аргументов A и G данной функции можно задавать вручную или при помощи функции. Эта функция должна определять значения этих углов в зависимости от текущих координат частицы и от рода поверхности, на которой эта частица в данный момент находится.

  1. Нахождение точки столкновения частицы со стенкой

    1. Формирование массива параметров t

После того как найдены направляющие косинусы, необходимо найти точки пересечения траектории полета (прямой) с поверхностями системы. Запишем уравнение траектории полета:

В данный момент известными величинами являются координаты точки вылета (x0, y0, z0) и значения направляющих косинусов l, m, n. Для того, чтобы найти точки пересечения этой прямой с поверхностями структуры нужно решить K систем уравнений вида:

(II.3.9)

где i – номер поверхности структуры, причем 1<i<K.

Решениями этих систем будет массив параметров t. Формулы для нахождения значения параметра t при пересечении разных типов поверхностей показаны ниже.

Формула для нахождения параметра t при пересечении плоскости:

, (II.3.10)

где a, b, c, d – члены уравнения плоскости вида ax by cz = 0;
x0, y0, z0 – координаты точки вылета; l, m, n – направляющие косинусы траектории полета.

Формула для нахождения параметра t при пересечении цилиндра имеет следующий вид:

, (II.3.11)

где – радиус цилиндрической поверхности; x0, y0, z0 – координаты точки вылета; l, m, n – направляющие косинусы траектории полета.

Формула для нахождения параметра t при пересечении сферы
:

,(II.3.12)

где – радиус сферы; – координаты центра сферы;
x0, y0, z0 – координаты точки вылета; l, m, n – направляющие косинусы траектории полета.

Формула для нахождения параметра t при пересечении конуса
(z-c)= ctg2(x2+y2):

(II.3.13)

где c – координата z вершины конуса; γ – угол между образующей конуса и осью OZ; x0, y0, z0 – координаты точки вылета; l, m, n – направляющие косинусы траектории полета.

Причем для вычисления параметров t пересечения траектории полета со всеми поверхностями используются одни и те же значения как направляющих косинусов, так и координат точки вылета, т. е. имея значения (x0, y0, z0) и l, m, n ищем значения t для всех поверхностей системы. Далее показаны фрагменты кода, реализующие вышеописанные функции нахождения t для различных типов поверхностей:

//Нахождение значения параметра t при пересечении любой
//плоскости, заданной уравнением Ax+By+Cz+D=0
//Аргументы: A, B, C, D – соответствующие члены уравнения //плоскости; X, Y, Z – координаты точки вылета
//(x0, y0, z0); L, M, N – направляющие косинусы l, m, n.
function GetAnyLinearT(var A,B,C,D,X,Y,Z,L,M,N:Extended): Extended;
begin
if ((A*L+B*M+C*N)=0) then GetAnyLinearT:=0 else GetAnyLinearT:=-(A*X+B*Y+C*Z+D)/(A*L+B*M+C*N);
end;
//Нахождение значения параметра t при пересечении
//плоскости, заданной z=C
//Аргументы: C – соответствующий член уравнения
//плоскости; Z – координата точки вылета z0;
//N – направляющий косинус n.
function GetLinearT(var C,Z,N:Extended): Extended;
begin
if (N=0) then GetLinearT:=0 else GetLinearT:=(C-Z)/N;
end;

//Нахождение значения первого параметра t при пересечении
//цилиндра, заданного уравнением x2+y2 =r2
//Аргументы: X, Y – координаты точки вылета x0, y0; L, M – направляющие косинусы l, m;
//R – радиус цилиндра r.
function GetCylinderTP(var X,Y,L,M,R:Extended): Extended;
begin
if ((((X*L+Y*M)*(X*L+Y*M)-(L*L+M*M)*(X*X+Y*Y-R*R))<0) or ((L*L+M*M)=0))
then GetCylinderTP:=0
else GetCylinderTP:=(-(X*L+Y*M)+Sqrt(((X*L+Y*M)*(X*L+Y*M)-(L*L+M*M)*(X*X+Y*Y-R*R))))/(L*L+M*M);
end;

//Нахождение значения второго параметра t при пересечении
//цилиндра, заданного уравнением x2+y2 =r2
//Аргументы: X, Y – координаты точки вылета x0, y0; L, M – //направляющие косинусы l, m; R – радиус цилиндра r.
function GetCylinderTM(var X,Y,L,M,R:Extended): Extended;
begin
if ((((X*L+Y*M)*(X*L+Y*M)-(L*L+M*M)*(X*X+Y*Y-R*R))<0) or ((L*L+M*M)=0))
then GetCylinderTM:=0
else GetCylinderTM:=(-(X*L+Y*M)-Sqrt(((X*L+Y*M)*(X*L+Y*M)-(L*L+M*M)*(X*X+Y*Y-R*R))))/(L*L+M*M);
end;

//Нахождение значения первого параметра t при пересечении
//сферы, заданной уравнением (x-xc)2+(y-yc)2+(z-zc)2=r2
//Аргументы: X, Y, Z– координаты точки вылета
//(x0, y0, z0);
//L, M, N – направляющие косинусы l, m, n;
//XC, YC, ZC – координаты центра сферы (xс, yс, zс); R – //радиус сферы r.
function GetSphereTP(var X,Y,Z,L,M,N,R,XC,YC,ZC:Extended): Extended;
begin
if ((((X-XC)*L+(Y-YC)*M+N*(Z-ZC))*((X-XC)*L+(Y-YC)*M+N*(Z-ZC))-((X-XC)*(X-XC)+(Y-YC)*(Y-YC)+(Z-ZC)*(Z-ZC)-R*R))<0)
then GetSphereTP:=0
else GetSphereTP:=-(L*(X-XC)+M*(Y-YC)+N*(Z-ZC))+Sqrt(((X-XC)*L+(Y-YC)*M+N*(Z-ZC))*((X-XC)*L+(Y-YC)*M+N*(Z-ZC))-((X-XC)*(X-XC)+(Y-YC)*(Y-YC)+(Z-ZC)*(Z-ZC)-R*R));
end;

//Нахождение значения второго параметра t при
//пересечении сферы, заданной уравнением
//(x-xc)2+(y-yc)2+(z-zc)2=r2
//Аргументы: X, Y, Z– координаты точки вылета
//(x0, y0, z0); //L, M, N – направляющие косинусы l, m, n;
//XC, YC, ZC – координаты центра сферы (xс, yс, zс); R –
//радиус сферы r.
function GetSphereTM(var X,Y,Z,L,M,N,R,XC,YC,ZC:Extended): Extended;
begin
if ((((X-XC)*L+(Y-YC)*M+N*(Z-ZC))*((X-XC)*L+(Y-YC)*M+N*(Z-ZC))-((X-XC)*(X-XC)+(Y-YC)*(Y-YC)+(Z-ZC)*(Z-ZC)-R*R))<0)
then GetSphereTM:=0
else GetSphereTM:=-(L*(X-XC)+M*(Y-YC)+N*(Z-ZC))-Sqrt(((X-XC)*L+(Y-YC)*M+N*(Z-ZC))*((X-XC)*L+(Y-YC)*M+N*(Z-ZC))-((X-XC)*(X-XC)+(Y-YC)*(Y-YC)+(Z-ZC)*(Z-ZC)-R*R));
end;

//Нахождение значения первого параметра t при пересечении //конуса, заданного уравнением (z-c)2=ctg2(x2+y2)
//Аргументы: X, Y, Z– координаты точки вылета
//(x0, y0, z0);
//L, M, N – направляющие косинусы l, m, n;
//C – соответствующий член уравнения конуса c; G – угол  //в уравнении конуса.
function GetConusTM(var X,Y,Z,L,M,N,C,G:Extended): Extended;
begin
if (((X*L+Y*M-Tan(G)*Tan(G)*N*(Z-C))*(X*L+Y*M-Tan(G)*Tan(G)*N*(Z-C))-(L*L+M*M-Tan(G)*Tan(G)*N*N)*(X*X+Y*Y-Tan(G)*Tan(G)*(Z-C)*(Z-C)))<0)
then GetConusTM:=0
else GetConusTM:=(-(X*L+Y*M-Tan(G)*Tan(G)*N*(Z-C))-sqrt(((X*L+Y*M-Tan(G)*Tan(G)*N*(Z-C))*(X*L+Y*M-Tan(G)*Tan(G)*N*(Z-C))-(L*L+M*M-Tan(G)*Tan(G)*N*N)*(X*X+Y*Y-Tan(G)*Tan(G)*(Z-C)*(Z-C)))))/(L*L+M*M-Tan(G)*Tan(G)*N*N);
end;

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5167
Авторов
на СтудИзбе
437
Средний доход
с одного платного файла
Обучение Подробнее