Моделирование распределения потенциала и плотности тока в двумерных проводящих средах

Автор работы: Пользователь скрыл имя, 06 Мая 2013 в 02:01, курсовая работа

Краткое описание

Для простых случаев, данное уравнение решается аналитически, но даже при небольших осложнениях решение задачи возможно лишь численно. Дальше их можно решать численно несколькими методами один из них прямой метод, разработанный для решения "трехдиагональных" систем. Однако на практике при численном решении эллиптических уравнений приходится использовать сетки, имеющие очень большое количество узлов, поэтому будет целесообразным применение итерационных методов. Мы воспользуемся методом Гаусса-Зейделя.

Содержание

Введение 5
1Теоретическая часть 6
1.1Эквипотенциальные поверхности 6
1.2Распределение заряда 7
2Численная модель решения 8
3Проверка работоспособности численной модели 11
4Результаты решения поставленной задачи 14
Заключение 18
Список использованных источников 19
Приложение А 20

Прикрепленные файлы: 1 файл

Курсовая работа. Костин А. С. Ф-269.docx

— 1.84 Мб (Скачать документ)


Рисунок 8 – Эквипотенциальные лини при потенциале заданном как x=0 y=10 U=100; x=10 y=15 U= -100.

 

 Рисунок 9 – Векторы плотности тока в узлах сетки, при потенциале заданном как x=0 y=10 U=100; x=10 y=15 U= -100. Сопротивление для данных условий: R=0.51

 


Рисунок 10 – Эквипотенциальные лини при потенциале заданном как x=0 y=10 U=100; x=10 y=10 U= -100.

 

Рисунок 11 – Векторы плотности тока в узлах сетки, при потенциале заданном как x=0 y=10 U=100; x=10 y=10 U= -100. Сопротивление для данных условий: R=0.49

 


Рисунок 12 – Эквипотенциальные лини при потенциале заданном как x=0 y=10 U=100; x=10 y=5 U= -100.

 

Рисунок 13 – Векторы плотности тока в узлах сетки, при потенциале заданном как x=0 y=10 U=100; x=10 y=5 U= -100. Сопротивление для данных условий: R=0.51

 

Рисунок 14 – Эквипотенциальные лини при потенциале заданном как x=0 y=10 U=100; x=10 y=1 U= -100.

 

Рисунок 13 – Векторы плотности тока в узлах сетки, при потенциале заданном как x=0 y=10 U=100; x=10 y=1 U= -100. Сопротивление для данных условий: R=0.90

Оценивая  результаты полученные в ходе исследования относительно R, можно говорить что мы наблюдаем очевидную зависимость R от расстояния. Притом видно, что в ситуации, когда точки с заданными потенциалами находятся на меньшем расстоянии,  то сопротивление минимально, а в случаях, когда эти же точки стоят на большем расстоянии, оно начинает возрастать.

 

ЗАКЛЮЧЕНИЕ

В данной курсовой работе, было рассмотрено решение уравнение Пуассона, на примере распределения потенциала в однородной проводящей среде, а так же были проанализированы, физические величины, зависящие от начального распределения потенциала в проводнике.

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

 

  1. Кунин С. Вычислительная физика. М.: Мир, 1992.
  2. Федоренко Р.П. Введение в вычислительную физику. М.:Изд-во Моск. физ.-техн. ин-та, 1994.
  3. Поршнев С.В. Методика использования пакета Mathcad для решения краевых задач для обыкновенных дифференциальных уравнений// Вычислительные методы и программирование. 2001. Т. 2. Раздел 3. С. 16.// Интернет журнал: http://num-meth.srcc.msu.su
  4. Поршнев С.В. Методика использования пакета Mathcad для изучения итерационных методов решения краевых задач для двумерных эллиптических уравнений// Вычислительные методы и программирование. 2001. Т. 2. Раздел 3. С. 714.// Интернет журнал: http://num-meth.srcc.msu.su

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ПРИЛОЖЕНИЕ А

Листинг программы

 

#include <iostream>

#include <stdio.h>

#include <math.h>

float dx;

float dy;

int N;

int M;

int ns;

float w=0.9;

//структура Векторов

typedef struct {float x,y;} my_vector;

 

my_vector operator+( my_vector x1, my_vector x2)

