<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="uk">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">ФОРМАЛІЗОВАНЕ ПРОЕКТУВАННЯ ТА ГЕНЕРАЦІЯ ПАРАЛЕЛЬНОЇ ПРОГРАМИ ЧИСЕЛЬНОГО ПРОГНОЗУВАННЯ ПОГОДИ</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">А</forename><forename type="middle">Ю</forename><surname>Дорошенко</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">Інститут програмних систем НАН України</orgName>
								<address>
									<addrLine>40</addrLine>
									<postCode>03187</postCode>
									<settlement>Київ</settlement>
									<region>проспект Академіка Глушкова</region>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">О</forename><forename type="middle">Г</forename><surname>Бекетов</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">Інститут програмних систем НАН України</orgName>
								<address>
									<addrLine>40</addrLine>
									<postCode>03187</postCode>
									<settlement>Київ</settlement>
									<region>проспект Академіка Глушкова</region>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">В</forename><forename type="middle">А</forename><surname>Прусов</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">Інститут програмних систем НАН України</orgName>
								<address>
									<addrLine>40</addrLine>
									<postCode>03187</postCode>
									<settlement>Київ</settlement>
									<region>проспект Академіка Глушкова</region>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Ю</forename><forename type="middle">М</forename><surname>Тирчак</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">Інститут програмних систем НАН України</orgName>
								<address>
									<addrLine>40</addrLine>
									<postCode>03187</postCode>
									<settlement>Київ</settlement>
									<region>проспект Академіка Глушкова</region>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">О</forename><forename type="middle">А</forename><surname>Яценко</surname></persName>
							<affiliation key="aff0">
								<orgName type="institution">Інститут програмних систем НАН України</orgName>
								<address>
									<addrLine>40</addrLine>
									<postCode>03187</postCode>
									<settlement>Київ</settlement>
									<region>проспект Академіка Глушкова</region>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">ФОРМАЛІЗОВАНЕ ПРОЕКТУВАННЯ ТА ГЕНЕРАЦІЯ ПАРАЛЕЛЬНОЇ ПРОГРАМИ ЧИСЕЛЬНОГО ПРОГНОЗУВАННЯ ПОГОДИ</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">6BA232B698432D37A2AF06663743A542</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T05:17+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>Розроблено алгеброалгоритмічні специфікації алгоритмів метеорологічного прогнозування із застосуванням створеного інтегрованого інструментарію проектування та синтезу програм. Розроблено послідовну та паралельну програмні реалізації для вирішення задачі прогнозування погоди для території України. Проведено експеримент з виконання паралельної програми на відеографічному прискорювачі.</p><p>Algebra-algorithmic specifications for meteorological forecasting algorithms were developed using the integrated toolkit for designing and synthesis of programs. Sequential and parallel programs for solving the task of weather forecasting for the territory of Ukraine. The results of the experiment of parallel program execution on a graphics accelerator are also provided.</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="uk">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Вступ</head><p>За останні 30 років досягнуто безперечного прогресу в розробці і оперативному застосуванні сучасних чисельних гідродинамічних методів прогнозу погоди. Це стало можливим передусім завдяки появі сучасних ЕОМ, розробці більш довершених і реалістичних математичних моделей, а також істотному збільшенню обсягу початкових метеорологічних даних. Сьогодні удосконалення якості прогнозів відбувається в двох напрямках: поліпшення справджуваності прогнозу і збільшення його завчасності. Короткостроковий прогноз визначається головним чином початковим станом атмосфери. Для середньострокових прогнозів потрібне як детальне знання початкових полів метеорологічних величин, так і уміння описати впливи зовнішніх чинників, які призводять до нового стану рівноваги системи, що прогнозується <ref type="bibr" target="#b17">[1]</ref>. Довгостроковий прогноз меншою мірою залежить від початкового стану атмосфери і включає в себе елементи моделювання клімату. Збільшення завчасності прогнозів веде до необхідності розширення області інтегрування аж до охоплення всієї поверхні земної кулі, що спричиняє необхідність використання потужних мультипроцесорних комп'ютерів.</p><p>Якість чисельних методів прогнозів погоди залежить у першу чергу від таких чинників:</p><p>• точності опису фізичних процесів, що обумовлюють зміни в часі макромасштабних і мезомасштабних характеристик атмосфери під впливом рельєфу;</p><p>• адекватності фактичних фізичних процесів підсіткового масштабу і тих, що моделюються;</p><p>• точності задавання початкових і крайових умов;</p><p>• швидкості чисельного інтегрування вихідних рівнянь. Комп'ютерна реалізація чисельних методів для таких складних задач, як моделювання метеорологічних процесів, наразі вже неможлива без використання методів високопродуктивних обчислень, адже прогнозування погоди завжди пов'язане з жорсткими часовими обмеженнями. Одним з перспективних напрямів у розробці і дослідженні систем паралельних і розподілених обчислень нині є побудова програмних абстракцій у вигляді алгеброалгоритмічних мов і моделей <ref type="bibr" target="#b18">[2]</ref>, що ставить своєю метою розвиток архітектурно-і мовнонезалежних засобів програмування для мультипроцесорних обчислювальних систем і мереж. У роботах <ref type="bibr" target="#b19">[3,</ref><ref type="bibr" target="#b20">4]</ref> був запропонований підхід до вирішення проблем моделювання циркуляції атмосфери, що поєднує комплексність використання адекватних фізичних моделей атмосферних процесів з ефективними обчислювальними схемами і методами програмування високопродуктивних обчислень на паралельних ЕОМ, що дає змогу досягати належного ступеня точності, повноти і своєчасності інформації, необхідної для складання якісних метеорологічних прогнозів. Відмітимо, що подальший прогрес у покращенні показників якості створення паралельних систем метеорологічного прогнозування пов'язаний із використанням відеографічних прискорювачів (GPU) <ref type="bibr" target="#b21">[5]</ref>. У попередніх роботах авторів <ref type="bibr" target="#b18">[2,</ref><ref type="bibr" target="#b22">6]</ref> розроблено інструментарій проектування та синтезу програм (ІПС), що забезпечує автоматизацію розробки алгоритмів та програм для різноманітних паралельних платформ. В роботі <ref type="bibr" target="#b23">[7]</ref> було виконане налаштування системи на генерацію паралельних програм для GPU. Інструментарій ґрунтується на алгебрі алгоритміки <ref type="bibr" target="#b18">[2]</ref> та призначений для конструювання алгоритмів у вигляді схем (високорівневих формалізованих проектів), поданих у системах алгоритмічних алгебр Глушкова (САА). У даній роботі розроблена система використовується для конструювання алгоритмів та генерації програм чисельного прогнозування погоди. Реалізація паралельного алгоритму виконана мовою C++ із використанням технології CUDA <ref type="bibr" target="#b24">[8]</ref>, що дозволяє проводити обчислення на графічних прискорювачах NVIDIA.</p><p>Матеріал даної роботи складається з таких розділів. Розділ 1 присвячено огляду використаної математичної моделі та скінченно-різницевих методів, що застосовуються для чисельного прогнозування стану навколишнього середовища. В розділі 2 виконане формалізоване проектування послідовного та паралельного алгоритмів прогнозування, що ґрунтуються на розглянутій моделі та методах. У розділі 3 наведено результати експерименту із виконання розробленої паралельної програми прогнозування на відеографічному прискорювачі.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1.">Математична модель та скінченно-різницеві методи чисельного прогнозування стану атмосфери</head><p>В атмосфері є процеси та явища різних типів. Одні процеси розвиваються на обмеженій території на протязі невеликого відрізку часу, інші -на широкому просторі довгий час. В залежності від просторової протяжності всі процеси та явища в атмосфері можна умовно поділити на три типи: мікромасштабні (до кілометра), мезомасштабні (порядку десятків і сотень кілометрів) та макромасштабні (понад 1000 км). Формування процесів та явищ в атмосфері в кожній конкретній області виникає під впливом процесів всіх перерахованих вище масштабів <ref type="bibr" target="#b17">[1]</ref>.</p><p>Регіональні та локальні моделі, що описують мезомасштабні та мікромасштабні метеорологічні процеси та явища, визначають формування погоди в окремих пунктах та регіонах, призначені для створення більш обґрунтованих та деталізованих як в просторі, так і в часі прогнозів погоди. Останніми роками у більшості національних, регіональних і світових гідрометеорологічних службах створюються чи вже створені регіональні моделі і пакети програм для розв'язання задач чисельного прогнозу як окремих гідрометеорологічних явищ, так і погоди загалом. Ці моделі призначені для описання локальних процесів на відносно невеликих територіях і в майбутньому дадуть більший ефект, ніж традиційний прогноз погоди.</p><p>Математичне моделювання проводиться в три етапи <ref type="bibr" target="#b17">[1,</ref><ref type="bibr" target="#b25">9]</ref>: 1) побудова математичної моделі, що описує процеси в атмосфері;</p><p>2) вибір методу реалізації моделі;</p><p>3) програмування обчислювального алгоритму на ЕОМ і проведення розрахунків. Щодо першого етапу, на сьогодні існує цілком задовільна математична теорія руху рідини взагалі й атмосферних рухів зокрема <ref type="bibr" target="#b17">[1,</ref><ref type="bibr" target="#b25">[9]</ref><ref type="bibr" target="#b26">[10]</ref><ref type="bibr" target="#b27">[11]</ref>. Ця теорія ґрунтується на фізичних законах збереження кількості руху, маси й енергії. Математично вона виражається рівняннями руху Нав'є-Стокса (точніше Рейнольдса для турбулентних процесів), що зв'язують прискорення в певному напрямку з компонентами об'ємних і поверхневих сил, які діють у цьому напрямку, рівнянням збереження маси, термодинамічним рівнянням енергії і, нарешті, рівнянням стану Бойля-Шарля. Тут варто підкреслити, що ці фундаментальні закони, залишаючись істотно незмінними, складають основу динамічної метеорології і відіграють ключову роль у розумінні математичних моделей прогнозування погоди.</p><p>Реалізація прогностичних моделей відбувається за допомогою чисельних методів. Це обумовлено складністю математичних моделей, що описують циркуляційні процеси в атмосфері. Рівняння, з яких складаються такі моделі, є переважно нелінійними трьохвимірними рівняннями другого порядку з малим параметром при похідних другого порядку. Завдяки наявності малого параметра при старших похідних ці рівняння можуть змінювати свій тип (еліптичний, гіперболічний або параболічний) залежно від режиму руху в атмосфері, що моделюється <ref type="bibr" target="#b17">[1,</ref><ref type="bibr" target="#b25">9]</ref>. Крім цього треба відзначити, що математична модель циркуляції атмосфери та процесів в ній, яка сформульована на базі повних рівнянь Нав'є-Стокса та тепло-масопереносу, описує широкий спектр рухів: мезомасштабні процеси, баротропні та бароклінні хвилі Росбі, інерційно-гравітаційні хвилі, квазістаціонарні струминні течії та ін. Ресурси сучасних ЕОМ поки що не дають змоги здійснювати просторову дискретизацію моделі атмосфери з високим розподіленням. А просторова дискретизація з грубим розподіленням веде до того, що багато мезомасштабних метеорологічних процесів не описуються цією моделлю, оскільки у такому разі опиняються у класі процесів підсіткового масштабу.</p><p>Існують два методи описання механізмів взаємодії процесів різних масштабів. Перший ґрунтується на дискретизації мезомасштабної задачі на нерівномірній сітці з використанням необхідної інтерполяції метеорологічних параметрів, які задані на грубій сітці, у вузли дрібної сітки. Складність цього алгоритму очевидна. Другий метод полягає у розбиванні області розв'язання загальної задачі на низку підобластей, перетворенням у кожній підобласті постановки вихідної задачі з урахуванням описання лише основних процесів та зшиванням розв'язання на межах. Цей напрям нам видається більш економічним, тому конструкція основних алгоритмів, наведених у даній статті, будується з урахуванням можливості використання так званого методу «однобічного впливу» <ref type="bibr" target="#b17">[1,</ref><ref type="bibr" target="#b25">9]</ref>.</p><p>Побудовані в даній роботі алгоритми та програми прогнозування погоди ґрунтуються на регіональній математичній моделі стану атмосфери, що наведена в роботі <ref type="bibr" target="#b17">[1]</ref> і подана за допомогою такої системи рівнянь:</p><formula xml:id="formula_0">                           sin cos 2 cos v r u u w u r v u r u t u                                                u r u r F g r G G v 1 cos 1 1 cos 1 (1)                u F H M 2 1 ,                            sin cos 2 cos u r u v w v r v v r u t v                                               v r v r F g r G G v 1 cos 1 1 1 (2)                v F H M 2 1 ,                              w g r r w g r F H w F H V V     1 2 2 1 1 2 2 2                                                                 cos 1 cos 1 cos 1 v F u F F H v u g r r V (3)                                                   cos 1 cos 1 v F u F F H v u F H ,               w r v r u t cos                                            H G G F H r r 2 1 1 cos 1 (4) R K H Q Q Q dt dq L              ,               q w q r v q r u t q cos (5)   X H G G q F H q r q r                                           2 1 1 cos 1 ,               L L L L q w q r v q r u t q cos                                            L H L G L G q F H q r q r 2 1 1 cos 1 (<label>6</label></formula><formula xml:id="formula_1">)     M M dt dq K H  ,               W W W W q w q r v q r u t q cos                                            W H W G W G q F H q r q r 2 1 1 cos 1 (7)          M dt dq q V F H H W o     1 ,   v F H g       ,<label>( 8 )</label></formula><formula xml:id="formula_2">               d v u r F H g w g w g t p                      1 1 cos cos 1 2 ,<label>( 9 )</label></formula><formula xml:id="formula_3">              k w k r v k r u t k cos                                                         k K F H F H K g v u F H K M v H v M 2 2 2 2 2 , (<label>1 0 )</label></formula><formula xml:id="formula_4">              w r v r u t cos                                                                     M v H v M K F H C k C F H K g v u F H K k C 2 4 2 3 2 2 2 2 , (<label>1 1 )</label></formula><formula xml:id="formula_5"> 2 1 k C K M  . (<label>12</label></formula><formula xml:id="formula_6">)</formula><p>У рівняннях (1)-( <ref type="formula" target="#formula_5">12</ref>) t -час;  -довгота;  -широта; Прогноз значень метеорологічних величин над обмеженою територією G здійснюється на основі методу «одностороннього впливу». Іншими словами, у якості граничних умов для регіональної моделі (1)-( <ref type="formula" target="#formula_5">12</ref>) використовуються результати аналізу і прогнозу, отримані за допомогою макромасштабної (напівсферної або глобальної) моделі.</p><formula xml:id="formula_7">    F H F x    3  -приведена вертикальна ко- ордината, що відслідковує рельєф; F -висота рельєфу, H -повна висота області розв'язання моделі; r -радіус Землі;  -кутова швидкість обертання Землі;   p C R p p p C 0   -приведений тиск; p -тиск, 0 p -значення</formula><p>Стан атмосфери в просторі</p><formula xml:id="formula_8">     , ,  r макромасштабної області     r G r G  визначається вектором       , , , , , , , , , , k q q q T w v u t r W L   дискретних значень аналізу і прогнозу     r t r m m    , , отриманих на основі макромасштабної моделі в моменти часу m t t    M m ,..., 1 , 0  з кроком 1    m m t t  . Для визначення стану атмосфери на обмеженій території G при   m m t t t , 1   </formula><p>виконується розв'язання задачі, що у векторному виразі має вигляд:</p><formula xml:id="formula_9">    D t ,   m m t t t , 1    , G r   (13)   ) ( , r t r m m    , . ,..., 1 , 0 M m </formula><p>Для розв'язання задачі (13) у даній роботі застосовується інтерполювання функції за декількома значеннями самої функції (передісторією) та похідних від неї першого порядку за допомогою алгебраїчного по-ліному. Використовується інтерполяція з кратними вузлами при кратності три. Виконується також апроксимація правих частин диференціальних рівнянь моделі у вузлах просторової сітки. Детальний опис застосованого чисельного методу наведено в монографії <ref type="bibr" target="#b17">[1]</ref>.</p><p>Відмітимо, що значною проблемою при прогнозуванні погоди на основі реалізації математичних моделей є обмеження на час розв'язання, оскільки прогноз погоди потрібно отримувати завчасно. Навіть сучасні потужні обчислювальні машини не дозволяють використовувати дрібну просторову сітку в області розв'язання задачі і часову дискретизацію та ітераційні методи, що дало б можливість підвищити точність прогнозу. Особливо актуальною дана проблема видається для України, тому що питання зменшення затрат машинного часу при розв'язанні задач динамічної метеорології стоїть особливо гостро в зв'язку з відсутністю в національній гідрометслужбі потужної обчислювальної техніки, яку використовують у світових і національних метеорологічних центрах розвинутих держав. В даному випадку альтернативою може стати використання сучасної технології паралельного програмування на відеографічних процесорах, що вирізняються порівняною дешевизною, компактністю та економністю. В даній роботі наведено результати застосування технології CUDA для вирішення задачі прогнозування. В наступному розділі наведено схеми алгоритмів прогнозування, побудовані на основі вищерозглянутої математичної моделі.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.">Формалізоване проектування алгоритмів чисельного прогнозування погоди</head><p>У даному розділі розглядається застосування апарату алгебри алгоритмів для проектування послідовної та паралельної програм прогнозування на основі використання інструментарію ІПС. В основу згаданого інструментарію покладено поняття систем алгоритмічних алгебр В.М. Глушкова <ref type="bibr" target="#b18">[2]</ref>. САА є двохосновною алгеброю &lt;U, B; &gt;, де U -множина операторів, B -множина логічних умов. Оператори є відображеннями інформаційної множини (ІМ) у себе, логічні умови є відображеннями множини ІМ у множину значень 3-значної логіки 3 E = {0, 1,  ,}, де 0 -хибність; 1 -істина;  -невизначеність. Сигнатура операцій САА  =  1   2 складається із системи  1 логічних операцій, що приймають значення в множині B, і системи  2 операцій, що приймають значення в множині операторів U. В САА &lt; U, B;  &gt; фіксується система утворюючих , що є скінченною функціонально повною сукупністю операторів і логічних умов. За допомогою цієї сукупності із використанням суперпозиції операцій, що входять у , породжуються довільні оператори і логічні умови з множин U і B.</p><p>На САА ґрунтується алгоритмічна мова САА/1 <ref type="bibr" target="#b18">[2]</ref>, що використовується для проектування програм в ІПС. Згадана мова призначена для багаторівневого структурного проектування і документування послідовних і паралельних алгоритмів і програм. Перевагою її використання є можливість опису алгоритмів у природно-лінгвістичній формі, зручній для людини, що полегшує досягнення необхідної якості програм. Основними об'єктами мови САА/1 є абстракції операторів (перетворювачів даних) і умов (предикатів). Оператори й умови можуть бути базисними або складеними. Базисний оператор (умова) -це оператор (умова), що в СААсхемі вважається первинною атомарною абстракцією.</p><p>Складені умови будуються на основі базисних за допомогою логічних операцій САА:  диз'юнкція: 'умова1' АБО 'умова2';  кон'юнкція: 'умова1' І 'умова2';  заперечення: НЕ 'умова'.</p><p>Складені оператори будуються з елементарних за допомогою наступних операцій:  "оператор1" ПОТІМ "оператор2" (або "оператор1" ; "оператор2") -послідовне виконання операторів;</p><p> ЯКЩО 'умова' ТО "оператор1" ІНАКШЕ "оператор2" КІНЕЦЬ ЯКЩО -оператор розгалуження;</p><p> ДЛЯ ("змінна1" ВІД "вираз1" ДО "вираз2") ЦИКЛ "оператор" КІНЕЦЬ ЦИКЛУ -оператор циклу з лічильником;</p><p> ПАРАЛЕЛЬНО (i = 1, ..., n) ( "оператор" ) -асинхронне виконання n операторів.</p><p>Ідентифікатори операторів в САА-схемах позначаються подвійними лапками, а умови -одинарними. Рівні в САА-схемах позначені лівими частинами рівностей, а структура кожного рівня конкретизується (в термінах САА) правою частиною відповідної рівності. Ліва частина рівності відокремлюється від правої ланцюжком символів "=".</p><p>Інструментарій ІПС призначений для проектування алгоритмів і генерації програм в цільових мовах програмування (Java та C++). Проектування алгоритмів у ІПС ґрунтується на методі діалогового конструювання синтаксично правильних програм (ДСП-методі) <ref type="bibr" target="#b18">[2]</ref>, що забезпечує синтаксичну правильність схем. При цьому він використовує згадані три різні форми подання алгоритмів у процесі їхнього проектуванняприродно-лінгвістичну (САА-схеми), алгебраїчну (регулярні схеми) і графу-схемну. Система ІПС підтримує генерацію коду паралельних програм різних типів: багатопотокових (зі спільною пам'яттю); програм, орієнтованих на передачу повідомлень (MPI); програм, що використовують відеографічні прискорювачі <ref type="bibr" target="#b23">[7]</ref>. У даній роботі розроблена система була використана для проектування послідовного та паралельного алго-ритмів чисельного прогнозування погоди. Паралельний алгоритм орієнтований на виконання обчислень із використанням GPU.</p><p>В паралельній схемі використовуються операції САА, орієнтовані на формалізацію обчислень в CUDA-програмах, що були запропоновані в роботі <ref type="bibr" target="#b23">[7]</ref>: операції взаємодії із відеопам'яттю, запуску ядра та синхронізації потоків.</p><p>Операція запуску ядра має вигляд:</p><p>Запуск_Ядра (blocksPerGrid, threadsPerBlock) ( "оператор" ), де blocksPerGrid -кількість блоків у сітці (масиві блоків) CUDA; threadsPerBlock -кількість потоків у кожному блоці; "оператор" -частина алгоритму, що буде виконуватися паралельно потоками CUDA.</p><p>Операція синхронізації ЧЕКАТИ 'Обробка у всіх потоках закінчена' виконує очікування завершення обчислень усіма потоками CUDA.</p><p>Далі на основі наведених операцій САА виконується побудова послідовного та паралельного алгоритмів прогнозування.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1.">Послідовний алгоритм.</head><p>Розглянемо наведену далі узагальнену САА-схему послідовної програми прогнозування, що була побудована із використанням інструментарію ІПС.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>СХЕМА МЕТЕОРОЛОГІЧНЕ ПРОГНОЗУВАННЯ ====</head><p>"Послідовний алгоритм чисельного прогнозування погоди" КІНЕЦЬ КОМЕНТАРЯ "Загальна схема обчислень" ==== "Ініціалізація початкових даних";</p><p>"Читання і введення значень рельєфу"; "Введення початкових метеорологічних даних об'єктивного аналізу і прогнозу, отриманих з ГМЦ"; "1. Інтерполяція даних, що задані у вузлах макромасштабної сітки, у вузли мезомасштабної сітки"; "2. Обчислення сіткових значень правих частин Q рівнянь R'=Q гідродинаміки і тепло-, масопереносу у вузлах мезомасштабної сітки"; "3. Розрахунок прогностичних даних на заданий термін прогнозу" КІНЕЦЬ СХЕМИ МЕТЕОРОЛОГІЧНЕ ПРОГНОЗУВАННЯ В наведеному алгоритмі спочатку виконується ініціалізація початкових даних та зчитування із бази даних в програму висот рельєфу для вибраної області прогнозування. У програмі задається розмір області для початкових даних об'єктивного аналізу -географічні координати в градусах по довготі</p><formula xml:id="formula_10">) , ( 0 k X X , широті ) , ( 0 k Y Y і висоті ) , ( 0 k Z Z</formula><p>. Параметрами сітки для цієї області є кількість вузлів і крок сітки по довготі ) , (</p><formula xml:id="formula_11">x D N , широті ) , ( y D M</formula><p>та висоті (L, P(i)), де P(i) -значення тиску на стандартних рівнях в початкових даних об'єктивного аналізу. Розмір області і параметри сітки залежать від території, а також параметрів моделі чисельного прогнозу погоди гідрометеорологічного центру (ГМЦ), з якого приймаються початкові метеорологічні дані. Поточна версія програми орієнтована на дані об'єктивного аналізу з ГМЦ, що розташований у м. Офенбах (Німеччина) <ref type="bibr" target="#b28">[12]</ref>. Отримувані дані являють собою початкові умови, тобто набір вимірів, для конкретного моменту часу, а також прогнозовані дані для наступних моментів часу з кроком у 12 годин. Ці дані потрапляють на вхід програми прогнозування у вигляді набору файлів, яка далі виконує їх зчитування. Після введення даних із файлів в алгоритмі виконується інтерполяція початкових даних у вузли регіональної сітки (заповнення розподілу функцій) та обчислення значень апроксимованих правих частин диференціальних рівнянь моделі циркуляції атмосфери. Складені оператори, що виконують зазначені дії, позначені у вищенаведеній схемі номерами 1 та 2.</p><p>Деталізація цих операторів подана в САА-схемі "ІНТЕРПОЛЯЦІЯ", що наведена далі.</p><p>СХЕМА ІНТЕРПОЛЯЦІЯ ==== "Заповнення початкових полів, заданих на макромасштабній сітці, у вузли мезомасштабної сітки" КІНЕЦЬ КОМЕНТАРЯ "1. Інтерполяція даних, що задані у вузлах макромасштабної сітки, у вузли мезомасштабної сітки" ==== "Оголошення та ініціалізація змінних";</p><p>"Заповнення горизонтального розподілу функцій по довготі"; "Заповнення горизонтального розподілу функцій по широті"; "Заповнення вертикального розподілу залежних функцій"; "Обчислення конденсації пари, нижньої та верхньої межі хмари, опадів" "2. Обчислення сіткових значень правих частин Q рівнянь R'=Q гідродинаміки і тепло-, масопереносу у вузлах мезомасштабної сітки" ==== "Виділити пам'ять для змінних Qx, Qy, RG, Q, RZ, RZ_tmp"; "Обчислення значень W_in(X, Y, Z) на основі рівняння нерозривності методом трапецій"; "Обчислення значень Rg_in(X, Y, Z)"; "Оголошення та ініціалізація змінних"; "Обчислення правих частин Q для (U)"; "Обчислення правих частин Q для (V)"; "Обчислення правих частин Q для (q)"; "Обчислення правих частин Q для (P)"; "Обчислення правих частин Q для (Os)"; "Обчислення правих частин Q для (T)"; "Звільнення зарезервованої пам'яті для Qx, Qy, RG, Q, RZ_tmp";</p><p>У наведеній схемі отримані з ГМЦ початкові метеорологічні дані (тиск, температура, вологість та горизонтальні компоненти вітру) методом поповнення на основі сплайн інтерполяції <ref type="bibr" target="#b17">[1]</ref> перераховуються у вузли мезомасштабної горизонтальної сітки, відстань між якими як по широті, так і по довготі є значно меншою, ніж у вихідній сітці. Потім дані мезомасштабної горизонтальної сітки перераховуються у вузли мезомасштабної вертикальної сітки. І нарешті, праві частини системи рівнянь (1)-( <ref type="formula" target="#formula_5">12</ref>) моделі циркуляції атмосфери (див. розділ 1), які містять часткові похідні першого і другого порядку апроксимуються трьохточковими компактними різницевими схемами <ref type="bibr" target="#b17">[1]</ref> з урахуванням рельєфу підстильної поверхні на території прогнозу. У результаті отримуються значення різницевих аналогів правих частин</p><formula xml:id="formula_12">i jkl jkl f    рівнянь<label>(1)</label></formula><p>-( <ref type="formula" target="#formula_5">12</ref>) для кожної із залежних функцій</p><formula xml:id="formula_13">    , , , , , , , k q q T v u L   ,   J j , 1   ,   K k , 1   ,   L l , 1  </formula><p>мезомасштабної сітки для кожного конкретного терміну об'єктивного аналізу чи прогнозу, що передані з німецької національної служби DWD Offenbach.</p><p>Після розглянутих операторів інтерполяції та обчислення правих частин рівнянь у загальній схемі алгоритму наведено оператор, що виконує обчислення прогностичних даних на необхідний термін часу (від однієї до двох діб). Далі у скороченому вигляді наведена деталізація цього оператора у вигляді схеми. "3. Розрахунок прогностичних даних на заданий термін прогнозу" ==== "Обчислення значень функції (U); "Обчислення значень функції (V); "Обчислення значень функції (T); "Обчислення значень функції (q)"; "Обчислення значень функції (HS)"; "Обчислення значень функції (QC)"; "Обчислення значень W_in(X, Y, Z) на основі рівняння нерозривності методом трапецій"; "Розрахунок нижньої й верхньої межі хмари та опадів"; "Записати отримані значення функцій у файли"; 2.2. Паралельний алгоритм. У даній роботі виконано розпаралелення найбільш ресурсоємної частини послідовного алгоритму, а саме, складеного оператора (підпрограми) обчислення сіткових значень правих частин Q рівнянь Q R   , що позначений у вищенаведеній схемі "ІНТЕРПОЛЯЦІЯ" номером 2. Згаданий оператор містить шість складених операторів, що піддаються розпаралелюванню, і виконують обчислення правих частин для функцій U, V, q, P, Os та T відповідно. Відмітимо, що оператори для функцій U, V та P мають подібну структуру і складаються з кількох вкладених циклів. Оператори для q , Os та T також схожі між собою за структурою. Перший етап розпаралелювання підпрограми "2. Обчислення сіткових значень правих частин Q …" полягає у включенні після оператора оголошення та ініціалізації змінних такої композиції двох операторів:</p><p>"Виділити пам'ять для лінійних масивів та занести значення з 4-вимірних масивів для H, T, U, V, Q, Pr1 у лінійні масиви"; "Виділити область пам'яті на GPU та скопіювати лінійні масиви з CPU в GPU"; Далі виконується розпаралелення для кожного зі згаданих шістьох складених операторів для окремих функцій. Розглянемо перетворення першого складеного оператора -"Обчислення правих частин Q для (U)". Узагальнена послідовна САА-схема цього оператора має вигляд</p><formula xml:id="formula_14">"Обчислення правих частин Q для (U)" ==== ДЛЯ (h ВІД 0 ДО Pk-1) ЦИКЛ ДЛЯ (k ВІД 0 ДО Lmz-1) ЦИКЛ "Заповнити масив для Q значеннями (0)"; "Визначити змінну (FIM) типу (float) = (FIR)" ДЛЯ (j ВІД 0 ДО Mmz-1)</formula><p>ЦИКЛ "Виконати передрозрахунок для першої похідної (Pr1)"; "Виконати обчислення першої похідної (Pr1)"; "Обчислити праві частини Q для (U)"; "Збільшити (FIM) на (DY)" КІНЕЦЬ ЦИКЛУ КІНЕЦЬ ЦИКЛУ КІНЕЦЬ ЦИКЛУ "Обчислити складові рівняння переносу в напрямку X для (U)"; "Обчислити складові рівняння переносу в напрямку Y для (U)"; "Обчислити складові рівняння переносу в напрямку Z для (U)"; "Записати результуючі дані у файли для (U)";</p><p>Розпаралелювання подібних складених операторів у програмі полягає у їх заміні на кілька Cuda-ядер. Перетворення включає такі основні етапи:</p><p>1) заміна операторів передрозрахунку та обчислення першої похідної Pr1 на два Cuda-ядра; 2) запуск ядра, що обчислює праві частини</p><formula xml:id="formula_15">Q рівнянь Q R  <label>;</label></formula><p>3) запуск функцій-ядер, що виконують обчислення на Cuda складових рівняння переносу (адвективних та дифузійних) в напрямках X, Y та Z відповідно. Обчислення виконуються як права частина Q рівняння</p><formula xml:id="formula_16">Q R  <label>;</label></formula><p>4) копіювання отриманих значень Q з відеопам'яті у пам'ять CPU.</p><p>Далі наведено узагальнену паралельну схему обчислення правих частин рівнянь для функції U. Розпаралелення складених операторів, що обчислюють праві частини рівнянь для функцій V та P, виконується аналогічним чином.</p><p>"Паралельне обчислення правих частин Q для (U)" ==== Запуск_Ядра(blocksPerGrid1, threadsPerBlock1)( "Виконати передрозрахунок для першої похідної (Pr1)"; ); Запуск_Ядра(blocksPerGrid2, threadsPerBlock2) ( "Виконати обчислення першої похідної (Pr1)"; ); "Заповнити масив для Q у відеопам'яті значеннями (0)"; Запуск_Ядра(blocksPerGrid3, threadsPerBlock3)( "Обчислити праві частини Q для (U) на Cuda"; ); "Занести в масив (RZ) значення для функції (U)"; "Обчислити складові рівняння переносу в напрямку X на Cuda для (U)"; "Обчислити складові рівняння переносу в напрямку Y на Cuda для (U)"; "Обчислити складові рівняння переносу в напрямку Z на Cuda для (U)"; "Скопіювати масив значень Q з відеопам'яті у пам'ять CPU"; "Занести значення з лінійного масиву для Q у 4-вимірний масив"; "Записати результуючі дані у файли для (U)"; "Обчислити складові рівняння переносу в напрямку X на Cuda для (RZ)"</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.">Результати експерименту</head><p>На основі побудованих у розділі 2 САА-схем алгоритмів прогнозування було реалізовано послідовну та паралельну програми мовою С++ для виконання на CPU та GPU відповідно. Як уже згадувалося в підрозділі 2.2, у даній роботі здійснено розпаралелення підпрограми обчислення значень правих частин Q рівнянь Q R   , виконання якої займає найбільшу кількість часу порівняно з іншими частинами послідовної програми. Розроблені програмні засоби були використані для короткострокового прогнозу погоди на території України.</p><p>Випробування проводились із використанням процесора i5-3570 (у 32-бітному режимі) та графічного прискорювача GeForce GTX 650 Ti, що має наступні характеристики:</p><p>• 768 stream-процесори (CUDA-ядра), базова частота 928 МГц;</p><p>• обсяг глобальної пам'яті 1024 МБ;</p><p>• базова частота пам'яті 5400 МГц. Обчислення в експериментальній задачі для підрахунку часу проводились із початковими умовами, заданими у вузлах просторової сітки, розбитої на 60 × 60 × 8 частин. Обчислення проводились для підрозбиттів вихідної сітки із кроком подрібнення 15 × 15 × 2 частин, починаючи з вихідної сітки. У таблиці наведено значення розміру задачі N (кількість вузлів розбиття розрахункової сітки), часу виконання паралельної c T та послідовної s T програм, а також мультипроцесорне прискорення c s T T Acc </p><p>. На рисунку показано графік залежності мультипроцесорного прискорення від розміру задачі.</p><p>У подальшому планується виконати розпаралелення й інших частин послідовної програми, зокрема, підпрограм інтерполяції даних та розрахунку прогностичних даних, що позначені у послідовній схемі номерами 1 та 3 відповідно (див. розділ 2).</p><p>Таблиця. Час виконання послідовної та паралельної підпрограм (CalkQ) обчислення значень правих частин рівнянь, та мультипроцесорне прискорення Acc Рисунок. Графік залежності мультипроцесорного прискорення від розміру задачі</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Висновки</head><p>Розроблено алгеброалгоритмічні специфікації послідовного та паралельного алгоритмів метеорологічного прогнозування із застосуванням створеного інтегрованого інструментарію проектування та синтезу програм. Алгоритми подано в природно-лінгвістичній формі (мові САА/1), особливостями якої є незалежність від мови програмування і можливість автоматизованого перекладу в довільну мову для забезпечення відповідності алгоритмів та асоційованих з ними програм. Розроблено послідовну та паралельну програмні реалізації для вирішення задачі прогнозування погоди для території України. Проведено експеримент з виконання паралельної програми на відеографічному прискорювачі, що показав значне підвищення продуктивності обчислень порівняно із послідовною програмою.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0"><head></head><label></label><figDesc></figDesc><graphic coords="10,67.68,203.16,459.96,250.20" type="bitmap" /></figure>
		</body>
		<back>
			<div type="annex">
