Динаміка систем багатьох частинок

Автор: Пользователь скрыл имя, 25 Мая 2013 в 11:55, курсовая работа

Описание работы

Багато систем, таких як гази, рідини і тверді тіла складаються з великого числа взаємодіючих один з одним частинок. Розглянемо для прикладу дві чашки кави, що зварені в однакових умовах. В кожній чашці кави утримується приблизно 1023-1025 молекул, рух яких підкорюється законам класичної фізики. Незважаючи на те, що міжмолекулярні сили породжують складні рухи молекул, для двох однакових чашок властивості кави в кожній чашці нерозрізнені і їх легко описати. Відомо, наприклад, що температура кави, якщо її залишити у чашці, досягає кімнатної і з часом не змінюється. Як пов’язана температура кави з траєкторіями окремих молекул? Чому вона не залежить від часу, навіть якщо траєкторії окремих молекул безупинно змінюються?

Работа содержит 1 файл

Курсовая работа.docx

— 169.23 Кб (Скачать)

Метод молекулярної динаміки також дозволяє проводити численні експерименти при постійній температурі  та тиску, а не при постійній енергії  та об’ємі. Також багато висновків можна зробити з траєкторій системи.

 

 

 

 

 

 

 

 

4. Перелік посилань

  1. Х.Гульд,  Я.Тобочник. Компьютерное моделирование в физике. Часть первая./ Перевод с англ. канд. физ.-мат. наук А.Н.Полюдова и В.А.Панченко. – Москва «Мир». 1990 – 350 с.
  2. Д.В.Хеерман. Методы комп’ютерного эксперимента в теоретической физике. Перевод с англ. В.Н.Задкова – Москва «Наука». Главная редакция физико-математической литературы. 1990 – 174 с.
  3. К.Жаблон, Ж.-К.Симон. Применение ЭВМ для численного моделирования в физике./ Перевод с франц. А.В.Арсентьевой – Москва «Наука». Главная редакция физико-математической литературы. 1983 – 234 с.
  4. Интернет.

 

 

 

 

 

 

 

 

 

 

 

 

  1. Додатки

#include<iostream.h>

#include<math.h>

#include<graphics.h>

#include<conio.h>

#include<stdlib.h>

#include<stdio.h>

#include<dos.h>

void metod (double x[],double y[],double vx[],double vy[],double ax[],double ay[],int N,int i);

int generator (int max)

{

 return random (max);

}

void setka (double mx,double my,double k)

{

 char str[4];

 int i;

 setcolor(11);

 for (i=0;i<=30;i+=5)

        {

        line (347,i*my+5+k,353,i*my+5+k);

        }

 for (i=0;i<=300;i+=50)

        {

        itoa (i,str,10);

        outtextxy (i*mx+347,147+k,str);

        }

 setcolor (1);

 line (320,140+k,640,140+k);

 line (350,0+k,350,160+k);

}

 

 

void metod (double x[],double y[],double vx[],double vy[],double ax[],double ay[],int N,int i)

{

double axn[20],ayn[20],r[20],vxn[20],vyn[20],xn[20],yn[20];

 double V,t=0.01;

 axn[i]=0;

 ayn[i]=0;

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

       {

       if (i!=j)

         {

            r [i]=sqrt(pow((x[i]-x[j]),2)+pow((y[i]-y[j]),2));

           V=24*((1/pow(r[i],7))-(2/pow(r[i],13)));

           axn[i]+=(-V)*(x[i]-x[j])/r[i];

           ayn[i]+=(-V)*(y[i]-y[j])/r[i];

           }

}

vx[i]=0.5*(axn[i]+ax[i])*t;

vy[i]=0.5*(ayn[i]+ay[i])*t;

x[i]+=vx[i]*t+0.5*ax[i]*t*t;

y[i]+=vy[i]*t+0.5*ay[i]*t*t;

ax[i]=axn[i];

ay[i]=ayn[i];

}

 

 

 

void main()

