Skip to content

Commit 83a05fd

Browse files
committed
Separate minimum spacing from grid width arrays
1 parent 9cbdd68 commit 83a05fd

11 files changed

Lines changed: 94 additions & 454 deletions

src/common/include/2dHardcodedIC.fpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@
161161
! Smoothening function to smooth out sharp discontinuity in the interface
162162
if (x_cc(i) <= 0.7_wp*lam) then
163163
d = x_cc(i) - lam*(0.4_wp - 0.1_wp*sin(2.0_wp*pi*(y_cc(j)/lam + 0.25_wp)))
164-
fsm = 0.5_wp*(1.0_wp + erf(d/(ei*sqrt(dx*dy))))
164+
fsm = 0.5_wp*(1.0_wp + erf(d/(ei*sqrt(dx_min*dy_min))))
165165
alpha_air = eps + (1.0_wp - 2.0_wp*eps)*fsm
166166
alpha_sf6 = 1.0_wp - alpha_air
167167
q_prim_vf(eqn_idx%cont%beg)%sf(i, j, 0) = alpha_sf6*5.04_wp

src/common/include/3dHardcodedIC.fpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@
233233

234234
q_prim_vf(eqn_idx%E)%sf(i, j, k) = p_th*rcut*xcut + p_am
235235
case (304) ! 3D Interface from file cartesian
236-
alph = 0.5_wp*(1 + (1._wp - 2._wp*eps)*tanh((ih(start_idx(2) + j, start_idx(3) + k) - x_cc(i))*(0.5_wp/dx)))
236+
alph = 0.5_wp*(1 + (1._wp - 2._wp*eps)*tanh((ih(start_idx(2) + j, start_idx(3) + k) - x_cc(i))*(0.5_wp/dx_min)))
237237

238238
q_prim_vf(eqn_idx%adv%beg)%sf(i, j, k) = alph
239239
q_prim_vf(eqn_idx%adv%end)%sf(i, j, k) = 1._wp - alph
@@ -246,7 +246,7 @@
246246

247247
if (surface_tension) q_prim_vf(eqn_idx%c)%sf(i, j, k) = alph
248248
case (305) ! 3D Interface from file axisymmetric
249-
alph = 0.5_wp*(1 + (1._wp - 2._wp*eps)*tanh((ih(start_idx(2) + j, 0) - x_cc(i))*(0.01_wp/dx)))
249+
alph = 0.5_wp*(1 + (1._wp - 2._wp*eps)*tanh((ih(start_idx(2) + j, 0) - x_cc(i))*(0.01_wp/dx_min)))
250250

251251
q_prim_vf(eqn_idx%adv%beg)%sf(i, j, k) = alph
252252
q_prim_vf(eqn_idx%adv%end)%sf(i, j, k) = 1._wp - alph

src/common/m_boundary_primitives.fpp

Lines changed: 0 additions & 253 deletions
Original file line numberDiff line numberDiff line change
@@ -1619,257 +1619,4 @@ contains
16191619

16201620
end subroutine s_beta_reflective
16211621

