@@ -88,27 +88,27 @@ contains
8888 real (wp), dimension (idwbuff(1 )%beg:, idwbuff(2 )%beg:, idwbuff(3 )%beg:, 1 :, 1 :), intent (inout ) :: pb, mv
8989
9090 integer :: i, j, k, l, q
91-
9291 !< x- direction
9392 if (bcxb >= 0 ) then
9493 call s_mpi_sendrecv_variables_buffers(q_prim_vf, pb, mv, 1 , - 1 )
9594 else
9695 !$acc parallel loop collapse(2 ) gang vector default(present)
9796 do l = 0 , p
9897 do k = 0 , n
98+ print * , bc_type(1 , - 1 )%sf(0 , k, l)
9999 if (bc_type(1 , - 1 )%sf(0 , k, l) >= - 13 .and. bc_type(1 , - 1 )%sf(0 , k, l) <= - 3 ) then
100- ${PRIM_GHOST_CELL_EXTRAPOLATION_BC( " -j,k,l " , " 0,k,l" )}$
100+ call s_ghost_cell_periodic(q_prim_vf, ( / - j, k, l / ), ( / 0 ,k,l/ ))
101101 elseif (bc_type(1 , - 1 )%sf(0 , k, l) == - 2 ) then
102- ${PRIM_SYMMETRY_BC( 1 , " -j,k,l" , " j-1,k,l" )}$
102+ call s_symmetry(q_prim_vf, 1 , ( / - j,k,l/ ), ( / j-1 ,k,l/ ))
103103 elseif (bc_type(1 , - 1 )%sf(0 , k, l) == - 1 ) then
104- ${PRIM_PERIODIC_BC( " -j,k,l " , " m-(j- 1),k,l " )}$
104+ call s_ghost_cell_periodic(q_prim_vf, ( / - j, k, l / ), ( / m - (j - 1 ), k, l / ))
105105 elseif (bc_type(1 , - 1 )%sf(0 , k, l) == - 15 ) then
106106 ${PRIM_SLIP_WALL_BC(" x" ," L" )}$
107107 elseif (bc_type(1 , - 1 )%sf(0 , k, l) == - 16 ) then
108108 ${PRIM_NO_SLIP_WALL_BC(" x" ," L" )}$
109109 elseif (bc_type(1 , - 1 )%sf(0 , k, l) == - 17 ) then
110110#ifdef MFC_PRE_PROCESS
111- ${PRIM_GHOST_CELL_EXTRAPOLATION_BC( " -j,k,l " , " 0,k,l" )}$
111+ call s_ghost_cell_periodic(q_prim_vf, ( / - j, k, l / ), ( / 0 ,k,l/ ))
112112#else
113113 ${PRIM_DIRICHLET_BC(1 ,- 1 ," -j,k,l" ," i,k,l" )}$
114114#endif
@@ -124,18 +124,18 @@ contains
124124 do l = 0 , p
125125 do k = 0 , n
126126 if (bc_type(1 , 1 )%sf(0 , k, l) >= - 13 .and. bc_type(1 , 1 )%sf(0 , k, l) <= - 3 ) then
127- ${PRIM_GHOST_CELL_EXTRAPOLATION_BC( " m+j,k,l " , " m,k,l" )}$
127+ call s_ghost_cell_periodic(q_prim_vf, ( / m+ j, k, l / ), ( / m,k,l/ ))
128128 elseif (bc_type(1 , 1 )%sf(0 , k, l) == - 2 ) then
129- ${PRIM_SYMMETRY_BC( 1 , " m+j,k,l" , " m - (j-1),k,l" )}$
129+ call s_symmetry(q_prim_vf, 1 , ( / m+ j,k,l/ ), ( / m - (j-1 ),k,l/ ))
130130 elseif (bc_type(1 , 1 )%sf(0 , k, l) == - 1 ) then
131- ${PRIM_PERIODIC_BC( " m+j,k,l " , " j-1,k,l " )}$
131+ call s_ghost_cell_periodic(q_prim_vf, ( / m+ j, k, l / ), ( / j - 1 , k, l / ))
132132 elseif (bc_type(1 , 1 )%sf(0 , k, l) == - 15 ) then
133133 ${PRIM_SLIP_WALL_BC(" x" ," R" )}$
134134 elseif (bc_type(1 , 1 )%sf(0 , k, l) == - 16 ) then
135135 ${PRIM_NO_SLIP_WALL_BC(" x" ," R" )}$
136136 elseif (bc_type(1 , 1 )%sf(0 , k, l) == - 17 ) then
137137#ifdef MFC_PRE_PROCESS
138- ${PRIM_GHOST_CELL_EXTRAPOLATION_BC( " m+j,k,l " , " m,k,l" )}$
138+ call s_ghost_cell_periodic(q_prim_vf, ( / m+ j, k, l / ), ( / m,k,l/ ))
139139#else
140140 ${PRIM_DIRICHLET_BC(1 ,1 ," m+j,k,l" ," i,k,l" )}$
141141#endif
@@ -231,18 +231,18 @@ contains
231231 do l = 0 , p
232232 do k = - buff_size, m + buff_size
233233 if (bc_type(2 , - 1 )%sf(k, 0 , l) >= - 13 .and. bc_type(2 , - 1 )%sf(k, 0 , l) <= - 3 ) then
234- ${PRIM_GHOST_CELL_EXTRAPOLATION_BC( " k, -j,l " , " k,0,l" )}$
234+ call s_ghost_cell_periodic(q_prim_vf, ( / k, - j, l / ), ( / k,0 ,l/ ))
235235 elseif (bc_type(2 , - 1 )%sf(k, 0 , l) == - 2 ) then
236- ${PRIM_SYMMETRY_BC( 2 , " k,-j,l" , " k,j-1,l" )}$
236+ call s_symmetry(q_prim_vf, 2 , ( / k,- j,l/ ), ( / k,j-1 ,l/ ))
237237 elseif (bc_type(2 , - 1 )%sf(k, 0 , l) == - 1 ) then
238- ${PRIM_PERIODIC_BC( " k, -j,l " , " k,n-(j- 1),l " )}$
238+ call s_ghost_cell_periodic(q_prim_vf, ( / k, - j, l / ), ( / k, n - (j - 1 ), l / ))
239239 elseif (bc_type(2 , - 1 )%sf(k, 0 , l) == - 15 ) then
240240 ${PRIM_SLIP_WALL_BC(" y" ," L" )}$
241241 elseif (bc_type(2 , - 1 )%sf(k, 0 , l) == - 16 ) then
242242 ${PRIM_NO_SLIP_WALL_BC(" y" ," L" )}$
243243 elseif (bc_type(2 , - 1 )%sf(k, 0 , l) == - 17 ) then
244244#ifdef MFC_PRE_PROCESS
245- ${PRIM_GHOST_CELL_EXTRAPOLATION_BC( " k, -j,l " , " k,0,l" )}$
245+ call s_ghost_cell_periodic(q_prim_vf, ( / k, - j, l / ), ( / k,0 ,l/ ))
246246#else
247247 ${PRIM_DIRICHLET_BC(2 ,- 1 ," k,-j,l" ," k,i,l" )}$
248248#endif
@@ -258,18 +258,18 @@ contains
258258 do l = 0 , p
259259 do k = - buff_size, m + buff_size
260260 if (bc_type(2 , 1 )%sf(k, 0 , l) >= - 13 .and. bc_type(2 , 1 )%sf(k, 0 , l) <= - 3 ) then
261- ${PRIM_GHOST_CELL_EXTRAPOLATION_BC( " k, n+j,l " , " k,n,l" )}$
261+ call s_ghost_cell_periodic(q_prim_vf, ( / k, n+ j, l / ), ( / k,n,l/ ))
262262 elseif (bc_type(2 , 1 )%sf(k, 0 , l) == - 2 ) then
263- ${PRIM_SYMMETRY_BC( 2 , " k,n+j,l" , " k,n - (j-1),l" )}$
263+ call s_symmetry(q_prim_vf, 2 , ( / k,n+ j,l/ ), ( / k,n - (j-1 ),l/ ))
264264 elseif (bc_type(2 , 1 )%sf(k, 0 , l) == - 1 ) then
265- ${PRIM_PERIODIC_BC( " k, n+j,l " , " k,j-1,l " )}$
265+ call s_ghost_cell_periodic(q_prim_vf, ( / k, n+ j, l / ), ( / k, j - 1 , l / ))
266266 elseif (bc_type(2 , 1 )%sf(k, 0 , l) == - 15 ) then
267267 ${PRIM_SLIP_WALL_BC(" y" ," R" )}$
268268 elseif (bc_type(2 , 1 )%sf(k, 0 , l) == - 16 ) then
269269 ${PRIM_NO_SLIP_WALL_BC(" y" ," R" )}$
270270 elseif (bc_type(2 , 1 )%sf(k, 0 , l) == - 17 ) then
271271#ifdef FMC_PRE_PROCESS
272- ${PRIM_GHOST_CELL_EXTRAPOLATION_BC( " k, n+j,l " , " k,n,l" )}$
272+ call s_ghost_cell_periodic(q_prim_vf, ( / k, n+ j, l / ), ( / k,n,l/ ))
273273#else
274274 ${PRIM_DIRICHLET_BC(2 ,1 ," k,n+j,l" ," k,i,l" )}$
275275#endif
@@ -320,18 +320,18 @@ contains
320320 do l = - buff_size, n + buff_size
321321 do k = - buff_size, m + buff_size
322322 if (bc_type(3 , - 1 )%sf(k, l, 0 ) >= - 13 .and. bc_type(3 , - 1 )%sf(k, l, 0 ) <= - 3 ) then
323- ${PRIM_GHOST_CELL_EXTRAPOLATION_BC( " k,l,-j " , " k,l,0" )}$
323+ call s_ghost_cell_periodic(q_prim_vf, ( / k, l, - j / ), ( / k,l,0 / ))
324324 elseif (bc_type(3 , - 1 )%sf(k, l, 0 ) == - 2 ) then
325- ${PRIM_SYMMETRY_BC( 3 , " k,l,-j" , " k,l,j-1" )}$
325+ call s_symmetry(q_prim_vf, 3 , ( / k,l,- j/ ), ( / k,l,j-1 / ))
326326 elseif (bc_type(3 , - 1 )%sf(k, l, 0 ) == - 1 ) then
327- ${PRIM_PERIODIC_BC( " k,l,-j " , " k,l, p-(j-1)" )}$
327+ call s_ghost_cell_periodic(q_prim_vf, ( / k, l, - j / ), ( / k, l, p- (j-1 )/ ))
328328 elseif (bc_type(3 , - 1 )%sf(k, l, 0 ) == - 15 ) then
329329 ${PRIM_SLIP_WALL_BC(" z" ," L" )}$
330330 elseif (bc_type(3 , - 1 )%sf(k, l, 0 ) == - 16 ) then
331331 ${PRIM_NO_SLIP_WALL_BC(" z" ," L" )}$
332332 elseif (bc_type(3 , - 1 )%sf(k, l, 0 ) == - 17 ) then
333333#ifdef MFC_PRE_PROCESS
334- ${PRIM_GHOST_CELL_EXTRAPOLATION_BC( " k,l,-j " , " k,l,0" )}$
334+ call s_ghost_cell_periodic(q_prim_vf, ( / k, l, - j / ), ( / k,l,0 / ))
335335#else
336336 ${PRIM_DIRICHLET_BC(3 ,- 1 ," k,l,-j" ," k,l,i" )}$
337337#endif
@@ -347,18 +347,18 @@ contains
347347 do l = - buff_size, n + buff_size
348348 do k = - buff_size, m + buff_size
349349 if (bc_type(3 , 1 )%sf(k, l, 0 ) >= - 13 .and. bc_type(3 , 1 )%sf(k, l, 0 ) <= - 3 ) then
350- ${PRIM_GHOST_CELL_EXTRAPOLATION_BC( " k,l, p+j" , " k,l,p" )}$
350+ call s_ghost_cell_periodic(q_prim_vf, ( / k, l, p+ j/ ), ( / k,l,p/ ))
351351 elseif (bc_type(3 , 1 )%sf(k, l, 0 ) == - 2 ) then
352- ${PRIM_SYMMETRY_BC( 3 , " k,l,p+j" , " k,l,p - (j-1)" )}$
352+ call s_symmetry(q_prim_vf, 3 , ( / k,l,p+ j/ ), ( / k,l,p - (j-1 )/ ))
353353 elseif (bc_type(3 , 1 )%sf(k, l, 0 ) == - 1 ) then
354- ${PRIM_PERIODIC_BC( " k,l, p+j" , " k,l, j-1" )}$
354+ call s_ghost_cell_periodic(q_prim_vf, ( / k, l, p+ j/ ), ( / k, l, j-1 / ))
355355 elseif (bc_type(3 , 1 )%sf(k, l, 0 ) == - 15 ) then
356356 ${PRIM_SLIP_WALL_BC(" z" ," R" )}$
357357 elseif (bc_type(3 , 1 )%sf(k, l, 0 ) == - 16 ) then
358358 ${PRIM_NO_SLIP_WALL_BC(" z" ," R" )}$
359359 elseif (bc_type(3 , 1 )%sf(k, l, 0 ) == - 17 ) then
360360#ifdef MFC_PRE_PROCESS
361- ${PRIM_GHOST_CELL_EXTRAPOLATION_BC( " k,l, p+j" , " k,l,p" )}$
361+ call s_ghost_cell_periodic(q_prim_vf, ( / k, l, p+ j/ ), ( / k,l,p/ ))
362362#else
363363 ${PRIM_DIRICHLET_BC(3 ,1 ," k,l,p+j" ," k,l,i" )}$
364364#endif
@@ -401,6 +401,56 @@ contains
401401
402402 end subroutine s_populate_variables_buffers
403403
404+ subroutine s_ghost_cell_periodic (q_prim_vf , dest , src )
405+ type(scalar_field), dimension (sys_size), intent (inout ) :: q_prim_vf
406+ integer , dimension (3 ), intent (in ) :: dest, src
407+
408+ integer :: i, j
409+
410+ do i = 1 , sys_size
411+ do j = 1 , buff_size
412+ q_prim_vf(i)%sf(dest(1 ), dest(2 ), dest(3 )) = q_prim_vf(i)%sf(src(1 ), src(2 ), src(3 ))
413+ end do
414+ end do
415+ end subroutine s_ghost_cell_periodic
416+
417+ subroutine s_symmetry (q_prim_vf , dir , dest , src )
418+ type(scalar_field), dimension (sys_size), intent (inout ) :: q_prim_vf
419+ integer , intent (in ) :: dir
420+ integer , dimension (3 ), intent (in ) :: dest, src
421+
422+ integer :: i, j
423+
424+ do j = 1 , buff_size
425+ do i = 1 , momxb + dir-2
426+ q_prim_vf(i)%sf(dest(1 ), dest(2 ), dest(3 )) = q_prim_vf(i)%sf(src(1 ), src(2 ), src(3 ))
427+ end do
428+
429+ q_prim_vf(momxb + dir-1 )%sf(dest(1 ), dest(2 ), dest(3 )) = &
430+ - q_prim_vf(momxb + dir-1 )%sf(src(1 ), src(2 ), src(3 ))
431+
432+ do i = momxb + dir, sys_size
433+ q_prim_vf(i)%sf(dest(1 ), dest(2 ), dest(3 )) = q_prim_vf(i)%sf(src(1 ), src(2 ), src(3 ))
434+ end do
435+
436+ if (elasticity) then
437+ do i = 1 , shear_BC_flip_num
438+ q_prim_vf(shear_BC_flip_indices(dir, i))%sf(dest(1 ), dest(2 ), dest(3 )) = &
439+ - q_prim_vf(shear_BC_flip_indices(dir, i))%sf(src(1 ), src(2 ), src(3 ))
440+ end do
441+ end if
442+
443+ if (hyperelasticity) then
444+ q_prim_vf(xibeg + dir-1 )%sf(dest(1 ), dest(2 ), dest(3 )) = &
445+ - q_prim_vf(xibeg + dir-1 )%sf(src(1 ), src(2 ), src(3 ))
446+ end if
447+ end do
448+
449+ end subroutine s_symmetry
450+
451+
452+
453+
404454#ifdef MFC_SIMULATION
405455 subroutine s_populate_capillary_buffers (c_divs , bc_type )
406456
0 commit comments