<div xmlns="http://www.tei-c.org/ns/1.0" />			</div>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<analytic>
		<title level="a" type="main">Оголошення та ініціалізація змінних</title>
	</analytic>
	<monogr>
		<title level="m">====</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<title level="m">Виконати передрозрахунок для першої похідної (Pr1)</title>
				<imprint/>
	</monogr>
	<note>Запуск_Ядра(blocksPerGrid4, threadsPerBlock4)</note>
</biblStruct>

<biblStruct xml:id="b2">
	<monogr>
		<title level="m">Запуск_Ядра(blocksPerGrid5, threadsPerBlock5)</title>
				<imprint/>
	</monogr>
	<note>Виконати обчислення першої похідної (Pr1)</note>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<title level="m">Виконати передрозрахунок для першої похідної (Pr2)</title>
				<imprint/>
	</monogr>
	<note>Запуск_Ядра(blocksPerGrid6, threadsPerBlock6)</note>
</biblStruct>

<biblStruct xml:id="b4">
	<monogr>
		<title level="m">Запуск_Ядра(blocksPerGrid7, threadsPerBlock7)</title>
				<imprint/>
	</monogr>
	<note>Виконати обчислення першої похідної (Pr2)</note>
</biblStruct>

<biblStruct xml:id="b5">
	<monogr>
		<title level="m">Запуск_Ядра(blocksPerGrid8, threadsPerBlock8)</title>
				<imprint/>
	</monogr>
	<note>Виконати підсумовування (Pr1) та (Pr2)</note>
