function p = int_prob(l, T, x0, direc, ind_t, bp, ind_delta, lb, T_mov) % direc ... change direction of jumps, 1: left->right, -1: right->left % 2: left->left, -2: right->right % ind_t ... time index at which propagators are evaluated % bp ... boundary position at t==ind_t <<<<<<< Updated upstream % lb ... distance from boundary not to take into account ======= ss = T{1}.system_size; >>>>>>> Stashed changes delta_x0 = diff(x0); p = 0; for i = 1:length(delta_x0) x = (x0(i)+x0(i+1))/2; % 1. cond.: corr. starting point? 2. cond: jumped outside of domain? corr_starting_point = direc*x < direc*bp-lb; if abs(direc) == 1 % jump across the boundary? <<<<<<< Updated upstream corr_end_point = direc*(x-l) > direc*(bp-T{i}.v*T{1}.t(ind_delta+1))+lb; elseif abs(direc) == 2 % jump within the same phase? if lb ~= 0 disp('Jump within same phase not implemented for lb!=0'); break; end l = abs(l); % both directions need to be considered. if (x < bp) if (x + l < bp); right = 1; else; right = 0; end if (x - l > 0); left = 1; else; left = 0; end else if (x + l < T{1}.system_size); right =1; else; right = 0; end if (x -l > bp); left = 1; else; left = 0; end ======= corr_end_point = direc*(x-l) > direc*(bp-T{i}.v*T{1}.t(ind_delta+1)); elseif direc == 2 % jump left -> left if l < 0 && x-l < bp; corr_end_point = 1; else; corr_end_point=0; end if l > 0 % jump to left corr_end_point = 1; if x-l < 0; x = l-x; end % reflecting boundary if jump out left end elseif direc == -2 % jump right -> right if l > 0 && x-l > bp; corr_end_point = 1; else; corr_end_point=0; end if l < 0 % jump to right corr_end_point = 1; % Reflecting boundary if jumping out on right side of system if x-l > ss; x = 2*ss+l-x; end >>>>>>> Stashed changes end end if corr_starting_point && corr_end_point if nargin==8 if abs(direc) == 2 disp('Jumps within same phase not implemented for equ. .'); end p_i = @(j) interp1(T{j}.x, T{j}.sol(ind_t, :), x-l); p2 = (p_i(i)+p_i(i+1))/2; % @ SS distribution for x0 can be taken from phi_tot p = p + delta_x0(i)*... T{1}.phi_tot(x, T{1}.a, T{1}.b, T{1}.e, T{1}.u0, 0)*p2; elseif nargin==9 if abs(direc) == 1 x_ev = x-l; elseif direc == 2 % left -> left if l > 0 && x-l < 0; x_ev = l-x; else; x_ev = x-l; end elseif direc == -2 % right -> right if l < 0 && x+l > ss; x_ev = 2*ss+l-x; else; x_ev = x-l; end end p_i = @(j) interp1(T{j}.x, T{j}.sol(ind_delta+1, :), x_ev); p2 = (p_i(i)+p_i(i+1))/2; p_sol = @(j) interp1(T_mov.x, T_mov.sol(ind_t, :), x); % p_sol2 = T{1}.phi_tot(x, T{1}.a, T{1}.b, T{1}.e, T{1}.u0, 0); p_sol2 = (p_sol(i)+p_sol(i+1))/2; p = p + delta_x0(i)*p_sol2*p2; end end end end