1 The Covid-19 crisis

Starting in Wuhan, China, in the fall of 2019, the Covid-19 pandemic has claimed and will continue to claim millions of infected patients and hundreds of thousands of deaths. The lockdowns that followed its outbreak have led to mass unemployment, stalled economic development and loss of productivity that will take years to recover. Some changes in habits and lifestyles may be permanent: in the future, working from home or in a ‘socially distanced manner’ may be the prevalent modus operandi for large segments of society.

The present paper gives a short description of computational techniques that can elucidate the flow and propagation of viruses or other contaminants in built environments in order to mitigate [31] or avoid [47] infections.

2 Virus infection

Before addressing the requirements for the numerical simulation of virus propagation a brief description of virus propagation and lifetime are given. Covid-19 is one of many corona-viruses. The virus is usually present in the air or some surface, and makes its way into the body either via inhalation (nose, mouth), ingestion (mouth) or attachment (eyes, hands, clothes). In many cases the victim inadvertedly touches an infected surface or viruses are deposited on its hands, and then the hands touch either the nose, the eyes or the mouth, thus allowing the virus to enter the body.

An open question of great importance for all that will follow is how many viruses it takes to overwhelm the body’s natural defense mechanism and trigger an infection. This number, which is sometimes called the viral load or the infectious dose will depend on numerous factors, among them the state of immune defenses of the individual, the timing of viral entry (all at once, piece by piece), and the amount of hair and mucous in the nasal vessels. In principle, a single organism in a favourable environment may replicate sufficiently to cause disease [86]. Data from research performed on biological warfare agents [33] suggests that both bacteria and viruses can produce disease with as few as 1–100 organisms (e.g. brucellosis 10–100, Q fever 1–10, tularaemia 10–50, smallpox 10–100, viral haemorrhagic fevers 1–10 organisms, tuberculosis 1). Compare these numbers and consider that as many as 3,000 organisms can be produced by talking for 5 min or a single cough, with sneezing producing many more [48, 72, 78, 90, 95]. Figure 1, reproduced from [90], shows a typical number and size distribution.

Fig. 1
figure 1

Counts of particles of various diameters in air expelled by (90) coughs [72]

3 Virus lifetime outside the body

Current evidence points to lifetimes outside the body that can range from 1–2 h in air to several days on particular surfaces [45, 94]. There has also been some documentation of lifetime variation depending on humidity.

4 Virus transmission

4.1 Human sneezing and coughing

In the sequel, we consider human sneezing and coughing as the main conduits of virus transmission. Clearly, breathing and talking will lead to the exhalation of air, and, consequently the exhalation of viruses for infected victims [2,3,4]. However, it stands to reason that the size and amount of particles released—and hence the amount of viruses in them—is much higher and much more concentrated when sneezing or coughing [3, 4, 32, 44, 49, 90].

The velocity of air at a person’s mouth during sneezing and coughing has been a source of heated debate, particularly in the media. The experimental evidence points to exit velocities of the order of 2–14 m/s [25, 36,37,38,39, 87,88,89]. A typical amount and size of particles can be seen in Fig. 1.

4.2 Sink velocities

If, for the sake of argument, we consider Stoke’s law for the drag of spherical particles, valid below Reynolds numbers of \(Re=1\), the terminal sink velocity (also known as the settling velocity) of particles will be given by [26]:

$$\begin{aligned} v_s = {{(\rho _p - \rho _g) g \cdot d^2 } \over {18 \mu }} , \end{aligned}$$
(1)

where \(\rho _p, \rho _g, g, \mu , d\) denote the density of the particles (essentially water in the present case), density of the gas (air), gravity, dynamic viscosity of the gas and diameter of the particle respectively. The equivalent Reynolds’ number is:

$$\begin{aligned} Re = {{\rho _g v_s d } \over {\mu }} = {{\rho _g (\rho _p - \rho _g) g d^3 } \over {18 \mu ^2}} \end{aligned}$$
(2)

With \(\rho _p=1~\mathrm{gr/cc}, \rho _g=0.0012~\mathrm{gr/cc}, g=981~\mathrm{cm/s}^2, \mu =1.81 \cdot 10^{-4}~\mathrm{gr}/(\mathrm{cm} \, \mathrm{s})\) this yields a limiting diameter for \(Re=1\) of

$$\begin{aligned} d_{Re=1} = 0.0079~\mathrm{cm}, \end{aligned}$$
(3)

i.e. approximately 1/10th of a millimeter in diameter—a particle size that would still be perceived by the human eye. The corresponding sink velocity is given by:

$$\begin{aligned} v_s = 3 \cdot 10^{5} d^2 \,\mathrm{cm/s}, \end{aligned}$$
(4)

