pnm 1.0.3
peclet.pnm — pore-network extraction from SDF geometry (Kokkos)
Loading...
Searching...
No Matches
demo_network_flow_packing Namespace Reference

Variables

int vti = sys.argv[1] if len(sys.argv) > 1 else "../flow/data/packing_128.vti"
 
 sdf_zyx
 
 origin_zyx
 
 spacing_zyx
 
 nz
 
 ny
 
 nx
 
 MU
 
 FX
 
 sdf_xyz = np.asfortranarray(sdf_zyx.T.astype(np.float64))
 
 s = peclet.flow.Solver(nx, ny, nz)
 
 cutcell_pressure
 
 t0 = time.time()
 
 u
 
 v
 
 w
 
 p
 
 ox
 
 oy
 
 oz
 
 F = np.array([(ox[i] * u[i]).sum() for i in range(nx)]) * spacing_zyx[1] * spacing_zyx[0]
 
 net
 
 Q = np.array(net["throat_flow"])
 
 dp = np.array(net["throat_dp"])
 
 A = np.array(net["throat_area"])
 
 res = np.array(net["pore_residual"])
 
 g = Q / dp
 
int ok = np.abs(res).max() < 1e-6 * np.abs(Q).max() and np.isfinite(g).all()
 

Detailed Description

Network-flow extraction on a real sphere packing: DNS (peclet.flow Stokes) -> pore network.

Reads a packing SDF (VTI), solves body-force-driven Stokes flow through it, then extracts the
pore network with throat flow rates and pore pressures (pnm.extract_network_flow) and reports
network statistics + the built-in mass-balance check.

Run:  PYTHONPATH=<pnm/build>:<flow/build> python scripts/demo_network_flow_packing.py [sdf.vti]

Variable Documentation

◆ vti

int demo_network_flow_packing.vti = sys.argv[1] if len(sys.argv) > 1 else "../flow/data/packing_128.vti"

Definition at line 17 of file demo_network_flow_packing.py.

◆ sdf_zyx

demo_network_flow_packing.sdf_zyx

Definition at line 18 of file demo_network_flow_packing.py.

◆ origin_zyx

demo_network_flow_packing.origin_zyx

Definition at line 18 of file demo_network_flow_packing.py.

◆ spacing_zyx

demo_network_flow_packing.spacing_zyx

Definition at line 18 of file demo_network_flow_packing.py.

◆ nz

demo_network_flow_packing.nz

Definition at line 19 of file demo_network_flow_packing.py.

◆ ny

demo_network_flow_packing.ny

Definition at line 19 of file demo_network_flow_packing.py.

◆ nx

demo_network_flow_packing.nx

Definition at line 19 of file demo_network_flow_packing.py.

◆ MU

demo_network_flow_packing.MU

Definition at line 24 of file demo_network_flow_packing.py.

◆ FX

demo_network_flow_packing.FX

Definition at line 24 of file demo_network_flow_packing.py.

◆ sdf_xyz

demo_network_flow_packing.sdf_xyz = np.asfortranarray(sdf_zyx.T.astype(np.float64))

Definition at line 25 of file demo_network_flow_packing.py.

◆ s

demo_network_flow_packing.s = peclet.flow.Solver(nx, ny, nz)

Definition at line 26 of file demo_network_flow_packing.py.

◆ cutcell_pressure

demo_network_flow_packing.cutcell_pressure

Definition at line 31 of file demo_network_flow_packing.py.

◆ t0

demo_network_flow_packing.t0 = time.time()

Definition at line 32 of file demo_network_flow_packing.py.

◆ u

demo_network_flow_packing.u

Definition at line 35 of file demo_network_flow_packing.py.

◆ v

demo_network_flow_packing.v

Definition at line 35 of file demo_network_flow_packing.py.

◆ w

demo_network_flow_packing.w

Definition at line 35 of file demo_network_flow_packing.py.

◆ p

demo_network_flow_packing.p

Definition at line 35 of file demo_network_flow_packing.py.

◆ ox

demo_network_flow_packing.ox

Definition at line 36 of file demo_network_flow_packing.py.

◆ oy

demo_network_flow_packing.oy

Definition at line 36 of file demo_network_flow_packing.py.

◆ oz

demo_network_flow_packing.oz

Definition at line 36 of file demo_network_flow_packing.py.

◆ F

demo_network_flow_packing.F = np.array([(ox[i] * u[i]).sum() for i in range(nx)]) * spacing_zyx[1] * spacing_zyx[0]

Definition at line 37 of file demo_network_flow_packing.py.

◆ net

demo_network_flow_packing.net
Initial value:
1= pnm.extract_network_flow(
2 sdf_zyx, list(origin_zyx), list(spacing_zyx),
3 np.ascontiguousarray(u.T), np.ascontiguousarray(v.T), np.ascontiguousarray(w.T),
4 np.ascontiguousarray(p.T), np.ascontiguousarray(ox.T), np.ascontiguousarray(oy.T),
5 np.ascontiguousarray(oz.T), grad_p_zyx=[0.0, 0.0, -FX])

Definition at line 43 of file demo_network_flow_packing.py.

◆ Q

demo_network_flow_packing.Q = np.array(net["throat_flow"])

Definition at line 48 of file demo_network_flow_packing.py.

◆ dp

demo_network_flow_packing.dp = np.array(net["throat_dp"])

Definition at line 49 of file demo_network_flow_packing.py.

◆ A

demo_network_flow_packing.A = np.array(net["throat_area"])

Definition at line 50 of file demo_network_flow_packing.py.

◆ res

demo_network_flow_packing.res = np.array(net["pore_residual"])

Definition at line 51 of file demo_network_flow_packing.py.

◆ g

demo_network_flow_packing.g = Q / dp

Definition at line 52 of file demo_network_flow_packing.py.

◆ ok

int demo_network_flow_packing.ok = np.abs(res).max() < 1e-6 * np.abs(Q).max() and np.isfinite(g).all()

Definition at line 66 of file demo_network_flow_packing.py.