Commit d48d2815 authored by Chen-Kai Qiao's avatar Chen-Kai Qiao

Replace plot_xiaoqu.py

parent d3042997
......@@ -3,7 +3,7 @@
##
## 这个文件对 AMSS-NCKU 数值相对论的结果进行画图
## 小曲
## 2024/10/01 --- 2024/12/06
## 2024/10/01 --- 2025/02/20
##
#################################################
......@@ -33,9 +33,9 @@ def generate_binary_data_plot(binary_outdir, figure_outdir):
contour_plot_outdir = os.path.join(figure_outdir, "contour plot")
os.mkdir(contour_plot_outdir)
print()
print(" 读取 AMSS-NCKU 程序的二进制数据 ")
print()
print( )
print( " 读取 AMSS-NCKU 程序的二进制数据 " )
print( )
print(" 二进制数据列表 ")
......@@ -51,9 +51,9 @@ def generate_binary_data_plot(binary_outdir, figure_outdir):
print(filename)
plot_binary_data.plot_binary_data(filename, binary_outdir, figure_outdir)
print()
print(" 二进制数据画图已完成 ")
print()
print( )
print( " 二进制数据画图已完成 " )
print( )
return
......@@ -67,32 +67,44 @@ def generate_binary_data_plot(binary_outdir, figure_outdir):
def generate_puncture_orbit_plot(outdir, figure_outdir):
print()
print(" 对黑洞轨迹进行画图 ")
print()
print( )
print( " 对黑洞轨迹进行画图 " )
print( )
# 打开文件路径
file0 = os.path.join(outdir, "bssn_BH.dat")
print(" 对应数据文件为 ", file0)
print( f" 对应数据文件为 { file0 } " )
# 读取整个文件数据,假设数据是以空格分隔的浮点数
data = numpy.loadtxt(file0)
# print(data[:,0])
# print(data[:,2])
# 初始化黑洞坐标的最大值和最小值
BH_Xmin = numpy.zeros(input_data.puncture_number)
BH_Xmax = numpy.zeros(input_data.puncture_number)
BH_Ymin = numpy.zeros(input_data.puncture_number)
BH_Ymax = numpy.zeros(input_data.puncture_number)
BH_Zmin = numpy.zeros(input_data.puncture_number)
BH_Zmax = numpy.zeros(input_data.puncture_number)
# --------------------------
# 画出黑洞位移的轨迹图(XY图)
plt.figure( figsize=(8,8) ) ## 这里 figsize 可以设定图形的大小
plt.figure( figsize=(8,8) ) ## 这里 figsize 可以设定图形的大小
plt.title( " Black Hole Trajectry ", fontsize=18 ) ## 这里 fontsize 可以设定文字大小
for i in range(input_data.puncture_number):
BH_x = data[:, 3*i+1]
BH_y = data[:, 3*i+2]
BH_z = data[:, 3*i+3]
BH_Xmin[i] = min(BH_x)
BH_Xmax[i] = max(BH_x)
BH_Ymin[i] = min(BH_y)
BH_Ymax[i] = max(BH_y)
if i==0:
plt.plot( BH_x, BH_y, color='red', label="BH"+str(i+1), linewidth=2 )
elif i==1:
......@@ -105,21 +117,38 @@ def generate_puncture_orbit_plot(outdir, figure_outdir):
plt.xlabel( "X [M]", fontsize=16 )
plt.ylabel( "Y [M]", fontsize=16 )
plt.legend( loc='upper right' )
# plt.show()
# 设置坐标轴的范围
Xmin0 = min(BH_Xmin)
Xmax0 = max(BH_Xmax)
Ymin0 = min(BH_Ymin)
Ymax0 = max(BH_Ymax)
Xmin = min(Xmin0-2.0, -5.0)
Xmax = max(Xmax0+2.0, +5.0)
Ymin = min(Ymin0-2.0, -5.0)
Ymax = max(Ymax0+2.0, +5.0)
plt.xlim(Xmin, Xmax) # x 轴范围从 Xmin 到 Xmax
plt.ylim(Ymin, Ymax) # y 轴范围从 Ymin 到 Ymax
# plt.show( )
plt.savefig( os.path.join(figure_outdir, "BH_Trajectary_XY.pdf") )
plt.close()
plt.close( )
# --------------------------
# 画出黑洞位移的轨迹图(XZ图)
plt.figure( figsize=(8,8) ) ## 这里 figsize 可以设定图形的大小
plt.figure( figsize=(8,8) ) ## 这里 figsize 可以设定图形的大小
plt.title( " Black Hole Trajectry ", fontsize=18 ) ## 这里 fontsize 可以设定文字大小
for i in range(input_data.puncture_number):
BH_x = data[:, 3*i+1]
BH_y = data[:, 3*i+2]
BH_z = data[:, 3*i+3]
BH_Xmin[i] = min(BH_x)
BH_Xmax[i] = max(BH_x)
BH_Zmin[i] = min(BH_z)
BH_Zmax[i] = max(BH_z)
if i==0:
plt.plot( BH_x, BH_z, color='red', label="BH"+str(i+1), linewidth=2 )
elif i==1:
......@@ -132,21 +161,38 @@ def generate_puncture_orbit_plot(outdir, figure_outdir):
plt.xlabel( "X [M]", fontsize=16 )
plt.ylabel( "Z [M]", fontsize=16 )
plt.legend( loc='upper right' )
# plt.show()
# 设置坐标轴的范围
Xmin0 = min(BH_Xmin)
Xmax0 = max(BH_Xmax)
Zmin0 = min(BH_Zmin)
Zmax0 = max(BH_Zmax)
Xmin = min(Xmin0-2.0, -5.0)
Xmax = max(Xmax0+2.0, +5.0)
Zmin = min(Zmin0-2.0, -5.0)
Zmax = max(Zmax0+2.0, +5.0)
plt.xlim(Xmin, Xmax) # x 轴范围从 Xmin 到 Xmax
plt.ylim(Zmin, Zmax) # y 轴范围从 Zmin 到 Zmax
# plt.show( )
plt.savefig( os.path.join(figure_outdir, "BH_Trajectary_XZ.pdf") )
plt.close()
plt.close( )
# --------------------------
# 画出黑洞位移的轨迹图(YZ图)
plt.figure( figsize=(8,8) ) ## 这里 figsize 可以设定图形的大小
plt.figure( figsize=(8,8) ) ## 这里 figsize 可以设定图形的大小
plt.title( " Black Hole Trajectry ", fontsize=18 ) ## 这里 fontsize 可以设定文字大小
for i in range(input_data.puncture_number):
BH_x = data[:, 3*i+1]
BH_y = data[:, 3*i+2]
BH_z = data[:, 3*i+3]
BH_Ymin[i] = min(BH_y)
BH_Ymax[i] = max(BH_y)
BH_Zmin[i] = min(BH_z)
BH_Zmax[i] = max(BH_z)
if i==0:
plt.plot( BH_y, BH_z, color='red', label="BH"+str(i+1), linewidth=2 )
elif i==1:
......@@ -159,9 +205,22 @@ def generate_puncture_orbit_plot(outdir, figure_outdir):
plt.xlabel( "Y [M]", fontsize=16 )
plt.ylabel( "Z [M]", fontsize=16 )
plt.legend( loc='upper right' )
# plt.show()
# 设置坐标轴的范围
Ymin0 = min(BH_Ymin)
Ymax0 = max(BH_Ymax)
Zmin0 = min(BH_Zmin)
Zmax0 = max(BH_Zmax)
Ymin = min(Ymin0-2.0, -5.0)
Ymax = max(Ymax0+2.0, +5.0)
Zmin = min(Zmin0-2.0, -5.0)
Zmax = max(Zmax0+2.0, +5.0)
plt.xlim(Ymin, Ymax) # x 轴范围从 Ymin 到 Ymax
plt.ylim(Zmin, Zmax) # y 轴范围从 Zmin 到 Zmax
# plt.show( )
plt.savefig( os.path.join(figure_outdir, "BH_Trajectary_YZ.pdf") )
plt.close()
plt.close( )
# --------------------------
......@@ -177,40 +236,79 @@ def generate_puncture_orbit_plot(outdir, figure_outdir):
# 画出黑洞位移的轨迹图(X2-X1 Y2-Y1)
plt.figure( figsize=(8,8) )
plt.figure( figsize=(8,8) )
plt.title( " Black Hole Trajectry ", fontsize=18 )
plt.plot( (BH_x2-BH_x1), (BH_y2-BH_y1), color='blue', linewidth=2 )
plt.xlabel( " $X_{2}$ - $X_{1}$ [M] ", fontsize=16 )
plt.ylabel( " $Y_{2}$ - $Y_{1}$ [M] ", fontsize=16 )
plt.legend( loc='upper right' )
# 设置坐标轴的范围
Xmin0 = min( (BH_x2 - BH_x1) )
Xmax0 = max( (BH_x2 - BH_x1) )
Ymin0 = min( (BH_y2 - BH_y1) )
Ymax0 = max( (BH_y2 - BH_y1) )
Xmin = min(Xmin0-2.0, -5.0)
Xmax = max(Xmax0+2.0, +5.0)
Ymin = min(Ymin0-2.0, -5.0)
Ymax = max(Ymax0+2.0, +5.0)
plt.xlim(Xmin, Xmax) # x 轴范围从 Xmin 到 Xmax
plt.ylim(Ymin, Ymax) # y 轴范围从 Ymin 到 Ymax
plt.savefig( os.path.join(figure_outdir, "BH_Trajectary_21_XY.pdf") )
plt.close()
plt.close( )
# --------------------------
# 画出黑洞位移的轨迹图(X2-X1 Z2-Z1)
plt.figure( figsize=(8,8) )
plt.figure( figsize=(8,8) )
plt.title( " Black Hole Trajectry ", fontsize=18 )
plt.plot( (BH_x2-BH_x1), (BH_z2-BH_z1), color='blue', linewidth=2 )
plt.xlabel( " $X_{2}$ - $X_{1}$ [M] ", fontsize=16 )
plt.ylabel( " $Z_{2}$ - $Z_{1}$ [M] ", fontsize=16 )
plt.legend( loc='upper right' )
# 设置坐标轴的范围
Xmin0 = min( (BH_x2 - BH_x1) )
Xmax0 = max( (BH_x2 - BH_x1) )
Zmin0 = min( (BH_z2 - BH_z1) )
Zmax0 = max( (BH_z2 - BH_z1) )
Xmin = min(Xmin0-2.0, -5.0)
Xmax = max(Xmax0+2.0, +5.0)
Zmin = min(Zmin0-2.0, -5.0)
Zmax = max(Zmax0+2.0, +5.0)
plt.xlim(Xmin, Xmax) # x 轴范围从 Xmin 到 Xmax
plt.ylim(Zmin, Zmax) # y 轴范围从 Zmin 到 Zmax
plt.savefig( os.path.join(figure_outdir, "BH_Trajectary_21_XZ.pdf") )
plt.close()
plt.close( )
# --------------------------
# 画出黑洞位移的轨迹图(Y2-Y1 Z2-Z1)
plt.figure( figsize=(8,8) )
plt.figure( figsize=(8,8) )
plt.title( " Black Hole Trajectry ", fontsize=18 )
plt.plot( (BH_y2-BH_y1), (BH_z2-BH_z1), color='blue', linewidth=2 )
plt.xlabel( " $Y_{2}$ - $Y_{1}$ [M] ", fontsize=16 )
plt.ylabel( " $Z_{2}$ - $Z_{1}$ [M] ", fontsize=16 )
plt.legend( loc='upper right' )
# 设置坐标轴的范围
Ymin0 = min( (BH_y2 - BH_y1) )
Ymax0 = max( (BH_y2 - BH_y1) )
Zmin0 = min( (BH_z2 - BH_z1) )
Zmax0 = max( (BH_z2 - BH_z1) )
Ymin = min(Ymin0-2.0, -5.0)
Ymax = max(Ymax0+2.0, +5.0)
Zmin = min(Zmin0-2.0, -5.0)
Zmax = max(Zmax0+2.0, +5.0)
plt.xlim(Ymin, Ymax) # x 轴范围从 Ymin 到 Ymax
plt.ylim(Zmin, Zmax) # y 轴范围从 Zmin 到 Zmax
plt.savefig( os.path.join(figure_outdir, "BH_Trajectary_21_YZ.pdf") )
plt.close()
plt.close( )
# --------------------------
......@@ -218,9 +316,9 @@ def generate_puncture_orbit_plot(outdir, figure_outdir):
# 这里 file0 只是个文件名,不涉及 file.open 操作
# file0.close()
print()
print(" 对黑洞轨迹画图完成 ")
print()
print( )
print( " 对黑洞轨迹画图完成 " )
print( )
return
......@@ -234,9 +332,9 @@ def generate_puncture_orbit_plot(outdir, figure_outdir):
def generate_puncture_orbit_plot3D(outdir, figure_outdir):
print()
print(" 对黑洞轨迹进行画 3 维图 ")
print()
print( )
print( " 对黑洞轨迹进行画 3 维图 " )
print( )
# 打开文件路径
file0 = os.path.join(outdir, "bssn_BH.dat")
......@@ -245,6 +343,14 @@ def generate_puncture_orbit_plot3D(outdir, figure_outdir):
# 读取整个文件数据,假设数据是以空格分隔的浮点数
data = numpy.loadtxt(file0)
# 初始化黑洞坐标的最大值和最小值
BH_Xmin = numpy.zeros(input_data.puncture_number)
BH_Xmax = numpy.zeros(input_data.puncture_number)
BH_Ymin = numpy.zeros(input_data.puncture_number)
BH_Ymax = numpy.zeros(input_data.puncture_number)
BH_Zmin = numpy.zeros(input_data.puncture_number)
BH_Zmax = numpy.zeros(input_data.puncture_number)
# 创建一个新的图
fig = plt.figure( figsize=(8,8) )
......@@ -258,6 +364,12 @@ def generate_puncture_orbit_plot3D(outdir, figure_outdir):
BH_x = data[:, 3*i+1]
BH_y = data[:, 3*i+2]
BH_z = data[:, 3*i+3]
BH_Xmin[i] = min(BH_x)
BH_Xmax[i] = max(BH_x)
BH_Ymin[i] = min(BH_y)
BH_Ymax[i] = max(BH_y)
BH_Zmin[i] = min(BH_z)
BH_Zmax[i] = max(BH_z)
if i==0:
ax.plot( BH_x, BH_y, BH_z, color='red', label="BH"+str(i+1), linewidth=2 )
elif i==1:
......@@ -266,15 +378,32 @@ def generate_puncture_orbit_plot3D(outdir, figure_outdir):
ax.plot( BH_x, BH_y, BH_z, color='blue', label="BH"+str(i+1), linewidth=2 )
elif i==3:
ax.plot( BH_x, BH_y, BH_z, color='gray', label="BH"+str(i+1), linewidth=2 )
# 设置坐标轴标签
ax.set_xlabel( "X [M]", fontsize=16 )
ax.set_ylabel( "Y [M]", fontsize=16 )
ax.set_zlabel( "Z [M]", fontsize=16 )
plt.legend( loc='upper right' )
# plt.show()
# 设置坐标轴的范围
Xmin0 = min(BH_Xmin)
Xmax0 = max(BH_Xmax)
Ymin0 = min(BH_Ymin)
Ymax0 = max(BH_Ymax)
Zmin0 = min(BH_Zmin)
Zmax0 = max(BH_Zmax)
Xmin = min(Xmin0-2.0, -5.0)
Xmax = max(Xmax0+2.0, +5.0)
Ymin = min(Ymin0-2.0, -5.0)
Ymax = max(Ymax0+2.0, +5.0)
Zmin = min(Zmin0-2.0, -5.0)
Zmax = max(Zmax0+2.0, +5.0)
ax.set_xlim( [Xmin, Xmax] ) # y 轴范围从 Ymin 到 Ymax
ax.set_ylim( [Ymin, Ymax] ) # y 轴范围从 Ymin 到 Ymax
ax.set_zlim( [Zmin, Zmax] ) # z 轴范围从 Zmin 到 Zmax
plt.savefig( os.path.join(figure_outdir, "BH_Trajectary_3D.pdf") )
plt.close()
plt.close( )
return
......@@ -317,15 +446,15 @@ def generate_puncture_orbit_plot3D(outdir, figure_outdir):
def generate_gravitational_waveform_plot(outdir, figure_outdir, detector_number_i):
print()
print(" 对引力波波形 Psi4 进行画图 ")
print(" 对第 ", detector_number_i, " 个探测器半径数据进行画图 ")
print()
print( )
print( " 对引力波波形 Psi4 进行画图 " )
print( " 对第 ", detector_number_i, " 个探测器半径数据进行画图 " )
print( )
# 打开文件路径
file0 = os.path.join(outdir, "bssn_psi4.dat")
print(" 对应数据文件为 ", file0)
print( f" 对应数据文件为 { file0 }" )
# 读取整个文件数据,假设数据是以空格分隔的浮点数
data = numpy.loadtxt(file0)
......@@ -400,10 +529,10 @@ def generate_gravitational_waveform_plot(outdir, figure_outdir, detector_number_
plt.legend( loc='upper right' )
plt.savefig( os.path.join(figure_outdir, "Gravitational_Psi4_Detector_" + str(detector_number_i) + ".pdf") )
print()
print(" 第 ", detector_number_i, " 个探测器半径数据画图完成 ")
print(" 对引力波波形 Psi4 的画图完成 ")
print()
print( )
print( " 第 ", detector_number_i, " 个探测器半径数据画图完成 " )
print( " 对引力波波形 Psi4 的画图完成 " )
print( )
return
......@@ -417,15 +546,15 @@ def generate_gravitational_waveform_plot(outdir, figure_outdir, detector_number_
def generate_ADMmass_plot(outdir, figure_outdir, detector_number_i):
print()
print(" 对时空 ADM 质量进行画图 ")
print(" 对第 ", detector_number_i, " 个探测器半径数据进行画图 ")
print()
print( )
print( " 对时空 ADM 质量进行画图 " )
print( " 对第 ", detector_number_i, " 个探测器半径数据进行画图 " )
print( )
# 打开文件路径
file0 = os.path.join(outdir, "bssn_ADMQs.dat")
print(" 对应数据文件为 ", file0)
print( f" 对应数据文件为 { file0 }" )
# 读取整个文件数据,假设数据是以空格分隔的浮点数
data = numpy.loadtxt(file0)
......@@ -493,10 +622,10 @@ def generate_ADMmass_plot(outdir, figure_outdir, detector_number_i):
plt.legend( loc='upper right' )
plt.savefig( os.path.join(figure_outdir, "ADM_Mass_Dector_" + str(detector_number_i) + ".pdf") )
print()
print(" 第 ", detector_number_i, " 个探测器半径数据画图完成 ")
print(" 对时空 ADM 质量的画图完成 ")
print()
print( )
print( " 第 ", detector_number_i, " 个探测器半径数据画图完成 " )
print( " 对时空 ADM 质量的画图完成 " )
print( )
return
......@@ -510,15 +639,15 @@ def generate_ADMmass_plot(outdir, figure_outdir, detector_number_i):
def generate_constraint_check_plot(outdir, figure_outdir, input_level_number):
print()
print(" 对哈密顿约束违反性况进行画图 ")
print(" 对第 ", input_level_number, " 层网格数据进行画图 ")
print()
print( )
print( " 对哈密顿约束违反性况进行画图 " )
print( " 对第 ", input_level_number, " 层网格数据进行画图 " )
print( )
# 打开文件路径
file0 = os.path.join(outdir, "bssn_constraint.dat")
print(" 对应数据文件为 ", file0)
print( f" 对应数据文件为 { file0 }" )
# 读取整个文件数据,假设数据是以空格分隔的浮点数
data = numpy.loadtxt(file0)
......@@ -581,10 +710,10 @@ def generate_constraint_check_plot(outdir, figure_outdir, input_level_number):
plt.legend( loc='upper right' )
plt.savefig( os.path.join(figure_outdir, "ADM_Constraint_Grid_Level_" + str(input_level_number) + ".pdf") )
print()
print(" 对哈密顿约束违反性况的画图完成 ")
print(" 第 ", input_level_number, " 层网格数据画图完成 ")
print()
print( )
print( " 对哈密顿约束违反性况的画图完成 " )
print( " 第 ", input_level_number, " 层网格数据画图完成 " )
print( )
return
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment