Corrected error (lbox) in mass determination
This commit is contained in:
+57
-20
@@ -15,7 +15,7 @@ import glob as glob
|
|||||||
import pickle as pickle
|
import pickle as pickle
|
||||||
|
|
||||||
from pymses.sources.ramses import output
|
from pymses.sources.ramses import output
|
||||||
from pymses.analysis import Camera, raytracing, slicing
|
from pymses.analysis import Camera, raytracing, slicing, splatting
|
||||||
from pymses.filters import CellsToPoints
|
from pymses.filters import CellsToPoints
|
||||||
from pymses.analysis import ScalarOperator, FractionOperator, MaxLevelOperator
|
from pymses.analysis import ScalarOperator, FractionOperator, MaxLevelOperator
|
||||||
|
|
||||||
@@ -39,6 +39,7 @@ def make_image_disk(
|
|||||||
cpuamr=False,
|
cpuamr=False,
|
||||||
pos_star=np.array([1.0, 1.0, 1.0]),
|
pos_star=np.array([1.0, 1.0, 1.0]),
|
||||||
interactive=False,
|
interactive=False,
|
||||||
|
fft=False,
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
Make several useful image of an output of a simulation
|
Make several useful image of an output of a simulation
|
||||||
@@ -77,6 +78,7 @@ def make_image_disk(
|
|||||||
put_title=put_title,
|
put_title=put_title,
|
||||||
pos_star=pos_star,
|
pos_star=pos_star,
|
||||||
interactive=interactive,
|
interactive=interactive,
|
||||||
|
fft=fft,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -96,6 +98,7 @@ def make_image_aux(
|
|||||||
pos_star=np.array([1.0, 1.0, 1.0]),
|
pos_star=np.array([1.0, 1.0, 1.0]),
|
||||||
put_title=True,
|
put_title=True,
|
||||||
interactive=False,
|
interactive=False,
|
||||||
|
fft=False,
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
Make several useful image of an output of a simulation, auxillary function
|
Make several useful image of an output of a simulation, auxillary function
|
||||||
@@ -136,6 +139,11 @@ def make_image_aux(
|
|||||||
return
|
return
|
||||||
|
|
||||||
rho_op = ScalarOperator(lambda dset: dset["rho"], ro.info["unit_density"])
|
rho_op = ScalarOperator(lambda dset: dset["rho"], ro.info["unit_density"])
|
||||||
|
|
||||||
|
rt = None
|
||||||
|
if fft:
|
||||||
|
rt = splatting.SplatterProcessor(amr, ro.info, rho_op)
|
||||||
|
else:
|
||||||
rt = raytracing.RayTracer(amr, ro.info, rho_op)
|
rt = raytracing.RayTracer(amr, ro.info, rho_op)
|
||||||
|
|
||||||
axes_los = ["x", "y", "z"] # Line of sight axes
|
axes_los = ["x", "y", "z"] # Line of sight axes
|
||||||
@@ -336,6 +344,10 @@ def make_image_aux(
|
|||||||
ro.info["unit_velocity"],
|
ro.info["unit_velocity"],
|
||||||
)
|
)
|
||||||
rt_omega = raytracing.RayTracer(amr, ro.info, omega_op)
|
rt_omega = raytracing.RayTracer(amr, ro.info, omega_op)
|
||||||
|
|
||||||
|
if fft:
|
||||||
|
rt_cs = splatting.SplatterProcessor(amr, ro.info, cs_op, surf_qty=False)
|
||||||
|
else:
|
||||||
rt_cs = raytracing.RayTracer(amr, ro.info, cs_op)
|
rt_cs = raytracing.RayTracer(amr, ro.info, cs_op)
|
||||||
|
|
||||||
dmap_omega = rt_omega.process(cam)
|
dmap_omega = rt_omega.process(cam)
|
||||||
@@ -505,7 +517,7 @@ def disk_prop(
|
|||||||
amr = ro.amr_source(["rho", "vel", "Br", "Bl", "P"])
|
amr = ro.amr_source(["rho", "vel", "Br", "Bl", "P"])
|
||||||
cell_source = CellsToPoints(amr)
|
cell_source = CellsToPoints(amr)
|
||||||
cells = cell_source.flatten()
|
cells = cell_source.flatten()
|
||||||
dx = cells.get_sizes()
|
dx = cells.get_sizes() * lbox
|
||||||
pos = cells.points * lbox
|
pos = cells.points * lbox
|
||||||
# Get positions in the frame of the protostar
|
# Get positions in the frame of the protostar
|
||||||
pos = pos - pos_star
|
pos = pos - pos_star
|
||||||
@@ -540,8 +552,13 @@ def disk_prop(
|
|||||||
v_rad_disk = v_rad[mask]
|
v_rad_disk = v_rad[mask]
|
||||||
v_az_disk = v_az[mask]
|
v_az_disk = v_az[mask]
|
||||||
v_kepl = np.sqrt(mass_star * G / rc_disk)
|
v_kepl = np.sqrt(mass_star * G / rc_disk)
|
||||||
|
height_disk = height[mask]
|
||||||
|
|
||||||
total_mass_disk = np.sum(rho_disk * dvol_disk)
|
total_mass_disk = np.sum(rho_disk * dvol_disk)
|
||||||
|
total_mass = np.sum(cells["rho"] * dx ** 3)
|
||||||
|
|
||||||
|
print("Mass disk", total_mass_disk)
|
||||||
|
print("Mass box", total_mass)
|
||||||
|
|
||||||
# Initialize binned quantities
|
# Initialize binned quantities
|
||||||
cs_rad = np.zeros(nb_bin - 1)
|
cs_rad = np.zeros(nb_bin - 1)
|
||||||
@@ -554,15 +571,12 @@ def disk_prop(
|
|||||||
v_rad_rad = np.zeros(nb_bin - 1)
|
v_rad_rad = np.zeros(nb_bin - 1)
|
||||||
alpha_rey_rad = np.zeros(nb_bin - 1)
|
alpha_rey_rad = np.zeros(nb_bin - 1)
|
||||||
Q_kepl_rad = np.zeros(nb_bin - 1)
|
Q_kepl_rad = np.zeros(nb_bin - 1)
|
||||||
|
height_rad = np.zeros(nb_bin - 1)
|
||||||
|
|
||||||
for i in range(nb_bin - 1):
|
for i in range(nb_bin - 1):
|
||||||
mask_bin = (rc_disk > rad[i]) & (rc_disk < rad[i + 1])
|
mask_bin = (rc_disk > rad[i]) & (rc_disk < rad[i + 1])
|
||||||
|
|
||||||
print(
|
# print("Bin #{} : {} cells between {} and {}".format(i, np.sum(mask_bin), rad[i], rad[i + 1]))
|
||||||
"Bin #{} : {} cells between {} and {}".format(
|
|
||||||
i, np.sum(mask_bin), rad[i], rad[i + 1]
|
|
||||||
)
|
|
||||||
)
|
|
||||||
|
|
||||||
press_rad[i] = np.sum(press_disk[mask_bin] * dvol_disk[mask_bin]) / np.sum(
|
press_rad[i] = np.sum(press_disk[mask_bin] * dvol_disk[mask_bin]) / np.sum(
|
||||||
dvol_disk[mask_bin]
|
dvol_disk[mask_bin]
|
||||||
@@ -577,10 +591,8 @@ def disk_prop(
|
|||||||
# TODO verifier unites
|
# TODO verifier unites
|
||||||
# Surface of a bin : S = dr * 2 * pi * r with
|
# Surface of a bin : S = dr * 2 * pi * r with
|
||||||
# dr = rad[i + 1] - rad[i] and r = (rad[i + 1] + rad[i]) / 2.
|
# dr = rad[i + 1] - rad[i] and r = (rad[i + 1] + rad[i]) / 2.
|
||||||
coldens_rad[i] = (
|
coldens_rad[i] = np.sum(rho_disk[mask_bin] * dvol_disk[mask_bin]) / (
|
||||||
np.sum(rho_disk[mask_bin] * dvol_disk[mask_bin])
|
(rad[i + 1] - rad[i]) * (rad[i + 1] + rad[i]) * np.pi
|
||||||
* (lbox) ** 3
|
|
||||||
/ ((rad[i + 1] - rad[i]) * (rad[i + 1] + rad[i]) * np.pi)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
v_az_rad[i] = np.sum(
|
v_az_rad[i] = np.sum(
|
||||||
@@ -590,6 +602,9 @@ def disk_prop(
|
|||||||
v_rad_rad[i] = np.sum(
|
v_rad_rad[i] = np.sum(
|
||||||
v_rad_disk[mask_bin] * rho_disk[mask_bin] * dvol_disk[mask_bin]
|
v_rad_disk[mask_bin] * rho_disk[mask_bin] * dvol_disk[mask_bin]
|
||||||
) / np.sum(rho_disk[mask_bin] * dvol_disk[mask_bin])
|
) / np.sum(rho_disk[mask_bin] * dvol_disk[mask_bin])
|
||||||
|
height_rad[i] = np.sum(
|
||||||
|
height_disk[mask_bin] * rho_disk[mask_bin] * dvol_disk[mask_bin]
|
||||||
|
) / np.sum(rho_disk[mask_bin] * dvol_disk[mask_bin])
|
||||||
|
|
||||||
alpha_rey_rad[i] = (
|
alpha_rey_rad[i] = (
|
||||||
(
|
(
|
||||||
@@ -624,6 +639,7 @@ def disk_prop(
|
|||||||
prop_disk = {
|
prop_disk = {
|
||||||
"time": time,
|
"time": time,
|
||||||
"tot_mass": total_mass_disk,
|
"tot_mass": total_mass_disk,
|
||||||
|
"mass_box": total_mass,
|
||||||
"rad": rad[0 : nb_bin - 1],
|
"rad": rad[0 : nb_bin - 1],
|
||||||
"center": pos_star,
|
"center": pos_star,
|
||||||
"alpha_rey": alpha_rey_rad,
|
"alpha_rey": alpha_rey_rad,
|
||||||
@@ -636,6 +652,7 @@ def disk_prop(
|
|||||||
"temp": temp_rad,
|
"temp": temp_rad,
|
||||||
"cs": cs_rad,
|
"cs": cs_rad,
|
||||||
"Q_kepl": Q_kepl_rad,
|
"Q_kepl": Q_kepl_rad,
|
||||||
|
"height": height_rad,
|
||||||
}
|
}
|
||||||
|
|
||||||
# store the results
|
# store the results
|
||||||
@@ -678,8 +695,10 @@ def plot_disk_prop(path, num, force=False, tag="", interactive=False):
|
|||||||
P.close()
|
P.close()
|
||||||
|
|
||||||
P.xscale("log")
|
P.xscale("log")
|
||||||
P.plot(prop_disk["rad"], np.log10(prop_disk["rho"]), color="k", linewidth=2)
|
P.yscale("log")
|
||||||
P.ylabel(r"$\log(n) \, (code)$")
|
P.grid()
|
||||||
|
P.plot(prop_disk["rad"], prop_disk["rho"], color="k", linewidth=2)
|
||||||
|
P.ylabel(r"$n \, (code)$")
|
||||||
P.xlabel("disk radius")
|
P.xlabel("disk radius")
|
||||||
P.title(title)
|
P.title(title)
|
||||||
if interactive:
|
if interactive:
|
||||||
@@ -689,8 +708,10 @@ def plot_disk_prop(path, num, force=False, tag="", interactive=False):
|
|||||||
P.close()
|
P.close()
|
||||||
|
|
||||||
P.xscale("log")
|
P.xscale("log")
|
||||||
P.plot(prop_disk["rad"], np.log10(prop_disk["temp"]), color="k", linewidth=2)
|
P.yscale("log")
|
||||||
P.ylabel(r"$\log(T) \, (K)$")
|
P.grid()
|
||||||
|
P.plot(prop_disk["rad"], prop_disk["temp"], color="k", linewidth=2)
|
||||||
|
P.ylabel(r"$T \, (K)$")
|
||||||
P.xlabel("disk radius")
|
P.xlabel("disk radius")
|
||||||
P.title(title)
|
P.title(title)
|
||||||
if interactive:
|
if interactive:
|
||||||
@@ -718,8 +739,10 @@ def plot_disk_prop(path, num, force=False, tag="", interactive=False):
|
|||||||
P.close()
|
P.close()
|
||||||
|
|
||||||
P.xscale("log")
|
P.xscale("log")
|
||||||
P.plot(prop_disk["rad"], np.log10(prop_disk["coldens"]), color="k", linewidth=2)
|
P.yscale("log")
|
||||||
P.ylabel(r"$\log(N) \, (cm^{-2})$")
|
P.grid()
|
||||||
|
P.plot(prop_disk["rad"], prop_disk["coldens"], color="k", linewidth=2)
|
||||||
|
P.ylabel(r"$N\, (cm^{-2})$")
|
||||||
P.xlabel("disk radius ")
|
P.xlabel("disk radius ")
|
||||||
P.title(title)
|
P.title(title)
|
||||||
if interactive:
|
if interactive:
|
||||||
@@ -763,6 +786,20 @@ def plot_disk_prop(path, num, force=False, tag="", interactive=False):
|
|||||||
P.savefig(path + "/Q_r_" + str(num).zfill(5) + out_ext)
|
P.savefig(path + "/Q_r_" + str(num).zfill(5) + out_ext)
|
||||||
P.close()
|
P.close()
|
||||||
|
|
||||||
if pdf:
|
# height ration
|
||||||
P.savefig(path + "/Q_r_" + str(num).zfill(5) + ".pdf")
|
P.grid()
|
||||||
P.savefig(path + "/Q_r_" + str(num).zfill(5) + ".jpeg")
|
P.plot(
|
||||||
|
prop_disk["rad"],
|
||||||
|
abs(prop_disk["height"] / prop_disk["rad"]),
|
||||||
|
color="b",
|
||||||
|
linewidth=2,
|
||||||
|
)
|
||||||
|
P.ylabel(r"H ratio")
|
||||||
|
P.xlabel("disk radius ")
|
||||||
|
P.title(title + ", mass of box = {} (code)".format(prop_disk["mass_box"]))
|
||||||
|
|
||||||
|
if interactive:
|
||||||
|
pass
|
||||||
|
else:
|
||||||
|
P.savefig(path + "/H_r_" + str(num).zfill(5) + out_ext)
|
||||||
|
P.close()
|
||||||
|
|||||||
Reference in New Issue
Block a user