Guide
The FinEtools package is used here to solve linear acoustics problems.
Tutorials  are provided in the form of Julia scripts and Markdown files in a dedicated folder: index of tutorials. 
Modules
The package FinEtoolsAcoustics has the following structure:
- Top-level: - FinEtoolsAcousticsis 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.
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.
- Compute the acoustic Robin 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 (prescribed normal component of the velocity):
flux1  =  FDataDict("femm"=>FEMMAcoustSurf(IntegDomain(piston_fes, GaussRule(2, 2)),
          material),  "normal_flux"=> -1.0im*rho*omega*v_piston);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.