Skip to content

Commit 481a255

Browse files
authored
refactor: unify equation/range indices into sys_idx; clean BC globals (#1365)
1 parent ec94064 commit 481a255

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+2966
-2895
lines changed

src/common/include/1dHardcodedIC.fpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@
77
select case (patch_icpp(patch_id)%hcid)
88
case (150) ! 1D Smooth Alfven Case for MHD
99
! velocity
10-
q_prim_vf(momxb + 1)%sf(i, 0, 0) = 0.1_wp*sin(2._wp*pi*x_cc(i))
11-
q_prim_vf(momxb + 2)%sf(i, 0, 0) = 0.1_wp*cos(2._wp*pi*x_cc(i))
10+
q_prim_vf(eqn_idx%mom%beg + 1)%sf(i, 0, 0) = 0.1_wp*sin(2._wp*pi*x_cc(i))
11+
q_prim_vf(eqn_idx%mom%beg + 2)%sf(i, 0, 0) = 0.1_wp*cos(2._wp*pi*x_cc(i))
1212

1313
! magnetic field
14-
q_prim_vf(B_idx%end - 1)%sf(i, 0, 0) = 0.1_wp*sin(2._wp*pi*x_cc(i))
15-
q_prim_vf(B_idx%end)%sf(i, 0, 0) = 0.1_wp*cos(2._wp*pi*x_cc(i))
14+
q_prim_vf(eqn_idx%B%end - 1)%sf(i, 0, 0) = 0.1_wp*sin(2._wp*pi*x_cc(i))
15+
q_prim_vf(eqn_idx%B%end)%sf(i, 0, 0) = 0.1_wp*cos(2._wp*pi*x_cc(i))
1616
case (170) ! 1D profile from external data (e.g. Cantera, SDtoolbox)
1717
! This hardcoded case can be used to start a simulation with initial conditions given from a known 1D profile (e.g. Cantera,
1818
! SDtoolbox)
@@ -21,36 +21,36 @@
2121
! This is patch is hard-coded for test suite optimization used in the 1D_shuoser cases: "patch_icpp(2)%alpha_rho(1)": "1 +
2222
! 0.2*sin(5*x)"
2323
if (patch_id == 2) then
24-
q_prim_vf(contxb + 0)%sf(i, 0, 0) = 1 + 0.2*sin(5*x_cc(i))
24+
q_prim_vf(eqn_idx%cont%beg + 0)%sf(i, 0, 0) = 1 + 0.2*sin(5*x_cc(i))
2525
end if
2626
case (181) ! Titarev-Torro problem
2727
! This is patch is hard-coded for test suite optimization used in the 1D_titarevtorro cases: "patch_icpp(2)%alpha_rho(1)":
2828
! "1 + 0.1*sin(20*x*pi)"
29-
q_prim_vf(contxb + 0)%sf(i, 0, 0) = 1 + 0.1*sin(20*x_cc(i)*pi)
29+
q_prim_vf(eqn_idx%cont%beg + 0)%sf(i, 0, 0) = 1 + 0.1*sin(20*x_cc(i)*pi)
3030
case (182) ! Multi-component diffusion
3131
! This patch is a hard-coded for test suite optimization (multiple component diffusion)
3232
x_mid_diffu = 0.05_wp/2.0_wp
3333
width_sq = (2.5_wp*10.0_wp**(-3.0_wp))**2
3434
profile_shape = 1.0_wp - 0.5_wp*exp(-(x_cc(i) - x_mid_diffu)**2/width_sq)
35-
q_prim_vf(momxb)%sf(i, 0, 0) = 0.0_wp
36-
q_prim_vf(E_idx)%sf(i, 0, 0) = 1.01325_wp*(10.0_wp)**5
37-
q_prim_vf(advxb)%sf(i, 0, 0) = 1.0_wp
35+
q_prim_vf(eqn_idx%mom%beg)%sf(i, 0, 0) = 0.0_wp
36+
q_prim_vf(eqn_idx%E)%sf(i, 0, 0) = 1.01325_wp*(10.0_wp)**5
37+
q_prim_vf(eqn_idx%adv%beg)%sf(i, 0, 0) = 1.0_wp
3838

3939
y1 = (0.195_wp - 0.142_wp)*profile_shape + 0.142_wp
4040
y2 = (0.0_wp - 0.1_wp)*profile_shape + 0.1_wp
4141
y3 = (0.214_wp - 0.0_wp)*profile_shape + 0.0_wp
4242
y4 = (0.591_wp - 0.758_wp)*profile_shape + 0.758_wp
4343

44-
q_prim_vf(chemxb)%sf(i, 0, 0) = y1
45-
q_prim_vf(chemxb + 1)%sf(i, 0, 0) = y2
46-
q_prim_vf(chemxb + 2)%sf(i, 0, 0) = y3
47-
q_prim_vf(chemxb + 3)%sf(i, 0, 0) = y4
44+
q_prim_vf(eqn_idx%species%beg)%sf(i, 0, 0) = y1
45+
q_prim_vf(eqn_idx%species%beg + 1)%sf(i, 0, 0) = y2
46+
q_prim_vf(eqn_idx%species%beg + 2)%sf(i, 0, 0) = y3
47+
q_prim_vf(eqn_idx%species%beg + 3)%sf(i, 0, 0) = y4
4848

4949
temp = (320.0_wp - 1350.0_wp)*profile_shape + 1350.0_wp
5050

5151
molar_mass_inv = y1/31.998_wp + y2/18.01508_wp + y3/16.04256_wp + y4/28.0134_wp
5252

53-
q_prim_vf(contxb)%sf(i, 0, 0) = 1.01325_wp*(10.0_wp)**5/(temp*8.3144626_wp*1000.0_wp*molar_mass_inv)
53+
q_prim_vf(eqn_idx%cont%beg)%sf(i, 0, 0) = 1.01325_wp*(10.0_wp)**5/(temp*8.3144626_wp*1000.0_wp*molar_mass_inv)
5454
case default
5555
call s_int_to_str(patch_id, iStr)
5656
call s_mpi_abort("Invalid hcid specified for patch " // trim(iStr))

src/common/include/2dHardcodedIC.fpp

Lines changed: 98 additions & 97 deletions
Large diffs are not rendered by default.

src/common/include/3dHardcodedIC.fpp

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -84,30 +84,30 @@
8484
if (alph > 1._wp - eps) alph = 1._wp - eps
8585

8686
if (y_cc(j) > intH) then
87-
q_prim_vf(advxb)%sf(i, j, k) = alph
88-
q_prim_vf(advxe)%sf(i, j, k) = 1._wp - alph
89-
q_prim_vf(contxb)%sf(i, j, k) = alph*rhoH
90-
q_prim_vf(contxe)%sf(i, j, k) = (1._wp - alph)*rhoL
91-
q_prim_vf(E_idx)%sf(i, j, k) = pref + rhoH*9.81_wp*(1.2_wp - y_cc(j))
87+
q_prim_vf(eqn_idx%adv%beg)%sf(i, j, k) = alph
88+
q_prim_vf(eqn_idx%adv%end)%sf(i, j, k) = 1._wp - alph
89+
q_prim_vf(eqn_idx%cont%beg)%sf(i, j, k) = alph*rhoH
90+
q_prim_vf(eqn_idx%cont%end)%sf(i, j, k) = (1._wp - alph)*rhoL
91+
q_prim_vf(eqn_idx%E)%sf(i, j, k) = pref + rhoH*9.81_wp*(1.2_wp - y_cc(j))
9292
else
93-
q_prim_vf(advxb)%sf(i, j, k) = alph
94-
q_prim_vf(advxe)%sf(i, j, k) = 1._wp - alph
95-
q_prim_vf(contxb)%sf(i, j, k) = alph*rhoH
96-
q_prim_vf(contxe)%sf(i, j, k) = (1._wp - alph)*rhoL
93+
q_prim_vf(eqn_idx%adv%beg)%sf(i, j, k) = alph
94+
q_prim_vf(eqn_idx%adv%end)%sf(i, j, k) = 1._wp - alph
95+
q_prim_vf(eqn_idx%cont%beg)%sf(i, j, k) = alph*rhoH
96+
q_prim_vf(eqn_idx%cont%end)%sf(i, j, k) = (1._wp - alph)*rhoL
9797
pInt = pref + rhoH*9.81_wp*(1.2_wp - intH)
98-
q_prim_vf(E_idx)%sf(i, j, k) = pInt + rhoL*9.81_wp*(intH - y_cc(j))
98+
q_prim_vf(eqn_idx%E)%sf(i, j, k) = pInt + rhoL*9.81_wp*(intH - y_cc(j))
9999
end if
100100
case (301) ! (3D lung geometry in X direction, |sin(*)+sin(*)|)
101101
h = 0.0_wp
102102
lam = 1.0_wp
103103
amp = patch_icpp(patch_id)%a(2)
104104
intH = amp*abs((sin(2*pi*y_cc(j)/lam - pi/2) + sin(2*pi*z_cc(k)/lam - pi/2)) + h)
105105
if (x_cc(i) > intH) then
106-
q_prim_vf(contxb)%sf(i, j, k) = patch_icpp(1)%alpha_rho(1)
107-
q_prim_vf(contxe)%sf(i, j, k) = patch_icpp(1)%alpha_rho(2)
108-
q_prim_vf(E_idx)%sf(i, j, k) = patch_icpp(1)%pres
109-
q_prim_vf(advxb)%sf(i, j, k) = patch_icpp(1)%alpha(1)
110-
q_prim_vf(advxe)%sf(i, j, k) = patch_icpp(1)%alpha(2)
106+
q_prim_vf(eqn_idx%cont%beg)%sf(i, j, k) = patch_icpp(1)%alpha_rho(1)
107+
q_prim_vf(eqn_idx%cont%end)%sf(i, j, k) = patch_icpp(1)%alpha_rho(2)
108+
q_prim_vf(eqn_idx%E)%sf(i, j, k) = patch_icpp(1)%pres
109+
q_prim_vf(eqn_idx%adv%beg)%sf(i, j, k) = patch_icpp(1)%alpha(1)
110+
q_prim_vf(eqn_idx%adv%end)%sf(i, j, k) = patch_icpp(1)%alpha(2)
111111
end if
112112
case (302) ! 3D Jet with IGR
113113
ux_th = 10*sqrt(1.4*0.4)
@@ -126,19 +126,19 @@
126126
rcut = f_cut_on(r - r_th, eps_smooth)
127127
xcut = f_cut_on(x_cc(i), eps_smooth)
128128

129-
q_prim_vf(momxb)%sf(i, j, k) = ux_th*rcut*xcut + ux_am
130-
q_prim_vf(momxb + 1)%sf(i, j, k) = 0._wp
131-
q_prim_vf(momxe)%sf(i, j, k) = 0._wp
129+
q_prim_vf(eqn_idx%mom%beg)%sf(i, j, k) = ux_th*rcut*xcut + ux_am
130+
q_prim_vf(eqn_idx%mom%beg + 1)%sf(i, j, k) = 0._wp
131+
q_prim_vf(eqn_idx%mom%end)%sf(i, j, k) = 0._wp
132132

133133
if (num_fluids == 1) then
134-
q_prim_vf(contxb)%sf(i, j, k) = (rho_th - rho_am)*rcut*xcut + rho_am
134+
q_prim_vf(eqn_idx%cont%beg)%sf(i, j, k) = (rho_th - rho_am)*rcut*xcut + rho_am
135135
else
136-
q_prim_vf(advxb)%sf(i, j, k) = (1._wp - 2._wp*eps)*rcut*xcut + eps
137-
q_prim_vf(contxb)%sf(i, j, k) = rho_th*q_prim_vf(advxb)%sf(i, j, k)
138-
q_prim_vf(contxe)%sf(i, j, k) = rho_am*(1._wp - q_prim_vf(advxb)%sf(i, j, k))
136+
q_prim_vf(eqn_idx%adv%beg)%sf(i, j, k) = (1._wp - 2._wp*eps)*rcut*xcut + eps
137+
q_prim_vf(eqn_idx%cont%beg)%sf(i, j, k) = rho_th*q_prim_vf(eqn_idx%adv%beg)%sf(i, j, k)
138+
q_prim_vf(eqn_idx%cont%end)%sf(i, j, k) = rho_am*(1._wp - q_prim_vf(eqn_idx%adv%beg)%sf(i, j, k))
139139
end if
140140

141-
q_prim_vf(E_idx)%sf(i, j, k) = p_th*rcut*xcut + p_am
141+
q_prim_vf(eqn_idx%E)%sf(i, j, k) = p_th*rcut*xcut + p_am
142142
case (303) ! 3D Multijet
143143
eps_smooth = 3.0_wp
144144
ux_th = 10*sqrt(1.4*0.4)
@@ -152,19 +152,19 @@
152152
rcut = rcut_arr(j, k)
153153
xcut = f_cut_on(x_cc(i), eps_smooth)
154154

155-
q_prim_vf(momxb)%sf(i, j, k) = ux_th*rcut*xcut + ux_am
156-
q_prim_vf(momxb + 1)%sf(i, j, k) = 0._wp
157-
q_prim_vf(momxe)%sf(i, j, k) = 0._wp
155+
q_prim_vf(eqn_idx%mom%beg)%sf(i, j, k) = ux_th*rcut*xcut + ux_am
156+
q_prim_vf(eqn_idx%mom%beg + 1)%sf(i, j, k) = 0._wp
157+
q_prim_vf(eqn_idx%mom%end)%sf(i, j, k) = 0._wp
158158

159159
if (num_fluids == 1) then
160-
q_prim_vf(contxb)%sf(i, j, k) = (rho_th - rho_am)*rcut*xcut + rho_am
160+
q_prim_vf(eqn_idx%cont%beg)%sf(i, j, k) = (rho_th - rho_am)*rcut*xcut + rho_am
161161
else
162-
q_prim_vf(advxb)%sf(i, j, k) = (1._wp - 2._wp*eps)*rcut*xcut + eps
163-
q_prim_vf(contxb)%sf(i, j, k) = rho_th*q_prim_vf(advxb)%sf(i, j, k)
164-
q_prim_vf(contxe)%sf(i, j, k) = rho_am*(1._wp - q_prim_vf(advxb)%sf(i, j, k))
162+
q_prim_vf(eqn_idx%adv%beg)%sf(i, j, k) = (1._wp - 2._wp*eps)*rcut*xcut + eps
163+
q_prim_vf(eqn_idx%cont%beg)%sf(i, j, k) = rho_th*q_prim_vf(eqn_idx%adv%beg)%sf(i, j, k)
164+
q_prim_vf(eqn_idx%cont%end)%sf(i, j, k) = rho_am*(1._wp - q_prim_vf(eqn_idx%adv%beg)%sf(i, j, k))
165165
end if
166166

167-
q_prim_vf(E_idx)%sf(i, j, k) = p_th*rcut*xcut + p_am
167+
q_prim_vf(eqn_idx%E)%sf(i, j, k) = p_th*rcut*xcut + p_am
168168
case (370) ! 3D extrusion of 2D profile from external data
169169
! This hardcoded case extrudes a 2D profile to initialize a 3D simulation domain
170170
@: HardcodedReadValues()
@@ -173,10 +173,10 @@
173173
! geometry 9
174174
Mach = 0.1
175175
if (patch_id == 1) then
176-
q_prim_vf(E_idx)%sf(i, j, &
176+
q_prim_vf(eqn_idx%E)%sf(i, j, &
177177
& k) = 101325 + (Mach**2*376.636429464809**2/16)*(cos(2*x_cc(i)/1) + cos(2*y_cc(j)/1))*(cos(2*z_cc(k)/1) + 2)
178-
q_prim_vf(momxb + 0)%sf(i, j, k) = Mach*376.636429464809*sin(x_cc(i)/1)*cos(y_cc(j)/1)*sin(z_cc(k)/1)
179-
q_prim_vf(momxb + 1)%sf(i, j, k) = -Mach*376.636429464809*cos(x_cc(i)/1)*sin(y_cc(j)/1)*sin(z_cc(k)/1)
178+
q_prim_vf(eqn_idx%mom%beg + 0)%sf(i, j, k) = Mach*376.636429464809*sin(x_cc(i)/1)*cos(y_cc(j)/1)*sin(z_cc(k)/1)
179+
q_prim_vf(eqn_idx%mom%beg + 1)%sf(i, j, k) = -Mach*376.636429464809*cos(x_cc(i)/1)*sin(y_cc(j)/1)*sin(z_cc(k)/1)
180180
end if
181181
case default
182182
call s_int_to_str(patch_id, iStr)

src/common/include/ExtrusionHardcodedIC.fpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
!>
2525
!> **Data Assignment:**
2626
!> - Populates q_prim_vf primitive variable arrays with file data
27-
!> - Handles momentum component indexing with special treatment for momxe
28-
!> - Sets momxe component to zero for 2D/3D cases
27+
!> - Handles momentum component indexing with special treatment for eqn_idx%mom%end
28+
!> - Sets eqn_idx%mom%end component to zero for 2D/3D cases
2929
!>
3030
!> **State Management:**
3131
!> - Uses files_loaded flag to prevent redundant file operations
@@ -177,18 +177,18 @@
177177
case (2)
178178
idx = i + 1 + global_offset_x - index_x
179179
do f = 1, sys_size - 1
180-
jump = merge(1, 0, f >= momxe)
180+
jump = merge(1, 0, f >= eqn_idx%mom%end)
181181
q_prim_vf(f + jump)%sf(i, j, 0) = stored_values(idx, 1, f)
182182
end do
183-
q_prim_vf(momxe)%sf(i, j, 0) = 0.0_wp
183+
q_prim_vf(eqn_idx%mom%end)%sf(i, j, 0) = 0.0_wp
184184
case (3)
185185
idx = i + 1 + global_offset_x - index_x
186186
idy = j + 1 + global_offset_y - index_y
187187
do f = 1, sys_size - 1
188-
jump = merge(1, 0, f >= momxe)
188+
jump = merge(1, 0, f >= eqn_idx%mom%end)
189189
q_prim_vf(f + jump)%sf(i, j, k) = stored_values(idx, idy, f)
190190
end do
191-
q_prim_vf(momxe)%sf(i, j, k) = 0.0_wp
191+
q_prim_vf(eqn_idx%mom%end)%sf(i, j, k) = 0.0_wp
192192
end select
193193
#:enddef
194194

0 commit comments

Comments
 (0)