# Returns the respective amplitudes of basis functions r1 and r2 related # to global basis function number 'ind' function [ ir1 r1 ir2 r2 layer_min layer_max ] = rayleigh_basis( ind, kreal ) global nlayers n2 nbfun lambda l2myu if ( ind == 1 ) # first free-surface function with zero stress at the surface ir1 = 0; r1 = kreal; ir2 = 1; r2 = 1.0; layer_min = 1; layer_max = 1; return; end if ( ind == 2 ) # second free-surface function with zero stress at the surface ir1 = 1; r1 = 1.0; ir2 = 0; r2 = -kreal*lambda(1)/l2myu(1); layer_min = 1; layer_max = 1; return; end ind -= 1; l = round(ind/2); if ( ind == 2*l ) # r1 only ir1 = l+1; r1 = 1.0; ir2 = -1; r2 = 0.0; layer_min = round((ir1-1)/2); layer_max = layer_min+1; else # r2 only ir1 = -1; r1 = 0.0; ir2 = l; r2 = 1.0; layer_min = round((ir2-1)/2); layer_max = layer_min+1; endif if ( layer_max > nlayers ) layer_max = nlayers; endif endfunction