Сторінка
10

Динамічні властивості нелінійних локалізованих мод у лінійних молекулярних ланцюжках

<tr><td>Ім'я вихідного файлу:

<br><input size="40" type="text" value="houtput.txt" name="filo"></td></tr>

<tr><td><input type="submit" name="Submit" value="Пішов!"></td></tr>

<tr><td><table width="50%" border="0">

<tr><td></td></tr></table></td></tr></table></form>

<?php print "<BR>Copyright (C) 2003-2004 Yurko Natanzon. All rights reserved. Копірайт (К) 2003-2004, Юрко Натанзон. Всіх прав дотримано."; ?>

Фото 1. Загальний вигляд програми, що здійснює розрахунки.

Програмний код файлу calculate.php3

<HTML>

<TITLE>Розв"язок системи дифрівнянь .</TITLE>

<BODY>

Ідуть підрахунки, чекайте .<BR><BR>

<?php //Початок php коду

//Функції f1-f4 характеризують рівняння системи (3.4)-(3.7)

function f1 ($j, $fi_np1, $fi_nm1, $g0, $u, $fi)

{

$result = 0-$j*($fi_np1 + $fi_nm1)+$g0*$u*$fi;

return $result;

}

function f2 ($j,$f_np1, $f_nm1, $g0, $u, $f)

{

$result = $j*($f_np1 + $f_nm1)-$g0*$u*$f;

return $result;

}

function f3 ($g0, $c0, $fi, $f, $u, $hamma, $p)

{

$result = 0-($g0/$c0)*($fi*$fi+$f*$f)-$u-$hamma*$p;

return $result;

}

function f4 ($p)

{ return $p; }

/* Тут починається тіло скрипта

Параметри, що передаються:

$j, $g0, $c0, - параметри рівнянь

$hamma - коефіцієнт тертя

$dt - крок

$T - кінцевий час, бажано задати цілим

$N - кіль-сть молекул в ланцюжці

$filo – ім’я файла, в який слід записувати результати

Всі ці параметри в даному скрипті є константами

(вводяться з клавіатури у форму soliton.php і передаються цьому файлу)

*/

// Початкові умови

// Обрахунок параметрів рівнянь

$tau = $T;

$dtau = $dt;

//вивід параметрів на екран

print "Параметри:<BR>N=$N, tau=$tau, dtau=$dtau, j=$j, g0=$g0, c0=$c0, hamma=$hamma<BR>";

$xwail=fopen($filo, w);

fputs($xwail, "№ t f^2+fi^2 u(x,t)\n");

$norm = 0;

$nulli = fopen ("0.txt", w);

for ($m=1; $m <= $N; $m++)

//Задаємо початкове збудження для всіх молекул

{

if ($m == $N/2)

$f[$m][0] = 0.8;

if (($m == $N/2+1)||($m == $N/2-1))

$f[$m][0] = 0.4;

if (($m == $N/2+2)||($m == $N/2-2))

$f[$m][0] = sqrt(0.02);

$fi[$m][0] = 0;

$norm += $f[$m][0]*$f[$m][0] + $fi[$m][0]*$fi[$m][0];

$p[$m][0] = 0;

$u[$m][0] = 0;

$fu = $u[$m][0];//Тотожність, зручно записувати у файл

//просто змінну не масива

$fm = $f[$m][0]*$f[$m][0]+$fi[$m][0]*$fi[$m][0];

//Запис $m $t $fm $fu

fputs($xwail, "$m 0 $fm $fu\n");

fputs($nulli, "$m $fm $fu\n");

}

fclose ($nulli);

print "У початковий момент часу норма = $norm<br>";

//Накладаємо періодичні умови, "нульова" молекула тотожня до N-ї

$f[0][0] = $f[$N][0];

$fi[0][0] = $fi[$N][0];

$p[0][0] = $p[$N][0];

$u[0][0] = $u[$N][0];

//Так само вчинимо з молекулою N+1

$f[$N+1][0] = $f[1][0];

$fi[$N+1][0] = $fi[1][0];

$p[$N+1][0] = $p[1][0];

$u[$N+1][0] = $u[1][0];

for ($t=$dtau; $t < $tau+$dtau; $t=$t+$dtau) //Зсув за часом