</biblStruct>

<biblStruct xml:id="b6">
	<monogr>
		<title level="m" type="main">ЧЕКАТИ &apos;Обробка у всіх потоках закінчена</title>
		<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<title level="m" type="main">Звільнення зарезервованої пам&apos;яті для змінних</title>
		<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b8">
	<monogr>
		<author>
			<persName><surname>Rz -Масив</surname></persName>
		</author>
		<title level="m">у якому зберігаються значення залежної функції, для якої обчислюється права частина рівняння; Pr1 та Pr2 -допоміжні масиви для зберігання значень першої похідної. Далі наведено паралельну схему для оператора обчислення правих частин рівнянь для q . (Для функцій Os та T розпаралелення виконується аналогічним чином). У схемі використовується вищенаведений складений оператор &quot;Обчислити складові рівняння переносу в напрямку X на Cuda для</title>
				<imprint/>
	</monogr>
	<note>Паралельне обчислення складових в напрямках Y та Z є подібним за структурою до згаданого оператора і тут не наводиться. &quot;Паралельне обчислення правих частин Q для (q)&quot; ==== &quot;Заповнити масив для Q у відеопам&apos;яті значеннями (0)</note>
</biblStruct>

<biblStruct xml:id="b9">
	<monogr>
		<title level="m">Занести в масив (RZ) значення для функції (q)</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<monogr>
		<title level="m">Обчислити складові рівняння переносу в напрямку X на Cuda для (q)</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<monogr>
		<title level="m">Обчислити складові рівняння переносу в напрямку Y на Cuda для (q)</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<monogr>
		<title level="m">Обчислити складові рівняння переносу в напрямку Z на Cuda для (q)</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b13">
	<monogr>
		<title level="m" type="main">Скопіювати масив значень Q з відеопам&apos;яті у пам&apos;ять CPU</title>
		<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<monogr>
		<title level="m" type="main">Занести значення з лінійного масиву для Q у 4-вимірний масив</title>
		<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<monogr>
		<title level="m" type="main">Записати результуючі дані у файли для (q)</title>
		<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b16">
	<monogr>
		<title level="m">полягає у вставці операторів звільнення зарезервованої пам&apos;яті для змінних у пам&apos;яті CPU та GPU</title>
				<imprint/>
	</monogr>
	<note>Завершальний етап розпаралелювання підпрограми</note>
