# Functions

## FEM machines

### Acoustics

FinEtoolsAcoustics.FEMMAcoustModule.acousticmassMethod
acousticmass(self::FEMMAcoust, assembler::A, geom::NodalField, P::NodalField{T}) where {T<:Number, A<:AbstractSysmatAssembler}

Compute the acoustic mass matrix.

Arguments

• self = acoustics model
• assembler = matrix assembler
• geom = geometry field
• P = acoustic (perturbation) pressure field

Return a matrix.

source
FinEtoolsAcoustics.FEMMAcoustModule.acousticstiffnessMethod
acousticstiffness(self::FEMMAcoust, assembler::A,
geom::NodalField,
Pddot::NodalField{T}) where {T<:Number,
A<:AbstractSysmatAssembler}

Compute the acoustic stiffness matrix.

Arguments

• self = acoustics model
• assembler = matrix assembler
• geom = geometry field
• Pddot = second order rate of the acoustic (perturbation) pressure field
source
FinEtoolsAcoustics.FEMMAcoustModule.nzebcloadsacousticmassMethod
nzebcloadsacousticmass(self::FEMMAcoust, assembler::A,
geom::NodalField, P::NodalField{T}) where {T<:Number,
A<:AbstractSysvecAssembler}

Compute load vector for nonzero EBC for prescribed pressure.

Arguments

• self = acoustics model
• assembler = matrix assembler
• geom = geometry field
• P = acoustic (perturbation) pressure field
source
FinEtoolsAcoustics.FEMMAcoustModule.nzebcloadsacousticstiffnessMethod
nzebcloadsacousticstiffness(self::FEMMAcoust, assembler::A,
geom::NodalField,
Pddot::NodalField{T}) where {T<:Number,
A<:AbstractSysvecAssembler}

Compute load vector for nonzero EBC for prescribed second-order pressure rate.

Arguments

• self = acoustics model
• assembler = matrix assembler
• geom = geometry field
• Pddot = second order rate of the acoustic (perturbation) pressure field
source
FinEtoolsAcoustics.FEMMAcoustSurfModule.acousticABCMethod
acousticABC(self::FEMMAcoustSurf, assembler::A,
geom::NodalField,
Pdot::NodalField{T}) where {T<:Number, A<:AbstractSysmatAssembler}

Compute the acoustic ABC (Absorbing Boundary Condition) matrix.

Arguments

• self = acoustics model
• assembler = matrix assembler; must be able to assemble unsymmetric matrix
• geom = geometry field
• Pdot = rate of the acoustic (perturbation) pressure field
source
FinEtoolsAcoustics.FEMMAcoustSurfModule.acousticcouplingpanelsMethod
acousticcouplingpanels(self::FEMMAcoustSurf, geom::NodalField, u::NodalField{T}) where {T}

Compute the acoustic pressure-structure coupling matrix.

The acoustic pressure-nodal force matrix transforms the pressure distributed along the surface to forces acting on the nodes of the finite element model. Its transpose transforms displacements (or velocities, or accelerations) into the normal component of the displacement (or velocity, or acceleration) along the surface.

Arguments

• geom=geometry field
• u = displacement field
Note
• n = outer normal (pointing into the acoustic medium).
• The pressures along the surface are assumed constant (uniform) along each finite element –- panel. The panel pressures are assumed to be given the same numbers as the serial numbers of the finite elements in the set.
source
FinEtoolsAcoustics.FEMMAcoustSurfModule.pressure2resultantforceMethod
pressure2resultantforce(self::FEMMAcoustSurf, assembler::A,
geom::NodalField,
P::NodalField{T},
Force::Field) where {T<:Number, A<:AbstractSysmatAssembler}

Compute the rectangular coupling matrix that transcribes given pressure on the surface into the resultant force acting on the surface.

Arguments

• self = acoustics model
• assembler = matrix assembler; must be able to assemble unsymmetric matrix
• geom = geometry field
• P = acoustic (perturbation) pressure field
• Force = field for the force resultant
source
FinEtoolsAcoustics.FEMMAcoustSurfModule.pressure2resultanttorqueMethod
pressure2resultanttorque(self::FEMMAcoustSurf, assembler::A,
geom::NodalField,
P::NodalField{T},
Torque::GeneralField, CG::FFltVec) where {T<:Number, A<:AbstractSysmatAssembler}

Compute the rectangular coupling matrix that transcribes given pressure on the surface into the resultant torque acting on the surface with respect to the CG.

Arguments

• self = acoustics model
• assembler = matrix assembler; must be able to assemble unsymmetric matrix
• geom = geometry field
• P = acoustic (perturbation) pressure field
• Torque = field for the torque resultant
source

## Algorithms

### Acoustics

FinEtoolsAcoustics.AlgoAcoustModule.steadystateMethod
steadystate(modeldata::FDataDict)

modeldata = dictionary with string keys

• "fens" = finite element node set
• "regions" = array of region dictionaries
• "essential_bcs" = array of essential boundary condition dictionaries
• "ABCs" = array of absorbing boundary condition dictionaries
• "flux_bcs" = array of flux boundary condition dictionaries

For each region (connected piece of the domain made of a particular material), mandatory, the region dictionary contains items:

• "femm" = finite element mmodel machine (mandatory);

For essential boundary conditions (optional) each dictionary would hold

• "pressure" = fixed (prescribed) pressure (scalar), or a function with signature function T = f(x) If not given, zero pressure assumed.
• "node_list" = list of nodes on the boundary to which the condition applies (mandatory)

For absorbing boundary conditions (optional) each dictionary may hold

• "femm" = finite element mmodel machine (mandatory).

For flux boundary conditions (optional) each dictionary would hold

• "femm" = finite element mmodel machine (mandatory);
• "normal_flux" = normal component of the flux through the boundary (scalar), which is the normal derivative of the pressure.

Output

modeldata = the dictionary is augmented with

• "geom" = the nodal field that is the geometry
• "P" = the nodal field that is the computed pressure (in the general a complex-number field)
source