From 0288d17a5c503c6446cf6990067d298737f53c7a Mon Sep 17 00:00:00 2001 From: Aaron LI Date: Tue, 7 Jun 2016 22:38:49 +0800 Subject: Rewrite extract_tcool.py --- mass_profile/extract_tcool.py | 54 +++++++++++++++++++++++++++++++++---------- 1 file changed, 42 insertions(+), 12 deletions(-) (limited to 'mass_profile/extract_tcool.py') diff --git a/mass_profile/extract_tcool.py b/mass_profile/extract_tcool.py index 393af27..f2b7774 100755 --- a/mass_profile/extract_tcool.py +++ b/mass_profile/extract_tcool.py @@ -1,12 +1,42 @@ -#!/usr/bin/env python - -import sys -rcool=float(sys.argv[1]) - -for l in open('cooling_time.dat'): - r,t=l.split() - r=float(r) - t=float(t) - if r>rcool: - print("cooling time at %f kpc=%f Gyr"%(rcool,t)) - sys.exit(0) +#!/usr/bin/env python3 +# +# Extract the cooling time corresponding to the cooling radius. +# +# Junhua GU +# 2012-12-20 +# Weitian LI +# 2016-06-07 +# + +import argparse +import numpy as np + + +def get_tcool(data, rcool): + """ + Get the cooling time *at* the specified cooling radius. + + XXX: whether to interpolate first? + """ + radius = data[:, 0] + ctime = data[:, 1] + tcool = np.min(ctime[radius > rcool]) + return tcool + + +def main(): + parser = argparse.ArgumentParser( + description="Extract cooling time w.r.t the given cooling radius") + parser.add_argument("infile", help="input cooling time data file") + parser.add_argument("rcool", type=float, help="cooling radius (kpc)") + args = parser.parse_args() + + data = np.loadtxt(args.infile) + tcool = get_tcool(data, rcool=args.rcool) + print("cooling time at %f kpc=%f Gyr" % (args.rcool, tcool)) + print("cooling_time= %f Gyr" % tcool) + print("cooling_radius= %f kpc" % args.rcool) + + +if __name__ == "__main__": + main() -- cgit v1.2.2