</biblStruct>

<biblStruct xml:id="b17">
	<monogr>
		<author>
			<persName><forename type="first">В</forename><forename type="middle">А</forename><surname>Прусов</surname></persName>
		</author>
		<author>
			<persName><forename type="first">А</forename><surname>Дорошенко</surname></persName>
		</author>
		<idno>-542</idno>
		<title level="m">.Ю. Моделювання природних і техногенних процесів в атмосфері. -К: Наукова думка</title>
				<imprint>
			<date type="published" when="2006">2006</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b18">
	<monogr>
		<author>
			<persName><forename type="first">Ф</forename><forename type="middle">И</forename><surname>Андон</surname></persName>
		</author>
		<author>
			<persName><forename type="first">А</forename><forename type="middle">Е</forename><surname>Дорошенко</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Г</forename><forename type="middle">Е</forename><surname>Цейтлин</surname></persName>
		</author>
		<title level="m">Яценко Е.А. Алгеброалгоритмические модели и методы параллельного программирования. -Киев: Академпериодика</title>
				<imprint>
			<date type="published" when="2007">2007</date>
			<biblScope unit="page">631</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b19">
	<monogr>
		<author>
			<persName><forename type="first">В</forename><forename type="middle">А</forename><surname>Прусов</surname></persName>
		</author>
		<author>
			<persName><forename type="first">А</forename><forename type="middle">Е</forename><surname>Дорошенко</surname></persName>
		</author>
		<author>
			<persName><forename type="first">С</forename><surname>Приходько</surname></persName>
		</author>
		<idno>2-3</idno>
		<title level="m">Методы эффективного решения задач моделирования и прогнозирования региональных атмосферных процессов // Проблеми програмування</title>
				<editor>
			<persName><forename type="first">Ю</forename><forename type="middle">М</forename><surname>Тырчак</surname></persName>
		</editor>
		<editor>
			<persName><forename type="first">Р</forename><surname>Черныш</surname></persName>
		</editor>
		<imprint>
			<date type="published" when="2004">2004</date>
			<biblScope unit="page" from="556" to="569" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b20">
	<monogr>
		<author>
			<persName><forename type="first">Ю</forename><forename type="middle">М</forename><surname>Тирчак</surname></persName>
		</author>
		<author>
			<persName><forename type="first">А</forename><surname>Черняк</surname></persName>
		</author>
		<idno>-№ 2-3</idno>
		<title level="m">Паралельні обчислення для ефективної реалізації чисельного прогнозу погоди // Там само</title>
				<imprint>
			<date type="published" when="2006">2006</date>
			<biblScope unit="page" from="110" to="117" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b21">
	<analytic>
		<title level="a" type="main">GPGPU: General-Purpose Computation on GPUs</title>
		<author>
			<persName><forename type="first">M</forename><surname>Harris</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">SIG-GRAPH 2005 GPGPU COURSE</title>
				<imprint>
			<date type="published" when="2005">2005</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b22">
	<monogr>
		<author>
			<persName><forename type="first">Е</forename><forename type="middle">А</forename><surname>Яценко</surname></persName>
		</author>
		<title level="m">Интеграция инструментальных средств алгебры алгоритмов и переписывания термов для разработки эффективных параллельных программ // Проблемы программирования</title>
				<imprint>
			<date type="published" when="2013">2013</date>
			<biblScope unit="page" from="62" to="70" />
		</imprint>
	</monogr>
	<note type="report_type">2</note>
