arim.models.block_in_immersion#
Forward model of the inspection of a solid block in immersion
Calculating the frequency-domain scatterer responses:
scat_unshifted_transfer_functions()
: base function, no time-shift
Calculating the frequency-domain wall responses:
wall_unshifted_transfer_functions()
: base function, no time-shift
Boilerplate:
import arim.models.block_in_immersion as bim
probe_p = probe.to_oriented_points()
frontwall = arim.geometry.points_1d_wall_z(xmin, xmax, z_frontwall, numpoints)
backwall = arim.geometry.points_1d_wall_z(xmin, xmax, z_backwall, numpoints)
grid = arim.geometry.Grid(xmin, xmax, ymin, ymax, zmin, zmax, pixel_size)
grid_p = grid.to_oriented_points()
exam_obj = arim.BlockInImmersion(block_material, couplant_material,
frontwall, backwall)
views = bim.make_views(examination_object, probe_p,
grid_p, max_number_of_reflection=1,
tfm_unique_only=False)
Scattering precomputation#
In the computation of the model, there are two options for scattering. The first option is to pass functions, which are called for each pair of incident and scatterer angles. The evaluation time per angle pair is in general almost constant.
The second option is to pass scattering matrices, which are the function outputs for a grid of incident and scatterer angle. Missing angles are obtained by linear interpolation. The second option suffers from a loss of accuracy if the number of angles used for evaluation is too small. The total evaluation time is the sum of the precomputation time and the interpolation.
For a small number of angles to evaluate, passing the functions (option 1) is often the most computationally efficient. For a large amount of angles to evaluate, precomputing the scattering matrices (option 2) is often more computationally efficient.
|
Make backwall paths |
|
|
|
Probe -> couplant -> frontwall -> couplant -> probe |
|
Construct Interface objects for the case of a solid block in immersion (couplant is liquid). |
|
Creates all iterations of paths up with max_number_of_reflection. |
|
Make views for the measurement model of a block in immersion (scatterers response only). |
|
Compute transfer functions for scatterer echoes (multi-frequency model). |
|
Compute transfer functions for scatterer echoes (multi-frequency model). |
|
Compute coefficients Q_i(r, omega) and Q'_j(r, omega) from the forward model for all views. |
|
Compute model coefficients for wall echoes. |
|
Coefficients Q'_i(r, omega) in forward model. |
|
Compute unshifted transfer functions for scatterer echoes (multi-frequency model). |
|
Compute transfer functions for scatterer echoes (single-frequency model). |
|
Compute transfer functions for wall echoes (single-frequency model). |
|
Coefficients Q_i(r, omega) in forward model. |
|
Compute unshifted transfer functions for walls echoes. |