# Guide

The FinEtools package is used here to solve heat conduction problems.

## Modules

The package FinEtoolsAcoustics has the following structure:

• Top-level: FinEtoolsAcoustics is the top-level module.

• Acoustics: AlgoAcoustModule (algorithms), FEMMAcoustModule, FEMMAcoustSurfModule (FEM machines to evaluate the matrix and vector quantities), MatAcoustFluidModule (acoustic fluid material).

## Acoustics FEM machines

There is one for the interior integrals and one for boundary integrals. The machine for the interior integrals can be used to compute:

• Evaluate the acoustic-mass matrix and the acoustic-stiffness matrix.

• Evaluate the load vector corresponding to prescribed pressure or the prescribed second order rate of the pressure.

The machine for the boundary integrals can be used to compute:

• Compute transformation matrix to convert pressure to resultant force or pressure to resultant torque.

• Compute the acoustic ABC (absorbing boundary condition) matrix.

### Acoustics algorithms

At the moment there is one algorithm, for steady-state (harmonic) acoustics.

#### Example: baffled piston

After the mesh has been generated, the modeldata can be set up: Here we begin with the region.

material = MatAcoustFluid(bulk, rho)
region1 =  FDataDict("femm"=>FEMMAcoust(IntegDomain(fes, GaussRule(3, 2)), material))

We set up a definition of the absorbing boundary condition:

abc1  =  FDataDict("femm"=>FEMMAcoustSurf(IntegDomain(outer_fes, GaussRule(2, 2)),
material))

The surface of the piston is associated with a known-flux boundary condition:

flux1  =  FDataDict("femm"=>FEMMAcoustSurf(IntegDomain(piston_fes, GaussRule(2, 2)),
material),  "normal_flux"=> -rho*a_piston+0.0im);

And finally we make the model data,

modeldata =  FDataDict("fens"=>  fens,
"omega"=>omega,
"regions"=>[region1],
"flux_bcs"=>[flux1], "ABCs"=>[abc1])

and call the solver:

modeldata = FinEtools.AlgoAcoustModule.steadystate(modeldata)

When the algorithm completes, modeldata["P"] is the computed pressure field.