with d in cm, i.e. for \(Re=1\)

$$\begin{aligned} v_s(Re=1) = 18~\mathrm{cm/s}. \end{aligned}$$
(5)

Note the quadratic dependency of the sink velocity with diameter. Table 1 lists the sink velocities for water droplets of different diameters in air. One can see that below diameters of \(O(0.1\,\mathrm{mm})\) the sink velocity is very low, implying that these particles remain in and move with the air for considerable time (and possibly distances).

Table 1 Sink velocities and Reynolds number for water particles in air

4.3 Evaporation

Depending on the relative humidity and the temperature of the ambient air, the smaller particles can evaporate in milliseconds. However, as the mucous and saliva evaporate, they build a gel-like structure that surrounds the virus, allowing it to survive. This implies that extremely small particles with possible viruses will remain infectious for extended periods of times—up to an hour according to some studies.

An important question is then whether a particle/droplet will first reach the ground or evaporate. Figure 2, taken from [96], shows that below \(120~\upmu \mathrm{m}\) the particles evaporate before falling 2 m (i.e. reaching the ground).

Fig. 2
figure 2

Evaporation time and falling time of droplets of varying diameter (\(T_{p0}=33^oC, T_{\infty }=18^oC, RH=0\%\)) from [96]

4.4 Viral load

A central question that requires an answer is then: how many viruses are in these small particles? An approximate answer may be obtained from the experiments that are being carried out on animals to trace and monitor infections. For ferrets [46] \(O(10^5-10^6)\) have been used to infect via intranasal swabs, while for mice [92] \(O(10^4)\) seem to suffice. Viral titers can vary a lot, but one may assume on the order of \(O(10^6)\) viruses/ml for a nasopharyngeal swab [46, 92]. Table 2 lists the number of viruses per droplet and the number of droplets needed to contain just 1 virus. Note that while for a droplet with a diameter of 1 mm one can expect O(500) viruses, only every 2000th particle of diameter \(10~\mu m\) does contain a single virus.

Table 2 Estimated number of viruses for different particle diameters

Similar numbers are seen in field studies as well. The size of viruses varies from 0.02–0.3 \(\upmu \mathrm{m}\), while the size of bacteria varies from 0.5–10 \(\upmu \mathrm{m}\). The influenza virus RNA detected by quantitative polymerase chain reaction in human exhaled breath suggests that it may be contained in fine particles generated during tidal breathing and not only coughs [32, 48, 49, 78]. Influenza RNA and Mycobacterium tuberculosis have been reported in particles that range in size from 0.5–4.0 \(\upmu \mathrm{m}\) ([32, 48, 49, 78] and references cited therein).

5 Physical modeling of aerosol propagation

When solving the two-phase equations, the air, as a continuum, is best represented by a set of partial differential equations (the Navier–Stokes equations) that are numerically solved on a mesh. Thus, the gas characteristics are calculated at the mesh points within the flowfield. However, as the droplets/particles may be relatively sparse in the flowfield, they can be modeled by either:

  1. (a)

    A continuum description, i.e. in the same manner as the fluid flow, or

  2. (b)

    A particle (or Lagrangian) description, where individual particles (or groups of particles) are monitored and tracked in the flow.

Although the continuum (so-called multi-fluid) method has been used for some applications, the inherent assumptions of the continuum approach lead to several disadvantages which may be countered with a Lagrangian treatment for dilute flows. The continuum assumption cannot robustly account for local differences in particle characteristics, particularly if the particles are polydispersed. In addition, the only boundary conditions that can be considered in a straightforward manner are slipping and sticking, whereas reflection boundary conditions, such as specular and diffuse reflection, may be additionally considered with a Lagrangian approach. Numerical diffusion of the particle density is eliminated by employing Lagrangian particles due to their pointwise spatial accuracy.

While a Lagrangian approach offers many potential advantages, this method also creates problems that need to be addressed. For instance, large numbers of particles may cause a Lagrangian analysis to be memory intensive. This problem is circumvented by treating parcels of particles, i.e. doing the detailed analysis for one particle and then applying the effect to many. In addition, continuous mapping and remapping of particles to their respective elements may increase computational requirements, particularly for unstructured grids.

5.1 Equations describing the motion of the air

As seen from the experimental evidence, the velocities of air encountered during coughing and sneezing never exceed a Mach-number of \(Ma=0.1\). Therefore, the air may be assumed as a Newtonian, incompressible liquid, where buoyancy effects are modeled via the Boussinesq approximation. The equations describing the conservation of momentum, mass and energy for incompressible, Newtonian flows may be written as

