Редактирование: "Распространение тепла в кристалле со случайными перемещениями и нулевыми скоростями"

Перейти к: навигация, поиск

Внимание! Вы не авторизовались на сайте. Ваш IP-адрес будет публично видимым, если вы будете вносить любые правки. Если вы войдёте или создадите учётную запись, правки вместо этого будут связаны с вашим именем пользователя, а также у вас появятся другие преимущества.

Правка может быть отменена. Пожалуйста, просмотрите сравнение версий, чтобы убедиться, что это именно те изменения, которые вас интересуют, и нажмите «Записать страницу», чтобы изменения вступили в силу.
Текущая версия Ваш текст
Строка 16: Строка 16:
  
 
Уравнения динамики кристалла имеют вид:
 
Уравнения динамики кристалла имеют вид:
 +
<math> \ddot u_n = \omega_0^2 (u_{n-1} - 2u_n + u_{n+1}),\quad \omega_0 = \sqrt{\frac{C}{m}},
  
<math> \ddot u_n = \omega_0^2 (u_{n-1} - 2u_n + u_{n+1}),\quad \omega_0 = \sqrt{\frac{C}{m}} ,</math><br>
+
где <math> u_n </math> --- перемещение <math>n</math>-й частицы; <math>n</math> --- индекс, принимающий произвольные целые значения, <math>C</math> --- жесткость связи между частицами, <math>m</math> --- масса частицы.
 
 
где <math> u_n </math> - перемещение <math>n</math>-й частицы; <math>n</math> - индекс, принимающий произвольные целые значения, <math>C</math> - жесткость связи между частицами, <math>m</math> - масса частицы.
 
 
 
Кинетическая температура T определяется как:  <math> T(x)= \frac{m}{k_{b}}<\ddot u_i^{2}> </math><br>, где <math>k_{b}</math> — постоянная Больцмана,
 
  
 
==Результаты==
 
==Результаты==
 
При исследовании колебаний энергии в одномерных кристаллах рассматривается два метода осреднения случайных процессов:
 
 
1. По пространству: система рассчитывается для большого количества частиц, делится на 𝑛 отрезков по 𝑚 частиц, после чего находится среднее
 
значение для каждого отрезка.
 
 
2. По ансамблю реализаций: осреднение производится по определенному количеству реализаций одной и той же системы (По ансамблю можно осреднять потому, что мы считаем один и тот же процесс, основанный на генерации случайных чисел).
 
 
 
Осреднение по пространству проводится следующим образом: 𝑁 частиц делится на 100 отрезков по 𝑁/100 частиц в каждом отрезке. Для каждого отрезка
 
находится среднее значение, которое и используется для построения графика.
 
Для каждой системы рассматривается 𝑅 реализаций. Температура усредняется
 
сначала по реализациям, а только потом по пространству
 
 
 
 
 
Рассматривается одномерный кристалл, состоящий из 𝑁 частиц. Исследуются
 
два случая:
 
 
1) В первом случае в начальный момент времени первая половина кристалла нагрета с помощью задания случайных скоростей частиц, вторая половина находится в состоянии покоя
 
 
* Число частиц <math>10^{4}</math>, число реализаций 200
 
[[File:chain1.gif]]
 
 
Распространение температуры в кристалле (по горизонтали длина кристалла, вертикали - температура)
 
 
 
2) Во втором случае в начальный момент времени всем частицам заданно случайное перемещение, при этом у первой половины перемещения в два раза больше
 
 
* Число частиц <math>10^{4}</math>, число реализаций 200
 
[[File:chain2.gif]]
 
 
Распространение температуры в кристалле (по горизонтали длина кристалла, вертикали - температура)
 
 
 
Сравнение двух случаев при числе частиц <math>10^{5}</math>, число реализаций 200
 
 
[[File:download.png]]
 
<div class="mw-collapsible mw-collapsed" style="width:100%" >
 
'''Текст программы на языке Python:''' <div class="mw-collapsible-content">
 
<syntaxhighlight lang="python" line start="1" enclose="div">
 
import matplotlib.pyplot as plt
 
