OnScale works most efficiently when models are on the order of tens of wavelengths in size along each axis. Medical and Sonar devices, however, commonly require predictions of pressure amplitudes at distances many hundreds of wavelengths from the source. These are either impractical or inefficient to model fully. The best approach in such cases is to extrapolate.

The Kirchoff extrapolation technique is a powerful tool incorporated into OnScale . It uses analytic techniques (essentially a combination of Green's functions and Huygen's principle) to take pressure/time data from the finite-element model and extrapolate to a full pressure/time response at any arbitrary location or locations.

The technique is valid in both near and far fields, but makes several assumptions:

- Propagating medium is homogenous, i.e., no intervening layers
- Propagating medium is fluid, i.e. no shear waves
- Propagating medium is either lossless or very low loss
- Response is linear

Fortunately, these assumptions are appropriate for most ultrasonic transducers in water.

Implementation of the Kirchoff method is a two-step process: the first in the OnScale input file and the second in Review post processing script to determine the acoustic beam profile.

The FE model is developed in OnScale as usual, with the device in the fluid medium.

Place an "imaginary box" around the device, so the box is completely contained within the fluid. The box does not interfere with or affect the response in any way; it merely records the pressure and pressure gradients during the simulation, for use during the extrapolation in Review.

Although ideally, the box fully encompasses the pressure source, this is not always practical. In such cases, place the box around as much of the device as possible. The box should be close to, but not in contact with, the pressure source; 5 to 10 elements away is typical.

The following code segment defines the extrapolation field:

### Ideal

extr defn kirc /* define type extrapolation boundary type - kirchoff ref in $x1 $y2 /* reference point to determine extrapolation vector node $i1 $i2+5 $j3+5 $j3+5 /* extrapolation boundary at the defined nodal indices

node$i1 $i2+5 $j2-5 $j2-5$i2+5 $i2+5 $j2-5 $j3+5 driv func /* storing time function to allow tvr calculation in toolkit end

node

### Acceptable

extr defn kirc /* define type extrapolation boundary type - kirchoff ref in $x1 $y2 /* reference point to determine extrapolation vector node $i1 $indgrd-1 $j3+5 $j3+5 /* extrapolation boundary at the defined nodal indices driv func /* storing time function to allow tvr calculation in toolkit end

extr is the extrapolation primary command which contains the subcommands to set up the extrapolation calculation:

- defn
- To define the type of extrapolation boundary type to use - Kirchoff (
**kirc**) is best suited option to use

- To define the type of extrapolation boundary type to use - Kirchoff (
- ref
- To determine which side of extrapolation boundaru to extrapolate out from
- The reference point can be anywhere in your model - you must correctly define whether the point is inside (in) or outside (out) the extrapolation boundary. Outside being the direction of the infinite medium where you are interested in the extrapolated outputs.

- node
- Defines the extrapolation boundary on the model grid using the IJK indices or nodes

- driv
- Stores the drive function in the extrapolation output file to allow for Transmit Voltage Response (TVR) calculation.

It is typical to place absorbing boundary conditions at the edges of the fluid loads to minimize reflections from contaminating the pressure signals passing through the extrapolation boundary. Although absorbers allow for use of a smaller model, they should always be ideally at least 2 acoustic wavelength from the pressure source.

The data is saved as the OnScale extrapolation file with file extension .flxext which can be processed by either the Extrapolation toolkit or using Review scripts.

## Different Types of Extrapolation

There are two forms of extrapolation, **time** and **frequency** domain:

The **time-domain** solver extrapolates the full transient response to a point in space. Therefore it can be used for pulse-echo responses and broadband responses. Because this method is computationally expensive, however, it is typically used for a small number of extrapolation points, e.g. beam profile arcs and Transmit sensitivity plots.

The **frequency-domain** solver produces a result for a single frequency, i.e., what the field looks like when the device is driven continuously at one frequency. This is similar to producing a mode shape for pressure. Because the computational requirements for the frequency solver are smaller, it is easier to generate 2D and 3D beam profiles.