Conversions: Difference between revisions

From Met Dynamics
Jump to navigation Jump to search
m (1 revision imported)
imported>Scott.Munro
 
(6 intermediate revisions by 3 users not shown)
Line 2: Line 2:


This article describes methods for converting:
This article describes methods for converting:
* Weight fraction retained to cumulative fraction passing particle size distributions
* Quantity or fraction retained to cumulative quantity or fraction passing particle size distributions
* Cumulative fraction passing to weight fraction retained particle size distributions
* Cumulative quantity passing to quantity retained particle size distributions
* Particle size distributions between different mesh series
* Particle size distributions between different mesh series
* Particle size distribution mesh interval sizes to geometric mean sizes
* Particle size distribution mesh interval sizes to geometric mean sizes
Line 10: Line 10:
== Model theory ==
== Model theory ==


{{Under construction|section}}
=== Retained to cumulative passing ===
 
A distribution of ''quantity'' retained on a mesh series is converted to a cumulative quantity passing the same series by the following relation:
 
:<math>P_i = \sum_{j=1}^n p_j - \sum_{k=1}^i p_k \;\;\;\; \text{ for }i=1,\dots, n</math>
 
where:
* <math>n</math> is the number of size intervals
* <math>i</math> is the index of the size interval, <math>i = \{1,2,\dots,n\}</math>
* <math>P_i</math> is the cumulative quantity passing size interval <math>i</math>
* <math>p_i</math> is the quantity retained on size interval <math>i</math>
 
Similarly, a cumulative distribution of ''fraction'' passing a mesh series may be obtained from quantity retained data by:
 
:<math>(P_{\rm n})_i = 1.0 - \dfrac{\sum_{k=1}^i p_k}{\sum_{j=1}^n p_j} \;\;\;\; \text{ for }i=1,\dots, n</math>
 
where <math>(P_{\rm n})_i</math> is the normalised cumulative quantity passing size interval <math>i</math>.
 
=== Cumulative passing to retained ===
 
A cumulative ''quantity'' passing distribution is converted to a quantity retained distribution by the following relation:
 
:<math>p_i =
\begin{cases}
\sum\limits_{j=1}^n p_j - P_i & i = 1\\
P_{i-1} - P_i & 1 < i \leq n
\end{cases}
</math>
 
where:
* <math>n</math> is the number of size intervals
* <math>i</math> is the index of the size interval, <math>i = \{1,2,\dots,n\}</math>
* <math>P_i</math> is the cumulative quantity passing size interval <math>i</math>
* <math>p_i</math> is the quantity retained on size interval <math>i</math>
 
Similarly, a ''fraction'' retained distribution may be obtained from cumulative quantity passing data by:
 
:<math>(p_{\rm n})_i =
\begin{cases}
1.0 - \dfrac{P_i}{\sum\limits_{j=1}^n p_j} & i = 1\\
\dfrac{P_{i-1} - P_i}{\sum\limits_{j=1}^n p_j} & 1 < i \leq n
\end{cases}
</math>
 
where <math>(p_{\rm n})_i</math> is the normalised quantity (i.e. fraction) retained on size interval <math>i</math>.
 
=== Convert between meshes ===
 
Given a discrete quantity retained distribution <math>(p_1)_i</math> on size interval series <math>(d_1)_i</math>, where <math>i=1,\dots,n</math> and <math>n</math> is the number of size intervals of distribution 1, the quantity retained distribution <math>(p_2)_j</math> on size interval series <math>(d_2)_j</math>, where <math>j=1,\dots,m</math> and <math>m</math> is the number of size intervals of distribution 2, can be obtained from the following procedure:
# Convert quantity retained distribution <math>(p_1)_i</math> to cumulative quantity passing distribution <math>(P_1)_i</math>
# Compute the cumulative quantity passing distribution <math>(P_2)_j</math> on size interval series <math>(d_2)_j</math> using an interpolation method with <math>(P_1)_i</math> and <math>(d_1)_i</math>
# Convert cumulative quantity passing distribution <math>(P_2)_j</math> back to the quantity retained distribution <math>(p_2)_j</math>
 
