我试图绘制浓度分布图,即X
(每单位体积的粒子数-标量),其大小沿y轴,用于孤子图像形成的二维视频。它用于沿y轴(孤子中心或其附近)绘制一维图。我在下面打印了一些X
值(self.X
)。有人能就如何做到这一点提供建议吗
该程序由以下人员运行:python3 render_video.py ~/tf2-model-g/nucleation_and_motion_in_fluid_2D.mp4 --params params/nucleation_and_motion_in_fluid_2D.yaml
显示在https://github.com/bjdarrer/tf2-model-g/blob/master/README.md
在{
第260至271行:
def step(self):
self.G, self.X, self.Y = self.reaction_integrator(self.G, self.X, self.Y)
density_of_reactants = (
self.params['density_G'] * self.G +
self.params['density_X'] * self.X +
self.params['density_Y'] * self.Y
)
rho = tf.math.log(self.params['base-density'] + density_of_reactants)
if self.dims == 2:
u, v = self.u, self.v # Store unintegrated flow so that we're on the same timestep
self.u, self.v, divergence = self.flow_integrator(rho, self.u, self.v)
self.G, self.X, self.Y = self.diffusion_advection_integrator(self.G, self.X, self.Y, u, v, divergence)
print("Value of X: ", self.X) # ***** BJD inserted this line 13.11.2020 *****
Value of X: tf.Tensor(
[[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
...
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]], shape=(426, 240), dtype=float64)
0% (1 of 960) | | Elapsed Time: 0:00:02 ETA: 0:47:21[swscaler @ 0x50eea00] Warning: data is not aligned! This can lead to a speed loss
Value of X: tf.Tensor(
[[-4.63608184e-24 -4.36049800e-24 -3.96075313e-24 ... -5.27033753e-24
-5.03750622e-24 -4.84189560e-24]
[ 2.76706114e-24 2.59755449e-24 2.45328517e-24 ... 2.86976915e-24
2.95354289e-24 2.90518059e-24]
[-6.71999498e-24 -6.43068214e-24 -6.04211608e-24 ... -7.49891717e-24
-7.20906517e-24 -6.96166453e-24]
...
[-7.49120287e-24 -7.43495675e-24 -7.33722895e-24 ... -7.87227733e-24
-7.66850690e-24 -7.55316064e-24]
[-6.62339916e-24 -7.00430269e-24 -7.22697968e-24 ... -5.13241412e-24
-5.62753357e-24 -6.14297167e-24]
[-2.95495662e-24 -2.83991588e-24 -2.64129974e-24 ... -3.35524379e-24
-3.15960041e-24 -3.04178300e-24]], shape=(426, 240), dtype=float64)
0% (2 of 960) | | Elapsed Time: 0:00:03 ETA: 0:26:36Value of X: tf.Tensor(
[[-9.47390594e-25 8.49165771e-25 1.85097134e-24 ... -9.88883148e-24
-6.58483185e-24 -3.49179228e-24]
[-3.94139524e-24 -1.45189300e-24 4.41879845e-25 ... -1.34799377e-23
-1.02628610e-23 -6.95616006e-24]
[ 8.18336833e-24 9.84605465e-24 1.07562913e-23 ... -2.49403108e-25
2.86674937e-24 5.79328209e-24]
在https://github.com/frostburn/tf2-model-g/blob/master/render_video.py#L33第33至45行
def make_video_frame(rgb, indexing='ij'):
if indexing == 'ij':
rgb = [tf.transpose(channel) for channel in rgb]
frame = tf.stack(rgb, axis=-1)
frame = tf.clip_by_value(frame, 0.0, 1.0)
return tf.cast(frame * 255, 'uint8').numpy()
def nucleation_and_motion_in_G_gradient_fluid_2D(writer, args, R=16):
dx = 2*R / args.height
x = (np.arange(args.width) - args.width // 2) * dx
y = (np.arange(args.height) - args.height // 2) * dx
x, y = np.meshgrid(x, y, indexing='ij')
如何访问图像中心所有y
值的X
值,即1-D中的孤子
这是通过包含numpy代码来解决的:
np.savetxt("test.txt", self.X)
将X值保存到数组文本文件中,时间为第二个单位,使用断点单步执行程序请参见此处的代码:
https://github.com/bjdarrer/tf2-model-g/blob/master/fluid_model_g.py#L272
第二个时间单位的
X
值绘制了1D图。请参见下面的附图和1D值1d plot of X values along y axis at row = 120
见:
https://github.com/bjdarrer/tf2-model-g/blob/master/backups/render_video___X_seed__1d__backup_11-12-2020_1a.py#L158
相关问题 更多 >
编程相关推荐