{

my_vector res;

 

res.x = (x1.x+x2.x);

res.y = (x1.y+x2.y);

return res;

}

 

my_vector operator-( my_vector x1, my_vector x2)

{

my_vector res;

 

res.x = (x1.x-x2.x);

res.y = (x1.y-x2.y);

return res;

}

 

my_vector operator*( my_vector x1, float a)

{

my_vector res;

 

res.x = (x1.x*a);

res.y = (x1.y*a);

return res;

 

 

}

 

float operator*( my_vector x1, my_vector x2)

{

float res;

 

res=(x1.x*x2.x+x1.y*x2.y);

return res;

 

 

}

my_vector operator/( my_vector x1, float a)

{

my_vector res;

 

res.x = (x1.x/a);

res.y = (x1.y/a);

return res;

 

 

}

 

 

float Abs( my_vector x1)

{

return(sqrt(x1.x*x1.x+x1.y*x1.y));

}

 

 

float r(int i, int j)

{

     return(sqrt(i*dy*i*dy+j*dx*j*dx));

}

 

my_vector J[200][200];

 

int main()

{

float U[200][200],Us[200][200],Un[200], p,R,Js,I,e,b,a,c;

bool Up[200][200];

int k, i, n,j;

FILE* potencial;

FILE* tok;

FILE* star;

star=fopen("c:/temp/003.txt","r");

potencial= fopen("c:/temp/001.txt","w+");

tok= fopen("c:/temp/002.txt","w+");

 

    fscanf(star,"%f %f %i %i %i %f\n",&dx, &dy, &N, &M, &ns, &e);

   for (i=0;i<=M;i++)

  {

    for (j=0;j<=N;j++)

     {

         Up[i][j]=false;

     }

  }

    for (k=0;k<=ns;k++)

    {

      fscanf(star,"%i %i ",&j, &i);

      fscanf(star,"%f\n", &U[i][j]);

      Up[i][j]=true;

      Un[k]=U[i][j];

    }

 

 

//граничные условия

 

 

for (i=0;i<=M;i++)

  {

    for (j=0;j<=N;j++)

     {

        if(Up[i][j]!=true)

        {

        U[i][j]=1;

        Us[i][j]=U[i][j];

        }

     }

  }

//вычисление нулевого приблежения

 

c=e+1;

while(c>e)

  {c=0;

     for(i=0;i<=M;i++)

        {

           for(j=1;j<N;j++)

           {

            if(Up[i][j]==false);

 

            U[i][j]=(1-w)*U[i][j]+(w/4)*(U[i+1][j]+U[i-1][j]+U[i][j+1]+U[i][j-1]);

            if (c<fabs(U[i][j]-Us[i][j]))

            c=fabs(U[i][j]-Us[i][j]);

            Us[i][j]=U[i][j];

           }

        }

  }// метод Зейделя Гаусса

 

 

for(i=0;i<=M;i++)

        {

           for(j=1;j<N;j++)

           {

            J[i][j].x=(U[i][j-1]-U[i][j+1])/(2*dx);

            J[i][j].y=(U[i-1][j]-U[i+1][j])/(2*dy);

           }

        }//расчёт плотности тока

 

Js=0;

for(i=0;i<=M;i++)

           {

            Js=Js+J[i][N/2].x;

           }

I=Js*M*dy;

R=0;

for(i=0;i<=M;i++)

{

    for (j=0;j<=N;j++)

     {

         if(Up[i][j]==true)

         R=R+fabs(U[i][j])/I;

     }

  }

b=N*dx;

a=M*dy;

           printf("a=%f b=%f R=%f \n",a,b,R);

 

//расчёт тока и сопротивления

 

        for(i=0;i<=M;i++)

        {

           for(j=0;j<=N;j++)

           {

             fprintf(tok,"%f\t %f\t %f\t %f\t\n",j*dy, i*dx, 0.01*J[i][j].x, 0.01*J[i][j].y);

           }

        }

 

for(i=0;i<=M;i++)

{

for(j=0;j<=N;j++)

{

fprintf(potencial,"%f\t %f\t %f\t\n", j*dy, i*dx,U[i][j]);

}

fprintf(potencial,"\n");

}

 

}

 


Информация о работе Моделирование распределения потенциала и плотности тока в двумерных проводящих средах