<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta>
      <journal-title-group>
        <journal-title>J. International Journal of Computing</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <article-id pub-id-type="doi">10.3390/su13031145</article-id>
      <title-group>
        <article-title>Distribution of Infectious Diseases Using Parallel Calculations</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Lesia Mochurad</string-name>
          <email>lesia.i.mochurad@lpnu.ua</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Natalya Kustra</string-name>
          <email>Nataliia.O.Kustra@lpnu.ua</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>OpenMP</string-name>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Lviv Polytechnic National University</institution>
          ,
          <addr-line>Lviv, 79013</addr-line>
          ,
          <country country="UA">Ukraine</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2012</year>
      </pub-date>
      <volume>109</volume>
      <fpage>0000</fpage>
      <lpage>0002</lpage>
      <abstract>
        <p>Global warming and related climate changes are the subjects of intensive research as they affect the social, economic, and medical aspects of human life. Large-scale climate change: melting glaciers and the spread of new infections are likely to have a negative impact on the world economy. The spread of infectious diseases is indeed relevant, but the amount of data needed to model the spread is large, and therefore the processing time of this data is large. Therefore, the use of parallel algorithms will speed up the solution to this problem, and, accordingly, faster obtaining the results of modeling the spread of infectious diseases. A parallel algorithm for modeling the spread of infectious diseases based on technology has been developed and has been investigated; the benefits of using such a feature as multi-core personal computers have been analyzed in the paper. Parallel modeling uses a graph of an imaginary city. The results of speed and acceleration of the parallel algorithm, which indicates the optimization of the computational process have been analyzed. You can increase the acceleration rate, as well as direct the efficiency to one by varying the number of processor cores. An influence of global warming, a mathematical model, a parallel algorithm, OpenMP technology, acceleration.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>In light of recent world events, people are more interested than ever in the spread of infectious
diseases. A complex global health care system has been developed to repel known and unknown
threats of infectious diseases. However, the world continues to face long-standing, emerging, and
recurring threats of infectious diseases. These threats vary widely in severity and probability. They
also have different consequences for morbidity and mortality, as well as for social and economic
factors. The question is whether the current global health care system can provide effective protection
against the dynamic array of threats of infectious diseases that have called into question recent
outbreaks of Ebola, Zika, Dengue, Middle East respiratory syndrome, severe acute respiratory
syndrome, influenza and the so-called coronavirus COVID-19. This can be due to many factors,
including rapid population growth in areas with weak health care systems, urbanization, globalization,
civil conflict, and the possibility of human-animal disease transmission. There is also a potential risk
of outbreaks of viruses resulting from laboratory accidents or deliberate biological attacks.</p>
      <p>
        Also, one of the potential risks of virus outbreaks is climate change or so-called global warming.