$$\begin{aligned}&\rho \mathbf{v}_{,t} + \rho \mathbf{v}\cdot \nabla \mathbf{v}+ \nabla p \\&\quad = \nabla \cdot \mu \nabla \mathbf{v}+ \rho \mathbf{g}+ \beta \rho \mathbf{g}(T - T_0) + \mathbf{s}_v , \end{aligned}$$
(6.1)
$$\begin{aligned} \nabla \cdot \mathbf{v}= 0 . \end{aligned}$$
(6.2)
$$\begin{aligned} \rho c_p T_{,t} + \rho c_p \mathbf{v}\cdot \nabla T = \nabla \cdot k \nabla T + s_e , \end{aligned}$$
(6.3)

Here \(\rho , \mathbf{v}, p, \mu , \mathbf{g}, \beta , T, T_0, c_p, k\) denote the density, velocity vector, pressure, viscosity, gravity vector, coefficient of thermal expansion, temperature, reference temperature, specific heat coefficient and conductivity respectively, and \(\mathbf{s}_v, s_e\) momentum and energy source terms (e.g. due to particles or external forces/heat sources). For turbulent flows both the viscosity and the conductivity are obtained either from additional equations or directly via a large eddy simulation (LES) assumption through monotonicity induced LES (MILES) [18, 34, 35, 40, 42, 98].

5.2 Equations describing the motion of particles/droplets

In order to describe the interaction of particles/droplets with the flow, the mass, forces and energy/work exchanged between the flowfield and the particles must be defined. As before, we denote for fluid (air) by \(\rho , p, T, k, v_i, \mu \) and \(c_p\) the density, pressure, temperature, conductivity, velocity in direction \(x_i\), viscosity, and the specific heat at constant pressure. For the particles, we denote by \(\rho _p, T_p, v_{pi}, d, c_{pp}\) and Q the density, temperature, velocity in direction \(x_i\), equivalent diameter, and heat transferred per unit volume. In what follows, we will refer to droplet and particles, collectively as particles.

Making the classical assumptions that the particles may be represented by an equivalent sphere of diameter d, the drag forces \(\mathbf{D}\) acting on the particles will be due to the difference of fluid and particle velocity:

$$\begin{aligned} \mathbf{D}= {{\pi d^2} \over 4} \cdot c_D \cdot { 1 \over 2} \rho | \mathbf{v}- \mathbf{v}_p | ( \mathbf{v}- \mathbf{v}_p ) . \end{aligned}$$
(7)

The drag coefficient \(c_D\) is obtained empirically from the Reynolds-number Re:

$$\begin{aligned} Re = {{\rho | \mathbf{v}- \mathbf{v}_p | d } \over { \mu }} \end{aligned}$$
(8)

as (see, e.g. [83]):

$$\begin{aligned} c_D = max\left( 0.1 , {24 \over Re} \left( 1 + 0.15 Re^{0.687} \right) \right) \end{aligned}$$
(9)

The lower bound of \(c_D=0.1\) is required to obtain the proper limit for the Euler equations, when \(Re \rightarrow \infty \). The heat transferred between the particles and the fluid is given by

$$\begin{aligned} Q = {{\pi d^2} \over 4} \cdot \left[ h_f \cdot ( T - T_p ) + \sigma ^* \cdot ( T^4 - T_p^4 ) \right] , \end{aligned}$$
(10)

where \(h_f\) is the film coefficient and \(\sigma ^*\) the radiation coefficient. For the class of problems considered here, the particle temperature and kinetic energy are such that the radiation coefficient \(\sigma ^*\) may be ignored. The film coefficient \(h_f\) is obtained from the Nusselt-number Nu:

$$\begin{aligned} Nu = 2 + 0.459 Pr^{0.333} Re^{0.55} , \end{aligned}$$
(11)

where Pr is the Prandtl-number of the gas

$$\begin{aligned} Pr = {k \over \mu } , \end{aligned}$$
(12)

as

$$\begin{aligned} h_f = {{ Nu \cdot k }\over d} . \end{aligned}$$
(13)

Having established the forces and heat flux, the particle motion and temperature are obtained from Newton’s law and the first law of thermodynamics. For the particle velocities, we have:

$$\begin{aligned} \rho _p {{\pi d^3} \over 6 } \cdot {{ d\mathbf{v}_p} \over {dt}} = \mathbf{D}+ \rho _p {{\pi d^3} \over 6 } \mathbf{g}. \end{aligned}$$
(14)

This implies that:

$$\begin{aligned} {{ d\mathbf{v}_p} \over {dt}}= & {} {{3 \rho } \over {4 \rho _p d}} \cdot c_d | \mathbf{v}- \mathbf{v}_p | ( \mathbf{v}- \mathbf{v}_p ) + \mathbf{g}\nonumber \\= & {} \alpha _v | \mathbf{v}- \mathbf{v}_p | ( \mathbf{v}- \mathbf{v}_p ) + \mathbf{g}. \end{aligned}$$
(15)