import numpy as np
 
import time
 
from numpy import pi
 
%matplotlib inline
 
 
from matplotlib import cm
 
from celluloid import Camera
 
camera = Camera(plt.figure(figsize=(8, 8)))
 
 
start = time.time()
 
Np = 10**4                # mod 100
 
Ns = 12000                # mod 2
 
C = 1           
 
m = 1
 
 
w0 = np.sqrt(C/m)         
 
dt = (2*pi/w0)/40
 
 
T = np.zeros((int(Ns/2)-1,100))
 
def calculation(random_number):
 
    global T
 
    np.random.seed(random_number)
 
    U = np.zeros((2, Np))
 
    V = np.zeros(Np)
 
    # first step
 
#    V[:(Np)//2] = (np.random.random((Np)//2) * 2 - 1)
 
#    U[1,:] = V*dt
 
   
 
    U[1,:Np//2] = (np.random.random(Np//2) * 2 - 1)*2*dt
 
    U[1,Np//2:] = (np.random.random(Np//2) * 2 - 1)*dt
 
   
 
    # next steps
 
    l = lambda x,y : (x[y-1] - 2*x[y]  + x[y+1])
 
    for k in range(0,int(Ns/2)-1):
 
        U[0,:Np-1] =  dt**2 * l( U[1],np.arange(0,Np-1) ) + 2*U[1,:Np-1] - U[0,:Np-1]
 
        U[1,:Np-1] =  dt**2 * l( U[0],np.arange(0,Np-1) ) + 2*U[0,:Np-1] - U[1,:Np-1]
 
        # velosity and temperature:
 
     
 
        V_2 = ((U[1] - U[0])/dt)**2
 
        T[k,:] = T[k,:] +  np.mean(V_2.reshape(100,int(Np/100)), axis=1)
 
 
Number_of_realization = 200
 
for i in np.random.random(Number_of_realization):
 
    calculation(int(i*100))
 
 
x = np.arange(1,101)
 
for k in range(59):
 
    y = T[k*100,:]/(Number_of_realization)
 
    y = y - np.mean(y[80:])
 
    plt.plot(x, y/np.mean(y[:20]), color='blue')
 
    camera.snap()
 
anim = camera.animate(blit=True)
 
anim.save('chain2.gif')
 
 
end = time.time()
 
print(end-start)
 
 
</syntaxhighlight>
 
</div>
 
</div>
 
 
 
=== См. также ===
 
 
*[[Метод динамики частиц]]
 
*[[Механика дискретных сред]]
 
*[[Введение в механику дискретных сред]]
 
*[[Виртуальная лаборатория]]
 
*[[Курсовые_работы_по_ТОМДЧ:_2012-2013| Курсовые работы 2012-2013 учебного года]]
 
*[[Курсовые_работы_по_ТОМДЧ:_2013-2014| Курсовые работы 2013-2014 учебного года]]
 
*[[Курсовые_работы_по_ВМДС:_2014-2015 | Курсовые работы 2014-2015 учебного года]]
 
* [[ Курсовые_работы_по_ВМДС:_2016-2017 | Курсовые работы 2016-2017 учебного года]]
 
 
 
[[Category: Студенческие проекты]]
 
[[Category: Механика дискретных сред]]
 
Вам запрещено изменять защиту статьи. Edit Создать редактором

Обратите внимание, что все добавления и изменения текста статьи рассматриваются как выпущенные на условиях лицензии Public Domain (см. Department of Theoretical and Applied Mechanics:Авторские права). Если вы не хотите, чтобы ваши тексты свободно распространялись и редактировались любым желающим, не помещайте их сюда.
Вы также подтверждаете, что являетесь автором вносимых дополнений или скопировали их из источника, допускающего свободное распространение и изменение своего содержимого.
НЕ РАЗМЕЩАЙТЕ БЕЗ РАЗРЕШЕНИЯ МАТЕРИАЛЫ, ОХРАНЯЕМЫЕ АВТОРСКИМ ПРАВОМ!

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Отменить | Справка по редактированию  (в новом окне)