function [grad_l, grad_r] = eno2x(m,n,i,j,phi,dx) % phi(m+1,n+1), the level set function, m,n>=3. dxdx = dx*dx; if i > 1 phx_l = (phi(i,j) - phi(i-1,j) )/dx; else phi_l = 3*phi(i,j) - 3*phi(i+1,j) + phi(i+2,j); phx_l = (phi(i,j) - phi_l )/dx; end if i < m+1 phx_r = (phi(i+1,j) - phi(i,j) )/dx; else phi_r = 3*phi(i,j) - 3*phi(i-1,j) + phi(i-2,j); phx_r = (phi_r - phi(i,j) )/dx; end if i > 1 if i==2 phi_l = 3*phi(i-1,j) - 3*phi(i,j) + phi(i+1,j); phxx_l = (phi(i,j) - 2*phi(i-1,j) + phi_l )/dxdx; else phxx_l = (phi(i,j) - 2*phi(i-1,j) + phi(i-2,j) )/dxdx; end else phi_l = 3*phi(i,j) - 3*phi(i+1,j) + phi(i+2,j); phi_ll = 6*phi(i,j) -8*phi(i+1,j) + 3*phi(i+2,j); phxx_l = (phi(i,j) - 2*phi_l + phi_ll )/dxdx; end if i < m + 1 if i==m phi_r = 3*phi(i+1,j) - 3*phi(i,j) + phi(i-1,j); phxx_r = (phi_r - 2*phi(i+1,j) + phi(i,j) )/dxdx; else phxx_r = (phi(i+2,j) - 2*phi(i+1,j) + phi(i,j) )/dxdx; end else phi_r = 3*phi(i,j) - 3*phi(i-1,j) + phi(i-2,j); phi_rr = 6*phi(i,j) -8*phi(i-1,j) + 3*phi(i-2,j); phxx_r = (phi_rr - 2*phi_r + phi(i,j) )/dxdx; end if i==1 phi_l = 3*phi(i,j) - 3*phi(i+1,j) + phi(i+2,j); phxx_o = (phi(i+1,j) - 2*phi(i,j) + phi_l )/dxdx; elseif i==m+1 phi_r = 3*phi(i,j) - 3*phi(i-1,j) + phi(i-2,j); phxx_o = (phi_r - 2*phi(i,j) + phi(i-1,j) )/dxdx;; else phxx_o = (phi(i+1,j) - 2*phi(i,j) + phi(i-1,j) )/dxdx; end grad_l = phx_l + dx*0.5*absmin(phxx_l, phxx_o); grad_r = phx_r - dx*0.5*absmin(phxx_r, phxx_o);