Скачиваний:
8
Добавлен:
28.04.2022
Размер:
180.12 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Государственное образовательное учреждение

высшего профессионального образования

Санкт-Петербургский государственный электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

ФАКУЛЬТЕТ ЭЛЕКТРОНИКИ (ФЭЛ)

КАФЕДРА Радиотехнической электроники

КУРСОВАЯ РАБОТА (ПРОЕКТ)

По дисциплине: ПРОГРАММНЫЕ СРЕДСТВА МОДЕЛИРОВАНИЯ ЭЛЕКТРОННОЙ КОМПОНЕНТНОЙ БАЗЫ

На тему: Разработка модуля программы анализа электронного прибора

(указывается обобщенная тема)

Вариант № 4

Выполнил

Оценка

студент гр. №

4201

Проверил

Синев А. Е.

Мальцев С.В.

(ФИО)

(ФИО)

Дата

САНКТ-ПЕТЕРБУРГ

2018 г.

ЗАДАНИЕ на курсовую работу

По дисциплине: ПРОГРАММНЫЕ СРЕДСТВА МОДЕЛИРОВАНИЯ ЭЛЕКТРОННОЙ КОМПОНЕНТНОЙ БАЗЫ

Вариант № 4.

Название курсовой работы:

Модуль расчёта пространственного заряда CIC-методом для конечно-разностной ячейки.

Содержание работы:

Разработка алгоритма и программы на С++ для численного расчёта пространственного заряда с использованием CIC-метода для параллелепипеда .

Исходные данные:

1) Координаты и размеры ячеек-параллелепипедов.

2) Набор трубок тока в виде последовательностей отрезков прямой с заданными параметрами: – координаты концов отрезков; – распределение заряда на каждом отрезке.

Результаты работы:

1. Программа расчёта пространственного заряда. 2. Методика тестирования и отладки программы.

Литература:

1. Internet.

2. Р. Хокни, Дж. Иствуд Численное моделирование методом частиц. – М.: Мир, 1987.

1.Метод Cloud in Cell (CIC)

Существует несколько методов вычисления плотности заряда по координатам моделирующих частиц. Самым простым из них является метод «ближайшего пространственного узла» («nearest grid point» или сокращенно NGP). В этом методе полный заряд точечной частицы приписывается ближайшему узлу пространственной сетки. Эта процедура распределения заряда может быть представлена в виде схемы, изображенной на рисунке 1

Рис 1

Существует схема более плавного распределения заряда по узлам сетки, которая называется методом «облаков в ячейке» («cloud-in-cell» или сокращенно CIC). В этой схеме частицы представляются «прозрачными» заряженными облаками, способными проходить друг сквозь друга. Они могут иметь любую удобную форму и распределение плотности заряда. Метод облаков сглаживает флуктуации, свойственные методу NGP.

В CIC-методе необходимо определить процедуру вычисления распределения плотности заряда в плазме, а также вычисления электрического поля, действующего на облако. Простейшим методом вычисления плотности заряда является разделение заряда облака по нескольким узлам сетки согласно процедуре «весового распределения по площадям» («area-weighted»). Следуя этой процедуре, мы определяем вклад каждой частицы в ближайшие узлы пространственной сетки пропорционально частям облака (рис.2)

Рис.2

Теперь мы увидим, как такое зарядовое перераспределение дискретизируется, принимая:

Функция MOD в программном пакете MatLab нахождения числа по некоторому модулю.

MOD(X,Y) = X - n * Y, где n = floor(X/Y).

Примеры (4 различных случая, соответствующих различным комбинациям знаков делимого и делителя):

1) mod(11,7) = 4;

2) mod(-11,7) = 3

3) mod(11,-7) = -3

4) mod(-11,-7) = -4

Для случая на рисунке 2 (серая область) имеем:

2. Программная реализация в среде Matlab

clc;

clear all;

q=1;

% ???????? ???????

data=load('Positions_Disk.dat');

numStars=numel(data(:,1));

% ??????? ?????

numPoints=32;

