14- дәріс
Тақырыбы: Ғылыми есептерді шешудің параллель алгоритмдерінің
қосымшалары.
N – дененің гравитациялық есебі
N – дене есебі «денелер» арасындағы күштердің өзара әсерін
анықтаудан тұрады (мысалы, тартылыс күштері кқмегімен өзара әсерлесетін
астрономиялық денелер). N – дене есебі молекулярлық динамика мен сұйық
динамикасын қоса, басқа облыстарда да пайда болады. Мұнда есептер
астрономиялық жүйелер терминімен зерттеледі.
N – денелердің гравитациялық есебі. Бұл берілген есептің мақсаты-
Ньютон физикасы заңына бағынатын басқа денелердің гравитациялық
күшінен тәуелді кеңістіктегі денелердің қозғалысы мен позициясын табу.
Массалары m
a
және m
b
болатын денелер арасындағы гравитациялық күш
сәйкесінше келесі формуламен берілген:
F=(G m
a
m
b
) /
r
2
.
мұндағы G – гравитациялық тұрақты, r-денелер арасындағы ара-
қашықтық. Көріп отырғанымыздай, дене жұптары арасындағы күш
пропорционал. 1/
r
2
.
Ньютонның екінші заңы бойынша
F=ma
мұндағы m – дене массасы, F – оған әсер ететін күш, ал а- үдеу нәтижесі.
Нақты сандық сипаттамасын беру үшін дифференциалдық теңдеуді қолданған
жөн:
F=mdv/dt
және
v=dx/dt.
мұндағы v – жылдамдық.
Үшөлшемді кеңістік.
Дене үшөлшемді кеңістікте болғандықтан, барлық вектор- мәндер үш
бағытта x,y және z есептелуі керек. (x,y,z) координаталы үшөлшемді кеңістікте
(x
а
, y
а
, z
а
) және (x
b
,y
b
,z
b
) болғандағы денелер арасындағы ара –қашықтық келесі
формуламен берілген:
f=
Күш осы үш бағытта есептеледі:
F
x
=((G m
a
m
b
) /
r
2
)((x
b
-x
a
) /r),
F
x
=((G m
a
m
b
) /
r
2
)((y
b
-y
a
) /r),
F
x
=((G m
a
m
b
) /
r
2
)((z
b
-z
a
) /r).
Тізбектелген коды:
N- денелер гравитациясының барлық есептеулері келесі алгоритммен
сипатталуы мүмкін
For (t=0; t
For (i=0; i
{
F= Force_routine(i);
V[i]=v[i]+F*dt;
}
For (i=0; i
{
X[i]=x[i];
V[i]=v[i];
}
Параллель коды
Алгоритмнің тізбектелген кодын параллельдеу үшін әрбір процессорге
арналған
денелер
тобын
қолдануы
мүмкін.
Алгоритм
шамамен
процессорлардың О(N
2
) әрекетін алады.
Есептеу уақыты келесі бақылауды қолданғандықтан аяаюы мүмкін: N-дене
кластері кластер массасының ортасында орналасқан толық массалы жеке
қашықтықтағыдай жуықталуы мүмкін.
Барнс және Нат алгоритмі
Берілген есептің кластерлерді пайдаланып қолданылуы куб денеден
тұратын толық кеңістіктен басталады. Алдымен бұл куб сегіз ішкі кубтерге
бөлінеді. Егер ішкі кубте ешқандай бөлшектер болмаса, онда бұл куб әрмен
қарай қарастырылмайды. Егер кубта біреуден артық дене болса, ол әрбір куб
ешқандай денеден тұрмайынша рекурсивті түрде бөліне береді. Бұл процесс
октоағашты құрады, яғни ағаштың әрбір түйіннен сегіз қыры болады. Жапырақ
ұяшықты береді, оның әрқайсысында бір денеден болады.
Екі өлшемді есеп үшін, әрбір рекурсивті бөлім төрт ішкі облыстан тұрады
да, шаршыағаш құрады.
Жалпы ағаш салмақсыз болады. Барнс және Нат алгоритмінде, ағаш
құрылып болғаннан кейін, толық масса және ішкі куб массасының центрі әрбір
түйінде сақталады.
Достарыңызбен бөлісу: |