Still improve loading
This commit is contained in:
+39
-11
@@ -448,20 +448,33 @@ class SnapshotProcessor(HDF5Container):
|
|||||||
"level": "levelp",
|
"level": "levelp",
|
||||||
"epoch": "epoch",
|
"epoch": "epoch",
|
||||||
}
|
}
|
||||||
hydro_file = open(f"{path}/output_{self.num:05}/hydro_file_descriptor.txt")
|
hydro_filename = f"{path}/output_{self.num:05}/hydro_file_descriptor.txt"
|
||||||
part_file = open(f"{path}/output_{self.num:05}/part_file_descriptor.txt")
|
if os.path.exists(hydro_filename):
|
||||||
|
hydro_file = open(hydro_filename)
|
||||||
|
hlines = hydro_file.readlines()
|
||||||
|
hydro_var = np.unique(
|
||||||
|
list(map(lambda s: s.split(",")[1][1:].split("_")[0], hlines[2:]))
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
hydro_var = []
|
||||||
|
|
||||||
|
part_filename = f"{path}/output_{self.num:05}/part_file_descriptor.txt"
|
||||||
|
if os.path.exists(part_filename):
|
||||||
|
hydro_file = open(part_filename)
|
||||||
|
part_file = open(f"{path}/output_{self.num:05}/part_file_descriptor.txt")
|
||||||
|
has_grav = os.path.exists(
|
||||||
|
f"{path}/output_{self.num:05}/grav_{self.num:05}.out00000"
|
||||||
|
)
|
||||||
|
plines = part_file.readlines()
|
||||||
|
part_var = np.unique(
|
||||||
|
list(map(lambda s: s.split(",")[1][1:].split("_")[0], plines[2:]))
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
part_var = []
|
||||||
|
|
||||||
has_grav = os.path.exists(
|
has_grav = os.path.exists(
|
||||||
f"{path}/output_{self.num:05}/grav_{self.num:05}.out00000"
|
f"{path}/output_{self.num:05}/grav_{self.num:05}.out00000"
|
||||||
)
|
)
|
||||||
# ugly parsing
|
|
||||||
hlines = hydro_file.readlines()
|
|
||||||
plines = part_file.readlines()
|
|
||||||
hydro_var = np.unique(
|
|
||||||
list(map(lambda s: s.split(",")[1][1:].split("_")[0], hlines[2:]))
|
|
||||||
)
|
|
||||||
part_var = np.unique(
|
|
||||||
list(map(lambda s: s.split(",")[1][1:].split("_")[0], plines[2:]))
|
|
||||||
)
|
|
||||||
|
|
||||||
def is_available(available_vars, pymsesrc, var):
|
def is_available(available_vars, pymsesrc, var):
|
||||||
if var in ["g", "phi"]:
|
if var in ["g", "phi"]:
|
||||||
@@ -500,6 +513,21 @@ class SnapshotProcessor(HDF5Container):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if (
|
||||||
|
"Br" in pymses.rcConfig.Ramses.amr_fields.field_name_list
|
||||||
|
and "B" not in hydro_var
|
||||||
|
):
|
||||||
|
pymses.rcConfig.Ramses.amr_fields.remove_field("P")
|
||||||
|
pymses.rcConfig.Ramses.amr_fields.remove_field("Br")
|
||||||
|
pymses.rcConfig.Ramses.amr_fields.remove_field("Bl")
|
||||||
|
pymses.rcConfig.Ramses.amr_fields.add_scalar(
|
||||||
|
name="P", ivar=4, file_prefix="hydro"
|
||||||
|
)
|
||||||
|
|
||||||
|
if not has_grav and "g" in pymses.rcConfig.Ramses.amr_fields.field_name_list:
|
||||||
|
pymses.rcConfig.Ramses.amr_fields.remove_field("g")
|
||||||
|
pymses.rcConfig.Ramses.amr_fields.remove_field("phi")
|
||||||
|
|
||||||
self._amr = self._ro.amr_source(self.params.pymses.variables)
|
self._amr = self._ro.amr_source(self.params.pymses.variables)
|
||||||
self._part = self._ro.particle_source(self.params.pymses.part_variables)
|
self._part = self._ro.particle_source(self.params.pymses.part_variables)
|
||||||
|
|
||||||
|
|||||||
+5
-3
@@ -96,13 +96,15 @@ class StudyProcessor(Aggregator, HDF5Container):
|
|||||||
for run in self.runs:
|
for run in self.runs:
|
||||||
nml_src = f"{self.path}/{run}/{self.params.input.nml_filename}"
|
nml_src = f"{self.path}/{run}/{self.params.input.nml_filename}"
|
||||||
nml_dest = f"{self.path_out}/{run}/{self.params.input.nml_filename}"
|
nml_dest = f"{self.path_out}/{run}/{self.params.input.nml_filename}"
|
||||||
copy_file(nml_src, nml_dest, update=1)
|
if os.path.exists(nml_src):
|
||||||
|
copy_file(nml_src, nml_dest, update=1)
|
||||||
|
|
||||||
logs = self.get_logs(run)
|
logs = self.get_logs(run)
|
||||||
os.makedirs(f"{self.path_out}/{run}/logs", exist_ok=True)
|
os.makedirs(f"{self.path_out}/{run}/logs", exist_ok=True)
|
||||||
for log in logs:
|
for log in logs:
|
||||||
dest = f"{self.path_out}/{run}/logs/{os.path.basename(log)}"
|
dest = f"{self.path_out}/{run}/logs/{os.path.basename(log)}"
|
||||||
copy_file(log, dest, update=1)
|
if os.path.exists(log):
|
||||||
|
copy_file(log, dest, update=1)
|
||||||
|
|
||||||
# Define rules
|
# Define rules
|
||||||
self.def_rules()
|
self.def_rules()
|
||||||
@@ -751,7 +753,7 @@ class StudyProcessor(Aggregator, HDF5Container):
|
|||||||
"ssm": Rule(
|
"ssm": Rule(
|
||||||
self._surfacic_sink_mass,
|
self._surfacic_sink_mass,
|
||||||
group="/series/sinks_from_log",
|
group="/series/sinks_from_log",
|
||||||
unit=U.Msun / U.pc ** 2,
|
unit=U.Msun / U.pc**2,
|
||||||
description="Surfacic sink mass",
|
description="Surfacic sink mass",
|
||||||
dependencies=["sinks_from_log"],
|
dependencies=["sinks_from_log"],
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user