<!-- canonical: https://jmrplens.github.io/phonometry/reference/catalogues/ -->
Source: https://jmrplens.github.io/phonometry/reference/catalogues/

A library that computes with a density has to get it from somewhere. This one
gets it from a page, and keeps the page: every row below names the book, the
table, the PDF page and the printed folio it was read on, and says what its
cell actually said. A density printed as an interval is an interval here, a
loss factor printed as an upper bound is a bound, and a tortuosity a page
prints as the word `model` is that word, because the quantity is frequency
dependent there and no single number stands for it.

Three things follow from that discipline and are visible in the tables.

**The books disagree, and the key says which one is speaking.** Four of them
print a steel at 7 800 kg/m³ and no two agree on its modulus. That is not a
defect to be averaged away: it is the spread of the literature, and a
catalogue that picked one would be hiding it. Rows are keyed by the table they
came off, and the library's lookups return every book's reading of a name
rather than choosing between them.

**A number this library worked out is marked as such.** A page that prints a
modulus and a density has printed a bar speed without writing it down, so the
row carries it; but it is shown in italics, and what it was computed from is
one hover away. No derived value is ever stored as if it had been read.
Two other kinds of cell hold the page's own number and say how it got there:
a value the page gives in a unit this library does not hold, degrees
Fahrenheit, psi or sabins, is converted, and the mark names the page's figure
and its unit; and a cell the page leaves blank because it prints the value
once for a block of rows is carried, and the mark names the row that prints
it. A value the source itself calls an estimate is marked as one.

A material marked with an asterisk carries a note its page made about it, and
the note reads on the name. So does the reason behind any cell that is not a
plain number.

**Nothing here is a specification.** Block densities vary by manufacturer,
foams vary by batch, and the books say so by printing ranges where a range is
what is known. Use a row to reproduce a worked example, to sanity-check a
measurement or to get an order of magnitude; measure the specimen for anything
that has to be right.

## Reading a catalogue from code

Every catalogue is a mapping from `'<table>/<row>'` to a row, and a row hands
back what its page printed. A quantity the page gave is an attribute; a
quantity it did not answers `None`, and the row says why.

```python
from phonometry import materials

foam = materials.PUBLISHED_POROUS["allard-2009-table-13-1/foam"]
print(foam.source)
print(foam.printed("flow_resistivity_pa_s_m2"), "Pa s/m2")

screen = materials.PUBLISHED_POROUS["allard-2009-table-11-5/screen_2"]
print(screen.tortuosity)
print(screen.why_missing("tortuosity"))
```

`printed` is the strict reading: it returns the number the page printed or
refuses, naming the page and what the cell held instead. Use it wherever a
wrong number would be worse than an exception.

Asking for a name gives every book at once, which is the comparison no single
book can make:

```python
for row in materials.porous_materials_named("Mineral wool"):
    interval = row.ranges.get("porosity")
    print(row.table, row.porosity if interval is None else interval)
```

The ground catalogue works the same way, and feeds the models that ask for a
flow resistivity:

```python
from phonometry import environment

pasture = environment.PUBLISHED_GROUND["bies-2017-table-5-2/normal_uncompacted_ground"]
print(pasture.harmonoise_class, pasture.printed("flow_resistivity_pa_s_m2"))

over_pasture = environment.ground_effect(
    [125.0, 250.0, 500.0, 1000.0],
    1.0,
    1.5,
    50.0,
    flow_resistivity=pasture.printed("flow_resistivity_pa_s_m2"),
)
print(over_pasture.excess_attenuation.round(2), "dB")
```

A fluid state is a `Fluid` like any other, so it drops into the same calls; what
tells it apart is that its `model` names a table rather than a closed form.

```python
from phonometry import fluids

sea = fluids.PUBLISHED_FLUIDS["bies-2017-table-c1-fluids/sea_water"]
print(sea.model)
print(sea.validity)
```

## Solids

Elastic constants, wave speeds and loss factors, read from nine tables in
eight books. Seven of those books print a steel and they are not the same
steel, which is why a key names the table it came from. Three polymers are
printed by one book as the expanded form and by another as the solid one under
the same bare name, with densities a factor of twelve to twenty-five apart;
both are kept, and each row's own modulus and speed say which it describes.