Either [[Interpolation#Linear_interpolation|linear interpolation]] or [[Interpolation#Cubic_spline_interpolation|cubic spline interpolation]] methods may be applied to the above procedure.
 
Furthermore, both the size intervals (<math>d_1</math>, <math>d_2</math>) and cumulative quantity passing (<math>P_1</math>, <math>P_2</math>) distributions may be converted to logarithmic scales prior to interpolation, should this provide a better quality mesh conversion for a given application.


=== Geometric mean size ===
=== Geometric mean size ===
Line 33: Line 88:
* the value of <math>d_i</math> decreases as <math>i</math> increases, i.e. <math>d_{i}>d_{i+1}</math>, <math>d_1</math> = top size, <math>d_n = 0</math>
* the value of <math>d_i</math> decreases as <math>i</math> increases, i.e. <math>d_{i}>d_{i+1}</math>, <math>d_1</math> = top size, <math>d_n = 0</math>


<!---
=== Slurry volume flow to mass flow ===


=== Fraction retained and cumulative passing ===
The mass flow rates of solids, <math>(Q_{\rm M})_{\rm S}</math> (t/h), and liquids, <math>(Q_{\rm M})_{\rm L}</math> (t/h), in a stream may be computed from:
* The volumetric flow rate of slurry, <math>Q_{\rm V}</math> (m<sup>3</sup>/h),
* The specific gravity of solids, <math>\rho_{\rm S}</math> (t/m<sup>3</sup>),
* The specific gravity of liquids, <math>\rho_{\rm L}</math> (t/m<sup>3</sup>), and
* The mass fraction of solids, <math>C_{\rm W}</math> (w/w)


=== Mesh series interpolation ===
with:


=== Mass and volume flows ===
:<math>(Q_{\rm M})_{\rm S} = \dfrac{Q_{\rm V}}{\left ( \dfrac{1}{\rho_{\rm S}} + \dfrac{1 -  C_{\rm W}}{C_{\rm W} \rho_{\rm L}} \right )}</math>


--->
:<math>(Q_{\rm M})_{\rm L} = Q_{\rm M,S} \left ( \dfrac{1 - C_{\rm W}}{C_{\rm W}} \right )</math>


== Excel ==
== Excel ==


{{Under construction|section}}
=== Retained to cumulative passing ===


The interpolation methods may be invoked from the Excel formula bar with the following function calls:
The retained to cumulative passing method may be invoked from the Excel formula bar with the following function calls:
 
<syntaxhighlight lang="vb">=mdConvert_RetToCumPass(Retained as Range, Optional returnAsFraction as Bool = false)</syntaxhighlight>
 
{{Excel (Text, Help, No Arguments)}}
 
The input parameters and calculation results are defined below in matrix notation, along with an example image showing the selection of the same cells and arrays in the Excel interface:
 
{|
|- style="vertical-align:top;"
|
{|
  |- style="vertical-align:top;"
  |
:<math>
  \begin{align}
  \mathit{Retained}  =
\begin{bmatrix}
p_1\\
\vdots\\
p_n\\
\end{bmatrix},\;\;\;\;
  \end{align}</math>
  |<math>
\begin{align}
  \mathit{mdConvert\_RetToCumPass}  & = 
\begin{bmatrix}
P_1\\
\vdots\\
P_n\\
\end{bmatrix}\\
\end{align}
</math>
  |-  style="vertical-align:top;"
  |colspan="2"|
where:
* <math>n</math> is the number of data points
* <math>p</math> is the quantity retained on size interval <math>i</math> (<math>1 \leq i \leq n</math>)
* <math>P</math> is the cumulative quantity passing size interval <math>i</math>
* <math>\mathit{returnAsFraction}</math> is an optional flag that indicates whether to return the fraction passing instead of the quantity, (''True/False'')
  |}
|
::[[File:Conversions1.png|frame|Figure 1. Example showing the selection of the '''Retained''' (blue frame) and '''Results''' (light blue frame) arrays in Excel.]]
|}
 
=== Cumulative passing to retained  ===
 
The cumulative passing to retained method may be invoked from the Excel formula bar with the following function calls:
 
<syntaxhighlight lang="vb">=mdConvert_CumPassToRet(CumPassing as Range, Optional totalQuantity as Double)</syntaxhighlight>
 
{{Excel (Text, Help, No Arguments)}}
 
The input parameters and calculation results are defined below in matrix notation, along with an example image showing the selection of the same cells and arrays in the Excel interface:
 
{|
|- style="vertical-align:top;"
|
{|
  |- style="vertical-align:top;"
  |
:<math>
  \begin{align}
  \mathit{CumPassing}  =
\begin{bmatrix}
P_1\\
\vdots\\
P_n\\
\end{bmatrix},\;\;\;\;
  \end{align}</math>
  |<math>
\begin{align}
  \mathit{mdConvert\_CumPassToRet}  & = 
\begin{bmatrix}
p_1\\
\vdots\\
p_n\\
\end{bmatrix}\\
\end{align}
</math>
  |-  style="vertical-align:top;"
  |colspan="2"|
where:
* <math>n</math> is the number of data points
* <math>p</math> is the quantity retained on size interval <math>i</math> (<math>1 \leq i \leq n</math>)
* <math>P</math> is the cumulative quantity passing size interval <math>i</math>
* <math>\mathit{totalQuantity}</math> is an optional value that indicates the total quantity, i.e. the maximum cumulative passing value.
 
Specifying the <math>\mathit{totalQuantity}</math> may be necessary when the quantity passing the first interval is less than the known total.
 
For example:
* If the cumulative ''fraction'' passing the first interval is 95%, the <math>\mathit{totalQuantity}</math> should be set to 100%.
* This ensures the quantity retained on the first interval is 5%.
* If <math>\mathit{totalQuantity}</math> were not specified in this case, the quantity retained on the first interval would be 0%, as 95% is otherwise assumed to be the maxmium.
  |}
|
::[[File:Conversions2.png|frame|Figure 2. Example showing the selection of the '''CumPassing''' (blue frame) and '''Results''' (light blue frame) arrays in Excel.]]
|}
 
=== Convert between meshes  ===
 
The convert between meshes  method may be invoked from the Excel formula bar with the following function calls:


<syntaxhighlight lang="vb">=mdConvert_RetToCumPass(Retained as Range)</syntaxhighlight>
<syntaxhighlight lang="vb">=mdConvert_CumPassToRet(CumPassing as Range)</syntaxhighlight>
<syntaxhighlight lang="vb">=mdConvert_ToMesh(Size1 as Range, Dist1 as Range, Size2 as Range, Optional axesScale as Integer = 0, Optional interpMethod as Integer = 0)</syntaxhighlight>
<syntaxhighlight lang="vb">=mdConvert_ToMesh(Size1 as Range, Dist1 as Range, Size2 as Range, Optional axesScale as Integer = 0, Optional interpMethod as Integer = 0)</syntaxhighlight>
{{Excel (Text, Help, No Arguments)}}
The input parameters and calculation results are defined below in matrix notation, along with an example image showing the selection of the same cells and arrays in the Excel interface:
{|
|- style="vertical-align:top;"
|
{|
  |- style="vertical-align:top;"
  |
:<math>
  \begin{align}
  \mathit{Size1} & =
\begin{bmatrix}
(d_1)_1\text{ (mm)}\\
\vdots\\
(d_1)_n\text{ (mm)}\\
\end{bmatrix}\\
\\
    \mathit{Dist1}  & =
\begin{bmatrix}
(p_1)_1\\
\vdots\\
(p_1)_n\\
\end{bmatrix}\\
\\
  \mathit{Size2} & =
\begin{bmatrix}
(d_2)_1\text{ (mm)}\\
\vdots\\
(d_2)_m\text{ (mm)}\\
\end{bmatrix}\\
\\
  \mathit{axesScale} & = \big [ \text{(0, 1 or 2)} \big ]\\
\\
  \mathit{interpMethod} & = \big [ \text{(0 or 1)} \big ]\\
  \end{align}
</math>
  |
::<math>
\begin{align}
  \mathit{mdConvert\_ToMesh}  & =
\begin{bmatrix}
(p_2)_1\\
\vdots\\
(p_2)_m\\
\end{bmatrix}\\
\end{align}
</math>
  |-  style="vertical-align:top;"
  |colspan="2"|
where:
* <math>n</math> is the number of data points in the first size distribution
* <math>m</math> is the number of data points in the second size distribution
* <math>d_i</math> is the size of the square mesh interval that feed mass is retained on (mm)
* <math>d_{i+1}<d_i<d_{i-1}</math>, i.e. descending size order from top size (<math>d_{1}</math>) to sub mesh (<math>d_{n}=0</math> mm)
* <math>p</math> is the quantity retained on a size interval
* <math>\mathit{axesScale}</math> selects which scaling method to apply to the axes during interpolation:
** 0 = linear (x) and linear (y) (default if omitted)
** 1 = log (x) and linear (y)
** 2 = log (x) and log (y)
* <math>\mathit{interpMethod}</math> selects which interpolation method to apply to the distribution during conversion:
** 0 = [[Interpolation|linear interpolation]] (default if omitted)
** 1 = [[Interpolation|cubic spline interpolation]]
  |}
|
::[[File:Conversions3.png|frame|Figure 3. Example showing the selection of the '''Size1''' (blue frame), '''Dist1''' (red frame), '''Size2''' (purple frame)  and '''Results''' (light blue frame) arrays in Excel.]]
|}
=== Geometric mean size ===
The geometric mean size method may be invoked from the Excel formula bar with the following function calls:
<syntaxhighlight lang="vb">=mdConvert_ToGeoMeanSize(Size as Range)</syntaxhighlight>
<syntaxhighlight lang="vb">=mdConvert_ToGeoMeanSize(Size as Range)</syntaxhighlight>
{{Excel (Text, Help, No Arguments)}}
The input parameters and calculation results are defined below in matrix notation, along with an example image showing the selection of the same cells and arrays in the Excel interface:
{|
|- style="vertical-align:top;"
|
{|
  |- style="vertical-align:top;"
  |
:<math>
  \begin{align}
  \mathit{Size}  =
\begin{bmatrix}
d_1\text{ (mm)}\\
\vdots\\
d_n\text{ (mm)}\\
\end{bmatrix}
  \end{align}</math>
  |
::<math>
\begin{align}
  \mathit{mdConvert\_ToGeoMeanSize}  & = 
\begin{bmatrix}
\bar d_1\\
\vdots\\
\bar d_n\\
\end{bmatrix}
\end{align}
</math>
  |-  style="vertical-align:top;"
  |colspan="2"|
* <math>n</math> is the number of data points in the first size distribution
* <math>d_i</math> is the size of the square mesh interval that feed mass is retained on (mm)
* <math>d_{i+1}<d_i<d_{i-1}</math>, i.e. descending size order from top size (<math>d_{1}</math>) to sub mesh (<math>d_{n}=0</math> mm)
* <math>\bar{d}_i</math> is the [[Conversions|geometric mean size]] of the internal mesh series interval that mass is retained on (mm)
  |}
|
::[[File:Conversions4.png|frame|Figure 4. Example showing the selection of the '''Size''' (blue frame) and '''Results''' (light blue frame) arrays in Excel.]]
|}
=== Slurry volume flow to mass flow  ===
The slurry volume flow to mass flow method may be invoked from the Excel formula bar with the following function calls:
<syntaxhighlight lang="vb">=mdConvert_QvToQm(Qv as Double, wtFracSolids as Double, solidsSG as Double, Optional liquidsSG as Double = 1)</syntaxhighlight>
<syntaxhighlight lang="vb">=mdConvert_QvToQm(Qv as Double, wtFracSolids as Double, solidsSG as Double, Optional liquidsSG as Double = 1)</syntaxhighlight>


{{Excel (Text, Help, No Arguments)}}
{{Excel (Text, Help, No Arguments)}}
The input parameters and calculation results are defined below in matrix notation, along with an example image showing the selection of the same cells and arrays in the Excel interface:
{|
|- style="vertical-align:top;"
|
{|
  |- style="vertical-align:top;"
  |
:<math>
  \begin{align}
  \mathit{Qv} & = \big [ Q_{\rm V}\text{ (m}^3\text{/h)} \big ]\\
\\
  \mathit{wtFracSolids} & = \big [ C_{\rm W}\text{ (w/w)} \big ]\\
\\
  \mathit{solidsSG} & = \big [ \rho_{\rm S}\text{ (t/m}^3\text{)} \big ]\\
\\
  \mathit{liquidsSG} & = \big [ \rho_{\rm L}\text{ (t/m}^3\text{)} \big ]\\
  \end{align}
</math>
  |
::<math>
\begin{align}
  \mathit{mdConvert\_QvToQm}  & =
\begin{bmatrix}
(Q_{\rm M})_{\rm S}\\
(Q_{\rm M})_{\rm L}\\
\end{bmatrix}\\
\end{align}
</math>
  |-  style="vertical-align:top;"
  |colspan="2"|
where:
* <math>Q_{\rm V}</math> is the volumetric flow rate of slurry (m<sup>3</sup>/h)
* <math>C_{\rm W}</math> is the mass fraction of solids in the slurry (w/w)
* <math>\rho_{\rm S}</math> is the density of solids (t/m<sup>3</sup>)
* <math>\rho_{\rm L}</math> is the density of liquids (t/m<sup>3</sup>), default is 1.0 t/m<sup>3</sup> if omitted
* <math>(Q_{\rm M})_{\rm S}</math> is the mass flow rate of solids in the slurry (t/h)
* <math>(Q_{\rm M})_{\rm L}</math> is the mass flow rate of liquids in the slurry (t/h)
  |}
|
::[[File:Conversions5.png|frame|Figure 5. Example showing the selection of the '''Qv''' (shaded blue frame), '''wtFracSolids''' (shaded red frame), '''solidsSG''' (shaded purple frame), '''liquidsSG''' (shaded green frame), and '''Results''' (light blue frame) arrays in Excel.]]
|}


== References ==
== References ==


[[Category:Excel]]
[[Category:Excel]]

Latest revision as of 13:19, 26 March 2024

Description

This article describes methods for converting:

  • Quantity or fraction retained to cumulative quantity or fraction passing particle size distributions
  • Cumulative quantity passing to quantity retained particle size distributions
  • Particle size distributions between different mesh series
  • Particle size distribution mesh interval sizes to geometric mean sizes
  • Volumetric flow rates of slurry to mass flow rates of solids and liquids

Model theory

Retained to cumulative passing

A distribution of quantity retained on a mesh series is converted to a cumulative quantity passing the same series by the following relation:

where:

  • is the number of size intervals
  • is the index of the size interval,
  • is the cumulative quantity passing size interval
  • is the quantity retained on size interval

Similarly, a cumulative distribution of fraction passing a mesh series may be obtained from quantity retained data by:

where is the normalised cumulative quantity passing size interval .

Cumulative passing to retained

A cumulative quantity passing distribution is converted to a quantity retained distribution by the following relation:

where:

  • is the number of size intervals
  • is the index of the size interval,
  • is the cumulative quantity passing size interval
  • is the quantity retained on size interval

Similarly, a fraction retained distribution may be obtained from cumulative quantity passing data by:

where is the normalised quantity (i.e. fraction) retained on size interval .

Convert between meshes

Given a discrete quantity retained distribution on size interval series , where and is the number of size intervals of distribution 1, the quantity retained distribution on size interval series , where and is the number of size intervals of distribution 2, can be obtained from the following procedure:

  1. Convert quantity retained distribution to cumulative quantity passing distribution
  2. Compute the cumulative quantity passing distribution on size interval series using an interpolation method with and
  3. Convert cumulative quantity passing distribution back to the quantity retained distribution

Either linear interpolation or cubic spline interpolation methods may be applied to the above procedure.

Furthermore, both the size intervals (, ) and cumulative quantity passing (, ) distributions may be converted to logarithmic scales prior to interpolation, should this provide a better quality mesh conversion for a given application.

Geometric mean size

The geometric mean size of a particle, (mm), is defined as:

where:

  • is the index of the size interval,
  • is the number of size intervals
  • is the diameter of particles retained in a mesh at size interval (mm)
  • the value of decreases as increases, i.e. , = top size,

Slurry volume flow to mass flow

The mass flow rates of solids, (t/h), and liquids, (t/h), in a stream may be computed from:

  • The volumetric flow rate of slurry, (m3/h),
  • The specific gravity of solids, (t/m3),
  • The specific gravity of liquids, (t/m3), and
  • The mass fraction of solids, (w/w)

with:

Excel

Retained to cumulative passing

The retained to cumulative passing method may be invoked from the Excel formula bar with the following function calls:

=mdConvert_RetToCumPass(Retained as Range, Optional returnAsFraction as Bool = false)

Invoking the function with no arguments will print Help text associated with the model, including a link to this page.

The input parameters and calculation results are defined below in matrix notation, along with an example image showing the selection of the same cells and arrays in the Excel interface:

where:

  • is the number of data points
  • is the quantity retained on size interval ()
  • is the cumulative quantity passing size interval
  • is an optional flag that indicates whether to return the fraction passing instead of the quantity, (True/False)
Figure 1. Example showing the selection of the Retained (blue frame) and Results (light blue frame) arrays in Excel.

Cumulative passing to retained

The cumulative passing to retained method may be invoked from the Excel formula bar with the following function calls:

=mdConvert_CumPassToRet(CumPassing as Range, Optional totalQuantity as Double)

Invoking the function with no arguments will print Help text associated with the model, including a link to this page.

The input parameters and calculation results are defined below in matrix notation, along with an example image showing the selection of the same cells and arrays in the Excel interface:

where:

  • is the number of data points
  • is the quantity retained on size interval ()
  • is the cumulative quantity passing size interval
  • is an optional value that indicates the total quantity, i.e. the maximum cumulative passing value.

Specifying the may be necessary when the quantity passing the first interval is less than the known total.

For example:

  • If the cumulative fraction passing the first interval is 95%, the should be set to 100%.
  • This ensures the quantity retained on the first interval is 5%.
  • If were not specified in this case, the quantity retained on the first interval would be 0%, as 95% is otherwise assumed to be the maxmium.
Figure 2. Example showing the selection of the CumPassing (blue frame) and Results (light blue frame) arrays in Excel.

Convert between meshes

The convert between meshes method may be invoked from the Excel formula bar with the following function calls:

=mdConvert_ToMesh(Size1 as Range, Dist1 as Range, Size2 as Range, Optional axesScale as Integer = 0, Optional interpMethod as Integer = 0)

Invoking the function with no arguments will print Help text associated with the model, including a link to this page.

The input parameters and calculation results are defined below in matrix notation, along with an example image showing the selection of the same cells and arrays in the Excel interface:

where:

  • is the number of data points in the first size distribution
  • is the number of data points in the second size distribution
  • is the size of the square mesh interval that feed mass is retained on (mm)
  • , i.e. descending size order from top size () to sub mesh ( mm)
  • is the quantity retained on a size interval
  • selects which scaling method to apply to the axes during interpolation:
    • 0 = linear (x) and linear (y) (default if omitted)
    • 1 = log (x) and linear (y)
    • 2 = log (x) and log (y)
  • selects which interpolation method to apply to the distribution during conversion:
Figure 3. Example showing the selection of the Size1 (blue frame), Dist1 (red frame), Size2 (purple frame) and Results (light blue frame) arrays in Excel.

Geometric mean size

The geometric mean size method may be invoked from the Excel formula bar with the following function calls:

=mdConvert_ToGeoMeanSize(Size as Range)

Invoking the function with no arguments will print Help text associated with the model, including a link to this page.

The input parameters and calculation results are defined below in matrix notation, along with an example image showing the selection of the same cells and arrays in the Excel interface:

  • is the number of data points in the first size distribution
  • is the size of the square mesh interval that feed mass is retained on (mm)
  • , i.e. descending size order from top size () to sub mesh ( mm)
  • is the geometric mean size of the internal mesh series interval that mass is retained on (mm)
Figure 4. Example showing the selection of the Size (blue frame) and Results (light blue frame) arrays in Excel.

Slurry volume flow to mass flow

The slurry volume flow to mass flow method may be invoked from the Excel formula bar with the following function calls:

=mdConvert_QvToQm(Qv as Double, wtFracSolids as Double, solidsSG as Double, Optional liquidsSG as Double = 1)

Invoking the function with no arguments will print Help text associated with the model, including a link to this page.

The input parameters and calculation results are defined below in matrix notation, along with an example image showing the selection of the same cells and arrays in the Excel interface:

where:

  • is the volumetric flow rate of slurry (m3/h)
  • is the mass fraction of solids in the slurry (w/w)
  • is the density of solids (t/m3)
  • is the density of liquids (t/m3), default is 1.0 t/m3 if omitted
  • is the mass flow rate of solids in the slurry (t/h)
  • is the mass flow rate of liquids in the slurry (t/h)
Figure 5. Example showing the selection of the Qv (shaded blue frame), wtFracSolids (shaded red frame), solidsSG (shaded purple frame), liquidsSG (shaded green frame), and Results (light blue frame) arrays in Excel.

References