|
pnm 1.0.3
peclet.pnm — pore-network extraction from SDF geometry (Kokkos)
|
Functions | |
| check (name, ok, detail) | |
Variables | |
| NX | |
| NY | |
| NZ | |
| RC | |
| RT | |
| CY | |
| CZ | |
| tuple | CENTERS_X = (12.0, 36.0) |
| x = z.astype(np.float64) | |
| y | |
| z | |
| indexing | |
| sdf = np.full((NX, NY, NZ), -1e30) | |
| dx = np.abs(x - cx) | |
| d = np.sqrt(dx**2 + (y - CY) ** 2 + (z - CZ) ** 2) | |
| MU | |
| FX | |
| s = peclet.flow.Solver(NX, NY, NZ) | |
| cutcell_pressure | |
| u | |
| v | |
| w | |
| p = s.get_p() | |
| ox | |
| oy | |
| oz | |
| F_planes = np.array([(ox[i, :, :] * u[i, :, :]).sum() for i in range(NX)]) | |
| F = F_planes.mean() | |
| plane_dev = np.abs(F_planes - F).max() / abs(F) | |
| net | |
| pores = net["pores"] | |
| Q = np.array(net["throat_flow"]) | |
| dp = np.array(net["throat_dp"]) | |
| res = np.array(net["pore_residual"]) | |
| int | fails = 0 |
| NX2 | |
| NY2 | |
| NZ2 | |
| sdf2 = np.full((NX2, NY2, NZ2), -1e30) | |
| list | tubes = [] |
| net2 | |
| Q2 = np.array(net2["throat_flow"]) | |
| dp2 = np.array(net2["throat_dp"]) | |
| res2 = np.array(net2["pore_residual"]) | |
| F2 = np.array([(ox[i, :, :] * u[i, :, :]).sum() for i in range(NX2)]).mean() | |
| F3_planes = np.array([(ox[i, :, :] * u[i, :, :]).sum() for i in range(NX)]) | |
| F3 = F3_planes.mean() | |
| plane_dev3 = np.abs(F3_planes - F3).max() / abs(F3) | |
| net3 | |
| Q3 = np.array(net3["throat_flow"]) | |
| dp3 = np.array(net3["throat_dp"]) | |
| res3 = np.array(net3["pore_residual"]) | |
| NX4 | |
| NY4 | |
| NZ4 | |
| sdf4 = np.full((NX4, NY4, NZ4), -1e30) | |
| xs = np.clip(x, 12.0, 36.0) | |
| xw = np.where(x < 12.0, x + NX4, x) | |
| F4 = np.array([(ox[i, :, :] * u[i, :, :]).sum() for i in range(NX4)]).mean() | |
| net4 | |
| Q4 = np.array(net4["throat_flow"]) | |
| dp4 = np.array(net4["throat_dp"]) | |
| res4 = np.array(net4["pore_residual"]) | |
| th4 = net4["throats"].tolist() | |
| list | par = [t for t, ab in enumerate(th4) if ab == [1, 2]] |
| qA | |
| qB | |
| list | wrapT = [t for t, ab in enumerate(th4) if ab != [1, 2]] |
Quantitative validation of pnm.extract_network_flow against a peclet.flow DNS. Geometry: a periodic chamber-tube chain — two spherical chambers connected by a straight cylindrical tube along x (also through the periodic boundary). The watershed segments this into 4 pores (2 chambers + 2 tube segments) in a single loop, so by mass conservation EVERY pore-pore throat must carry the full DNS flux F (measured independently as the openness-weighted x-flux through a grid plane). Checks: 1. per-pore residual (signed flux over the whole pore boundary) ~ solver tolerance, 2. |Q_throat| == F for every throat (small leakage through near-wall faces allowed), 3. Q and the total-pressure drop dp agree in sign on every throat (g = Q/dp > 0), 4. the DNS plane flux is x-independent (steady, converged). Run: PYTHONPATH=<pnm/build>:<flow/build> python scripts/verify_network_flow.py
| verify_network_flow.check | ( | name, | |
| ok, | |||
| detail | |||
| ) |
| verify_network_flow.NX |
Definition at line 23 of file verify_network_flow.py.
| verify_network_flow.NY |
Definition at line 23 of file verify_network_flow.py.
| verify_network_flow.NZ |
Definition at line 23 of file verify_network_flow.py.
| verify_network_flow.RC |
Definition at line 24 of file verify_network_flow.py.
| verify_network_flow.RT |
Definition at line 24 of file verify_network_flow.py.
| verify_network_flow.CY |
Definition at line 25 of file verify_network_flow.py.
| verify_network_flow.CZ |
Definition at line 25 of file verify_network_flow.py.
| tuple verify_network_flow.CENTERS_X = (12.0, 36.0) |
Definition at line 26 of file verify_network_flow.py.
| verify_network_flow.x = z.astype(np.float64) |
Definition at line 28 of file verify_network_flow.py.
| verify_network_flow.y |
Definition at line 28 of file verify_network_flow.py.
| verify_network_flow.z |
Definition at line 28 of file verify_network_flow.py.
| verify_network_flow.indexing |
Definition at line 28 of file verify_network_flow.py.
Definition at line 30 of file verify_network_flow.py.
| verify_network_flow.dx = np.abs(x - cx) |
Definition at line 32 of file verify_network_flow.py.
Definition at line 34 of file verify_network_flow.py.
| verify_network_flow.MU |
Definition at line 39 of file verify_network_flow.py.
| verify_network_flow.FX |
Definition at line 39 of file verify_network_flow.py.
Definition at line 40 of file verify_network_flow.py.
| verify_network_flow.cutcell_pressure |
Definition at line 45 of file verify_network_flow.py.
| verify_network_flow.u |
Definition at line 49 of file verify_network_flow.py.
| verify_network_flow.v |
Definition at line 49 of file verify_network_flow.py.
| verify_network_flow.w |
Definition at line 49 of file verify_network_flow.py.
| verify_network_flow.p = s.get_p() |
Definition at line 50 of file verify_network_flow.py.
| verify_network_flow.ox |
Definition at line 51 of file verify_network_flow.py.
| verify_network_flow.oy |
Definition at line 51 of file verify_network_flow.py.
| verify_network_flow.oz |
Definition at line 51 of file verify_network_flow.py.
Definition at line 54 of file verify_network_flow.py.
| verify_network_flow.F = F_planes.mean() |
Definition at line 55 of file verify_network_flow.py.
Definition at line 56 of file verify_network_flow.py.
| verify_network_flow.net |
Definition at line 60 of file verify_network_flow.py.
| verify_network_flow.pores = net["pores"] |
Definition at line 66 of file verify_network_flow.py.
| verify_network_flow.Q = np.array(net["throat_flow"]) |
Definition at line 67 of file verify_network_flow.py.
| verify_network_flow.dp = np.array(net["throat_dp"]) |
Definition at line 68 of file verify_network_flow.py.
| verify_network_flow.res = np.array(net["pore_residual"]) |
Definition at line 69 of file verify_network_flow.py.
| int verify_network_flow.fails = 0 |
Definition at line 79 of file verify_network_flow.py.
| verify_network_flow.NX2 |
Definition at line 104 of file verify_network_flow.py.
| verify_network_flow.NY2 |
Definition at line 104 of file verify_network_flow.py.
| verify_network_flow.NZ2 |
Definition at line 104 of file verify_network_flow.py.
Definition at line 105 of file verify_network_flow.py.
| list verify_network_flow.tubes = [] |
Definition at line 107 of file verify_network_flow.py.
| verify_network_flow.net2 |
Definition at line 121 of file verify_network_flow.py.
| verify_network_flow.Q2 = np.array(net2["throat_flow"]) |
Definition at line 126 of file verify_network_flow.py.
| verify_network_flow.dp2 = np.array(net2["throat_dp"]) |
Definition at line 127 of file verify_network_flow.py.
| verify_network_flow.res2 = np.array(net2["pore_residual"]) |
Definition at line 128 of file verify_network_flow.py.
Definition at line 129 of file verify_network_flow.py.
Definition at line 157 of file verify_network_flow.py.
| verify_network_flow.F3 = F3_planes.mean() |
Definition at line 158 of file verify_network_flow.py.
Definition at line 159 of file verify_network_flow.py.
| verify_network_flow.net3 |
Definition at line 160 of file verify_network_flow.py.
| verify_network_flow.Q3 = np.array(net3["throat_flow"]) |
Definition at line 165 of file verify_network_flow.py.
| verify_network_flow.dp3 = np.array(net3["throat_dp"]) |
Definition at line 166 of file verify_network_flow.py.
| verify_network_flow.res3 = np.array(net3["pore_residual"]) |
Definition at line 167 of file verify_network_flow.py.
| verify_network_flow.NX4 |
Definition at line 196 of file verify_network_flow.py.
| verify_network_flow.NY4 |
Definition at line 196 of file verify_network_flow.py.
| verify_network_flow.NZ4 |
Definition at line 196 of file verify_network_flow.py.
Definition at line 198 of file verify_network_flow.py.
| verify_network_flow.xs = np.clip(x, 12.0, 36.0) |
Definition at line 205 of file verify_network_flow.py.
Definition at line 207 of file verify_network_flow.py.
Definition at line 219 of file verify_network_flow.py.
| verify_network_flow.net4 |
Definition at line 220 of file verify_network_flow.py.
| verify_network_flow.Q4 = np.array(net4["throat_flow"]) |
Definition at line 225 of file verify_network_flow.py.
| verify_network_flow.dp4 = np.array(net4["throat_dp"]) |
Definition at line 226 of file verify_network_flow.py.
| verify_network_flow.res4 = np.array(net4["pore_residual"]) |
Definition at line 227 of file verify_network_flow.py.
| verify_network_flow.th4 = net4["throats"].tolist() |
Definition at line 228 of file verify_network_flow.py.
| list verify_network_flow.par = [t for t, ab in enumerate(th4) if ab == [1, 2]] |
Definition at line 232 of file verify_network_flow.py.
| verify_network_flow.qA |
Definition at line 239 of file verify_network_flow.py.
| verify_network_flow.qB |
Definition at line 239 of file verify_network_flow.py.
| list verify_network_flow.wrapT = [t for t, ab in enumerate(th4) if ab != [1, 2]] |
Definition at line 246 of file verify_network_flow.py.