Файл:Diffusion microscopic picture.gif

Материал из Циклопедии
Перейти к навигации Перейти к поиску

Diffusion_microscopic_picture.gif(480 × 480 пкс, размер файла: 4,58 Мб, MIME-тип: image/gif, закольцованный, 300 фреймов, 15 с)

Примечание: По техническим причинам миниатюры подобных GIF-изображений высокого разрешения не анимируются.

Этот файл из на Викискладе и может использоваться в других проектах. Информация с его страницы описания приведена ниже.

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

Описание
English: At a microscopic level, diffusion is nothing else than a lot of small things bouncing against each other. The process is completely deterministic, but at a macroscopic level pretending it is random makes the calculations much easier.
Дата
Источник https://twitter.com/j_bertolotti/status/1517437234609373184
Автор Jacopo Bertolotti
Права
(Повторное использование этого файла)
https://twitter.com/j_bertolotti/status/1030470604418428929

Mathematica 13.0 code

(**Velocity Verlet**)
Clear[evo, pos, posold, posoldold, accelerations, oldaccelerations, velocities, halfvelocities, tableForces];
L = 10.25; (*(Half) Size of the box*)
\[Sigma] = 0.55; (*particle radius*) \[Sigma]plot = 0.55 \[Sigma];(*particle radius for graphing*)
dt = 0.005;
LJforce[p1_, p2_] :=  4*2 (12 \[Sigma]^12/Max[Norm[p1 - p2], \[Sigma]]^13 - 6 \[Sigma]^6/Max[Norm[p1 - p2], \[Sigma]]^7) Normalize[p1 - p2];
pos1 = Flatten[ Table[N[{i, j} + RandomReal[{-L/30, L/20}, {2}]], {i, -L + \[Sigma]plot, 0, L/6}, {j, -L + \[Sigma]plot, L, L/6}], 1];
pos2 = Flatten[ Table[N[{i, j} + RandomReal[{-L/20, L/20}, {2}]], {i, 0, L - \[Sigma]plot, L/6}, {j, -L + \[Sigma]plot, L, L/6}], 1];
pos = Join[pos1, pos2];
nparticles = Dimensions[pos][[1]]
m = Table[1, {nparticles}];
initialvelocities = RandomReal[{-10, 10}, {nparticles, 2}];
tableForces = Chop@Table[ LJforce[pos[[i]], pos[[j]]], {i, 1, nparticles}, {j, 1, nparticles}];
accelerations = Table[Sum[m[[i]]*tableForces[[i, j]], {j, 1, nparticles}], {i, 1, nparticles}];
posold = pos;
oldaccelerations = accelerations;
pos = posold + initialvelocities*dt + accelerations/2 dt^2;
velocities = initialvelocities + (accelerations + oldaccelerations)/2 dt;
nsteps = 300;
evo1 = Reap[Do[
      tableForces = Chop@Table[ LJforce[pos[[i]], pos[[j]]], {i, 1, nparticles}, {j, 1, nparticles}];
      oldaccelerations = accelerations;
      posold = pos;
      halfvelocities = velocities + accelerations/2 dt;
      
      For[j = 1, j <= nparticles, j++,
       If[pos[[j, 2]] >= L, halfvelocities[[j, 2]] = -Abs[halfvelocities[[j, 2]] ] ];
       If[pos[[j, 2]] <= -L, halfvelocities[[j, 2]] = Abs[halfvelocities[[j, 2]] ] ];
       If[pos[[j, 1]] >= L, halfvelocities[[j, 1]] = -Abs[halfvelocities[[j, 1]] ] ];
       If[pos[[j, 1]] <= -L, halfvelocities[[j, 1]] = Abs[halfvelocities[[j, 1]] ] ];
       ];
      
      pos = posold + halfvelocities dt;
      accelerations = Chop@Table[ Sum[m[[i]]*tableForces[[i, j]], {j, 1, nparticles}], {i, 1, nparticles}];
      velocities = halfvelocities + (accelerations + oldaccelerations)/2 dt;
      Sow[pos];
      , nsteps];][[2, 1]];
frames1 = Table[Graphics[{
     Disk[#, \[Sigma]plot] & /@ evo1[[j, 1 ;; nparticles/2]]
     ,
     Line[{{-L - \[Sigma]plot, -L - \[Sigma]plot}, {-L - \[Sigma]plot, L + \[Sigma]plot}, {L + \[Sigma]plot, L + \[Sigma]plot}, {L + \[Sigma]plot, -L - \[Sigma]plot}, {-L - \[Sigma]plot, -L - \[Sigma]plot}}]
     ,
     Orange, 
     Disk[#, \[Sigma]plot] & /@ evo1[[j, nparticles/2 + 1 ;; -1]]
     }, PlotRange -> {{-L - 1, L + 1}, {-L - 1, L + 1}}]
   , {j, 1, nsteps}];
ListAnimate[frames1]

Лицензирование

Я, владелец авторских прав на это произведение, добровольно публикую его на условиях следующей лицензии:
Creative Commons CC-Zero Этот файл доступен на условиях Creative Commons CC0 1.0 Универсальной передачи в общественное достояние (Universal Public Domain Dedication).
Лица, связанные с работой над этим произведением, решили передать данное произведение в общественное достояние, отказавшись от всех прав на произведение по всему миру в рамках закона об авторских правах (а также связанных и смежных прав), в той степени, которую допускает закон. Вы можете копировать, изменять, распространять и исполнять данное произведение в любых целях, в том числе в коммерческих, без получения на это разрешения автора.

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

Добавьте однострочное описание того, что собой представляет этот файл
At a microscopic level, diffusion is nothing else than a lot of small things bouncing against each other.

Элементы, изображённые на этом файле

изображённый объект

image/gif

История файла

Нажмите на дату/время, чтобы увидеть версию файла от того времени.

Дата/времяМиниатюраРазмерыУчастникПримечание
текущий08:49, 25 апреля 2022Миниатюра для версии от 08:49, 25 апреля 2022480 × 480 (4,58 Мб)wikimediacommons>BertoUploaded own work with UploadWizard

Следующая страница использует этот файл:

Метаданные