## Damping materials

Seventeen commercial damping treatments, and one thing about them that makes
this a different table from the solids above: a loss factor here is not a
number. Every loss factor in the solids catalogue is a single figure, because
for a metal it hardly moves. For a polymer worked near its glass transition it
moves by two orders of magnitude with temperature and with frequency, and the
peak is all these pages print. So the peak arrives with three temperatures
beside it, one per frequency the table prints a column for: where the material
peaks when it is worked at 10 Hz, at 100 Hz and at 1 kHz. A treatment whose
peak sits at 20 °C at 100 Hz is doing nothing for you at 100 Hz on a winter
morning, and a row read without its temperatures says the opposite of what it
holds.

The three storage moduli are the same argument again. One is the stiff end, at
low temperature or high frequency, one is the soft end, and one is the modulus
that applies in the band where the loss factor peaks, which is the only one of
the three that belongs beside the peak. The fourth column is the loss modulus,
the imaginary part, which the chapter gives as the product of the other two and
is the cheapest check there is on a row. The page is in degrees Fahrenheit and
pounds per square inch, so every temperature and every modulus here was
converted and is marked as converted, with the page's figure and its unit
beside it. The loss factor is the one column that was not: it has
no units, so it is served exactly as printed. The page says in a footnote that the values were read off published
curves and that damping data should come from the supplier of the material;
three of its cells are corrupted in the printing, are registered in this
project's errata and are left empty here rather than guessed at.

## Damping treatments

The older way of rating a damping treatment: bond it to a standard steel
plate, 50 by 50 by 0,6 cm, strike the plate and measure how fast its vibration
dies away at 160 Hz, in decibels per second. The eight rows are asphalt felts
of one to four plies, plain, punched or notched, bonded or laid loose, and
covered with carpet or with a metal sheet, and they run from 1 dB/s to 400. A
decay rate belongs to the treatment on that plate, so it compares with the
other rows of this table and with nothing else; at 160 Hz it corresponds to a
loss factor of the treated plate of the rate over 4 368, which is not a loss
factor of the felt. The descriptions are the Spanish translation's.

## Orthotropic wood

Every solid above is isotropic: one Young's modulus, one Poisson ratio, and the
same answer whichever way a wave runs through it. Wood is not. A spruce plate
is thirteen times stiffer along the grain than across it, and an instrument
maker chooses the wood precisely for that difference, so a single modulus for
it describes no direction at all. These two woods, the ones a stringed
instrument is made of, carry the four elastic constants of a thin orthotropic
plate: D1 along the grain, D3 across it, D2 the coupling between the two
directions and D4 the twisting stiffness. Each is a modulus divided by twelve
or a third of the shear modulus rather than a modulus itself, so they do not
compare with the fir and spruce in the solids table. The page prints the
woods as its columns and this table turns it so that a wood is a row. Two of
maple's constants are the author's own guesses, which the page marks and the
table shows, and maple's printed scaling factor does not follow from its own
row, which is registered in this project's errata.

## Plateau-method constants

The three numbers the plateau method needs to sketch a single panel's
transmission loss without solving the plate model: the mass one millimetre of
the material brings, how high the plateau sits, and how wide it is in
frequency. The first is a density in disguise, kilograms per square metre per
millimetre, which is the density divided by a thousand; it is kept in that
unit because that is the unit the method uses it in. The second is a
transmission loss, the level the method draws as a horizontal line over the
coincidence region, and it depends on the material and not on the thickness.
These are the numbers the library's own plateau-method prediction reads. The
measured insulation of real constructions is in the transmission loss table
below.

## Porous materials

The parameters the equivalent-fluid and poroelastic models take, read from the
tables of three books. They come in two kinds. A specimen row is one sample
somebody measured, with every parameter a model needs beside it, and it is the input to
a worked example of the book it came from. A compiled row is one quantity over
a whole class of material, gathered by its book from the literature, and it is
almost always an interval: there is no such thing as the porosity of mineral
wool, only the range the measurements fall in. Use a specimen to reproduce a
calculation and a compiled row to know whether a number you measured is
plausible.