</biblStruct>

<biblStruct xml:id="b23">
	<monogr>
		<author>
			<persName><forename type="first">А</forename><forename type="middle">Ю</forename><surname>Дорошенко</surname></persName>
		</author>
		<author>
			<persName><forename type="first">О</forename><forename type="middle">Г</forename><surname>Бекетов</surname></persName>
		</author>
		<author>
			<persName><forename type="first">К</forename><forename type="middle">А</forename><surname>Жереб</surname></persName>
		</author>
		<author>
			<persName><forename type="first">О</forename><surname>Яценко</surname></persName>
		</author>
		<title level="m">.А. Формалізоване проектування та синтез паралельних програм для відеографічних прискорювачів // Там само</title>
				<imprint>
			<date type="published" when="2013">2013</date>
			<biblScope unit="page" from="38" to="46" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b24">
	<monogr>
		<author>
			<persName><forename type="first">А</forename><forename type="middle">В</forename><surname>Боресков</surname></persName>
		</author>
		<idno>-232</idno>
		<title level="m">Харламов А.А. Основы работы с технологией CUDA. -ДМК-Пресс</title>
				<imprint>
			<date type="published" when="2010">2010</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b25">
	<monogr>
		<author>
			<persName><forename type="first">В</forename><forename type="middle">А</forename><surname>Прусов</surname></persName>
		</author>
		<author>
			<persName><forename type="first">С</forename><surname>Сніжко</surname></persName>
		</author>
		<title level="m">Математичне моделювання атмосферних процесів</title>
				<imprint>
			<publisher>Ніка-Центр</publisher>
			<date type="published" when="2005">2005</date>
			<biblScope unit="page">496</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b26">
	<analytic>
		<title level="a" type="main">В. Некоторые современные проблемы численного прогноза погоды. -М: Известия РАН</title>
		<author>
			<persName><forename type="first">М</forename><forename type="middle">А</forename><surname>Толстих</surname></persName>
		</author>
		<author>
			<persName><forename type="first">А</forename><surname>Фролов</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Физика атмосферы и океана</title>
				<imprint>
			<date type="published" when="2005">2005</date>
			<biblScope unit="volume">41</biblScope>
			<biblScope unit="page" from="315" to="327" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b27">
	<monogr>
		<author>
			<persName><forename type="first">А</forename><forename type="middle">Ф</forename><surname>Ківганов</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Г</forename><forename type="middle">В</forename><surname>Хоменко</surname></persName>
		</author>
		<author>
			<persName><forename type="first">В</forename><surname>Хохлов</surname></persName>
		</author>
		<title level="m">Гідродинамічні методи прогнозу погоди і сіткові методи їх реалізації. -Одеса: Одеський державний екологічний університет</title>
				<editor>
			<persName><forename type="first">В</forename><surname>Бондаренко</surname></persName>
		</editor>
		<imprint>
			<date type="published" when="2002">2002</date>
			<biblScope unit="page">179</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b28">
	<monogr>
		<title level="m" type="main">(веб</title>
		<idno>351424 478821 633788 819025 1037232 1291109 1583356</idno>
		<ptr target="-сайтметеорологічногоцентруум" />
		<imprint>
			<date>33489 63536 107653</date>
			<biblScope unit="page">248897</biblScope>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
