1# 1 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
34 type(
integer_field),
dimension(1:num_dims, 1:2),
intent(inout) :: bc_type
35 integer,
intent(in) :: patch_id
40 if (
patch_bc(patch_id)%dir == 1)
then
48# 48 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
49 if (
patch_bc(patch_id)%loc == -1 .and.
bc_x%beg < 0)
then
52 bc_type(1, 1)%sf(0,
j, 0) =
patch_bc(patch_id)%type
56# 48 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
60 bc_type(1, 2)%sf(0,
j, 0) =
patch_bc(patch_id)%type
64# 56 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
68 if (
patch_bc(patch_id)%dir == 2)
then
76# 68 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
77 if (
patch_bc(patch_id)%loc == -1 .and.
bc_y%beg < 0)
then
80 bc_type(2, 1)%sf(
j, 0, 0) =
patch_bc(patch_id)%type
84# 68 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
88 bc_type(2, 2)%sf(
j, 0, 0) =
patch_bc(patch_id)%type
92# 76 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
100 type(
integer_field),
dimension(1:num_dims, 1:2),
intent(inout) :: bc_type
102 integer,
intent(in) :: patch_id
105 if (
patch_bc(patch_id)%dir == 1)
then
110# 94 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
111 if (
patch_bc(patch_id)%loc == -1 .and.
bc_x%beg < 0)
then
116 bc_type(1, 1)%sf(0,
j,
k) =
patch_bc(patch_id)%type
121# 94 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
122 if (
patch_bc(patch_id)%loc == 1 .and.
bc_x%end < 0)
then
127 bc_type(1, 2)%sf(0,
j,
k) =
patch_bc(patch_id)%type
132# 105 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
134 if (
patch_bc(patch_id)%dir == 2)
then
139# 112 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
140 if (
patch_bc(patch_id)%loc == -1 .and.
bc_y%beg < 0)
then
145 bc_type(2, 1)%sf(
j, 0,
k) =
patch_bc(patch_id)%type
150# 112 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
151 if (
patch_bc(patch_id)%loc == 1 .and.
bc_y%end < 0)
then
156 bc_type(2, 2)%sf(
j, 0,
k) =
patch_bc(patch_id)%type
161# 123 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
163 if (
patch_bc(patch_id)%dir == 3)
then
167# 129 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
168 if (
patch_bc(patch_id)%loc == -1 .and.
bc_z%beg < 0)
then
173 bc_type(3, 1)%sf(
j,
k, 0) =
patch_bc(patch_id)%type
178# 129 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
179 if (
patch_bc(patch_id)%loc == 1 .and.
bc_z%end < 0)
then
184 bc_type(3, 2)%sf(
j,
k, 0) =
patch_bc(patch_id)%type
189# 140 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
197 type(
integer_field),
dimension(1:num_dims, 1:2),
intent(inout) :: bc_type
199 integer,
intent(in) :: patch_id
201 if (
patch_bc(patch_id)%dir == 1)
then
213# 164 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
214 if (
patch_bc(patch_id)%loc == -1 .and.
bc_x%beg < 0)
then
221 bc_type(1, 1)%sf(0,
j,
k) =
patch_bc(patch_id)%type
226# 164 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
227 if (
patch_bc(patch_id)%loc == 1 .and.
bc_x%end < 0)
then
234 bc_type(1, 2)%sf(0,
j,
k) =
patch_bc(patch_id)%type
239# 177 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
241 if (
patch_bc(patch_id)%dir == 2)
then
253# 191 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
254 if (
patch_bc(patch_id)%loc == -1 .and.
bc_y%beg < 0)
then
261 bc_type(2, 1)%sf(
j, 0,
k) =
patch_bc(patch_id)%type
266# 191 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
267 if (
patch_bc(patch_id)%loc == 1 .and.
bc_y%end < 0)
then
274 bc_type(2, 2)%sf(
j, 0,
k) =
patch_bc(patch_id)%type
279# 204 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
281 if (
patch_bc(patch_id)%dir == 3)
then
292# 217 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
293 if (
patch_bc(patch_id)%loc == -1 .and.
bc_z%beg < 0)
then
300 bc_type(3, 1)%sf(
j,
k, 0) =
patch_bc(patch_id)%type
305# 217 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
306 if (
patch_bc(patch_id)%loc == 1 .and.
bc_z%end < 0)
then
313 bc_type(3, 2)%sf(
j,
k, 0) =
patch_bc(patch_id)%type
318# 230 "/home/runner/work/MFC/MFC/src/pre_process/m_boundary_conditions.fpp"
334 print *,
'Processing boundary condition patch', i
339 elseif (
patch_bc(i)%geometry == 3)
then
347 print *,
'Processing boundary condition patch', i
Noncharacteristic and processor boundary condition application for ghost cells and buffer regions.
Applies spatially varying boundary condition patches along domain edges and faces.
type(bounds_info) z_boundary
impure subroutine, public s_apply_boundary_patches(q_prim_vf, bc_type)
Iterates over all boundary condition patches and dispatches them by geometry type.
impure subroutine s_circle_bc(patch_id, bc_type)
Applies a circular boundary condition patch on a domain face in 3D.
impure subroutine s_line_segment_bc(patch_id, bc_type)
Applies a line-segment boundary condition patch along a domain edge in 2D.
impure subroutine s_rectangle_bc(patch_id, bc_type)
Applies a rectangular boundary condition patch on a domain face in 3D.
type(bounds_info) y_boundary
type(bounds_info) x_boundary
Platform-specific file and directory operations: create, delete, inquire, getcwd, and basename.
Rank-staggered file access delays to prevent I/O contention on parallel file systems.
Shared derived types for field data, patch geometry, bubble dynamics, and MPI I/O structures.
Defines global parameters for the computational domain, simulation algorithm, and initial conditions.
type(int_bounds_info) bc_z
Boundary conditions in the x-, y- and z-coordinate directions.
real(wp), dimension(:), allocatable y_cc
integer proc_rank
Rank of the local processor.
integer num_bc_patches
Number of boundary condition patches.
type(bc_patch_parameters), dimension(num_bc_patches_max) patch_bc
type(int_bounds_info) bc_y
real(wp), dimension(:), allocatable x_cc
type(int_bounds_info) bc_x
real(wp), dimension(:), allocatable z_cc
Locations of cell-centers (cc) in x-, y- and z-directions, respectively.
Derived type adding beginning (beg) and end bounds info as attributes.
Derived type annexing an integer scalar field (SF).
Derived type annexing a scalar field (SF).