1622-
#ifndef MFC_PRE_PROCESS
1623-
!> Apply periodic boundary conditions to grid variables by copying cell widths from opposite domain boundary.
1624-
subroutine s_grid_periodic_bc(bc_dir, bc_loc, offset_dir)
1625-
1626-
integer, intent(in) :: bc_dir, bc_loc
1627-
type(int_bounds_info), intent(in) :: offset_dir
1628-
integer :: i
1629-
1630-
if (bc_dir == 1) then
1631-
if (bc_loc == -1) then
1632-
do i = 1, buff_size
1633-
dx(-i) = dx(m - (i - 1))
1634-
end do
1635-
do i = 1, offset_dir%beg
1636-
x_cb(-1 - i) = x_cb(-i) - dx(-i)
1637-
end do
1638-
do i = 1, buff_size
1639-
x_cc(-i) = x_cc(1 - i) - (dx(1 - i) + dx(-i))/2._wp
1640-
end do
1641-
else
1642-
do i = 1, buff_size
1643-
dx(m + i) = dx(i - 1)
1644-
end do
1645-
do i = 1, offset_dir%end
1646-
x_cb(m + i) = x_cb(m + (i - 1)) + dx(m + i)
1647-
end do
1648-
do i = 1, buff_size
1649-
x_cc(m + i) = x_cc(m + (i - 1)) + (dx(m + (i - 1)) + dx(m + i))/2._wp
1650-
end do
1651-
end if
1652-
else if (bc_dir == 2) then
1653-
if (bc_loc == -1) then
1654-
do i = 1, buff_size
1655-
dy(-i) = dy(n - (i - 1))
1656-
end do
1657-
do i = 1, offset_dir%beg
1658-
y_cb(-1 - i) = y_cb(-i) - dy(-i)
1659-
end do
1660-
do i = 1, buff_size
1661-
y_cc(-i) = y_cc(1 - i) - (dy(1 - i) + dy(-i))/2._wp
1662-
end do
1663-
else
1664-
do i = 1, buff_size
1665-
dy(n + i) = dy(i - 1)
1666-
end do
1667-
do i = 1, offset_dir%end
1668-
y_cb(n + i) = y_cb(n + (i - 1)) + dy(n + i)
1669-
end do
1670-
do i = 1, buff_size
1671-
y_cc(n + i) = y_cc(n + (i - 1)) + (dy(n + (i - 1)) + dy(n + i))/2._wp
1672-
end do
1673-
end if
1674-
else
1675-
if (bc_loc == -1) then
1676-
do i = 1, buff_size
1677-
dz(-i) = dz(p - (i - 1))
1678-
end do
1679-
do i = 1, offset_dir%beg
1680-
z_cb(-1 - i) = z_cb(-i) - dz(-i)
1681-
end do
1682-
do i = 1, buff_size
1683-
z_cc(-i) = z_cc(1 - i) - (dz(1 - i) + dz(-i))/2._wp
1684-
end do
1685-
else
1686-
do i = 1, buff_size
1687-
dz(p + i) = dz(i - 1)
1688-
end do
1689-
do i = 1, offset_dir%end
1690-
z_cb(p + i) = z_cb(p + (i - 1)) + dz(p + i)
1691-
end do
1692-
do i = 1, buff_size
1693-
z_cc(p + i) = z_cc(p + (i - 1)) + (dz(p + (i - 1)) + dz(p + i))/2._wp
1694-
end do
1695-
end if
1696-
end if
1697-
1698-
end subroutine s_grid_periodic_bc
1699-
1700-
!> Apply reflective boundary conditions to grid variables by mirroring cell widths across the boundary.
1701-
subroutine s_grid_reflective_bc(bc_dir, bc_loc, offset_dir)
1702-
1703-
integer, intent(in) :: bc_dir, bc_loc
1704-
type(int_bounds_info), intent(in) :: offset_dir
1705-
integer :: i
1706-
1707-
if (bc_dir == 1) then
1708-
if (bc_loc == -1) then
1709-
do i = 1, buff_size
1710-
dx(-i) = dx(i - 1)
1711-
end do
1712-
do i = 1, offset_dir%beg
1713-
x_cb(-1 - i) = x_cb(-i) - dx(-i)
1714-
end do
1715-
do i = 1, buff_size
1716-
x_cc(-i) = x_cc(1 - i) - (dx(1 - i) + dx(-i))/2._wp
1717-
end do
1718-
else
1719-
do i = 1, buff_size
1720-
dx(m + i) = dx(m - (i - 1))
1721-
end do
1722-
do i = 1, offset_dir%end
1723-
x_cb(m + i) = x_cb(m + (i - 1)) + dx(m + i)
1724-
end do
1725-
do i = 1, buff_size
1726-
x_cc(m + i) = x_cc(m + (i - 1)) + (dx(m + (i - 1)) + dx(m + i))/2._wp
1727-
end do
1728-
end if
1729-
else if (bc_dir == 2) then
1730-
if (bc_loc == -1) then
1731-
do i = 1, buff_size
1732-
dy(-i) = dy(i - 1)
1733-
end do
1734-
do i = 1, offset_dir%beg
1735-
y_cb(-1 - i) = y_cb(-i) - dy(-i)
1736-
end do
1737-
do i = 1, buff_size
1738-
y_cc(-i) = y_cc(1 - i) - (dy(1 - i) + dy(-i))/2._wp
1739-
end do
1740-
else
1741-
do i = 1, buff_size
1742-
dy(n + i) = dy(n - (i - 1))
1743-
end do
1744-
do i = 1, offset_dir%end
1745-
y_cb(n + i) = y_cb(n + (i - 1)) + dy(n + i)
1746-
end do
1747-
do i = 1, buff_size
1748-
y_cc(n + i) = y_cc(n + (i - 1)) + (dy(n + (i - 1)) + dy(n + i))/2._wp
1749-
end do
1750-
end if
1751-
else
1752-
if (bc_loc == -1) then
1753-
do i = 1, buff_size
1754-
dz(-i) = dz(i - 1)
1755-
end do
1756-
do i = 1, offset_dir%beg
1757-
z_cb(-1 - i) = z_cb(-i) - dz(-i)
1758-
end do
1759-
do i = 1, buff_size
1760-
z_cc(-i) = z_cc(1 - i) - (dz(1 - i) + dz(-i))/2._wp
1761-
end do
1762-
else
1763-
do i = 1, buff_size
1764-
dz(p + i) = dz(p - (i - 1))
1765-
end do
1766-
do i = 1, offset_dir%end
1767-
z_cb(p + i) = z_cb(p + (i - 1)) + dz(p + i)
1768-
end do
1769-
do i = 1, buff_size
1770-
z_cc(p + i) = z_cc(p + (i - 1)) + (dz(p + (i - 1)) + dz(p + i))/2._wp
1771-
end do
1772-
end if
1773-
end if
1774-
1775-
end subroutine s_grid_reflective_bc
1776-
1777-
!> Extrapolate grid variables by copying boundary cell width into ghost cells.
1778-
subroutine s_grid_ghost_cell_extrapolation_bc(bc_dir, bc_loc, offset_dir)
1779-
1780-
integer, intent(in) :: bc_dir, bc_loc
1781-
type(int_bounds_info), intent(in) :: offset_dir
1782-
integer :: i
1783-
1784-
if (bc_dir == 1) then
1785-
if (bc_loc == -1) then
1786-
do i = 1, buff_size
1787-
dx(-i) = dx(0)
1788-
end do
1789-
do i = 1, offset_dir%beg
1790-
x_cb(-1 - i) = x_cb(-i) - dx(-i)
1791-
end do
1792-
do i = 1, buff_size
1793-
x_cc(-i) = x_cc(1 - i) - (dx(1 - i) + dx(-i))/2._wp
1794-
end do
1795-
else
1796-
do i = 1, buff_size
1797-
dx(m + i) = dx(m)
1798-
end do
1799-
do i = 1, offset_dir%end
1800-
x_cb(m + i) = x_cb(m + (i - 1)) + dx(m + i)
1801-
end do
1802-
do i = 1, buff_size
1803-
x_cc(m + i) = x_cc(m + (i - 1)) + (dx(m + (i - 1)) + dx(m + i))/2._wp
1804-
end do
1805-
end if
1806-
else if (bc_dir == 2) then
1807-
if (bc_loc == -1) then
1808-
do i = 1, buff_size
1809-
dy(-i) = dy(0)
1810-
end do
1811-
do i = 1, offset_dir%beg
1812-
y_cb(-1 - i) = y_cb(-i) - dy(-i)
1813-
end do
1814-
do i = 1, buff_size
1815-
y_cc(-i) = y_cc(1 - i) - (dy(1 - i) + dy(-i))/2._wp
1816-
end do
1817-
else
1818-
do i = 1, buff_size
1819-
dy(n + i) = dy(n)
1820-
end do
1821-
do i = 1, offset_dir%end
1822-
y_cb(n + i) = y_cb(n + (i - 1)) + dy(n + i)
1823-
end do
1824-
do i = 1, buff_size
1825-
y_cc(n + i) = y_cc(n + (i - 1)) + (dy(n + (i - 1)) + dy(n + i))/2._wp
1826-
end do
1827-
end if
1828-
else
1829-
if (bc_loc == -1) then
1830-
do i = 1, buff_size
1831-
dz(-i) = dz(0)
1832-
end do
1833-
do i = 1, offset_dir%beg
1834-
z_cb(-1 - i) = z_cb(-i) - dz(-i)
1835-
end do
1836-
do i = 1, buff_size
1837-
z_cc(-i) = z_cc(1 - i) - (dz(1 - i) + dz(-i))/2._wp
1838-
end do
1839-
else
1840-
do i = 1, buff_size
1841-
dz(p + i) = dz(p)
1842-
end do
1843-
do i = 1, offset_dir%end
1844-
z_cb(p + i) = z_cb(p + (i - 1)) + dz(p + i)
1845-
end do
1846-
do i = 1, buff_size
1847-
z_cc(p + i) = z_cc(p + (i - 1)) + (dz(p + (i - 1)) + dz(p + i))/2._wp
1848-
end do
1849-
end if
1850-
end if
1851-
1852-
end subroutine s_grid_ghost_cell_extrapolation_bc
1853-
1854-
!> Apply axis boundary conditions to grid variables for cylindrical coordinates.
1855-
subroutine s_grid_axis_bc(bc_loc, offset_dir)
1856-
1857-
integer, intent(in) :: bc_loc
1858-
type(int_bounds_info), intent(in) :: offset_dir
1859-
integer :: i
1860-
1861-
if (bc_loc == -1) then
1862-
do i = 1, buff_size
1863-
dy(-i) = dy(i - 1)
1864-
end do
1865-
do i = 1, offset_dir%beg
1866-
y_cb(-1 - i) = y_cb(-i) - dy(-i)
1867-
end do
1868-
do i = 1, buff_size
1869-
y_cc(-i) = y_cc(1 - i) - (dy(1 - i) + dy(-i))/2._wp
1870-
end do
1871-
end if
1872-
1873-
end subroutine s_grid_axis_bc
1874-
#endif
18751622
end module m_boundary_primitives