where \(\alpha _v=3\rho c_d / (4 \rho _p d)\). The particle positions are obtained from:

$$\begin{aligned} {{ d\mathbf{x}_p} \over {dt}} = \mathbf{v}_p . \end{aligned}$$
(16)

The temperature change in a particle is given by:

$$\begin{aligned} \rho _p c_{pp} {{\pi d^3} \over 6 } \cdot {{ dT_p} \over {dt}} = Q , \end{aligned}$$
(17)

which may be expressed as:

$$\begin{aligned} {{ dT_p} \over {dt}} = {{3 k}\over {4 c_{pp} \rho _p d^2}} \cdot Nu \cdot ( T - T_p ) = \alpha _T ( T - T_p ) , \end{aligned}$$
(18)

with \(\alpha _T=3 k/(4 c_{pp} \rho _p d^2)\). Equations (15, 16, 18) may be formulated as a system of Ordinary Differential Equations (ODEs) of the form:

$$\begin{aligned} {{d\mathbf{u}_p} \over {dt}} = \mathbf{r}(\mathbf{u}_p, \mathbf{x}, \mathbf{u}_f) , \end{aligned}$$
(19)

where \(\mathbf{u}_p, \mathbf{x}, \mathbf{u}_f\) denote the particle unknowns, the position of the particle and the fluid unknowns at the position of the particle.

5.3 Numerical integration of the motion of the air

The last six decades have seen a large number of schemes that may be used to solve numerically the incompressible Navier–Stokes equations given by Eqs. (6.16.3). In the present case, the following design criteria were implemented:

  • Spatial discretization using unstructured grids (in order to allow for arbitrary geometries and adaptive refinement);

  • Spatial approximation of unknowns with simple linear finite elements (in order to have a simple input/output and code structure);

  • Edge-based data structures (for reduced access to memory and indirect addressing);

  • Temporal approximation using implicit integration of viscous terms and pressure (the interesting scales are the ones associated with advection);

  • Temporal approximation using explicit, high-order integration of advective terms;

  • Low-storage, iterative solvers for the resulting systems of equations (in order to solve large 3-D problems); and

  • Steady results that are independent from the timestep chosen (in order to have confidence in convergence studies).