% ???????? ? ?????????

x0=linspace(min(data(:,1)),max(data(:,1)),numPoints);

y0=linspace(min(data(:,2)),max(data(:,2)),numPoints);

% ???????? ????? ??? ??????????

[x, y]=meshgrid(x0,y0);

% ?????????? ???????? ???? ?????

Max_x=max(data(:,1));

Min_x=min(data(:,1));

Max_y=max(data(:,2));

Min_y=min(data(:,2));

if (Max_x>abs(Min_x))

space_x=Max_x/(numPoints/2);

add_correction_x=0;

else

space_x=abs(Min_x)/(numPoints/2);

add_correction_x=1;

end

if (Max_y>abs(Min_y))

space_y=Max_y/(numPoints/2);

add_correction_y=0;

else

space_y=abs(Min_y)/(numPoints/2);

add_correction_y=1;

end

density(1:numPoints,1:numPoints)=0.0;

% ?????????? ????????? ??? ?????? ?????? ??????? CIC

for i=1:numStars

%?????????? ??????? ????? ?? ?????

node_x = floor(data(i,1)/space_x) + (numPoints/2 + add_correction_x);

node_y = floor(data(i,2)/space_y) + (numPoints/2 + add_correction_y);

% ?????????? ???????, ????????? fmod

dx = mod(abs(data(i,1)),space_x)/space_x;

dy = mod(abs(data(i,2)),space_y)/space_y;

tx = 1.0 - dx;

ty = 1.0 - dy;

% ?????? ? (i, j), ?????????????? ?? ???????

if ((dx < 0.5) && (node_x == 1))

frac_x = dx;

neighboor_x = 0;

epsilon_x = 0;

elseif ((dx > 0.5) && (node_x == numPoints))

frac_x = dx - 0.5;

neighboor_x = 0;

epsilon_x = 0;

elseif (dx < 0.5)

frac_x = dx + 0.5;

neighboor_x = -1;

epsilon_x = 1;

else

frac_x = tx + 0.5;

neighboor_x = 1;

epsilon_x = 1;

end

if ((dy < 0.5) && (node_y == 1))

frac_y = dy;

neighboor_y = 0;

epsilon_y = 0;

elseif ((dy > 0.5) && (node_y == numPoints))

frac_y = dy - 0.5;

neighboor_y = 0;

epsilon_y = 0;

elseif (dy < 0.5)

frac_y = dy + 0.5;

neighboor_y = -1;

epsilon_y = 1;

else

frac_y = ty + 0.5;

neighboor_y = 1;

epsilon_y = 1;

end

% ??????? ?????????

density(node_x,node_y) = density(node_x,node_y) + q*(frac_x*frac_y)/(space_x*space_y);

density(node_x+neighboor_x,node_y) = density(node_x+neighboor_x,node_y) + q*(epsilon_x*(1.0-frac_x)*frac_y)/(space_x*space_y);

density(node_x,node_y+neighboor_y) = density(node_x,node_y+neighboor_y) + q*(frac_x*epsilon_y*(1.0-frac_y))/(space_x*space_y);

density(node_x+neighboor_x,node_y+neighboor_y) = density(node_x+neighboor_x,node_y+neighboor_y) + q*(epsilon_x*(1.0-frac_x)*epsilon_y*...

(1.0-frac_y))/(space_x*space_y);

end

figure(1); %density

contourf( x0,y0, density);

hold on;

colorbar;

contour( x0,y0, density,'LineWidth',2);

hold off;

3. Тестирование программы.

Рис.3 Распределение плотности заряда по сетке 8х8 для четырех частиц

Рис.4 Распределение плотности заряда по сетке 32х32 для четырех частиц

4. Список литературы.

1. Р. Хокни, Дж. Иствуд Численное моделирование методом частиц. – М.: Мир, 1987.

2. Федоренко Р.П. Введение в вычислительную физику: Учебное по-собие - М.: Изд-во МФТИ, 1994.

3. http://www.cyberforum.ru

Соседние файлы в папке курсачи