src/common/m_global_parameters_common.fpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ module m_global_parameters_common
8787
$:GPU_DECLARE(create='[dir_idx, dir_flg, dir_idx_tau]')
8888
!> @}
8989

90+
!> Minimum cell widths. These are distinct from the per-cell width arrays named dx, dy, and dz in simulation and post-process.
91+
real(wp) :: dx_min, dy_min, dz_min
92+
9093
#ifdef MFC_SIMULATION
9194
$:GPU_DECLARE(create='[sys_size, eqn_idx, b_size, tensor_size]')
9295
$:GPU_DECLARE(create='[shear_num, shear_indices, shear_BC_flip_num, shear_BC_flip_indices]')
@@ -494,6 +497,9 @@ contains
494497
alt_soundspeed = .false.
495498
mixture_err = .false.
496499
sigR = dflt_real
500+
dx_min = dflt_real
501+
dy_min = dflt_real
502+
dz_min = dflt_real
497503

498504
end subroutine s_assign_common_defaults
499505

src/common/m_model.fpp

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -858,7 +858,6 @@ contains
858858
! Variables for IBM+STL
859859
integer :: boundary_vertex_count, boundary_edge_count !< Boundary vertex
860860
real(wp), allocatable, dimension(:,:,:) :: boundary_v !< Boundary vertex buffer
861-
real(wp) :: dx_local, dy_local, dz_local !< Levelset distance buffer
862861
integer :: i, j, k !< Generic loop iterators
863862
integer :: stl_id
864863
type(t_bbox) :: bbox, bbox_old
@@ -868,13 +867,6 @@ contains
868867
real(wp) :: grid_mm(1:3,1:2)
869868
real(wp), dimension(1:4,1:4) :: transform, transform_n
870869

