simo

simo: single input and multiple output.

Contents

Syntax

[uScattRX, uScattROI] = simo(qROI, uIncROI, seti)

Description

[uScattRX, uScattROI] = simo(qROI, uIncROI, seti) computes one scattered field uScattRX at receivers and uScattROI in ROI for the contrast qROI and one incident field uIncROI.

Input Arguments

See also mimo.html for further information.

Output Arguments

See also mimo.html for further information.

More About

See Also

Code

function [uScattRX, uScattROI] = simo(qROI, uIncROI, seti)

Compute the scattered field on ROI: uScattROI

[V, ~, ~, ~, ~, QU, ~, Vqf, ~] = intOpsFuncs(qROI, seti);

if seti.mCD == 0 % in public version seti.mCD = 0 because twoGrid is not supported
    uScattROI = solveLippmannSchwinger(@(x) V(QU(x)), V(QU(uIncROI)), seti);
else % twoGrid
    [~, ~, ~, ~, ~, ~, ~, VqfM, ~] = intOpsFuncs(seti.setiM.qROI, seti.setiM);
    uScattROI = solveLippmannSchwinger(@(x) V(QU(x)), V(QU(uIncROI)), seti, 'twoGrid', Vqf, VqfM);
end

Compute the scattered field at receivers positions RX: uScattRX

fROI = QU(uIncROI+uScattROI);
if strcmp(seti.model, 'helmholtz2D')
    uScattRX = seti.k^2.*helmholtz2Dr2data(fROI, seti);
elseif strcmp(seti.model, 'helmholtz3D')
    uScattRX = seti.k^2.*helmholtz3Dr2data(fROI, seti);
elseif strcmp(seti.model, 'helmholtzHMode2D') % not supported in public version
    uScattRX = helmholtzHMode2Dr2data(fROI, qROI, seti);
else
    disp('simo.m: Error - model is not (yet ... ?) implemented');
end
end