108 Velocity
const& velocity,
121 Set::Scalar ux_xlo = 0.5 * (velocity(i-1,j,k,0) + velocity(i,j,k,0));
122 Set::Scalar ux_xhi = 0.5 * (velocity(i,j,k,0) + velocity(i+1,j,k,0));
123 Set::Scalar phi_xlo_l =
ReconstructLeft(phi(i-3,j,k,comp), phi(i-2,j,k,comp), phi(i-1,j,k,comp), phi_c, phi(i+1,j,k,comp));
124 Set::Scalar phi_xlo_r =
ReconstructRight(phi(i-2,j,k,comp), phi(i-1,j,k,comp), phi_c, phi(i+1,j,k,comp), phi(i+2,j,k,comp));
125 Set::Scalar phi_xhi_l =
ReconstructLeft(phi(i-2,j,k,comp), phi(i-1,j,k,comp), phi_c, phi(i+1,j,k,comp), phi(i+2,j,k,comp));
126 Set::Scalar phi_xhi_r =
ReconstructRight(phi(i-1,j,k,comp), phi_c, phi(i+1,j,k,comp), phi(i+2,j,k,comp), phi(i+3,j,k,comp));
127 Set::Scalar flux_xlo = ux_xlo * (ux_xlo >= 0.0 ? phi_xlo_l : phi_xlo_r);
128 Set::Scalar flux_xhi = ux_xhi * (ux_xhi >= 0.0 ? phi_xhi_l : phi_xhi_r);
129 div_phi_u += (flux_xhi - flux_xlo) / DX[0];
130 div_u += (ux_xhi - ux_xlo) / DX[0];
132#if AMREX_SPACEDIM >= 2
133 Set::Scalar uy_ylo = 0.5 * (velocity(i,j-1,k,1) + velocity(i,j,k,1));
134 Set::Scalar uy_yhi = 0.5 * (velocity(i,j,k,1) + velocity(i,j+1,k,1));
135 Set::Scalar phi_ylo_l =
ReconstructLeft(phi(i,j-3,k,comp), phi(i,j-2,k,comp), phi(i,j-1,k,comp), phi_c, phi(i,j+1,k,comp));
136 Set::Scalar phi_ylo_r =
ReconstructRight(phi(i,j-2,k,comp), phi(i,j-1,k,comp), phi_c, phi(i,j+1,k,comp), phi(i,j+2,k,comp));
137 Set::Scalar phi_yhi_l =
ReconstructLeft(phi(i,j-2,k,comp), phi(i,j-1,k,comp), phi_c, phi(i,j+1,k,comp), phi(i,j+2,k,comp));
138 Set::Scalar phi_yhi_r =
ReconstructRight(phi(i,j-1,k,comp), phi_c, phi(i,j+1,k,comp), phi(i,j+2,k,comp), phi(i,j+3,k,comp));
139 Set::Scalar flux_ylo = uy_ylo * (uy_ylo >= 0.0 ? phi_ylo_l : phi_ylo_r);
140 Set::Scalar flux_yhi = uy_yhi * (uy_yhi >= 0.0 ? phi_yhi_l : phi_yhi_r);
141 div_phi_u += (flux_yhi - flux_ylo) / DX[1];
142 div_u += (uy_yhi - uy_ylo) / DX[1];
145#if AMREX_SPACEDIM == 3
146 Set::Scalar uz_zlo = 0.5 * (velocity(i,j,k-1,2) + velocity(i,j,k,2));
147 Set::Scalar uz_zhi = 0.5 * (velocity(i,j,k,2) + velocity(i,j,k+1,2));
148 Set::Scalar phi_zlo_l =
ReconstructLeft(phi(i,j,k-3,comp), phi(i,j,k-2,comp), phi(i,j,k-1,comp), phi_c, phi(i,j,k+1,comp));
149 Set::Scalar phi_zlo_r =
ReconstructRight(phi(i,j,k-2,comp), phi(i,j,k-1,comp), phi_c, phi(i,j,k+1,comp), phi(i,j,k+2,comp));
150 Set::Scalar phi_zhi_l =
ReconstructLeft(phi(i,j,k-2,comp), phi(i,j,k-1,comp), phi_c, phi(i,j,k+1,comp), phi(i,j,k+2,comp));
151 Set::Scalar phi_zhi_r =
ReconstructRight(phi(i,j,k-1,comp), phi_c, phi(i,j,k+1,comp), phi(i,j,k+2,comp), phi(i,j,k+3,comp));
152 Set::Scalar flux_zlo = uz_zlo * (uz_zlo >= 0.0 ? phi_zlo_l : phi_zlo_r);
153 Set::Scalar flux_zhi = uz_zhi * (uz_zhi >= 0.0 ? phi_zhi_l : phi_zhi_r);
154 div_phi_u += (flux_zhi - flux_zlo) / DX[2];
155 div_u += (uz_zhi - uz_zlo) / DX[2];
159 return -div_phi_u + phi_c * div_u;