{

$norm = 0;

$pot = fopen ("$t.txt", w);

for ($m = 1; $m <= $N; $m++) //Пішов обрахунок N молекул

{

//Для молекул рахуємо методом Рунґе-Кутта

//Функції v, w ,y, z стосуються невідомих f, fi, p, u

$tm1 = $t-$dtau;

$mp1 = $m+1;

$mm1 = $m-1;

$v1[$m][$tm1] =

f1($j, $fi[$mp1][$tm1], $fi[$mm1][$tm1], $g0, $u[$m][$tm1], $fi[$m][$tm1]);

$w1[$m][$tm1] =

f2($j, $f[$mp1][$tm1], $f[$mm1][$tm1], $g0,$u[$m][$tm1],$f[$m][$tm1]);

$y1[$m][$tm1] =

f3($g0,$c0, $fi[$m][$tm1], $f[$m][$tm1], $u[$m][$tm1], $hamma, $p[$m][$tm1]);

$z1[$m][$tm1] = f4($p[$m][$tm1]);

$v2[$m][$tm1] = f1($j, $fi[$mp1][$tm1]+$w1[$mp1][$tm1]/2, $fi[$mm1][$tm1]+$w1[$mm1][$tm1]/2, $g0, $u[$m][$tm1]+$z1[$m][$tm1]/2, $fi[$m][$tm1]+$w1[$m][$tm1]/2);

$w2[$m][$tm1] = f2($j, $f[$mp1][$tm1]+$v1[$mp1][$tm1]/2, $f[$mm1][$tm1]+$v1[$mm1][$tm1]/2, $g0, $u[$m][$tm1]+$z1[$m][$tm1]/2, $f[$m][$tm1]+$v1[$m][$tm1]/2);

$y2[$m][$tm1] = f3($g0,$c0, $fi[$m][$tm1]+$w1[$m][$tm1]/2, $f[$m][$tm1]+$v1[$m][$tm1]/2, $u[$m][$tm1]+$z1[$m][$tm1]/2, $hamma, $p[$m][$tm1]+$y1[$m][$tm1]/2);

$z2[$m][$tm1] = f4($p[$m][$tm1]+$y1[$m][$tm1]/2);

$v3[$m][$tm1] = f1($j, $fi[$mp1][$tm1]+$w2[$mp1][$tm1]/2, $fi[$mm1][$tm1]+$w2[$mm1][$tm1]/2, $g0, $u[$m][$tm1]+$z2[$m][$tm1]/2, $fi[$m][$tm1]+$w2[$m][$tm1]/2);

$w3[$m][$tm1] = f2($j, $f[$mp1][$tm1]+$v2[$mp1][$tm1]/2, $f[$mm1][$tm1]+$v2[$mm1][$tm1]/2, $g0, $u[$m][$tm1]+$z2[$m][$tm1]/2, $f[$m][$tm1]+$v2[$m][$tm1]/2);

$y3[$m][$tm1] = f3($g0,$c0, $fi[$m][$tm1]+$w2[$m][$tm1]/2, $f[$m][$tm1]+$v2[$m][$tm1]/2, $u[$m][$tm1]+$z2[$m][$tm1]/2, $hamma, $p[$m][$tm1]+$y2[$m][$tm1]/2);

$z3[$m][$tm1] = f4($p[$m][$tm1]+$y2[$m][$tm1]/2);

$v4[$m][$tm1] = f1($j, $fi[$mp1][$tm1]+$w3[$mp1][$tm1], $fi[$mm1][$tm1]+$w3[$mm1][$tm1], $g0, $u[$m][$tm1]+$z3[$m][$tm1], $fi[$m][$tm1]+$w3[$m][$tm1]);

$w4[$m][$tm1] = f2($j, $f[$mp1][$tm1]+$v3[$mp1][$tm1], $f[$mm1][$tm1]+$v3[$mm1][$tm1], $g0, $u[$m][$tm1]+$z3[$m][$tm1], $f[$m][$tm1]+$v3[$m][$tm1]);

$y4[$m][$tm1] = f3($g0,$c0, $fi[$m][$tm1]+$w3[$m][$tm1], $f[$m][$tm1]+$v3[$m][$tm1], $u[$m][$tm1]+$z3[$m][$tm1], $hamma, $p[$m][$tm1]+$y3[$m][$tm1]);

$z4[$m][$tm1] = f4($p[$m][$tm1]+$y3[$m][$tm1]);

//Маємо результати

$f[$m][$t] = $f[$m][$tm1] + ($dtau/6)*($v1[$m][$tm1] + 2*$v2[$m][$tm1] + 2*$v3[$m][$tm1] + $v4[$m][$tm1]);

$fi[$m][$t] = $fi[$m][$tm1] + ($dtau/6)*($w1[$m][$tm1] + 2*$w2[$m][$tm1] + 2*$w3[$m][$tm1] + $w4[$m][$tm1]);

$p[$m][$t] = $p[$m][$tm1] + ($dtau/6)*($y1[$m][$tm1] + 2*$y2[$m][$tm1] + 2*$y3[$m][$tm1] + $y4[$m][$tm1]);

Перейти на сторінку номер:
 1  2  3  4  5  6  7  8  9  10  11 


Інші реферати на тему «Фізика»: