Axisymmetric Horn

Git reference: Example horn-axisym.

Model problem

This example solves adaptively the pressure field in a 3D axisymmetric model of a harmonic acoustic horn. The geometry and initial mesh are shown below.

Domain.

Equation solved:

-\nabla \left(\frac{1}{\rho} \nabla p\right) - \frac{1}{\rho}\left(\frac{\omega}{c}\right)^2 p = 0.

Boundary conditions are Dirichlet (prescribed pressure) on the bottom edge, zero Neumann (symmetry) on the left edge, Newton (matched boundary)

\frac{1}{\rho} \frac{\partial p}{\partial n} = \frac{j \omega p}{\rho c}

on the outlet arc and zero Neumann (wall) on the rest of the boundary. Here p is pressure, \rho density of air, \omega = 2 \pi f angular frequency, and c speed of sound. See the main.cpp file for concrete values.

Weak forms

class CustomWeakFormAcoustics : public WeakForm
{
public:
  CustomWeakFormAcoustics(std::string bdy_newton, double rho,
                          double sound_speed, double omega)
  : WeakForm(1) {
    scalar ii =  cplx(0.0, 1.0);
    // Volumetric terms.
    add_matrix_form(new DefaultLinearDiffusion(0, 0, 1.0/rho,
                                               HERMES_SYM, HERMES_AXISYM_Y));
    add_matrix_form(new DefaultLinearMass(0, 0, - sqr(omega) / rho / sqr(sound_speed),
                    HERMES_SYM, HERMES_AXISYM_Y));
    // Term generated by the Newton condition at outlet.
    add_matrix_form_surf(new DefaultMatrixFormSurf(0, 0,  bdy_newton,
                         -ii * omega / rho / sound_speed, HERMES_AXISYM_Y));
  };
};

Sample results

Axisymmetrix horn results.

Table Of Contents

Previous topic

Apartment

Next topic

Advection-diffusion-reaction