The resulting discretization in time is given by the following projection scheme [60, 63]:

  • Advective-Diffusive Prediction: \(\mathbf{v}^n, p^n \rightarrow \mathbf{v}^{*}\)

    $$\begin{aligned} \mathbf{s}' = - \nabla p^n + \rho \mathbf{g}+ \beta \rho \mathbf{g}(T^n - T_0) + \mathbf{s}_v , \end{aligned}$$
    (20)
    $$\begin{aligned}&\mathbf{v}^i = \mathbf{v}^n + \alpha ^i \gamma {\Delta t}\left( - \mathbf{v}^{i-1} \cdot \nabla \mathbf{v}^{i-1} \nabla \cdot \mu \nabla \mathbf{v}^{i-1} + \mathbf{s}' \right) ; \nonumber \\&\qquad i=1,k-1; \end{aligned}$$
    (21a)
    $$\begin{aligned}&\left[ { 1 \over {\Delta t}} - \theta \nabla \cdot \mu \nabla \right] \left( \mathbf{v}^{k} - \mathbf{v}^n \right) + \mathbf{v}^{k-1} \cdot \nabla \mathbf{v}^{k-1} \nonumber \\&\quad = \nabla \cdot \mu \nabla \mathbf{v}^{k-1} + \mathbf{s}' . \end{aligned}$$
    (21b)
  • Pressure Correction: \(p^n \rightarrow p^{n+1}\)

    $$\begin{aligned}&\nabla \cdot \mathbf{v}^{n+1} = 0 ; \end{aligned}$$
    (22)
    $$\begin{aligned}&{{ \mathbf{v}^{n+1} - \mathbf{v}^{*} }\over {\Delta t}} + \nabla ( p^{n+1} - p^n ) = 0 ; \end{aligned}$$
    (23)

    which results in

    $$\begin{aligned} \nabla ^2 ( p^{n+1} - p^n ) = {{\nabla \cdot \mathbf{v}^{*} }\over {\Delta t}} ; \end{aligned}$$
    (24)
  • Velocity Correction: \(\mathbf{v}^{*} \rightarrow \mathbf{v}^{n+1}\)

    $$\begin{aligned} \mathbf{v}^{n+1} = \mathbf{v}^{*} - {\Delta t}\nabla ( p^{n+1} - p^n ) . \end{aligned}$$
    (25)

\(\theta \) denotes the implicitness-factor for the viscous terms (\(\theta =1\): 1st order, fully implicit, \(\theta =0.5\): 2nd order, Crank–Nicholson). \(\alpha ^i\) are the standard low-storage Runge–Kutta coefficients \(\alpha ^i=1/(k+1-i)\). The \(k-1\) stages of Eq. (21a) may be seen as a predictor (or replacement) of \(\mathbf{v}^n\) by \(\mathbf{v}^{k-1}\). The original right-hand side has not been modified, so that at steady-state \(\mathbf{v}^n=\mathbf{v}^{k-1}\), preserving the requirement that the steady-state be independent of the timestep \({\Delta t}\). The factor \(\gamma \) denotes the local ratio of the stability limit for explicit timestepping for the viscous terms versus the timestep chosen. Given that the advective and viscous timestep limits are proportional to:

$$\begin{aligned} {\Delta t}_a \approx {h \over {|\mathbf{v}|}} ; {\Delta t}_v \approx {{\rho h^2} \over \mu } , \end{aligned}$$
(26)

we immediately obtain

$$\begin{aligned} \gamma = {{{\Delta t}_v} \over {{\Delta t}_a}} \approx {{\rho |\mathbf{v}| h }\over {\mu }} \approx Re_h , \end{aligned}$$
(27)

or, in its final form:

$$\begin{aligned} \gamma = min(1,Re_h) . \end{aligned}$$
(28)

In regions away from boundary layers, this factor is O(1), implying that a high-order Runge–Kutta scheme is recovered. Conversely, for regions where \(Re_h=O(0)\), the scheme reverts back to the usual 1-stage Crank–Nicholson scheme. Besides higher accuracy, an important benefit of explicit multistage advection schemes is the larger timestep one can employ. The increase in allowable timestep is roughly proportional to the number of stages used (and has been exploited extensively for compressible flow simulations [43]). Given that for an incompressible solver of the projection type given by Eqs. (2025) most of the CPU time is spent solving the pressure-Poisson system Eq. (24), the speedup achieved is also roughly proportional to the number of stages used.

At steady state, \(\mathbf{v}^{*}=\mathbf{v}^n=\mathbf{v}^{n+1}\) and the residuals of the pressure correction vanish, implying that the result does not depend on the timestep \({\Delta t}\).

The spatial discretization of these equations is carried out via linear finite elements. The resulting matrix system is re-written as an edge-based solver, allowing the use of consistent numerical fluxes to stabilize the advection and divergence operators [63].

The energy (temperature) equation [Eq. (6.3)] is integrated in a manner similar to the advective-diffusive prediction [Eq. (21)], i.e. with an explicit, high order Runge-Kutta scheme for the advective parts and an implicit, 2nd order Crank–Nicholson scheme for the conductivity.

5.4 Numerical integration of the motion of particles/droplets

The equations describing the position, velocity and temperature of a particle [Eqs. (15)–(19)] may be formulated as a system of nonlinear Ordinary Differential Equations of the form:

$$\begin{aligned} {{d\mathbf{u}_p} \over {dt}} = \mathbf{r}(\mathbf{u}_p, \mathbf{x}, \mathbf{u}_f) . \end{aligned}$$
(29)

They can be integrated numerically in a variety of ways. Due to its speed, low memory requirements and simplicity, we have chosen the following k-step low-storage Runge–Kutta procedure to integrate them:

$$\begin{aligned}&\mathbf{u}^{n+i}_p = \mathbf{u}^n_p + \alpha ^i \Delta t \cdot \mathbf{r}(\mathbf{u}^{n+i-1}_p, \mathbf{x}^{n+i-1}, \mathbf{u}^{n+i-1}_f) , \nonumber \\&\qquad i=1,k . \end{aligned}$$
(30)

For linear ODEs the choice

$$\begin{aligned} \alpha ^i= {1 \over {k+1-i}} , i=1,k \end{aligned}$$
(31)

leads to a scheme that is k-th order accurate in time. Note that in each step the location of the particle with respect to the fluid mesh needs to be updated in order to obtain the proper values for the fluid unknowns. The default number of stages used is \(k=4\). This would seem unnecessarily high, given that the flow solver is of second-order accuracy, and that the particles are integrated separately from the flow solver before the next (flow) timestep, i.e. in a staggered manner. However, it was found that the 4-stage particle integration preserves very well the motion in vortical structures and leads to less ‘wall sliding’ close to the boundaries of the domain [70]. The stability/accuracy of the particle integrator should not be a problem as the particle motion will always be slower than the maximum wave speed of the fluid (fluid velocity).

The transfer of forces and heat flux between the fluid and the particles must be accomplished in a conservative way, i.e. whatever is added to the fluid must be subtracted from the particles and vice-versa. The finite element discretization of the fluid equations will lead to a system of ODE’s of the form:

$$\begin{aligned} \mathbf{M}\Delta \mathbf{u}= \mathbf{r}, \end{aligned}$$
(32)

where \(\mathbf{M}, \Delta \mathbf{u}\) and \(\mathbf{r}\) denote, respectively, the consistent mass matrix, increment of the unknowns vector and right-hand side vector. Given the ‘host element’ of each particle, i.e. the fluid mesh element that contains the particle, the forces and heat transferred to \(\mathbf{r}\) are added as follows:

$$\begin{aligned} \mathbf{r}^i_D = \sum _{el~surr~i} N^i(\mathbf{x}_p) \mathbf{D}_p . \end{aligned}$$
(33)

Here \(N^i(\mathbf{x}_p)\) denotes the shape-function values of the host element for the point coordinates \(\mathbf{x}_p\), and the sum extends over all elements that surround node i. As the sum of all shape-function values is unity at every point:

$$\begin{aligned} \sum N^i(\mathbf{x}) = 1 \forall \mathbf{x}, \end{aligned}$$
(34)

this procedure is strictly conservative.

From Eqs. (1518) and their equivalent numerical integration via Eq. (30), the change in momentum and energy for one particle is given by:

$$\begin{aligned} \mathbf{f}_p= & {} \rho _p {{\pi d^3}\over 6} {{\left( \mathbf{v}^{n+1}_p - \mathbf{v}^n_p \right) } \over {\Delta t}} , \end{aligned}$$
(35)
$$\begin{aligned} q_p= & {} \rho _p c_{pp} {{\pi d^3}\over 6} {{\left( T^{n+1}_p - T^n_p \right) } \over {\Delta t}} . \end{aligned}$$
(36)

These quantities are multiplied by the number of particles in a packet in order to obtain the final values transmitted to the fluid. Before going on, we summarize the basic steps required in order to update the particles one timestep:

  • Initialize Fluid Source-Terms: \(\mathbf{r}=0\)

  • DO: For Each Particle:

    • DO: For Each Runge–Kutta Stage:

      • Find Host Element of Particle: IELEM, \(N^i(\mathbf{x})\)

      • Obtain Fluid Variables Required

      • Update Particle: Velocities, Position, Temperature, ...

  • ENDDO

    • Transfer Loads to Element Nodes

  • ENDDO

5.4.1 Particle parcels

For a large number of very small particles, it becomes impossible to carry every individual particle in a simulation. The solution is to:

  1. (a)

    Agglomerate the particles into so-called packets of \(N_p\) particles;

  2. (b)

    Integrate the governing equations for one individual particle; and

  3. (c)

    Transfer back to the fluid \(N_p\) times the effect of one particle.

Beyond a reasonable number of particles per element (typically \(> 8\)), this procedure produces accurate results without any deterioration in physical fidelity.

5.4.2 Other numerics

In order to achieve a robust particle integrator, a number of additional precautions and algorithms need to be implemented. The most important of these are:

  • Agglomeration/Subdivision of Particle Parcels: As the fluid mesh may be adaptively refined and coarsened in time, or the particle traverses elements of different sizes, it may be important to adapt the parcel concentrations as well. This is necessary to ensure that there is sufficient parcel representation in each element and yet, that there are not too many parcels as to constitute an inefficient use of CPU and memory.

  • Limiting During Particle Updates: As the particles are integrated independently from the flow solver, it is not difficult to envision situations where for the extreme cases of very light or very heavy particles physically meaningless or unstable results may be obtained. In order to prevent this, the changes in particle velocities and temperatures are limited in order not to exceed the differences in velocities and temperature between the particles and the fluid [70].

  • Particle Contact/Merging: In some situations, particles may collide or merge in a certain region of space.

  • Particle Tracking: A common feature of all particle-grid applications is that the particles do not move far between timesteps. This makes physical sense: if a particle jumped ten gridpoints during one timestep, it would have no chance to exchange information with the points along the way, leading to serious errors. Therefore, the assumption that the new host elements of the particles are in the vicinity of the current ones is a valid one. For this reason, the most efficient way to search for the new host elements is via the vectorized neighbour-to-neighbour algorithm described in [51, 63].

6 Examples

The techniques described above were implemented in FEFLO, a general-purpose computational fluid dynamics (CFD) code based on the following general principles:

  • Use of unstructured grids (automatic grid generation and mesh refinement);

  • Finite element discretization of space;

  • Separate flow modules for compressible and incompressible flows;

  • Edge-based data structures for speed;

  • Optimal data structures for different architectures;

  • Bottom-up coding from the subroutine level to assure an open-ended, expandable architecture.

The code has had a long history of relevant applications involving compressible flow simulations in the areas of transonic flow [55, 73,74,75,76,77], store separation [7, 10, 12, 14, 15], blast-structure interaction [6, 8, 9, 11, 13, 16, 17, 58, 64, 82, 85, 93], incompressible flows [5, 57, 60, 68, 79, 81, 91], free-surface hydrodynamics [54, 61, 62], dispersion [20,21,22, 59], patient-based haemodynamics [1, 23, 24, 55, 65] and aeroacoustics [50]. The code has been ported to vector [56], shared memory [53, 84], distributed memory [52, 66, 79, 80] and GPU-based [27,28,29,30, 67, 69] machines.

The cases shown all simulate sneezing/coughing in different environments. The ambient temperature was assumed to be \(20\,^{\circ }C\). In order to simulate a sneeze/cough, the velocity and temperature in a spherical region of radius (\(r=5~\mathrm{cm}\)) near the patient’s mouth was reset at the beginning of each timestep according to the following triangular function:

$$\begin{aligned} f(t)= & {} {\left\{ \begin{array}{ll} {t \over t_{mid}} &{}\quad if: 0 \le t \le t_{mid} \\ 1 - {{t-t_{mid}}\over t_{mid}} &{}\quad if: t_{mid} \le t \le 2 t_{mid} \\ 0 &{}\quad if: 2 t_{mid} \le t \end{array}\right. }. \end{aligned}$$
(37)
$$\begin{aligned} v(t)= & {} 5 f(t) ~\mathrm{[m/s]} , \nonumber \\ T(t)= & {} 20 + f(t) ( 37 - 20 ) . \end{aligned}$$
(38)

The droplets were initialized with 4 different sizes and different velocities, and released every 0.005 s during 0.1 s. This resulted in a final number of particle packets of \(n_p=25,662\). The temperature was set to \(T_p=37^oC\) and the velocity to \(v=5~\mathrm{m/s}\). Table 3 summarizes the diameters and resulting mass distribution.

Table 3 Initial conditions for particles

In the cases shown different temporal scales appear:

  • The fast, ballistic drop of the larger (\(d=1~\mathrm{mm}\)) particles, occurring in the range of \(O(1)~\mathrm{s}\);

  • The slower drop of particles of diameter \(d=O(0.1)~\mathrm{mm}\), occurring in the range of \(O(10)~\mathrm{s}\); and

  • The transport of the even smaller particles through the air, occurring in the range of \(O(100)~\mathrm{s}\).

We have attempted to show these phases in the results, and for this reason the results are not displayed at equal time intervals. Unless otherwise noted, the particles have been colored according to the logarithm of the diameter, with red colors representing the largest and blue the smallest particles.

The examples given show clearly the dangers of droplet- and aerosol- based infections in the built environment.

6.1 Sneezing in transportation security agency (TSA) queues

One of the obvious vectors for viral contamination and spread are security and passport examination queues in airports. Air flow is moderate, passengers are in very close proximity, and in some airports queues wind back and forth in narrow lanes. Figure 3a, b show the arrangement of pedestrians, as well as the discretization chosen. Note the smaller elements close to the bodies and in the region of interest between the two pedestrians in the middle row. This particular mesh had 12.74Mels. The distribution of particles and the absolute value of the velocity in the centerplane over time can be discerned from Figures 3c–e. One can see that the large (red) particles follow a ballistic path and have some influence on the flow (e.g. at time \(t=0.20\)). This ‘ballistic phase’ ends at about \(t=1~\mathrm{s}\). The (green) particles of size \(d=0.1~mm\) are quickly stopped by the air, and then sink slowly towards the floor in close proximity to the individual sneezing. The even smaller (cyan, blue) particles rise with the cloud of warmer air exhaled by the sneezing individual, and disperse much further at later times.

Fig. 3
figure 3

TSA Queue: a arrangement of pedestrians and surface mesh, b surface mesh and cut plane, c particle distribution at \(t=0.02\,\mathrm{s}\), d particle distribution at \(t=0.10\,\mathrm{s}\), e particle distribution at \(t=0.20\,\mathrm{s}\), f particle distribution at \(t=0.40\,\mathrm{s}\), g particle distribution at \(t=0.80\,\mathrm{s}\), h particle distribution at \(t=1.60\,\mathrm{s}\)

6.2 Sneezing in a generic hospital room

This case considers a typical hospital room. Of interest here was the dispersion of particles in the first minute after coughing, in particular the reach into neighbouring halls and the amount of ‘negative pressure’ needed to keep all contaminants in the room. Figure 4a shows the arrangement of the room, with patient and caregiver clearly visible. This particular mesh had 2.25Mels. The distribution of particles over time can be discerned from Figures 4c–l. As before, one can see that the large (red) particles follow a ballistic path. This ‘ballistic phase’ ends at about \(t=1~\mathrm{s}\). The (green) particles of size \(d=0.1~mm\) are quickly stopped by the air, and then sink slowly towards the patient. The even smaller (cyan, blue) particles rise with the cloud of warmer air exhaled by the sneezing individual, and disperse much further at later times, covering almost the entire room. The velocity distribution in the room may be inferred from Figure 4m.

Fig. 4
figure 4

Hospital room: a surface mesh, b particle distribution at \(\mathrm{t}=0.0\,\mathrm{s}\), c particle distribution at \(\mathrm{t}=0.2\,\mathrm{s}\), d particle distribution at \(\mathrm{t}=0.4\,\mathrm{s}\), e particle distribution at \(\mathrm{t}=0.6\,\mathrm{s}\), f particle distribution at \(\mathrm{t}=1.0\,\mathrm{s}\), g particle distribution at \(\mathrm{t}=2.0\,\mathrm{s}\), h particle distribution at \(\mathrm{t}=4.0\,\mathrm{s}\), i particle distribution at \(\mathrm{t}=10.0\,\mathrm{s}\), j particle distribution at \(\mathrm{t}=20.0\,\mathrm{s}\), k particle distribution at \(\mathrm{t}=30.0\,\mathrm{s}\), l particle distribution at \(\mathrm{t}=50.0\,\mathrm{s}\), m surface velocities at \(\mathrm{t}=60.0\,\mathrm{s}\)

7 Reopening after the crisis

A lingering question facing all levels of society is how and when to reopen facilities where people congregate in close proximity. One key technology that would allow opening is testing and sensing. We consider sensing in the sequel. Several vendors have announced measuring devices for Covid-19 in the next half year. Given that these sensors are expensive, and that a hospital or university many need hundreds of these, the question becomes how best to deploy them. In other words: given an arbitrary number of contamination or infection scenarios, which is the minimum number of sensors needed to detect them, and where should they be placed? A partial answer to this non-trivial question was given in [59, 97]. If we assume a given number of sensors, every contaminant/infection scenario (location and amount of release, flow conditions, etc.) will lead to a sensor input. The data recorded from all the possible release scenarios at all possible sensor locations allows the identification of the best or optimal sensor locations. Clearly, if only one sensor is to be placed, it should be at the location that recorded the highest number of releases. This argument can be used recursively by removing from further consideration all releases already recorded by sensors previously placed. The procedure is repeated recursively until no undetected release cases are left, or the available sensors have been exhausted.

See [19, 41] for an in-depth analysis of robust sensor placement under uncertainty.

7.1 Hospital room

This case considers the same hospital room as shown before. The boundary conditions determining the flow are assumed as steady, with air entering the room through vents 1-3 and exiting the room through the bathroom exhaust or the door. Figures 5a–c show the outlay of the room, average velocities and the ‘age of air’ after 5 min. Note the high values for the age of air in the corners and the back of the room. This particular mesh had 2.2Mels. Four contaminant release scenarios were considered: cases 1-3 assumed contaminant coming in through each of the vents (separately) during the first minute, while case 4 assumed virus production from the patient for a period of 10 s. The case was run for 5 min of real time, and the contaminant concentration was measured on all walls/ceilings. The maximum concentrations measured have been summarized in Fig. 5d. Note the different areas covered depending on the release scenario. It was assumed that sensors should only be allowed above a certain height, and should be located on a wall or the ceiling. Table 4 summarizes the points that measured data above a set threshold. As one can see, none of the possible sensor locations is able to measure/detect all 4 cases, and many possible sensor locations do not detect even a single case. There are many possible pairs of sensors that can detect all 4 cases. The pair selected is the one that achieves the highest relative measurement values, and is shown in Fig. 5e. Note that this makes good sense: one sensor close the HVAC exits, and one close to the patient.

Fig. 5
figure 5

Hospital room: a outlay of room and boundary conditions, b average velocities (5 min), c age of air (5 min), d maximum contaminant concentration over 5 min, e optimal sensor locations

Table 4 Data measurement summary

8 Conclusions and outlook

The present paper has summarized some of the mechanical characteristics of virus contaminants and the transmission via droplets and aerosols. The ordinary and partial differential equations describing the physics of these processes with high fidelity were given, as well as appropriate numerical schemes to solve them. Several examples taken from recent evaluations of the built environment were given, as well as the optimal placement of sensors.

Current efforts are directed at increasing the realism of the physical processes modeled (e.g. by adding the effect of moving pedestrians [71]), streamlining the simulation toolbox and workflow, and fielding these tools so that the post-pandemic opening can occur as smoothly as possible.