## Resistive facings

Twenty-nine thin resistive facings, the wire meshes, glass cloths and sintered
metal sheets that go over a porous absorber or across the mouth of a cavity,
each with the flow resistance of unit **area** of it. That is the thing this
table is most likely to be misread for. The porous catalogue above holds a flow
**resistivity**, per metre of the bulk material it describes; a facing is a
sheet with no thickness worth dividing by, so what is measured on it is a
resistance in pascal seconds per metre, and the two quantities are a thickness
apart. Multiplying one of these rows by a thickness gives a number nobody
measured.

Two of the three tables print that resistance twice, once as the page's N s/m³
and once as a multiple of the characteristic impedance of air, and neither says
what it took the impedance to be. Both columns are kept as printed rather than
one being recomputed from the other, because dividing them gives the impedance
back: the wire meshes imply 407 to 421 Pa s/m and the sintered sheets 400,
except for the one block that implies 397,7, which is a property of the page
and not of any facing. The sintered sheets are
also the only rows with a nonlinearity factor, the ratio of the resistances
measured at face velocities of 500 and 20 cm/s, and they run from 1,8 to 5: a
facing at 1 would be the linear one the rest of this library assumes. The
others are named by what a weaver would call them, a wire count or a weave, and
the search matches a bare number because that is what a glass cloth is called.

## Resilient layers

Fifteen resilient layers, which is what a floating floor floats on, each with
the dynamic stiffness per unit area measured on it to ISO 9052-1. It is the
thinnest table on this page and the one with the least to interpret: a
stiffness, a density and a thickness, and the last two are here because four
rock wool rows and four glass wool rows differ by nothing else.

The stiffness is the one the table's heading prints, $s'$, the stiffness of
the installed layer that a floor's natural frequency takes, and not the
apparent $s'_\mathrm{t}$ of the test specimen, which for a porous layer leaves
out the air in its pores.

What a row is not is a product. A floating floor is designed with the stiffness
its manufacturer declares for the material actually being laid; these are
specimens somebody measured and published in an appendix, and they are the
order of magnitude for when there is no declared value in front of you, or the
way to see how far the stiffness moves when the same wool is laid at twice the
density. Eleven are the author's own measurements and the four rebond foams are
credited to a paper of his own.

## Dynamic modulus of resilient materials

The modulus a resilient layer springs with, for six materials a floating floor
is laid on: glass wool, two rock wools, polystyrene foam, polyurethane foam
and cork. A layer's dynamic stiffness per unit area is this modulus divided by
its thickness, so these rows give the stiffness of any thickness where the
table above gives it for one. Every modulus is printed as a range and measured
under a static load of about 2 kPa, and the load matters: the same page says
rock wool is about 20 per cent softer at 1 kPa and 30 per cent stiffer at 4.

## Absorption coefficients

What a finish did in a reverberation room, band by band, as the books print
it. These are not properties of a material but of a specimen, a mounting and
a room, which is why the same carpet is a different number in every book and
why a coefficient above 1 is common and not an error. Bies says of his table
that the values are selected from the literature, that reverberation times
calculated from them are approximate only, and that it is better to use the
manufacturer's data or to measure. Long says of his that the list is by no
means complete, and prints beside each row the ASTM C423 mounting it was
measured on, because the airspace behind a material changes what it does:
the same fibreglass board laid on the floor and hung over a 400 mm gap is
two rows here, and at 125 Hz it is 0,03 on one and 0,65 on the other. The
rows are held in `materials.absorbers.PUBLISHED_ABSORPTION`, keyed by the
table they came off, and `absorption_named` answers with every carpet of
every table rather than choosing one, which for a carpet is twenty-one of
them.

Cox's appendix is a third kind of table again: a compilation of twenty-nine
sources, from Beranek in 1954 to a 2013 paper on the absorption of vegetation,
with the source of each row printed beside it. That credit is kept, so a row
says which study it came from and two rows of the same name from two studies
sit next to each other instead of one of them being dropped.

Everest prints his credits in a column of their own, one source per row, and
two rows where the source should be carry a dash instead: those two say
nothing rather than borrowing the source above them.

