MovingPointSourceDipole¶
- class acoular.sources.MovingPointSourceDipole¶
Bases:
PointSourceDipole
,MovingPointSource
Define a moving point source with dipole characteristics.
This class extends the functionalities of
PointSourceDipole
andMovingPointSource
to simulate a dipole source that moves along adefined trajectory
. It incorporates both rotational and translational dynamics for the dipole lobes, allowing simulation of complex directional sound sources.- Key Features:
Combines dipole characteristics with source motion.
Supports rotation of the dipole directivity via the
rvec
attribute.Calculates emission times using Newton-Raphson iteration.
See also
acoular.sources.PointSourceDipole
For stationary dipole sources.
acoular.sources.MovingPointSource
For moving point sources without dipole characteristics.
- digest = Property( …¶
A unique identifier for the current state of the source, based on its properties. (read-only)
- rvec = CArray(dtype=float, shape=(3,), value=array((0, 0, 0)), desc='reference vector')¶
A reference vector, perpendicular to the x and y-axis of moving source, defining the axis of rotation for the dipole directivity. If set to
(0, 0, 0)
, the dipole is only translated along thetrajectory
without rotation. Default is(0, 0, 0)
.
- get_emission_time(t, direction)¶
Calculate the emission time and related properties for a moving source.
- Parameters:
- t
numpy.ndarray
The current receiving time at the microphones.
- direction
float
ornumpy.ndarray
Direction vector for the source’s dipole directivity.
- t
- Returns:
- tuple
A tuple containing:
- te
numpy.ndarray
Emission times for each microphone.
- te
- rm
numpy.ndarray
Distances from the source to each microphone.
- rm
- Mr
numpy.ndarray
Radial Mach numbers for the source’s motion.
- Mr
- xs
numpy.ndarray
Source coordinates at the calculated emission times.
- xs
Warning
Ensure that the maximum iteration count (
100
) is sufficient for convergence in all scenarios, especially for high Mach numbers or long trajectories.Notes
The emission times are computed iteratively using the Newton-Raphson method. The iteration terminates when the time discrepancy (
eps
) is below a threshold (epslim
) or after 100 iterations.
- get_moving_direction(direction, time=0)¶
Calculate the moving direction of the dipole source along its trajectory.
This method computes the updated direction vector for the dipole source, considering both translation along the trajectory and rotation defined by the
reference vector
. If the reference vector is(0, 0, 0)
, only translation is applied. Otherwise, the method incorporates rotation into the calculation.- Parameters:
- direction
numpy.ndarray
The initial direction vector of the dipole, specified as a 3-element array representing the orientation of the dipole lobes.
- time
float
, optional The time at which the trajectory position and velocity are evaluated. Defaults to
0
.
- direction
- Returns:
numpy.ndarray
The updated direction vector of the dipole source after translation and, if applicable, rotation. The output is a 3-element array.
Notes
The method computes the translation direction vector based on the trajectory’s velocity at the specified time.
If the
reference vector
is non-zero, the method constructs a rotation matrix to compute the new dipole direction based on the trajectory’s motion and the reference vector.The rotation matrix ensures that the new dipole orientation adheres to the right-hand rule and remains orthogonal.
- result(num=128)¶
Generate the output signal at microphones in blocks.
- Parameters:
- num
int
, optional Number of samples per block to yield. Default is
128
.
- num
- Yields:
numpy.ndarray
A 2D array of shape (
num
,num_channels
) containing the signal detected at the microphones. The last block may have fewer samples ifnum_samples
is not a multiple ofnum
.
Notes
Radial Mach number adjustments are applied if
conv_amp
is enabled.