improvements
This commit is contained in:
parent
3dc03cec4f
commit
e488275523
11 changed files with 640 additions and 125 deletions
|
@ -49,6 +49,26 @@ def register_arguments_card(parser:ArgumentParser):
|
|||
parser.add_argument("--OutputRngStateLPT", type=str, default=None, help="Output RNG state file.")
|
||||
|
||||
|
||||
def register_arguments_card_for_ICs(parser:ArgumentParser):
|
||||
parser.add_argument("-Np","--N_particles", type=int, default=128, help="Number of particles per axis.")
|
||||
parser.add_argument("-Nlpt","--N_LPT_mesh", type=int, default=None, help="Number of mesh points per axis for the LPT mesh.")
|
||||
parser.add_argument("-L","--L", type=float, default=100.0, help="Size of the simulation box (in Mpc/h).")
|
||||
parser.add_argument("-corner","--corner", type=float, nargs=3, default=[0.0, 0.0, 0.0], help="Corner of the simulation box.")
|
||||
parser.add_argument("--ICsMode", type=int, default=None, help="Initial conditions mode.")
|
||||
parser.add_argument("--ICs", type=str, default=None, help="Initial conditions file.")
|
||||
parser.add_argument("--InputWhiteNoise", type=str, default=None, help="Input white noise file.")
|
||||
parser.add_argument("--InputPowerSpectrum", type=str, default=None, help="Input power spectrum file.")
|
||||
|
||||
|
||||
def register_arguments_card_for_timestepping(parser:ArgumentParser):
|
||||
parser.add_argument("-zini","--RedshiftLPT", type=float, default=19.0, help="Redshift for the LPT evolution.")
|
||||
parser.add_argument("-zfinal","--RedshiftFCs", type=float, default=0.0, help="Redshift for the FCs evolution.")
|
||||
parser.add_argument("--TimeSteppingFileName", type=str, default=None, help="Time stepping file.")
|
||||
parser.add_argument("-lc","--GenerateLightcone", type=bool, default=False, help="Generate lightcone.")
|
||||
|
||||
|
||||
|
||||
|
||||
def parse_arguments_card(parsed_args):
|
||||
"""
|
||||
Parse the arguments for the parameter card.
|
||||
|
@ -56,9 +76,9 @@ def parse_arguments_card(parsed_args):
|
|||
from args_main import parse_arguments_main
|
||||
from cosmo_params import parse_arguments_cosmo
|
||||
|
||||
param_file=parsed_args.paramfile
|
||||
cosmo_dict=parse_arguments_cosmo(parsed_args)
|
||||
card_dict=dict(
|
||||
paramfile=parsed_args.paramfile,
|
||||
N_particles=parsed_args.N_particles,
|
||||
N_LPT_mesh=parsed_args.N_LPT_mesh,
|
||||
N_PM_mesh=parsed_args.N_PM_mesh,
|
||||
|
@ -117,8 +137,8 @@ def parse_arguments_card(parsed_args):
|
|||
ligthcone_prefix = "lightcone_" if card_dict["GenerateLightcone"] else ""
|
||||
|
||||
## Now we set the parameters that are None to the default values
|
||||
if param_file is None:
|
||||
param_file = main_dict["paramdir"]+"parameters_"+main_dict["simname"]+".sbmy"
|
||||
if card_dict["paramfile"] is None:
|
||||
card_dict["paramfile"] = main_dict["paramdir"]+"parameters_"+main_dict["simname"]+".sbmy"
|
||||
if card_dict["N_LPT_mesh"] is None:
|
||||
card_dict["N_LPT_mesh"] = card_dict["N_particles"] # Default is the same as the number of particles
|
||||
if card_dict["N_PM_mesh"] is None:
|
||||
|
@ -172,7 +192,7 @@ def parse_arguments_card(parsed_args):
|
|||
if card_dict["OutputFinalDensity"] is None:
|
||||
card_dict["OutputFinalDensity"] = main_dict["resultdir"]+ligthcone_prefix+"final_density_"+main_dict["simname"]+".h5"
|
||||
if card_dict["OutputTilesBase"] is None:
|
||||
card_dict["OutputTilesBase"] = main_dict["resultdir"]+"sCOLA_tile_"+main_dict["simname"]
|
||||
card_dict["OutputTilesBase"] = main_dict["workdir"]+"sCOLA_tile"
|
||||
if card_dict["OutputLPTPotential1"] is None:
|
||||
card_dict["OutputLPTPotential1"] = main_dict["workdir"]+"initial_conditions_DM_phi.h5"
|
||||
if card_dict["OutputLPTPotential2"] is None:
|
||||
|
@ -184,7 +204,69 @@ def parse_arguments_card(parsed_args):
|
|||
if card_dict["OutputRngStateLPT"] is None:
|
||||
card_dict["OutputRngStateLPT"] = main_dict["workdir"]+"rng_state.h5"
|
||||
|
||||
return card_dict, param_file
|
||||
return card_dict
|
||||
|
||||
|
||||
|
||||
def parse_arguments_card_for_ICs(parsed_args):
|
||||
"""
|
||||
Parse the arguments for the parameter card for ICs.
|
||||
"""
|
||||
from args_main import parse_arguments_main
|
||||
|
||||
main_dict = parse_arguments_main(parsed_args)
|
||||
card_dict = dict(
|
||||
N_particles=parsed_args.N_particles,
|
||||
N_LPT_mesh=parsed_args.N_LPT_mesh,
|
||||
L=parsed_args.L,
|
||||
corner=parsed_args.corner,
|
||||
ICsMode=parsed_args.ICsMode,
|
||||
ICs=parsed_args.ICs,
|
||||
InputWhiteNoise=parsed_args.InputWhiteNoise,
|
||||
InputPowerSpectrum=parsed_args.InputPowerSpectrum,
|
||||
)
|
||||
|
||||
## Now we set the parameters that are None to the default values
|
||||
if card_dict["N_LPT_mesh"] is None:
|
||||
card_dict["N_LPT_mesh"] = card_dict["N_particles"] # Default is the same as the number of particles
|
||||
if card_dict["InputWhiteNoise"] is None:
|
||||
card_dict["InputWhiteNoise"] = main_dict["workdir"]+"white_noise.h5"
|
||||
if card_dict["ICs"] is None:
|
||||
card_dict["ICs"] = main_dict["workdir"]+"initial_conditions_DM_delta.h5"
|
||||
if card_dict["InputPowerSpectrum"] is None:
|
||||
card_dict["InputPowerSpectrum"] = main_dict["workdir"]+"power_spectrum.h5"
|
||||
if card_dict["ICsMode"] is None:
|
||||
match main_dict["ICs_gen"]:
|
||||
case "ext" | "monofonic":
|
||||
card_dict["ICsMode"] = 2
|
||||
case "sbmy":
|
||||
card_dict["ICsMode"] = 1
|
||||
case _:
|
||||
raise ValueError(f"ICs generator {main_dict['ICs_gen']} not recognized.")
|
||||
|
||||
return card_dict
|
||||
|
||||
|
||||
|
||||
def parse_arguments_card_for_timestepping(parsed_args):
|
||||
"""
|
||||
Parse the arguments for the parameter card for timestepping.
|
||||
"""
|
||||
from args_main import parse_arguments_main
|
||||
|
||||
main_dict = parse_arguments_main(parsed_args)
|
||||
card_dict = dict(
|
||||
RedshiftLPT=parsed_args.RedshiftLPT,
|
||||
RedshiftFCs=parsed_args.RedshiftFCs,
|
||||
TimeSteppingFileName=parsed_args.TimeSteppingFileName,
|
||||
GenerateLightcone=parsed_args.GenerateLightcone,
|
||||
)
|
||||
|
||||
## Now we set the parameters that are None to the default values
|
||||
if card_dict["TimeSteppingFileName"] is None:
|
||||
card_dict["TimeSteppingFileName"] = main_dict["paramdir"]+"time_stepping.h5"
|
||||
|
||||
return card_dict
|
||||
|
||||
|
||||
|
||||
|
@ -341,13 +423,14 @@ def main_parameter_card(parsed_args):
|
|||
from low_level import print_message, print_starting_module, print_ending_module
|
||||
print_starting_module("card", verbose=parsed_args.verbose)
|
||||
print_message("Parsing arguments for the parameter card.", 1, "card", verbose=parsed_args.verbose)
|
||||
card_dict, param_file = parse_arguments_card(parsed_args)
|
||||
card_dict = parse_arguments_card(parsed_args)
|
||||
paramfile = card_dict["paramfile"]
|
||||
parameter_card_dict = create_parameter_card_dict(**card_dict)
|
||||
if isfile(param_file) and not parsed_args.force:
|
||||
print_message(f"Parameter card {param_file} exists. Use --force to overwrite.", 1, "card", verbose=parsed_args.verbose)
|
||||
if isfile(paramfile) and not parsed_args.force:
|
||||
print_message(f"Parameter card {paramfile} exists. Use --force to overwrite.", 1, "card", verbose=parsed_args.verbose)
|
||||
return card_dict
|
||||
write_parameter_card(parameter_card_dict, param_file, verbose=parsed_args.verbose)
|
||||
print_message(f"Parameter card written to {param_file}", 2, "card", verbose=parsed_args.verbose)
|
||||
write_parameter_card(parameter_card_dict, paramfile, verbose=parsed_args.verbose)
|
||||
print_message(f"Parameter card written to {paramfile}", 2, "card", verbose=parsed_args.verbose)
|
||||
print_ending_module("card", verbose=parsed_args.verbose)
|
||||
|
||||
return card_dict
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue