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

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

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

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

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

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

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

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

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

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

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

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

Вариант № 19

Выполнил

Оценка

студент гр. №

5201

Проверил

Синев А. Е.

Сулейменов Д.

(ФИО)

(ФИО)

Дата

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

2019 г.

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

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

  1. 9

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

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

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

Разработка алгоритма и программы на С++ для численного расчёта траекторий усовершенствованным методом Эйлера с определением времени пролёта через параллелепипед.

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

1) Размеры ячейки-параллелепипеда.

2) Электрическое и магнитное поле, зависящие от координат.

3) Начальные параметры траектории (координаты точки старта и вектор начальной скорости)

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

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

Литература:

1. Internet.

2. В. М. Вержбицкий Основы численных методов. Учебник для вузов. – М.: Высш. Шк., 2002.

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

Цель работы: разработка программного кода в среде С++ для расчета траекторий усовершенствованным методом Эйлера с определением времени пролета через ячейку конечно-разностной сетки.

Теоретические данные:

Основной задачей работы является расчет траектории и времени пролета электрона в ячейке, в которой задано электрическое поле. Размеры ячейки параллелепипеда задаются пользователем, за точку страта принята точка с координатами (0;0;0), также пользователем задается начальный вектор скорости электрона. Расчет траектории осуществляется по усовершенствованной формуле Эйлера, которая выглядит как:

, где 

При начальном условии координаты (задача Коши) находятся координаты следующей точки, рассматриваемой данной формулой для функции отдельно для каждой оси по времени (введенная нами скорость).

Программный код в С++:

#include "stdafx.h"

#include <stdio.h>

#include <iostream>

#include <math.h>

using namespace std;

double f(double x, double Vx,double y, double Vy,double z, double Vz,double tx,double ty,double tz )

{

return(x*Vx-y*Vy);

}

int main(void){

int i;

double x,y,z,Vx,Vy,Vz,h,h1,h2,endx,endy,endz,step,u,tx,ty,tz,x1,y1,z1,tpox,tpoy,tpoz;

cout <<"enter grid size x y z"<<endl;

cin >>endx>>endy>>endz;

x=0;

y=0;

z=0;

tx=0;

ty=0;

tz=0;

x1=0;

y1=0;

z1=0;

tpox=0;

tpoy=0;

tpoz=0;

cout <<"Enter speed(Vx,Vy,Vz)"<<endl;

cin>>Vx>>Vy>>Vz;

cout <<"Enrer step"<<endl;

cin>>step;

h=endx/step;

h1=endy/step;

h2=endz/step;

for(i=1;i<=step;i++)

{x+=h;

Vx+=h*f(x+0.5*h,Vx+0.5*h*f(x,Vx,0,0,0,0,0,0,0),0,0,0,0,0,0,0);

tx+=x*sqrt(1/((sqrt((x*Vx-y*Vy)*(x*Vx-y*Vy))*1.055e11)));

y+=h1;

Vx+=h*f(0,0,y+0.5*h1,Vy+0.5*h1*f(0,0,y,Vy,0,0,0,0,0),0,0,0,0,0);

ty+=y*sqrt(1/((sqrt((x*Vx-y*Vy)*(x*Vx-y*Vy))*1.055e11)));

z+=h2;

Vx+=h*f(0,0,0,0,z+0.5*h2,f(0,0,0,0,z,Vy,0,0,0),0,0,0);

tz+=z*sqrt(1/((sqrt((x*Vx-y*Vy)*(x*Vx-y*Vy))*1.055e11)));

tpox+=tx;

tpoy+=ty;

tpoz+=tz;

x1+=Vx*tx;

y1+=Vy*ty/tx;

z1+=Vz*tz/tx;

if (x1>0&&x1<endx&&y1>0&&y1<endy&&z1>0&&z1<endz)

{cout<<"x,y,z:("<<x<<"; "<<y<<"; "<<z<<"); "

<<"Vx,Vy,Vz:("<<Vx<<"; "<<Vy<<"; "<<Vz<<"); "

<<endl

<<"tx,ty,tz:("<<tx<<"; "<<ty<<"; "<<tz<<"); ";

cout<<"x1,y1,z1:("<<x1<<";"<<y1<<";"<<z1<<"); "

<<endl;}

} ;

if (tpox<=tpoy&&tpox<=tpoz) cout<<"Vremya prohozhdenya elektronom yacheiki="<<tpox<<";";

else if (tpoy<=tpox&&tpoy<=tpoz) cout<<"Vremya prohozhdenya elektronom yacheiki="<<tpoy<<";";

else if (tpoz<=tpox&&tpoz<=tpoy) cout<<"Vremya prohozhdenya elektronom yacheiki="<<tpoz<<";";

cin>>u;

}

В полученном коде рассматриваются точки, которые входят в множество точек параллелепипеда, остальные точки отсеиваются программой.

Результаты отладки программы:

В данном случае заданы размеры ячейки

if (x1>0&&x1<endx&&y1>0&&y1<endy&&z1>0&&z1<endz)

{ cout<<"x1,y1,z1:("<<x1<<";"<<y1<<";"<<z1<<"); "

<<endl;}

} ;

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