Fourier transform is used in the process of mathematical modeling and analysis of the latter. This
operation is also used in listening to electromagnetic signals of artificial origin. In particular,
NASA [
        <xref ref-type="bibr" rid="ref1 ref2">1, 2</xref>
        ] addressed this problem by supporting the SETI project [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. His idea is to listen to
electromagnetic signals of artificial origin. If there is a developed civilization somewhere, it could
evolve enough to invent the radio, the television, or any other system that works with electromagnetic
      </p>
      <p>2022 Copyright for this paper by its authors.
waves. Sooner or later, the signals generated by such civilizations will reach the Earth, where we will
be able to recognize them. Of course, it is unlikely that any meaningful set of information for millions
of light-years will reach us undistorted, Information from radio telescopes is used not only in the
SETI project but also for radio astronomy research: observation of radio galaxies, quasars, pulsars,
supernova remnants, radio radiation of the Sun, stars, planets, etc., black holes. Parallel calculations
are also used for this purpose. They make it possible to obtain the frequency spectrum from the
electromagnetic flux much faster than during sequential processing. Calculations can even be
accelerated so much that we get the result in real-time.</p>
      <p>
        With the rapid accumulation of processed data in the simulation of a problem, there is a need to
apply the parallelization of the computational process, to be able to make decisions in real-time. In
particular, parallel calculations are considered as a tool for modeling complex phenomena and
processes, as well as in solving cumbersome scientific and engineering problems [
        <xref ref-type="bibr" rid="ref4 ref5">4-6</xref>
        ]: in the study of
atmospheric phenomena, environmental pollution, solving problems of geology, seismology; applied
and nuclear physics, electrical engineering, particle physics, materials science, nanotechnology,
microelectronics; research in the fields of biotechnology, ecology, population biology, virology,
genetics, pharmacology, and molecular chemistry.
      </p>
      <p>That is why there is currently a growing interest in parallel computing in various fields, including
medicine [7, 8]. Scientists and engineers are doing their best to model or predict the possible spread of
viral diseases in the future. This section will create a model for the spread of infectious diseases
within a single city using parallel calculations. This is an important step in understanding and
researching how a person may respond to different treatments or attempts to predict a pandemic. The
main task is to create a simplified model of infectious disease and show how the disease spreads
among the population. You can learn more about algorithms and modeling methods in the following
sections.
2.</p>
    </sec>
    <sec id="sec-2">
      <title>Related Works</title>
      <p>One of the natural phenomena for the analysis and modeling of which parallel calculations are
used is global warming. Global warming is a very important issue for life on the planet today.
Weather conditions are changing, and it seems that human activity is one of the main reasons. Since
the beginning of the industrial revolution, the burning of fossil fuels has increased unnatural
emissions of carbon dioxide into the atmosphere. Carbon dioxide is a greenhouse gas that absorbs
infrared radiation generated by the reflection of sunlight on the Earth's surface, capturing heat in the
atmosphere. Global warming and related climate change are the subjects of intensive research because
they affect the social, economic, and medical aspects of human life. One of the most interesting works
in this field was the article [9]. This work investigates the impact of global warming on infectious
diseases and its future prospects. Global warming has different effects on human health. The main
indirect consequences are infectious diseases. Although the impact on human health varies, depending
on the location of the countries concerned and the socio-economic situation. Among infectious
diseases, aquatic, foodborne and infectious diseases transmitted with food are the three main
categories that are predicted to be most prevalent. Infections of infectious diseases such as malaria
and dengue fever are mainly due to the expansion of infected areas and an increase in the number and
activity of infected mosquitoes. The number of cases of diarrhea transmitted by water and food is
growing. Implementing measures to adapt to the effects of global warming is the most practical action
we can take. It is generally accepted that the impact of global warming on infectious diseases is not
yet apparent at this time in East Asia. However, these effects will manifest themselves in one form or
another if global warming continues to progress in the future [9]. The following conclusions were
drawn from this scientific work: development of vaccines and vaccination, development of new
drugs, creation of monitoring and control programs; the forecast of the epidemic and the development
of preventive measures are quite important tools in the fight against the epidemic.</p>
      <p>In the conclusions, many researchers suggest that climate change has a negative impact on human
health, including infectious diseases. However, it should be noted that the level of impact of climate
change on human health will vary from region to region depending on various factors, such as social
infrastructure and the establishment of countermeasures. This complicates the interpretation of
research results. Understanding the impact of climate change on human health has progressed greatly
in recent years; however, it is true that much more research and data are needed to further understand
the effects of climate change in detail.</p>
      <p>There are other important issues to consider, especially when studying the effects of infectious
diseases. The number of patients with infectious diseases is influenced by many factors. There are
differences in "contagiousness" among the strains of each pathogen. Thus, the amount of symptomatic
infection may vary depending on the level of "infectivity" of the dominant strains of the pathogen. In
addition, changes in the number of cases depend to a large extent on the accuracy of surveillance and
reporting systems, which have not yet been established in many developing countries. Thus, the study
of the impact of global warming on infectious diseases should take into account multiple biological,
sociological, and economic factors.</p>
      <p>Also, a very important article in this study was the scientific work [10]. The authors have
developed a computerized algorithm that estimates "who transmits to whom", that is, the most likely
routes of transmission during an outbreak of a human-transmitted disease. This algorithm uses basic
information about the natural history of the disease, population structure and chronology of the
observed symptoms. To assess the effectiveness of the algorithm, the authors built a simulator with
parameters describing the disease and population to simulate accidental outbreaks of influenza. The
performance of the algorithm was compared with three reference methods that simulated how a
person behaves in such situations. For any size of outbreak, the algorithm provided the majority of
cases for which the source that transmitted the infection was identified. The authors also demonstrated
the applicability of the algorithm for describing influenza outbreaks in nursing homes.</p>
      <p>In this work [11], the authors present a categorization framework for categorizing multiscale
models of infectious disease systems. The categorization framework consists of five integration
frameworks and five criteria.</p>
      <p>The use of MPI technology for parallel calculations is well covered in [12, 13]. In these works, the
author explores all the advantages and disadvantages of using MPI in the study of algorithms for
solving problems that require large data processing.</p>
      <p>Also expanding the topic of parallel simulations, we drew attention to the article [14]. Preventing
and combating epidemics in human or computer networks is a major issue. This work presents the
implementation of an algorithm that simulates the spread of the epidemic in networks using CUDA
technology. The spread of epidemics on the network is modeled by a discrete SIR model ("can be
infected" – infected – recovered). This implementation allows you to select a starting point and
control the spread of the epidemic in each cycle. Compared to a regular CPU implementation, a
CUDA implementation achieves approximately 10x faster runtime, which is important for running
tests on large networks. The implementation was tested on real social networks consisting of more
than 5 million nodes. Therefore, this implementation may be of practical importance in the analysis of
an epidemic that extends to large networks.</p>
      <p>In [15, 16] the use of OpenMP technology in modeling big data processing problems was
investigated. The advantages of using such a property as high-fluidity and multi-nuclear architecture
of modern personal computers are shown. This article will also investigate the use of OpenMP in
parallelization of the algorithm for modeling the spread of infectious diseases.</p>
    </sec>
    <sec id="sec-3">
      <title>3. Proposed methodology</title>
      <p>Modeling the spread of infectious diseases using parallel computations is an important step in
studying how populations can respond to different treatments or to predict a pandemic. The focus of
the study in this section is a simplified model of an infectious disease spread by the population.
People move randomly, which can be mathematically described by a graph, the vertices of which
represent the points of contact. The spread of the disease is possible when an infected and healthy
person are in the same place. This section will develop a parallel algorithm for such modeling using
OpenMP technology [17].</p>
      <p>This approach is based on the statement: for any period of time it is true to say that the number of
people who joined the array of patients is equal to the number of people who have ceased to be
healthy.</p>
      <p>– the probability of infecting a healthy person in contact with a sick person,
  ( ) = | ( )| – the number of healthy individuals at time t,
  ( ) = | ( )| – the number of patients.</p>
      <p>The mathematical model for our sequential algorithm were the formulas for the spread of the
disease of the following type:
   ( ) = −   ( )  ( );</p>
      <p>( ) =    ( )  ( ).</p>
      <p>Obviously, when   +   =  =</p>
      <p>, we have:
    ( ) = −   ( )( −   ( ));
    ( ) =  ( −   ( ))  ( ).</p>
      <p>Here the multiplication   ( )( −   ( )) = ( −   ( ))  ( ) =   ( )  ( ) – is equal to the
number of contacts per unit period of time if each healthy person is in contact with each patient. The
first line describes the number of those who fell ill (left part of the equation) as the share of those who
became infected during contact (right part of the equation). In the second equation, the new number of
patients (left part of the equation) is signed as the part of those infected by contact (right part of the
equation).</p>
      <p>The main disadvantage of the approach is the assumption that the sick and healthy are evenly
distributed in space. As a result, β is a constant for all participants in the social network, and it is
supposed that contacts occur between all couples (sick, healthy). Also, the model makes predictions at
the level of quantity and does not make any assumptions about who will get sick in the next moment.</p>
      <p>The system of equations presented above can be rewritten for the case when at any given time a
healthy person has approximately (k) contact with patients, and therefore (k) opportunities to become
infected.</p>
      <p>( ) = − ( )  ( )( −   ( ));</p>
      <p>( ) = − ( )  ( )( −   ( )).</p>
      <p />
      <p>Three algorithms were considered. The basis of our study was a known sequential non-optimized
algorithm. In order to improve and speed up the program, we optimized it by adding some changes:
exit from the closed for loop, which compared if a person with a suspected disease was infected;
skipping iterations for already infected people. We also developed a parallel algorithm, the purpose of
which was to parallelize the bypass of an undirected acyclic graph, record.</p>
      <p>More about algorithms:
● Sequential (without optimization): algorithm for traversing an undirected acyclic graph, using
path search tables ("hash tables" that store optimal routes from one vertex to another to avoid
recalculating the same paths), C ++ 11, STD libraries, STL and Boost Graph.
● Sequential (optimized): non-directional acyclic graph algorithm using path search tables,
C++ 11, STD, STL and Boost Graph libraries. Some optimizations were introduced: exit from the
closed for loop, which compared if a person suspected of having the disease became infected;
skipping iterations for already infected people.
● Parallel: non-directional acyclic graph algorithm using path search tables, C++ 11, STD, STL,
Boost Graph and OpenMP libraries with most functions. The above-mentioned optimizations were
also applied.</p>
      <p>Due to an OpenMP issue with the GCC compiler on Ubuntu Linux, the experiments were
performed on a Windows 10 x64 computer using Visual Studio and the Intel C++ Compiler update.
The first versions of the code program were implemented using MSBuild and Visual Studio. In
addition, the Intel VTune application was used to debug the program.</p>
      <p>Parallel modeling uses a graph (Figure 1), the form of which can be seen in Table 1. A graph has a
certain number of nodes and edges and does not change during the simulation process, instead people
can move along the edges between its nodes.</p>
      <p>All places where people are are stored in an undirected acyclic graph.</p>
      <p>The Individual class has the following structure:
● One person can be infected, cured, infect others.
● The try_infect method uses uniform distribution and returns a real number. The move method
uses the same method, but returns an integer. This random number is used to select the next
random adjacent location to move the person. The location can be either the same node of the
graph, or another node to which it is connected at a distance of 1 node from the current node.</p>
      <p>The IndividualParameters structure determines a person's probability of becoming infected and the
period of infection in the epoch.</p>
      <p>The GraphHandler class has only static methods:
● Showing the results of the epidemic;
● Export results to csv;
● Generation of undirected graphs;
● Read graphs from files;
● Location of persons on the graph;
● Generate a path search table for neighboring nodes.</p>
      <p>The get_node_neighborhood_lookup_map method scans the graph and returns a table that
connects each vector location to neighboring locations. It uses a specialized Boost iterator that
bypasses all nodes/vertices. For each node, an iterator with Boost can run on all adjacent vertices.
Adjacent indices are stored inside the vector. The method of obtaining random faces generates a
vector of faces of a certain size. This assigns them a random location.</p>
      <p>The get_location_undirected_graph_from_file method can process an imaginary city graph file and
generate an undirected location graph. It analyzes the file using Boost. This method reads two size_t
values from each line from the file. A search table that is smaller (4 bytes) than 8 bytes size_t can be
used. As will be shown later, this will help speed up the execution of simulations for both serial and
parallel versions, especially when the number of simulated individuals exceeds 10.000.</p>
      <p>The tuple vector is used to store epoch-making simulation statistics. Each epoch is represented by
3 integers: "number of contacts", "number of infected" and "number of recovered" persons. One
motorcade is stored for each era.</p>
      <p>The show_epidemic_results method can display information for each era:
● Percentage of contacts between persons (part of all people who have been infected at least
once).
● The peak of the epidemic in percent.
● The peak of the epidemic.
● Number of contacts infected and recovered at the end of the simulation.</p>
      <p>To check the simulation data, there is an assert_epidemic_results method that does this.
Some optimizations for the sequential algorithm were applied in the "infection phase":
● Checking whether another person will be infected: first you need to check whether the person
is already infected. Second, check if two people are in the same place. The second operation is
"more expensive" in terms of performance, and this cost can be completely missed.
● When you try to infect a person, you need to check if they are really infected. If so, the
inspection cycle for that person should be stopped. You no longer need to check the infection
between this person and any other person.</p>
      <p>Initially, double-floating-point exact numbers were used, but later all of these numbers were
replaced with the same ones, but with one decimal place, as they can be scaled better. In addition,
they use less memory (64 vs. 32 bits). Achieving as many threads as possible was the most defining
factor in program parallelization. During program execution, it was found that a call to obtain the
size() of the vector would significantly impair performance. The scalar variable size_t inside the
parallel section solved this problem.</p>
      <p>In the Figure 2 below you can see part of the parallel algorithm of the program, which parallels the
comparison when a healthy person comes into contact with a sick person, whether he is really
infected. Simultaneous updating of the vector of patients was also paralleled.</p>
      <p>The omp_get_wtime method is used to determine the time of both serial and parallel algorithms.
“Benchmark” can be used to perform several simulations simultaneously and output the results in
CSV (Table 1, Table 2).</p>
      <p>Each data column represents the execution time, the execution type (synchronous or parallel), the
number of threads, the number of people, the number of nodes, the number of edges, the number of
epochs (steps), the number of the epoch from which began modeling, and the number of repetitions of
the experiment with these parameters, respectively. Before each execution, the reset_input method
will re-initialize all input simulation parameters.</p>
      <p>In general, the factor that usually slows down parallel execution is the synchronization of
elements. These elements are usually collections of shared memory objects that can be read and
written simultaneously by many different threads. This introduces the need to use atomic and critical
sections, but at the same time it slows down the program.
17029</p>
      <p>4
17029</p>
      <p>4
17029</p>
      <p>4
17029</p>
      <p>4
17029</p>
      <p>4
17029</p>
      <p>4
17029</p>
      <p>4
17029</p>
      <p>4
17029
4
30
30
30
30
30
30
30
30
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
The following OpenMP features have been applied:
● Synchronization was used to a minimum and this was achieved by changing the algorithm so
that each thread could write to different elements, ie in the "infection phase": since we change only
individuals with indices of each thread, there is no need for an atomic/critical section for the vector
element, recorded with only one thread.
● Local thread variables are used to minimize access to global memory.
● External for loops are paralleled.
● Implemented the ability to save local thread variables at the end of each cycle (also
implemented a check to see if it is necessary – for example, for future comparisons)
● Private modifiers are used for the indexes of the cycles of each thread, as well as firstprivate
for other temporary variables.
● Changed the number of iterations of the loop, which can be processed by each thread using
Schedule (static, chunk). In practice, the use of Schedule (auto) showed a significant acceleration
(see Figure 3).</p>
      <p>Used reduction: + in the results collection phase. This preprocessor directive eliminates the need to
use the atomic section on common variables of the number of infected, recovered, and the number of
contacts that are updated by all threads at the same time. Compared to the atomic section, updating
variables with the reduction directive has been more productive.</p>
      <p>So, the acceleration of the parallel algorithm compared to the sequential non-optimized algorithm
using the parallel method was 24%.</p>
    </sec>
    <sec id="sec-4">
      <title>4. Results</title>
      <p>1 708864979 708865058
2 708864979 708864885
3 708864979 708865225
4 1470917308 26263088
5 1470917308 2773443163
6 1470917309 1470917034
7 1470917309 27734414305
8 1470917309 1270915518
9 1470917309 654621604
10 654162161 1470917302
11 654162161 1470917728
12 14790017300 1470917865
13 14790017300 1718443526
14 14790017302 1718443525
15 14790017302 26862406
16 14790027304 2773443160
17 14790027304 2772443660
18 314432202 2773443165
19 314432203 262636088
20 314432204 262637078
21 314432303 262630988</p>
      <p>The simulation time for more than 10 000 people is growing at an exponential rate (see Figure 5).
However, the more the “population” grows, the greater the acceleration (see Figure 4). Also, the
advantage of using 4 threads instead of three is already visible in simulations for 50 000 people and
more (see Figure 6).</p>
      <p>The parallel algorithm gives acceleration from only 500 people ( see Figure 5). Finally, the general
conclusion is that even minor code optimizations have a strong effect on the execution time of the
algorithm (even sequential) (see Figure 7).</p>
      <p>Table 4 shows the acceleration   ( ) [18] for different numbers of people and threads for a 4-core
processor.
After that, we get an acceleration of 2.5 times for 4 cores.</p>
      <p>
        Table 5 shows the efficiency   ( ) [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] for different numbers of people and threads for a 4-core
processor.
0.24
0.2775
0.3525
0.3475
0.4075
0.37
0.37
0.4375
      </p>
      <p>As a result of numerical experiments, we have been achieved the results presented in Table 8.</p>
      <p>Each column of data represents the epoch, the number of contacts, the number of infected people,
and the number of recovered people, respectively. From here a certain dependence between
infected/recovered people can be deduced (see Figure 8).</p>
    </sec>
    <sec id="sec-5">
      <title>5. Conclusion</title>
      <p>In this paper has been simulated how dangerous infectious diseases spread among the population
of an “imaginary” city. Our model was simplified: it was believed that the city is isolated from
external influences, i.e. the population of the city is in contact only with each other; the physical
characteristics of people were not taken into account; simulation was performed until all residents
became ill and acquired immunity. A simplified model gives better results after simulating the spread
of infection and does not require very powerful computing resources. The relevance of this topic can
be seen even now: the world is suffering from the global pandemic of the coronavirus COVID – 19.
Due to strong changes in the climate of our planet, predicting the spread of viruses is becoming
increasingly difficult. In the future, due to the increase in average annual temperature, viruses, which
mainly existed in the tropics, will spread to new areas. Scientists have also noted that melting glaciers
lead to the emergence of a large number of ancient viruses that are not known to modern science.</p>
      <p>Various IT technologies, including parallel computing and modeling, come to the rescue to predict
the spread of infectious diseases in the future. With their help, researchers accelerate and optimize
existing algorithms to obtain faster and more accurate results.</p>
      <p>The developed parallel algorithm provides a significant advantage for users with less powerful
computing systems who seek to study the process by modeling the above. With OpenMP technology,
we have reduced program execution time and increased support for various types of hardware. This
makes it possible to get the result in real-time.</p>
      <p>The proposed approach can be used to optimize the solution of problems described in [19-21]. In
general, the research conducted in this work can be continued by expanding the criteria for modeling
and choosing other technologies of distributed and parallel computing, i.e. taking into account the
non-simplified model of the spread of infectious diseases. And given the fact that the city may not be
isolated from external influences, that is, the city population may be in contact with the population of
other cities; it must be taken into account the physical characteristics of people and so on.</p>
    </sec>
    <sec id="sec-6">
      <title>6. References</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>Yadigar</given-names>
            <surname>Sekerci</surname>
          </string-name>
          ,
          <article-title>Adaptation of species as response to climate change: Predator-prey mathematical model</article-title>
          ,
          <source>J. AIMS Mathematics</source>
          ,
          <year>2020</year>
          ,
          <volume>5</volume>
          (
          <issue>4</issue>
          ):
          <fpage>3875</fpage>
          -
          <lpage>3898</lpage>
          . doi:
          <volume>10</volume>
          .3934/math.2020251.
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>A.</given-names>
            <surname>Buis</surname>
          </string-name>
          ,
          <source>Study Confirms Climate Models are Getting Future Warming Projections Right, January</source>
          <volume>9</volume>
          ,
          <year>2020</year>
          ,
          <article-title>NASA's Jet Propulsion Laboratory</article-title>
          . URL:http://climate.nasa.gov/news/2943/study-confirms
          <article-title>-climate-models-are-getting-futurewarming-projections-right/.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>K.I.</given-names>
            <surname>Kellermann</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.N.</given-names>
            <surname>Bouton</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.S.</given-names>
            <surname>Brandt</surname>
          </string-name>
          , Is Anyone Out There? In: Open Skies.
          <source>Historical &amp; Cultural Astronomy</source>
          , Springer Cham,
          <year>2020</year>
          . doi:
          <volume>10</volume>
          .1007/978-3-
          <fpage>030</fpage>
          -32345-
          <issue>5</issue>
          _
          <fpage>5</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>L.</given-names>
            <surname>Mochurad</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Kryvinska</surname>
          </string-name>
          ,
          <article-title>Parallelization of Finding the Current Coordinates of the Lidar Based on the Genetic Algorithm and OpenMP Technology J</article-title>
          .
          <source>Symmetry</source>
          <volume>13</volume>
          ,
          <issue>666</issue>
          (
          <year>2021</year>
          ). doi:
          <volume>10</volume>
          .3390/sym13040666.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>Nugool</given-names>
            <surname>Sataporn</surname>
          </string-name>
          , Worasait Suwannik, and
          <article-title>Montri Maleewong, Parallel Algorithms of WellBalanced and Weighted Average Flux for Shallow Water Model Using CUDA</article-title>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Modelling</surname>
          </string-name>
          and Simulation in Engineering, volume
          <year>2021</year>
          ,
          <source>article ID 9534495</source>
          , 18 pages.
          <source>doi:10</source>
          .1155/
          <year>2021</year>
          /9534495.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>