683 type(scalar_field),
dimension(sys_size),
intent(inout) :: q_prim_vf
684 real(stp),
optional,
dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:,1:),
intent(inout) :: pb_in, mv_in
685 type(integer_field),
dimension(1:num_dims,1:2),
intent(in) :: bc_type
690 if (bc_x%beg >= 0)
then
691 call s_mpi_sendrecv_variables_buffers(q_prim_vf, 1, -1, sys_size, pb_in, mv_in)
694# 86 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
696# 86 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
697#if defined(MFC_OpenACC)
698# 86 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
700# 86 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
701#elif defined(MFC_OpenMP)
702# 86 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
704# 86 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
706# 86 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
708# 86 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
710# 86 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
714 select case (int(bc_type(1, 1)%sf(0,
k,
l)))
715 case (bc_char_sup_outflow:bc_ghost_extrap)
723 case (bc_no_slip_wall)
729 if (qbmm .and. (.not. polytropic) .and. (bc_type(1, 1)%sf(0,
k,
l) <= bc_ghost_extrap))
then
735# 109 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
736#if defined(MFC_OpenACC)
737# 109 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
739# 109 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
740#elif defined(MFC_OpenMP)
741# 109 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
743# 109 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
745# 109 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
749 if (bc_x%end >= 0)
then
750 call s_mpi_sendrecv_variables_buffers(q_prim_vf, 1, 1, sys_size, pb_in, mv_in)
753# 115 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
755# 115 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
756#if defined(MFC_OpenACC)
757# 115 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
759# 115 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
760#elif defined(MFC_OpenMP)
761# 115 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
763# 115 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
765# 115 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
767# 115 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
769# 115 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
773 select case (int(bc_type(1, 2)%sf(0,
k,
l)))
774 case (bc_char_sup_outflow:bc_ghost_extrap)
782 case (bc_no_slip_wall)
788 if (qbmm .and. (.not. polytropic) .and. (bc_type(1, 2)%sf(0,
k,
l) <= bc_ghost_extrap))
then
794# 138 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
795#if defined(MFC_OpenACC)
796# 138 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
798# 138 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
799#elif defined(MFC_OpenMP)
800# 138 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
802# 138 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
804# 138 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
812# 146 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
813 if (bc_y%beg >= 0)
then
814 call s_mpi_sendrecv_variables_buffers(q_prim_vf, 2, -1, sys_size, pb_in, mv_in)
817# 149 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
819# 149 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
820#if defined(MFC_OpenACC)
821# 149 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
823# 149 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
824#elif defined(MFC_OpenMP)
825# 149 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
827# 149 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
829# 149 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
831# 149 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
833# 149 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
836 do k = -buff_size, m + buff_size
837 select case (int(bc_type(2, 1)%sf(
k, 0,
l)))
838 case (bc_char_sup_outflow:bc_ghost_extrap)
841 call s_axis(q_prim_vf, pb_in, mv_in,
k,
l)
848 case (bc_no_slip_wall)
854 if (qbmm .and. (.not. polytropic) .and. (bc_type(2, 1)%sf(
k, 0,
l) <= bc_ghost_extrap) .and. (bc_type(2, &
855 & 1)%sf(
k, 0,
l) /= bc_axis))
then
861# 175 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
862#if defined(MFC_OpenACC)
863# 175 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
865# 175 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
866#elif defined(MFC_OpenMP)
867# 175 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
869# 175 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
871# 175 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
875 if (bc_y%end >= 0)
then
876 call s_mpi_sendrecv_variables_buffers(q_prim_vf, 2, 1, sys_size, pb_in, mv_in)
879# 181 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
881# 181 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
882#if defined(MFC_OpenACC)
883# 181 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
885# 181 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
886#elif defined(MFC_OpenMP)
887# 181 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
889# 181 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
891# 181 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
893# 181 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
895# 181 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
898 do k = -buff_size, m + buff_size
899 select case (int(bc_type(2, 2)%sf(
k, 0,
l)))
900 case (bc_char_sup_outflow:bc_ghost_extrap)
908 case (bc_no_slip_wall)
914 if (qbmm .and. (.not. polytropic) .and. (bc_type(2, 2)%sf(
k, 0,
l) <= bc_ghost_extrap))
then
920# 204 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
921#if defined(MFC_OpenACC)
922# 204 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
924# 204 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
925#elif defined(MFC_OpenMP)
926# 204 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
928# 204 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
930# 204 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
933# 207 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
939# 213 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
940 if (bc_z%beg >= 0)
then
941 call s_mpi_sendrecv_variables_buffers(q_prim_vf, 3, -1, sys_size, pb_in, mv_in)
944# 216 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
946# 216 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
947#if defined(MFC_OpenACC)
948# 216 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
950# 216 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
951#elif defined(MFC_OpenMP)
952# 216 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
954# 216 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
956# 216 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
958# 216 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
960# 216 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
962 do l = -buff_size, n + buff_size
963 do k = -buff_size, m + buff_size
964 select case (int(bc_type(3, 1)%sf(
k,
l, 0)))
965 case (bc_char_sup_outflow:bc_ghost_extrap)
973 case (bc_no_slip_wall)
979 if (qbmm .and. (.not. polytropic) .and. (bc_type(3, 1)%sf(
k,
l, 0) <= bc_ghost_extrap))
then
985# 239 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
986#if defined(MFC_OpenACC)
987# 239 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
989# 239 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
990#elif defined(MFC_OpenMP)
991# 239 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
993# 239 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
995# 239 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
999 if (bc_z%end >= 0)
then
1000 call s_mpi_sendrecv_variables_buffers(q_prim_vf, 3, 1, sys_size, pb_in, mv_in)
1003# 245 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1005# 245 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1006#if defined(MFC_OpenACC)
1007# 245 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1009# 245 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1010#elif defined(MFC_OpenMP)
1011# 245 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1013# 245 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1015# 245 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1017# 245 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1019# 245 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1021 do l = -buff_size, n + buff_size
1022 do k = -buff_size, m + buff_size
1023 select case (int(bc_type(3, 2)%sf(
k,
l, 0)))
1024 case (bc_char_sup_outflow:bc_ghost_extrap)
1026 case (bc_reflective)
1032 case (bc_no_slip_wall)
1038 if (qbmm .and. (.not. polytropic) .and. (bc_type(3, 2)%sf(
k,
l, 0) <= bc_ghost_extrap))
then
1044# 268 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1045#if defined(MFC_OpenACC)
1046# 268 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1048# 268 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1049#elif defined(MFC_OpenMP)
1050# 268 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1052# 268 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1054# 268 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1057# 271 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1151 subroutine s_symmetry(q_prim_vf, bc_dir, bc_loc, k, l, pb_in, mv_in)
1154# 332 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1156# 332 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1158# 332 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1160# 332 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1162# 332 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1164# 332 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1166# 332 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1168 type(scalar_field),
dimension(sys_size),
intent(inout) :: q_prim_vf
1169 real(stp),
optional,
dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:,1:),
intent(inout) :: pb_in, mv_in
1170 integer,
intent(in) :: bc_dir, bc_loc
1171 integer,
intent(in) :: k, l
1174 if (bc_dir == 1)
then
1175 if (bc_loc == -1)
then
1178 q_prim_vf(i)%sf(-j, k, l) = q_prim_vf(i)%sf(j - 1, k, l)
1181 q_prim_vf(momxb)%sf(-j, k, l) = -q_prim_vf(momxb)%sf(j - 1, k, l)
1183 do i = momxb + 1, sys_size
1184 q_prim_vf(i)%sf(-j, k, l) = q_prim_vf(i)%sf(j - 1, k, l)
1187 if (elasticity)
then
1188 do i = 1, shear_bc_flip_num
1189 q_prim_vf(shear_bc_flip_indices(1, i))%sf(-j, k, l) = -q_prim_vf(shear_bc_flip_indices(1, &
1190 & i))%sf(j - 1, k, l)
1194 if (hyperelasticity)
then
1195 q_prim_vf(xibeg)%sf(-j, k, l) = -q_prim_vf(xibeg)%sf(j - 1, k, l)
1199 if (qbmm .and. .not. polytropic)
then
1203 pb_in(-j, k, l, q, i) = pb_in(j - 1, k, l, q, i)
1204 mv_in(-j, k, l, q, i) = mv_in(j - 1, k, l, q, i)
1212 q_prim_vf(i)%sf(m + j, k, l) = q_prim_vf(i)%sf(m - (j - 1), k, l)
1215 q_prim_vf(momxb)%sf(m + j, k, l) = -q_prim_vf(momxb)%sf(m - (j - 1), k, l)
1217 do i = momxb + 1, sys_size
1218 q_prim_vf(i)%sf(m + j, k, l) = q_prim_vf(i)%sf(m - (j - 1), k, l)
1221 if (elasticity)
then
1222 do i = 1, shear_bc_flip_num
1223 q_prim_vf(shear_bc_flip_indices(1, i))%sf(m + j, k, l) = -q_prim_vf(shear_bc_flip_indices(1, &
1224 & i))%sf(m - (j - 1), k, l)
1228 if (hyperelasticity)
then
1229 q_prim_vf(xibeg)%sf(m + j, k, l) = -q_prim_vf(xibeg)%sf(m - (j - 1), k, l)
1232 if (qbmm .and. .not. polytropic)
then
1236 pb_in(m + j, k, l, q, i) = pb_in(m - (j - 1), k, l, q, i)
1237 mv_in(m + j, k, l, q, i) = mv_in(m - (j - 1), k, l, q, i)
1243 else if (bc_dir == 2)
then
1244 if (bc_loc == -1)
then
1247 q_prim_vf(i)%sf(k, -j, l) = q_prim_vf(i)%sf(k, j - 1, l)
1250 q_prim_vf(momxb + 1)%sf(k, -j, l) = -q_prim_vf(momxb + 1)%sf(k, j - 1, l)
1252 do i = momxb + 2, sys_size
1253 q_prim_vf(i)%sf(k, -j, l) = q_prim_vf(i)%sf(k, j - 1, l)
1256 if (elasticity)
then
1257 do i = 1, shear_bc_flip_num
1258 q_prim_vf(shear_bc_flip_indices(2, i))%sf(k, -j, l) = -q_prim_vf(shear_bc_flip_indices(2, i))%sf(k, &
1263 if (hyperelasticity)
then
1264 q_prim_vf(xibeg + 1)%sf(k, -j, l) = -q_prim_vf(xibeg + 1)%sf(k, j - 1, l)
1268 if (qbmm .and. .not. polytropic)
then
1272 pb_in(k, -j, l, q, i) = pb_in(k, j - 1, l, q, i)
1273 mv_in(k, -j, l, q, i) = mv_in(k, j - 1, l, q, i)
1281 q_prim_vf(i)%sf(k, n + j, l) = q_prim_vf(i)%sf(k, n - (j - 1), l)
1284 q_prim_vf(momxb + 1)%sf(k, n + j, l) = -q_prim_vf(momxb + 1)%sf(k, n - (j - 1), l)
1286 do i = momxb + 2, sys_size
1287 q_prim_vf(i)%sf(k, n + j, l) = q_prim_vf(i)%sf(k, n - (j - 1), l)
1290 if (elasticity)
then
1291 do i = 1, shear_bc_flip_num
1292 q_prim_vf(shear_bc_flip_indices(2, i))%sf(k, n + j, l) = -q_prim_vf(shear_bc_flip_indices(2, &
1293 & i))%sf(k, n - (j - 1), l)
1297 if (hyperelasticity)
then
1298 q_prim_vf(xibeg + 1)%sf(k, n + j, l) = -q_prim_vf(xibeg + 1)%sf(k, n - (j - 1), l)
1302 if (qbmm .and. .not. polytropic)
then
1306 pb_in(k, n + j, l, q, i) = pb_in(k, n - (j - 1), l, q, i)
1307 mv_in(k, n + j, l, q, i) = mv_in(k, n - (j - 1), l, q, i)
1313 else if (bc_dir == 3)
then
1314 if (bc_loc == -1)
then
1317 q_prim_vf(i)%sf(k, l, -j) = q_prim_vf(i)%sf(k, l, j - 1)
1320 q_prim_vf(momxe)%sf(k, l, -j) = -q_prim_vf(momxe)%sf(k, l, j - 1)
1322 do i = e_idx, sys_size
1323 q_prim_vf(i)%sf(k, l, -j) = q_prim_vf(i)%sf(k, l, j - 1)
1326 if (elasticity)
then
1327 do i = 1, shear_bc_flip_num
1328 q_prim_vf(shear_bc_flip_indices(3, i))%sf(k, l, -j) = -q_prim_vf(shear_bc_flip_indices(3, i))%sf(k, &
1333 if (hyperelasticity)
then
1334 q_prim_vf(xiend)%sf(k, l, -j) = -q_prim_vf(xiend)%sf(k, l, j - 1)
1338 if (qbmm .and. .not. polytropic)
then
1342 pb_in(k, l, -j, q, i) = pb_in(k, l, j - 1, q, i)
1343 mv_in(k, l, -j, q, i) = mv_in(k, l, j - 1, q, i)
1351 q_prim_vf(i)%sf(k, l, p + j) = q_prim_vf(i)%sf(k, l, p - (j - 1))
1354 q_prim_vf(momxe)%sf(k, l, p + j) = -q_prim_vf(momxe)%sf(k, l, p - (j - 1))
1356 do i = e_idx, sys_size
1357 q_prim_vf(i)%sf(k, l, p + j) = q_prim_vf(i)%sf(k, l, p - (j - 1))
1360 if (elasticity)
then
1361 do i = 1, shear_bc_flip_num
1362 q_prim_vf(shear_bc_flip_indices(3, i))%sf(k, l, p + j) = -q_prim_vf(shear_bc_flip_indices(3, &
1363 & i))%sf(k, l, p - (j - 1))
1367 if (hyperelasticity)
then
1368 q_prim_vf(xiend)%sf(k, l, p + j) = -q_prim_vf(xiend)%sf(k, l, p - (j - 1))
1372 if (qbmm .and. .not. polytropic)
then
1376 pb_in(k, l, p + j, q, i) = pb_in(k, l, p - (j - 1), q, i)
1377 mv_in(k, l, p + j, q, i) = mv_in(k, l, p - (j - 1), q, i)
1388 subroutine s_periodic(q_prim_vf, bc_dir, bc_loc, k, l, pb_in, mv_in)
1391# 555 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1393# 555 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1395# 555 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1397# 555 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1399# 555 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1401# 555 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1403# 555 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1405 type(scalar_field),
dimension(sys_size),
intent(inout) :: q_prim_vf
1406 real(stp),
optional,
dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:,1:),
intent(inout) :: pb_in, mv_in
1407 integer,
intent(in) :: bc_dir, bc_loc
1408 integer,
intent(in) :: k, l
1411 if (bc_dir == 1)
then
1412 if (bc_loc == -1)
then
1415 q_prim_vf(i)%sf(-j, k, l) = q_prim_vf(i)%sf(m - (j - 1), k, l)
1419 if (qbmm .and. .not. polytropic)
then
1423 pb_in(-j, k, l, q, i) = pb_in(m - (j - 1), k, l, q, i)
1424 mv_in(-j, k, l, q, i) = mv_in(m - (j - 1), k, l, q, i)
1432 q_prim_vf(i)%sf(m + j, k, l) = q_prim_vf(i)%sf(j - 1, k, l)
1436 if (qbmm .and. .not. polytropic)
then
1440 pb_in(m + j, k, l, q, i) = pb_in(j - 1, k, l, q, i)
1441 mv_in(m + j, k, l, q, i) = mv_in(j - 1, k, l, q, i)
1447 else if (bc_dir == 2)
then
1448 if (bc_loc == -1)
then
1451 q_prim_vf(i)%sf(k, -j, l) = q_prim_vf(i)%sf(k, n - (j - 1), l)
1455 if (qbmm .and. .not. polytropic)
then
1459 pb_in(k, -j, l, q, i) = pb_in(k, n - (j - 1), l, q, i)
1460 mv_in(k, -j, l, q, i) = mv_in(k, n - (j - 1), l, q, i)
1468 q_prim_vf(i)%sf(k, n + j, l) = q_prim_vf(i)%sf(k, j - 1, l)
1472 if (qbmm .and. .not. polytropic)
then
1476 pb_in(k, n + j, l, q, i) = pb_in(k, (j - 1), l, q, i)
1477 mv_in(k, n + j, l, q, i) = mv_in(k, (j - 1), l, q, i)
1483 else if (bc_dir == 3)
then
1484 if (bc_loc == -1)
then
1487 q_prim_vf(i)%sf(k, l, -j) = q_prim_vf(i)%sf(k, l, p - (j - 1))
1491 if (qbmm .and. .not. polytropic)
then
1495 pb_in(k, l, -j, q, i) = pb_in(k, l, p - (j - 1), q, i)
1496 mv_in(k, l, -j, q, i) = mv_in(k, l, p - (j - 1), q, i)
1504 q_prim_vf(i)%sf(k, l, p + j) = q_prim_vf(i)%sf(k, l, j - 1)
1508 if (qbmm .and. .not. polytropic)
then
1512 pb_in(k, l, p + j, q, i) = pb_in(k, l, j - 1, q, i)
1513 mv_in(k, l, p + j, q, i) = mv_in(k, l, j - 1, q, i)
1524 subroutine s_axis(q_prim_vf, pb_in, mv_in, k, l)
1527# 677 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1529# 677 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1531# 677 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1533# 677 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1535# 677 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1537# 677 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1539# 677 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1541 type(scalar_field),
dimension(sys_size),
intent(inout) :: q_prim_vf
1542 real(stp),
dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:,1:),
intent(inout) :: pb_in, mv_in
1543 integer,
intent(in) :: k, l
1547 if (z_cc(l) < pi)
then
1549 q_prim_vf(i)%sf(k, -j, l) = q_prim_vf(i)%sf(k, j - 1, l + ((p + 1)/2))
1552 q_prim_vf(momxb + 1)%sf(k, -j, l) = -q_prim_vf(momxb + 1)%sf(k, j - 1, l + ((p + 1)/2))
1554 q_prim_vf(momxe)%sf(k, -j, l) = -q_prim_vf(momxe)%sf(k, j - 1, l + ((p + 1)/2))
1556 do i = e_idx, sys_size
1557 q_prim_vf(i)%sf(k, -j, l) = q_prim_vf(i)%sf(k, j - 1, l + ((p + 1)/2))
1561 q_prim_vf(i)%sf(k, -j, l) = q_prim_vf(i)%sf(k, j - 1, l - ((p + 1)/2))
1564 q_prim_vf(momxb + 1)%sf(k, -j, l) = -q_prim_vf(momxb + 1)%sf(k, j - 1, l - ((p + 1)/2))
1566 q_prim_vf(momxe)%sf(k, -j, l) = -q_prim_vf(momxe)%sf(k, j - 1, l - ((p + 1)/2))
1568 do i = e_idx, sys_size
1569 q_prim_vf(i)%sf(k, -j, l) = q_prim_vf(i)%sf(k, j - 1, l - ((p + 1)/2))
1574 if (qbmm .and. .not. polytropic)
then
1578 pb_in(k, -j, l, q, i) = pb_in(k, j - 1, l - ((p + 1)/2), q, i)
1579 mv_in(k, -j, l, q, i) = mv_in(k, j - 1, l - ((p + 1)/2), q, i)
1591# 727 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1593# 727 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1595# 727 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1597# 727 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1599# 727 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1601# 727 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1603# 727 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1605# 727 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1607# 727 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1609# 727 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1611# 727 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1613# 727 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1615# 727 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1617# 727 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1619# 727 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1621# 727 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1623# 727 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1625 type(scalar_field),
dimension(sys_size),
intent(inout) :: q_prim_vf
1626 integer,
intent(in) :: bc_dir, bc_loc
1627 integer,
intent(in) :: k, l
1630 if (bc_dir == 1)
then
1631 if (bc_loc == -1)
then
1634 if (i == momxb)
then
1635 q_prim_vf(i)%sf(-j, k, l) = -q_prim_vf(i)%sf(j - 1, k, l) + 2._wp*bc_x%vb1
1637 q_prim_vf(i)%sf(-j, k, l) = q_prim_vf(i)%sf(0, k, l)
1644 if (i == momxb)
then
1645 q_prim_vf(i)%sf(m + j, k, l) = -q_prim_vf(i)%sf(m - (j - 1), k, l) + 2._wp*bc_x%ve1
1647 q_prim_vf(i)%sf(m + j, k, l) = q_prim_vf(i)%sf(m, k, l)
1652 else if (bc_dir == 2)
then
1653 if (bc_loc == -1)
then
1656 if (i == momxb + 1)
then
1657 q_prim_vf(i)%sf(k, -j, l) = -q_prim_vf(i)%sf(k, j - 1, l) + 2._wp*bc_y%vb2
1659 q_prim_vf(i)%sf(k, -j, l) = q_prim_vf(i)%sf(k, 0, l)
1666 if (i == momxb + 1)
then
1667 q_prim_vf(i)%sf(k, n + j, l) = -q_prim_vf(i)%sf(k, n - (j - 1), l) + 2._wp*bc_y%ve2
1669 q_prim_vf(i)%sf(k, n + j, l) = q_prim_vf(i)%sf(k, n, l)
1674 else if (bc_dir == 3)
then
1675 if (bc_loc == -1)
then
1678 if (i == momxe)
then
1679 q_prim_vf(i)%sf(k, l, -j) = -q_prim_vf(i)%sf(k, l, j - 1) + 2._wp*bc_z%vb3
1681 q_prim_vf(i)%sf(k, l, -j) = q_prim_vf(i)%sf(k, l, 0)
1688 if (i == momxe)
then
1689 q_prim_vf(i)%sf(k, l, p + j) = -q_prim_vf(i)%sf(k, l, p - (j - 1)) + 2._wp*bc_z%ve3
1691 q_prim_vf(i)%sf(k, l, p + j) = q_prim_vf(i)%sf(k, l, p)
1704# 806 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1706# 806 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1708# 806 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1710# 806 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1712# 806 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1714# 806 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1716# 806 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1718# 806 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1720# 806 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1722# 806 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1724# 806 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1726# 806 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1728# 806 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1730# 806 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1732# 806 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1734# 806 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1736# 806 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1739 type(scalar_field),
dimension(sys_size),
intent(inout) :: q_prim_vf
1740 integer,
intent(in) :: bc_dir, bc_loc
1741 integer,
intent(in) :: k, l
1744 if (bc_dir == 1)
then
1745 if (bc_loc == -1)
then
1748 if (i == momxb)
then
1749 q_prim_vf(i)%sf(-j, k, l) = -q_prim_vf(i)%sf(j - 1, k, l) + 2._wp*bc_x%vb1
1750 else if (i == momxb + 1 .and. num_dims > 1)
then
1751 q_prim_vf(i)%sf(-j, k, l) = -q_prim_vf(i)%sf(j - 1, k, l) + 2._wp*bc_x%vb2
1752 else if (i == momxb + 2 .and. num_dims > 2)
then
1753 q_prim_vf(i)%sf(-j, k, l) = -q_prim_vf(i)%sf(j - 1, k, l) + 2._wp*bc_x%vb3
1755 q_prim_vf(i)%sf(-j, k, l) = q_prim_vf(i)%sf(0, k, l)
1762 if (i == momxb)
then
1763 q_prim_vf(i)%sf(m + j, k, l) = -q_prim_vf(i)%sf(m - (j - 1), k, l) + 2._wp*bc_x%ve1
1764 else if (i == momxb + 1 .and. num_dims > 1)
then
1765 q_prim_vf(i)%sf(m + j, k, l) = -q_prim_vf(i)%sf(m - (j - 1), k, l) + 2._wp*bc_x%ve2
1766 else if (i == momxb + 2 .and. num_dims > 2)
then
1767 q_prim_vf(i)%sf(m + j, k, l) = -q_prim_vf(i)%sf(m - (j - 1), k, l) + 2._wp*bc_x%ve3
1769 q_prim_vf(i)%sf(m + j, k, l) = q_prim_vf(i)%sf(m, k, l)
1774 else if (bc_dir == 2)
then
1775 if (bc_loc == -1)
then
1778 if (i == momxb)
then
1779 q_prim_vf(i)%sf(k, -j, l) = -q_prim_vf(i)%sf(k, j - 1, l) + 2._wp*bc_y%vb1
1780 else if (i == momxb + 1 .and. num_dims > 1)
then
1781 q_prim_vf(i)%sf(k, -j, l) = -q_prim_vf(i)%sf(k, j - 1, l) + 2._wp*bc_y%vb2
1782 else if (i == momxb + 2 .and. num_dims > 2)
then
1783 q_prim_vf(i)%sf(k, -j, l) = -q_prim_vf(i)%sf(k, j - 1, l) + 2._wp*bc_y%vb3
1785 q_prim_vf(i)%sf(k, -j, l) = q_prim_vf(i)%sf(k, 0, l)
1792 if (i == momxb)
then
1793 q_prim_vf(i)%sf(k, n + j, l) = -q_prim_vf(i)%sf(k, n - (j - 1), l) + 2._wp*bc_y%ve1
1794 else if (i == momxb + 1 .and. num_dims > 1)
then
1795 q_prim_vf(i)%sf(k, n + j, l) = -q_prim_vf(i)%sf(k, n - (j - 1), l) + 2._wp*bc_y%ve2
1796 else if (i == momxb + 2 .and. num_dims > 2)
then
1797 q_prim_vf(i)%sf(k, n + j, l) = -q_prim_vf(i)%sf(k, n - (j - 1), l) + 2._wp*bc_y%ve3
1799 q_prim_vf(i)%sf(k, n + j, l) = q_prim_vf(i)%sf(k, n, l)
1804 else if (bc_dir == 3)
then
1805 if (bc_loc == -1)
then
1808 if (i == momxb)
then
1809 q_prim_vf(i)%sf(k, l, -j) = -q_prim_vf(i)%sf(k, l, j - 1) + 2._wp*bc_z%vb1
1810 else if (i == momxb + 1 .and. num_dims > 1)
then
1811 q_prim_vf(i)%sf(k, l, -j) = -q_prim_vf(i)%sf(k, l, j - 1) + 2._wp*bc_z%vb2
1812 else if (i == momxb + 2 .and. num_dims > 2)
then
1813 q_prim_vf(i)%sf(k, l, -j) = -q_prim_vf(i)%sf(k, l, j - 1) + 2._wp*bc_z%vb3
1815 q_prim_vf(i)%sf(k, l, -j) = q_prim_vf(i)%sf(k, l, 0)
1822 if (i == momxb)
then
1823 q_prim_vf(i)%sf(k, l, p + j) = -q_prim_vf(i)%sf(k, l, p - (j - 1)) + 2._wp*bc_z%ve1
1824 else if (i == momxb + 1 .and. num_dims > 1)
then
1825 q_prim_vf(i)%sf(k, l, p + j) = -q_prim_vf(i)%sf(k, l, p - (j - 1)) + 2._wp*bc_z%ve2
1826 else if (i == momxb + 2 .and. num_dims > 2)
then
1827 q_prim_vf(i)%sf(k, l, p + j) = -q_prim_vf(i)%sf(k, l, p - (j - 1)) + 2._wp*bc_z%ve3
1829 q_prim_vf(i)%sf(k, l, p + j) = q_prim_vf(i)%sf(k, l, p)
1939# 973 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1941# 973 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1943# 973 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1945# 973 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1947# 973 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1949# 973 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1951# 973 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
1953 real(stp),
optional,
dimension(idwbuff(1)%beg:,idwbuff(2)%beg:,idwbuff(3)%beg:,1:,1:),
intent(inout) :: pb_in, mv_in
1954 integer,
intent(in) :: bc_dir, bc_loc
1955 integer,
intent(in) :: k, l
1958 if (bc_dir == 1)
then
1959 if (bc_loc == -1)
then
1963 pb_in(-j, k, l, q, i) = pb_in(0, k, l, q, i)
1964 mv_in(-j, k, l, q, i) = mv_in(0, k, l, q, i)
1972 pb_in(m + j, k, l, q, i) = pb_in(m, k, l, q, i)
1973 mv_in(m + j, k, l, q, i) = mv_in(m, k, l, q, i)
1978 else if (bc_dir == 2)
then
1979 if (bc_loc == -1)
then
1983 pb_in(k, -j, l, q, i) = pb_in(k, 0, l, q, i)
1984 mv_in(k, -j, l, q, i) = mv_in(k, 0, l, q, i)
1992 pb_in(k, n + j, l, q, i) = pb_in(k, n, l, q, i)
1993 mv_in(k, n + j, l, q, i) = mv_in(k, n, l, q, i)
1998 else if (bc_dir == 3)
then
1999 if (bc_loc == -1)
then
2003 pb_in(k, l, -j, q, i) = pb_in(k, l, 0, q, i)
2004 mv_in(k, l, -j, q, i) = mv_in(k, l, 0, q, i)
2012 pb_in(k, l, p + j, q, i) = pb_in(k, l, p, q, i)
2013 mv_in(k, l, p + j, q, i) = mv_in(k, l, p, q, i)
2430# 1236 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
2432# 1236 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
2434# 1236 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
2436# 1236 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
2438# 1236 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
2440# 1236 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
2442# 1236 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
2444# 1236 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
2446# 1236 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
2448# 1236 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
2450# 1236 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
2452# 1236 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
2454# 1236 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
2456# 1236 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
2458# 1236 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
2460# 1236 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
2462# 1236 "/home/runner/work/MFC/MFC/src/common/m_boundary_common.fpp"
2464 type(scalar_field),
dimension(num_dims + 1),
intent(inout) :: c_divs
2465 integer,
intent(in) :: bc_dir, bc_loc
2466 integer,
intent(in) :: k, l
2469 if (bc_dir == 1)
then
2470 if (bc_loc == -1)
then
2471 do i = 1, num_dims + 1
2473 if (i == bc_dir)
then
2474 c_divs(i)%sf(-j, k, l) = -c_divs(i)%sf(j - 1, k, l)
2476 c_divs(i)%sf(-j, k, l) = c_divs(i)%sf(j - 1, k, l)
2481 do i = 1, num_dims + 1
2483 if (i == bc_dir)
then
2484 c_divs(i)%sf(m + j, k, l) = -c_divs(i)%sf(m - (j - 1), k, l)
2486 c_divs(i)%sf(m + j, k, l) = c_divs(i)%sf(m - (j - 1), k, l)
2491 else if (bc_dir == 2)
then
2492 if (bc_loc == -1)
then
2493 do i = 1, num_dims + 1
2495 if (i == bc_dir)
then
2496 c_divs(i)%sf(k, -j, l) = -c_divs(i)%sf(k, j - 1, l)
2498 c_divs(i)%sf(k, -j, l) = c_divs(i)%sf(k, j - 1, l)
2503 do i = 1, num_dims + 1
2505 if (i == bc_dir)
then
2506 c_divs(i)%sf(k, n + j, l) = -c_divs(i)%sf(k, n - (j - 1), l)
2508 c_divs(i)%sf(k, n + j, l) = c_divs(i)%sf(k, n - (j - 1), l)
2513 else if (bc_dir == 3)
then
2514 if (bc_loc == -1)
then
2515 do i = 1, num_dims + 1
2517 if (i == bc_dir)
then
2518 c_divs(i)%sf(k, l, -j) = -c_divs(i)%sf(k, l, j - 1)
2520 c_divs(i)%sf(k, l, -j) = c_divs(i)%sf(k, l, j - 1)
2525 do i = 1, num_dims + 1
2527 if (i == bc_dir)
then
2528 c_divs(i)%sf(k, l, p + j) = -c_divs(i)%sf(k, l, p - (j - 1))
2530 c_divs(i)%sf(k, l, p + j) = c_divs(i)%sf(k, l, p - (j - 1))
3369#ifdef MFC_SIMULATION
3371 type(int_bounds_info) :: offset_x, offset_y, offset_z
3373 offset_x%beg = buff_size; offset_x%end = buff_size
3374 offset_y%beg = buff_size; offset_y%end = buff_size
3375 offset_z%beg = buff_size; offset_z%end = buff_size
3378#ifndef MFC_PRE_PROCESS
3382 if (bc_x%beg >= 0)
then
3383 call s_mpi_sendrecv_grid_variables_buffers(1, -1)
3384 else if (bc_x%beg <= bc_ghost_extrap)
then
3388 else if (bc_x%beg == bc_reflective)
then
3392 else if (bc_x%beg == bc_periodic)
then
3394 dx(-i) = dx(m - (i - 1))
3399 do i = 1, offset_x%beg
3400 x_cb(-1 - i) = x_cb(-i) - dx(-i)
3404 x_cc(-i) = x_cc(1 - i) - (dx(1 - i) + dx(-i))/2._wp
3408 if (bc_x%end >= 0)
then
3409 call s_mpi_sendrecv_grid_variables_buffers(1, 1)
3410 else if (bc_x%end <= bc_ghost_extrap)
then
3414 else if (bc_x%end == bc_reflective)
then
3416 dx(m + i) = dx(m - (i - 1))
3418 else if (bc_x%end == bc_periodic)
then
3420 dx(m + i) = dx(i - 1)
3425 do i = 1, offset_x%end
3426 x_cb(m + i) = x_cb(m + (i - 1)) + dx(m + i)
3430 x_cc(m + i) = x_cc(m + (i - 1)) + (dx(m + (i - 1)) + dx(m + i))/2._wp
3438 else if (bc_y%beg >= 0)
then
3439 call s_mpi_sendrecv_grid_variables_buffers(2, -1)
3440 else if (bc_y%beg <= bc_ghost_extrap .and. bc_y%beg /= bc_axis)
then
3444 else if (bc_y%beg == bc_reflective .or. bc_y%beg == bc_axis)
then
3448 else if (bc_y%beg == bc_periodic)
then
3450 dy(-i) = dy(n - (i - 1))
3455 do i = 1, offset_y%beg
3456 y_cb(-1 - i) = y_cb(-i) - dy(-i)
3460 y_cc(-i) = y_cc(1 - i) - (dy(1 - i) + dy(-i))/2._wp
3464 if (bc_y%end >= 0)
then
3465 call s_mpi_sendrecv_grid_variables_buffers(2, 1)
3466 else if (bc_y%end <= bc_ghost_extrap)
then
3470 else if (bc_y%end == bc_reflective)
then
3472 dy(n + i) = dy(n - (i - 1))
3474 else if (bc_y%end == bc_periodic)
then
3476 dy(n + i) = dy(i - 1)
3481 do i = 1, offset_y%end
3482 y_cb(n + i) = y_cb(n + (i - 1)) + dy(n + i)
3486 y_cc(n + i) = y_cc(n + (i - 1)) + (dy(n + (i - 1)) + dy(n + i))/2._wp
3494 else if (bc_z%beg >= 0)
then
3495 call s_mpi_sendrecv_grid_variables_buffers(3, -1)
3496 else if (bc_z%beg <= bc_ghost_extrap)
then
3500 else if (bc_z%beg == bc_reflective)
then
3504 else if (bc_z%beg == bc_periodic)
then
3506 dz(-i) = dz(p - (i - 1))
3511 do i = 1, offset_z%beg
3512 z_cb(-1 - i) = z_cb(-i) - dz(-i)
3516 z_cc(-i) = z_cc(1 - i) - (dz(1 - i) + dz(-i))/2._wp
3520 if (bc_z%end >= 0)
then
3521 call s_mpi_sendrecv_grid_variables_buffers(3, 1)
3522 else if (bc_z%end <= bc_ghost_extrap)
then
3526 else if (bc_z%end == bc_reflective)
then
3528 dz(p + i) = dz(p - (i - 1))
3530 else if (bc_z%end == bc_periodic)
then
3532 dz(p + i) = dz(i - 1)
3537 do i = 1, offset_z%end
3538 z_cb(p + i) = z_cb(p + (i - 1)) + dz(p + i)
3542 z_cc(p + i) = z_cc(p + (i - 1)) + (dz(p + (i - 1)) + dz(p + i))/2._wp