The fourth table is Spanish, and its rows keep their language: Arau's numbered
list is where `moqueta` and `hormigón` come from, and a search for `carpet`
will not find them. Two of its rows print an interval rather than a value, and
are kept as intervals; one prints a single interval across two columns without
saying which bands it is for, so no band takes it and each says what the page
has there.

The same pages print a few rows that are not coefficients: an audience per
person, a musician with an instrument, the air itself, priced in equivalent
absorption area because they have no surface a coefficient could multiply.
Those are held apart, in `materials.absorbers.PUBLISHED_ABSORPTION_AREAS`,
with the unit in the field name so that a number from there cannot be
mistaken for a coefficient. Long prices his in sabins, square feet, in a
table set in inches and pounds; the field holds square metres, as every
other field of this library does, and says on the cell what the page
printed and what it was converted from.

## Carpets

Nineteen carpets rated by their noise reduction coefficient, the mean of the
absorption at 250, 500, 1000 and 2000 Hz: eleven laid on bare concrete, from
0,25 to 0,55, and eight on a hair pad, from 0,40 to 0,70. Each row gives the
pile's weight, height, surface and fibre; the chapter's own text says the
fibre makes no significant difference, and the pad and the pile do. The NRC is one number for four bands and no band comes back
out of it. Five of the pile weights of the first table are printed with an
imperial half that is not the metric one, and the four whose kilograms are in
doubt are left empty and registered in this project's errata. The rows read in
Spanish, the language of the edition they were read from.

## Transmission loss

What a partition did in a laboratory, band by band, which is the other half of
a room: absorption says how much of the sound that stays inside is soaked up,
and this says how much of it gets out. The rows are constructions and not
materials, so each one carries the thickness and the surface density the page
prints beside it, and two rows of the same description are told apart by those
rather than by the name. Bies calls his values representative and says only
that they come from tests published by manufacturers and testing laboratories,
without naming a standard or a mounting for any of them.

This is the table where reading the numbers pays: the mass law gives a
straight line, and the same 280 mm brick wall is 40 dB at 500 Hz built on
strip ties and 55 dB on expanded metal ties, same mass and same thickness.
No formula in the book gives that difference; the measurement does.

Rossing adds twenty-three common partitions in six bands with a sound
transmission class beside each, and seven tables of the Spanish edition of
Harris add a hundred and twenty-nine ratings with no band at all: stud walls
with one or two layers of plasterboard a side, with and without absorbent in
the cavity; concrete block walls of two weights and five thicknesses; block
walls under six ways of mounting plasterboard; doors unsealed and well sealed;
exterior doors; sealed windows, whose table is printed with the ratings as rows
and is turned here so that a row is a window; and floor-ceiling systems. A
construction the page rates under several conditions is one row per condition,
with the condition as the variant. A rating is not a spectrum, so those rows
answer for no band, and a working window is, by the page's own note, three to
five points worse than the sealed one rated here.

## Impact insulation

Seventy-one rows of measured impact insulation: forty-two floor-ceiling
constructions with the impact insulation class of each, six elastic surface
treatments with the improvement each one adds, and twenty-three floor
finishes, floating screeds and timber floors from the first edition of the
same handbook, with the average improvement in impact sound insulation each
gives over a bare concrete floor, in decibels. The class belongs to neither the
slab nor the covering. It is what a tapping machine did on one floor built one
way with one ceiling under it, and it moves by fifty-five points between a bare
concrete slab, which these pages rate 25, and the same slab under a wool
carpet, which they rate 80.

The two ratings are two quantities and no row carries both, and the decibels
of the first edition are a third: a level difference averaged over frequency,
which predates the class and is neither a rating nor an improvement on one. A class is an
absolute and an improvement is a difference between two of them, so adding the
second to the first would be adding a difference to a rating with nothing in
the arithmetic to say so, and the footnote on the improvements says that over a
wood-joist floor they may be substantially smaller than printed. There is no
spectrum here either: these pages print no impact sound pressure level per
band, no reference curve and nothing that can be turned into one.