871-
#ifdef MFC_SIMULATION
872-
dx_local = minval(dx); dy_local = minval(dy)
873-
if (p /= 0) dz_local = minval(dz)
874-
#else
875-
dx_local = dx; dy_local = dy
876-
if (p /= 0) dz_local = dz
877-
#endif
878870
if (num_stl_models == 0) return
879871

880872
@:ALLOCATE(stl_bounding_boxes(num_stl_models,1:3,1:3))
@@ -924,11 +916,11 @@ contains
924916
write (*, "(A, 3(2X, F20.10))") " > Cen:", (bbox%min(1:3) + bbox%max(1:3))/2._wp
925917
write (*, "(A, 3(2X, F20.10))") " > Max:", bbox%max(1:3)
926918

927-
grid_mm(1,:) = (/minval(x_cc(0:m)) - 0.5_wp*dx_local, maxval(x_cc(0:m)) + 0.5_wp*dx_local/)
928-
grid_mm(2,:) = (/minval(y_cc(0:n)) - 0.5_wp*dy_local, maxval(y_cc(0:n)) + 0.5_wp*dy_local/)
919+
grid_mm(1,:) = (/minval(x_cc(0:m)) - 0.5_wp*dx_min, maxval(x_cc(0:m)) + 0.5_wp*dx_min/)
920+
grid_mm(2,:) = (/minval(y_cc(0:n)) - 0.5_wp*dy_min, maxval(y_cc(0:n)) + 0.5_wp*dy_min/)
929921

930922
if (p > 0) then
931-
grid_mm(3,:) = (/minval(z_cc(0:p)) - 0.5_wp*dz_local, maxval(z_cc(0:p)) + 0.5_wp*dz_local/)
923+
grid_mm(3,:) = (/minval(z_cc(0:p)) - 0.5_wp*dz_min, maxval(z_cc(0:p)) + 0.5_wp*dz_min/)
932924
else
933925
grid_mm(3,:) = (/0._wp, 0._wp/)
934926
end if

0 commit comments

Comments
 (0)