Skip to content

Arau-Puchades treats dB/m as m and ignores temperature/humidity #142

Description

@rdmiller

Arau-Puchades adds 4 * airAttenuation([freq])[0] * Vraw dB/m times volume — and calls airAttenuation with default 20 °C / 40 % RH, ignoring this.temperature / this.humidity. Sabine/Eyring at least convert (wrongly, # companion). Arau mixes dB/m with in the denominator.

Found on varese-dev. arau-puchades-air-absorption.spec.ts checks that 4*m*V is the shape of the term with a hand-waved m = 0.01; it never reads index.ts.

Cause

const airabsterm = 4 * airAttenuation([freq])[0] * v; // dB/m · m³
const rt =
  ((K*v) / (-A * Math.log(1-αx[f]) + airabsterm)) ** (Ax/A) *
  ((K*v) / (-A * Math.log(1-αy[f]) + airabsterm)) ** (Ay/A) *
  ((K*v) / (-A * Math.log(1-αz[f]) + airabsterm)) ** (Az/A);

-A ln(1-α) is m² (sabins). 4 α_dB V is m²·dB. At 4 kHz, α_dB ≈ 0.02 m⁻¹·dB, so 4αV ≈ 0.08 V — about 4.3× the correct 4mV (m = α_dB / 4.343). High-frequency Arau RT is too short vs Sabine/Eyring on the same room (and those are already too long from the /20).

The three axial factors each include the full 4mV, then geometric-mean. For a cube that is equivalent to adding it once; for a long hall it is not the usual “add 4mV to the total equivalent absorption once.”

Projection uses local surface.triangles + orthographic P, not matrixWorld. Rotated rooms shear the axial areas.

Suggested fix

Share one mValues[i] (intensity Np/m, temp/RH) with Sabine/Eyring. Add 4mV once to each axial denominator, or document the geometric-mean choice. Test a 10×10×10 m box, α = 0.2, air off: Arau = Eyring = Sabine (uniform α, cube). Air on: all three drop, Arau not 2× more than Sabine.

Acceptance criteria

  • Arau airAttenuation is called with this.temperature, this.humidity
  • Units of the air term are m² (same as -A ln(1-α))
  • Cube + uniform α, air off: |T_Arau − T_Eyring| / T_Eyring < 1 %

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions