def readPlanetCom(): """function that read a 'planet.com' file and return a planetcom object """ try: planetcomfile = open('planet.com','r') except IOError: print("Warning: The file 'planet.com' does not exist") return -1 lines = planetcomfile.readlines() # En fortran on peut aussi noter les puissances de 10 via un "d", ce qui n'est pas accepté en python. lines = [line.split(':')[0].replace('d','e') for line in lines] planetcomfile.close() m = map(float,lines[0].split()) a = map(float,lines[1].split()) e = map(float,lines[2].split()) I = map(float,lines[3].split()) is_I_damping = map(bool,map(int,lines[4].split())) pfd = map(bool,map(int,lines[5].split())) pfo = map(bool,map(int,lines[6].split())) accretion = map(bool,map(int,lines[7].split())) accretion_parameter = map(float,lines[8].split()) maximum_mass = map(float,lines[9].split()) smoothing = map(float,lines[10].split()) region_excluded = map(float,lines[11].split()) planetcomobject = planetcom(m=m, a=a, e=e, I=I, is_I_damping=is_I_damping, pfd=pfd, pfo=pfo, accretion=accretion, accretion_parameter=accretion_parameter, maximum_mass=maximum_mass, smoothing=smoothing, region_excluded=region_excluded) return planetcomobject
def readPlanetCom(): """function that read a 'planet.com' file and return a planetcom object """ try: planetcomfile = open('planet.com', 'r') except IOError: print("Warning: The file 'planet.com' does not exist") return -1 lines = planetcomfile.readlines() # En fortran on peut aussi noter les puissances de 10 via un "d", ce qui n'est pas accepté en python. lines = [line.split(':')[0].replace('d', 'e') for line in lines] planetcomfile.close() m = map(float, lines[0].split()) a = map(float, lines[1].split()) e = map(float, lines[2].split()) I = map(float, lines[3].split()) is_I_damping = map(bool, map(int, lines[4].split())) pfd = map(bool, map(int, lines[5].split())) pfo = map(bool, map(int, lines[6].split())) accretion = map(bool, map(int, lines[7].split())) accretion_parameter = map(float, lines[8].split()) maximum_mass = map(float, lines[9].split()) smoothing = map(float, lines[10].split()) region_excluded = map(float, lines[11].split()) planetcomobject = planetcom(m=m, a=a, e=e, I=I, is_I_damping=is_I_damping, pfd=pfd, pfo=pfo, accretion=accretion, accretion_parameter=accretion_parameter, maximum_mass=maximum_mass, smoothing=smoothing, region_excluded=region_excluded) return planetcomobject
az_res.append( int(2 * pi / ((parcom.rmax - parcom.rmin) / (parcom.rmin * rad_res[-1]))) + 1) return zip(planetcom.m, zip(rad_res, az_res)) if __name__ == '__main__': parcom(rmin=0.6, rmax=2.5, aspect_ratio=0.05, flaring_index=0.e0, density=2.e-3, density_exponent=-0.5e0, wd_rint=0.75e0, wd_rout=2.3e0).write() test = readParCom() test.write() m = [2 * (i + 1) * 3e-6 for i in range(5)] a = [1 + i * 0.2 for i in range(5)] e = [0.01 for i in range(5)] I = [1. + 0.2 * i for i in range(5)] planetcom(m, a, e, I).write() test = readPlanetCom() test.write() print(getResolution())
# we round the value to the next positive integer. rad_res.append(int((parcom.rmax - parcom.rmin) / (x_s / CELL_NUMBER)) + 1) # We want to have square cells at the inner edge. It's not very important, # but if we care about azimuthal res, square cells at inner edge is important az_res.append(int(2 * pi / ((parcom.rmax - parcom.rmin) / (parcom.rmin * rad_res[-1]))) + 1) return zip(planetcom.m, zip(rad_res,az_res)) if __name__=='__main__': parcom(rmin=0.6, rmax=2.5, aspect_ratio=0.05, flaring_index=0.e0, density=2.e-3, density_exponent=-0.5e0, wd_rint=0.75e0, wd_rout=2.3e0).write() test=readParCom() test.write() m = [2 * (i + 1) * 3e-6 for i in range(5)] a=[1 + i * 0.2 for i in range(5)] e=[0.01 for i in range(5)] I=[1. + 0.2*i for i in range(5)] planetcom(m, a, e, I).write() test = readPlanetCom() test.write() print(getResolution())