The rows read in Spanish on both languages of this page, because the handbook
they come from is a Spanish translation, and a construction is described rather
than named: about a dozen of them lean on another row rather than repeating it,
in phrases from `Igual que 1 salvo que` to `Parecido al 20` and `Mismo suelo
estructural que el 18`, and the row they refer to is one lookup away. Every dimension is printed twice, in
centimetres and in inches, and nineteen of the three hundred and twenty-one pairs
are not each other. Those are registered in this project's errata, the printed
description is kept whole, and the one misprint that reaches a quantity rather
than prose leaves its cell empty rather than serving a number the registry
calls wrong.

## Duct walls

Forty-six measurements of what the wall of a sheet metal duct does to the sound
that crosses it, and the first thing to read on a row is which way it crossed.
Breakout is the sound that leaves the duct through its wall, into the room the
duct passes through. Break-in is the sound that enters the duct through the
same wall and then travels along it to somewhere else. They are two different
measurements of one wall and not two words for one number: the 305 mm by 305 mm
duct in 24 gauge is 21 dB at 63 Hz on the way out and 16 dB on the way in, and
27 against 16 at 250 Hz. Two rows that differ only in direction are two rows
here, and the column says which.

The rest of the row is what tells one duct from another. The shape is the
chapter's own word, which is why the breakout table says round where the
break-in table says circular for the same geometry. The gauge is the US sheet
metal gauge as printed, keeping the asterisk that marks a duct lined
internally, and the note on those rows says what the lining is. The size is the
two sides or the diameter, in millimetres; two rows carry a diameter the page
prints once over three consecutive rows, so those two are marked as worked out
rather than read. Several cells are a lower bound and not a value, because the
sound radiated was below the background in the room the duct was measured in,
and a bound is published as one.

## Scattering coefficients

How much of a reflection leaves the specular direction, band by band, for a
surface with something on it. The room models of this library take one number
per surface per band and have no way of working it out, and a measurement
needs a reverberation room with a turntable in it, so these are the values a
modeller starts from. Cox measured or collected them under ISO 17497-1 and
credits each row to the paper it came from; they are the only appendix of his
four whose numbers were measured rather than computed.

The table is worth reading for how wide the method is. The same battens,
10 cm high and 10 cm wide on a 20 cm period, appear twice under one heading
because two teams measured them, and they read 0.28 and 0.44 at 630 Hz. One
cell is above one, which is what ISO 17497-1 gives when the reflected energy
is compared against a base plate and nothing caps the ratio. A row is
described rather than named, so the heading it sits under is part of the
description and the filter matches both.

## Diffusion coefficients

How even a surface's polar response is, which is the other half of ISO 17497
and not the same question as how much energy left the specular direction. A
surface can score high on one and low on the other, so this is a second table
and not more rows of the first.

These numbers were computed rather than measured: a two-dimensional boundary
element model of a thin panel with an open back, with the source and the
receiver 100 and 50 m away. That makes them a designer's argument rather than
a laboratory's report, and the argument is worth reading. One semicylinder
scores 0.77 at 1 kHz at random incidence and twelve of the same semicylinder
score 0.22, so an array is not a single device repeated. Six semiellipses go
from 0.02 to 0.65 at 5 kHz as they deepen from 1 cm to 30 cm. Neither follows
from a formula in the book.

The page prints three lines per surface, headed 0, 57 and Random, so a surface
is three rows here and the angle says which. The random one carries no angle
at all: it is an arithmetic mean over ten angles, without the weighting a
measurement standard would apply, and answering zero for it would hand back
the normal incidence row's meaning.

## Predicted scattering coefficients

The same quantity as the table above and not the same kind of number: these
were computed with a boundary element model, and the two are separate
catalogues so that a row cannot travel from one to the other unnoticed.

Cox prints three of them. Two are three-dimensional predictions of 3 m by 3 m
single-plane diffusers, at normal and at random incidence, over the bands from
250 Hz upward, because the book says the coefficient below that should be
taken as zero and prints nothing there. The third is two-dimensional, runs the
whole range, and prints three lines per surface at 0, 56.9 and random
incidence. Each row says which solver produced it.