{

 clrscr();

 int driver=DETECT,mode,e;

 initgraph(&driver,&mode,"c:\\BorlandC\\BGI");

e=graphresult();

 if(e!=grOk)

  {

  printf("%s",grapherrormsg(e));

  }

 else

  {

  double vx[20],y[20],x[20],vy[20],ax[20],ay[20],T=0,t=0.01;

  int i=0,N=1,max=200;

  randomize();

  ax[i]=0;

  ay[i]=0;

  vy[i]=generator(max);

  vx[i]=generator(max);

  y[i]=generator(max);

  x[i]=generator(max);

 do

  {

  line(40,30,600,30);

  line(40,30,40,450);

  line(40,450,600,450);

  line(600,30,600,450);

  metod(x,y,vx,vy,ax,ay,N,i);

  T+=t;

  fillellipse(x[i]+300,-y[i]+300,10,10);

  if((x[i]+300>590)||(x[i]+300<50))

  vx[i]=-vx[i];

  if((-y[i]+300<40)||(-y[i]+300>440))

  vy[i]=-vy[i];

  delay(10);

  cleardevice();

  }

 while(T<15);

 

N=2;

T=0;

vx[0]=0;  vy[0]=0;  vx[1]=0;  vy[1]=0;  x[0]=0;  x[1]=1.5;

y[0]=60;  y[1]=60;  ax[0]=0;  ax[1]=0;  ay[0]=0;  ay[1]=0;

do

{

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

  {

  T+=t;

  metod(x,y,vx,vy,ax,ay,N,i);

  fillellipse(x[i]*20+300,-y[i]+300,9,9);

  }

 delay(20);

 cleardevice();

}

while(T<7);

 

N=12;

T=0;

t=0.1;

max=5;

double Ek=0,xs=0,ys=0,Tm,v=0,P;

double Kv=1.38;

int poly[8]={0,0,0,400,320,400,320,0};

int k=0,m=10,ydar=0;

double mx=1.8,my=4.5;

line(320,160,640,160);

line(320,320,640,320);

setka(mx,my,k);

k=160;

setka(mx,my,k);

k=320;

setka(mx,my,k);

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

{

 ax[i]=0;

 ay[i]=0;

 vx[i]=generator(max);

 vy[i]=generator(max);

}

i=0;

while(i<12)

{

k=0;

 for(unsigned j=0;j<3;j++)

  {

  x[i]=5+k;

  k+=5;

  i++;

  }

}

i=0;

while(i<12)

{

k=0;

 for(unsigned j=0;j<4;j++)

  {

  y[i]=5+k;

  k+=9;

  i++;

  }

}

do

{

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

    {

     metod(x,y,vx,vy,ax,ay,N,i);

     setcolor(WHITE);

     setfillstyle(SOLID_FILL,WHITE);

     fillellipse(x[i]*m,-y[i]*m+400,4,4);

     Ek+=(vx[i]*vx[i]+vy[i]*vy[i])/2.0;

     if(T<50)

{

line(160,0,160,400);

if(x[i]*m<5) {vx[i]=-vx[i];ydar++;v+=vx[i];}

if(x[i]*m>155) vx[i]=-vx[i];

if((-y[i]*m+400<5)||(-y[i]*m+400>395))  vy[i]=-vy[i];

}

     else

{

line(160,0,160,100);

line(160,300,160,400);

if(x[i]*m<160)

    {

    if(x[i]*m<5){vx[i]=-vx[i];ydar++;v+=vx[i];}

    if((x[i]*m>155)&&((-y[i]*m+400<105)||(-y[i]*m+400>295)))

     vx[i]=-vx[i];

    }

if(x[i]*m>160)

    {

    if(x[i]*m>315)  vx[i]=-vx[i];

    if((x[i]*m<165)&&((-y[i]*m+400<105)||(-y[i]*m+400>295)))

     vx[i]=-vx[i];

    }

if(((x[i]*m<165)&&(x[i]*m>155))&&((-y[i]*m+400<105)||(-y[i]*m+400>295)))

 vy[i]=-vy[i];

if((-y[i]*m+400<5)||(-y[i]*m+400>395))

 vy[i]=-vy[i];

}

    line(320,0,320,480);

    xs+=x[i]/N;

    ys+=y[i]/N;

    }

    P=ydar*v/10.0;

    Tm=(2*Ek)/N*Kv;

    T+=t;

    putpixel(T*mx+350,-xs*my+150,3);

    putpixel(T*mx+350,-ys*my+150,5);

    putpixel(T*mx+350,-Tm*my+310,6);

    putpixel(T*mx+350,-P*my/15+400,9);

    xs=0;ys=0;Ek=0;//ydar=0;v=0;

  delay(20);

  setfillstyle(SOLID_FILL,BLACK);

  fillpoly(4,poly);}

while(T<150);

getch(); }

}


Информация о работе Динаміка систем багатьох частинок