#!/usr/bin/env python # -*- coding: utf-8 -*- """探针: 检查 x=0.3 的 y-z 切面是否有异常开口 / 高速射流。""" import os import sys import numpy as np sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) import fbed_simulation as fs D = np.load(os.path.join(fs.OUT, "fbed_fields.npz")) UX, UY, UZ, SOLID = D["ux"], D["uy"], D["uz"], D["solid"] UX, UY, UZ = UX * fs.SCALE_U, UY * fs.SCALE_U, UZ * fs.SCALE_U SP = np.sqrt(UX ** 2 + UY ** 2 + UZ ** 2) NZ, NY, NX = SOLID.shape ix = fs._xi(0.3) print(f"=== x=0.3 (ix={ix}) y-z 切面: 固体/流体 ASCII 图 (z 由高到低) ===") print("每格: '#'=固体 '.'=流体(<0.5m/s) 'o'=0.5-1.5 'O'=1.5-3 '*'=3-6 '@'=>6 m/s") for iz in range(NZ - 1, -1, -1): z = fs.ZC[iz] if z < -0.5 or z > 1.7: continue row = "" for iy in range(NY): if SOLID[iz, iy, ix]: row += "#" else: s = SP[iz, iy, ix] row += "." if s < 0.5 else ("o" if s < 1.5 else ("O" if s < 3 else ("*" if s < 6 else "@"))) print(f"z={z:+.2f} {row}") print("\n=== y=-0.6 墙完整性 (沿 z 扫) ===") iy_wall = fs._yi(-0.6) runs = [] for iz in range(NZ): if SOLID[iz, iy_wall, ix]: runs.append((fs.ZC[iz], "solid")) else: runs.append((fs.ZC[iz], "FLUID")) open_z = [z for z, s in runs if s == "FLUID"] print(f" y=-0.6 处流体 z 段: {min(open_z):.2f} .. {max(open_z):.2f}" if open_z else " 全固体") print(f" 流体 z 计数={len(open_z)} / {NZ}") print("\n=== 顶部区域 (z>1.0) 是否存在指向域内的射流 ===") for (x, y, z) in [(0.3, -0.5, 1.2), (0.3, -0.45, 1.3), (0.3, -0.35, 1.1), (2.1, -0.5, 1.2), (0.9, -0.5, 1.2), (1.5, -0.5, 1.2)]: i = fs._xi(x); j = fs._yi(y); k = fs._zi(z) if SOLID[k, j, i]: print(f" ({x},{y},{z}): SOLID") else: print(f" ({x},{y},{z}): ux={UX[k,j,i]:+6.2f} uy={UY[k,j,i]:+6.2f} uz={UZ[k,j,i]:+6.2f} " f"|U|={SP[k,j,i]:5.2f}")