The book is unusually frank about what they are worth, and the notes on each
table quote it: the coefficient reads absorption as scattering, so the
formulation needs revising for a surface that absorbs; the random incidence
values of the two-dimensional table run high at low frequencies; and the
coefficient reads a redirection as a dispersion, so a 45 degree triangle that
sends a strong reflection straight back scores as if it had scattered.

## Ground surfaces

The effective flow resistivity every outdoor propagation model asks the ground
for, which nobody measures on site. It is not the flow resistivity of the soil:
it is the one number that makes a rigid-framed ground model reproduce a
measured attenuation, so it carries the model it was fitted with, and the same
grass fitted three ways is three rows. Eight of these rows are not measured
ground at all but the classes A to H the models define, with the ground factor
ISO 9613-2 and NMPB-2008 each take. Cox prints six of his porosities in per
cent, from 26.9 to 58.1, in a column that states no unit and prints a fraction
on every other row. A porosity of 36.5 is not a porosity, and the page does
not say it is a per cent, so those six cells are empty, and the note on each
quotes the figure the page prints.

## Gases

A gas table prints something a fluid table does not. Not a density and a speed
of sound, which a gas only has once a temperature and a pressure are named, but
the molar mass and the ratio of specific heats, which between them close the
ideal-gas state at any temperature and pressure. `fluids.PUBLISHED_GASES` holds
those two columns, and `Gas.ideal_state` walks from them to the ideal-gas state
at whichever temperature and pressure is asked for, carrying the page along
with the number. What that closure is worth, and where a heavy molecule starts
to leave it, is stated in `fluids.IDEAL_GAS_VALIDITY`. Air is in both tables below, because both books
print it, and they do not print quite the same pair for it.

## Fluids

Every named fluid state this library carries. The twenty-one read from a page
are in `fluids.PUBLISHED_FLUIDS`: three from Bies and eighteen liquids and
gases from Norton & Karczub, each at the temperature its page states and with
the ratio of specific heats where the page prints one. The four airs below
them sit elsewhere in the tree,
each beside the model or the standard that fixes it, and they disagree because
each is the air its own document assumes.

## Nonlinearity parameter B/A

How far a liquid departs from linear acoustics at a finite amplitude: the
second-order term of its adiabatic equation of state against the first, which
sets how fast a wave steepens towards a shock and how strongly two beams mix. A hundred and sixty-four published values from the four tables of one
handbook chapter, water first, at up to 50 MPa and 100 °C, then organic
liquids, liquid metals and liquefied gases. Each row is one measurement with
the paper it comes from, spelled out from the chapter's reference list, and
the plus-or-minus where the page prints one. Several substances are measured
by several papers and the values do not agree: at 30 °C the page prints four
values for water between 5.18 and 5.38, and toluene is 5.6 at 20 °C by one
paper and 8.929 at 30 °C by another. The choice between them is the reader's.

## Nonlinearity parameter of solids

The solid counterpart of the table above: the ultrasonic nonlinearity
parameter β of eight solids at room temperature, each averaged over the three
directions a longitudinal wave can travel purely in a cubic crystal. Five rows
are crystal structures or bonding classes rather than materials, and only
sodium chloride, fused silica and a ceramic superconductor are named. The
page's β is B/A + 2 for a liquid, not B/A, so water's B/A of about 5 sits at
about 7 on this scale. Fused silica is the one negative value, and it is
printed so.

## Air attenuation

The six conditions the building standard's own room model tabulates the air
attenuation for, and the coefficient in each of them, band by band. A room
model needs one. The air in a hall absorbs, the absorption grows with frequency
and with dryness, and by 8 kHz it is no longer a correction to the surfaces but
a term that decides the answer, which is why the model has an air term at all.
So the standard prints a short table of two temperatures crossed with three
ranges of relative humidity, and names the one to assume when the room's own
temperature and humidity are not known. That row carries a note here saying so.

The coefficient is a power attenuation in neper per metre, which is what the
standard's own air term takes, and it is not the decibel per metre an outdoor
propagation model works in. The page prints it in thousandths of a neper per
metre and so does this table. Six rows is all there is: this is a table to look
a value up in and not a model to interpolate, and the standard says nothing
about a room at 15 °C and 60 % that would let a row be made for it.
