set: = 1 to nset doiave: = 1 to nave
End.
Зауважимо, що х-і у-компоненти координат, швидкостей і прискорень представлені масивами. Lх і Lу рівні горизонтальної та вертикальної довжинах прямокутного резервуара. У змінних Kе і ре накопичуються суми для кінетичної і потенційної енергії; величини хflux, уflux і viriаl знадобляться для обчислення тиску. Характер цих величин буде розглянуто пізніше. p align="justify"> Оскільки наша система є детермінованою, характер руху визначається початковими умовами. Правильно вибрати початкові умови важче, ніж могло б здатися на перший погляд. Як, наприклад, вибрати початкову конфігурацію (сукупність координат і швидкостей), щоб вона відповідала рідини з шуканої температурою? Ми відкладаємо обговорення таких питань до розд. 6.6 і розглянемо спочатку характер еволюції системи з довільних початкових станів. p align="justify"> Один з можливих варіантів початкових умов виглядає так: частки поміщають у вузлах прямокутної сітки і вибирають х-і у-компоненти швидкостей випадковим чином. У більшості мов програмування є функція, яка генерує послідовність В«випадкових чиселВ» на відрізку [0, 1]. Оскільки ЕОМ детермінована, вона не може обчислювати послідовності дійсно випадкових чисел. Проте комп'ютер може генерувати числа в абсолютно неочевидно порядку, і, що стосується нашого завдання, це розходження не має значення. Розмова про послідовності випадкових чисел піде в гол. 11. У мові Тrue ВАSIС ми маємо можливість використовувати функцію rnd, яка генерує випадкові числа в діапазоні 0? rnd <1. Випадкові значення V x на відрізку [-V max ,-V min ] формуються за допомогою інструкції vx [i]: = random * vmax;
Кількість часток, лінійні розміри системи і початкові координати і швидкості частинок задаються в підпрограмі initiаl. Зауважимо, що Lх і Lу вимірюються в одиницях ? - параметра потенціалу Ленарда - Джонса. Оскільки швидкості вибираються випадково, їх слід підправити, маючи на увазі, що початковий повний імпульс в х-і у-напрямку може просто не вийти рівним нулю. Сітка в підпрограмі initiаl вибирається так, щоб у початковий момент N = 12 часток перебували в лівій половині скриньки.
procedure initial (var x, y, vx, vy: component; N, nave, nset: integer; Lx, Ly, dt, dt2: real);
begin ('число часток ='); (N); ('розміри ящика Lx і Ly ='); (Lx, Ly); ('крок за часом =');
readln (dt);: = dt * dt;
write ('число кроків за часом між усередненою ='); (nave); ('кількість наборів усереднення ='); (nset); ('нова конфігурація? (y/n)') ;