本文整理汇总了Python中hyperion.model.Model.set_cylindrical_polar_grid方法的典型用法代码示例。如果您正苦于以下问题:Python Model.set_cylindrical_polar_grid方法的具体用法?Python Model.set_cylindrical_polar_grid怎么用?Python Model.set_cylindrical_polar_grid使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类hyperion.model.Model
的用法示例。
在下文中一共展示了Model.set_cylindrical_polar_grid方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: setup_model
# 需要导入模块: from hyperion.model import Model [as 别名]
# 或者: from hyperion.model.Model import set_cylindrical_polar_grid [as 别名]
def setup_model(cli):
lsun_TRUST = 3.839e33
#
# Hyperion setup:
#
model = Model()
if(cli.mode == "temperature"):
#
# Dust properties:
#
dust_properties = SphericalDust('dust_integrated_full_scattering.hdf5')
#
# Write dust properties:
#
dust_properties.write('dust_properties.hdf5')
dust_properties.plot('dust_properties.png')
#
# Specify galaxy setup:
#
hR = 4000.0*pc # [cm]
Rmax = 5.0*hR # [cm]
hz_oldstars = 350.0*pc # [cm]
hz_youngstars = 200.0*pc # [cm]
hz_dust = 200.0*pc # [cm]
zmax_oldstars = 5.0*hz_oldstars # [cm]
zmax_youngstars = 5.0*hz_youngstars # [cm]
zmax_dust = 5.0*hz_dust # [cm]
zmax = zmax_oldstars # [cm]
reff = 1600.0*pc # [cm]
n = 3.0
q = 0.6
bn = 2.0*n - 1.0/3.0 + 4.0/405.0/n + 46.0/25515.0/n/n + 131.0/1148175.0/n/n/n
temperature_oldstars = 3500.0 # [K]
temperature_youngstars = 10000.0 # [K]
temperature_bulge = 3500.0 # [K]
luminosity_oldstars = 4.0e+10*lsun_TRUST # [ergs/s]
luminosity_youngstars = 1.0e+10*lsun_TRUST # [ergs/s]
luminosity_bulge = 3.0e+10*lsun_TRUST # [ergs/s]
w_oldstars = 0.25
w_youngstars = 0.75
w_dust = 0.75
phi0_oldstars = 0.0
phi0_youngstars = 20.0 * pi/180.0
phi0_dust = 20.0 * pi/180.0
modes = 2
pitchangle = 20.0 * pi/180.0
#
# Grid setup:
#
grid_wmin = 0.0
grid_wmax = Rmax
grid_zmin = -zmax
grid_zmax = +zmax
grid_pmin = 0.0
grid_pmax = 2.0*pi
grid_dx = cli.resolution*pc
grid_dw = grid_dx # uniform resolution
grid_dz = grid_dx # uniform resolution
grid_dp = grid_dx # resolution at characteristic radial disk spatial scale hR = 4000.0 pc
grid_Nw = int((grid_wmax - grid_wmin) / grid_dw) + 1
grid_Nz = int((grid_zmax - grid_zmin) / grid_dz) + 1
if(cli.case == 1):
grid_Np = 1
if(cli.case == 2):
grid_Np = int((grid_pmax - grid_pmin) * hR / grid_dp)
if(cli.verbose):
print("Grid setup:")
print(" Grid resolution =",cli.resolution, "pc.")
print(" grid_Nw =",grid_Nw)
print(" grid_Nz =",grid_Nz)
print(" grid_Np =",grid_Np)
#grid_w = np.logspace(np.log10(grid_wmin), np.log10(grid_wmax), grid_Nw)
#grid_w = np.hstack([0., grid_w]) # add innermost cell interface at w=0
grid_w = np.linspace(grid_wmin, grid_wmax, grid_Nw+1)
grid_z = np.linspace(grid_zmin, grid_zmax, grid_Nz+1)
grid_p = np.linspace(grid_pmin, grid_pmax, grid_Np+1)
model.set_cylindrical_polar_grid(grid_w, grid_z, grid_p)
#
# Dust density and sources setup:
#
rho_oldstars = np.zeros(model.grid.shape)
rho_youngstars = np.zeros(model.grid.shape)
#.........这里部分代码省略.........
示例2: run_thermal_hyperion
# 需要导入模块: from hyperion.model import Model [as 别名]
# 或者: from hyperion.model.Model import set_cylindrical_polar_grid [as 别名]
def run_thermal_hyperion(self, nphot=1e6, mrw=False, pda=False, \
niterations=20, percentile=99., absolute=2.0, relative=1.02, \
max_interactions=1e8, mpi=False, nprocesses=None):
d = []
for i in range(len(self.grid.dust)):
d.append(IsotropicDust( \
self.grid.dust[i].nu[::-1].astype(numpy.float64), \
self.grid.dust[i].albedo[::-1].astype(numpy.float64), \
self.grid.dust[i].kext[::-1].astype(numpy.float64)))
m = HypModel()
if (self.grid.coordsystem == "cartesian"):
m.set_cartesian_grid(self.grid.w1*AU, self.grid.w2*AU, \
self.grid.w3*AU)
elif (self.grid.coordsystem == "cylindrical"):
m.set_cylindrical_polar_grid(self.grid.w1*AU, self.grid.w3*AU, \
self.grid.w2)
elif (self.grid.coordsystem == "spherical"):
m.set_spherical_polar_grid(self.grid.w1*AU, self.grid.w2, \
self.grid.w3)
for i in range(len(self.grid.density)):
if (self.grid.coordsystem == "cartesian"):
m.add_density_grid(numpy.transpose(self.grid.density[i], \
axes=(2,1,0)), d[i])
if (self.grid.coordsystem == "cylindrical"):
m.add_density_grid(numpy.transpose(self.grid.density[i], \
axes=(1,2,0)), d[i])
if (self.grid.coordsystem == "spherical"):
m.add_density_grid(numpy.transpose(self.grid.density[i], \
axes=(2,1,0)), d[i])
sources = []
for i in range(len(self.grid.stars)):
sources.append(m.add_spherical_source())
sources[i].luminosity = self.grid.stars[i].luminosity * L_sun
sources[i].radius = self.grid.stars[i].radius * R_sun
sources[i].temperature = self.grid.stars[i].temperature
m.set_mrw(mrw)
m.set_pda(pda)
m.set_max_interactions(max_interactions)
m.set_n_initial_iterations(niterations)
m.set_n_photons(initial=nphot, imaging=0)
m.set_convergence(True, percentile=percentile, absolute=absolute, \
relative=relative)
m.write("temp.rtin")
m.run("temp.rtout", mpi=mpi, n_processes=nprocesses)
n = ModelOutput("temp.rtout")
grid = n.get_quantities()
self.grid.temperature = []
temperature = grid.quantities['temperature']
for i in range(len(temperature)):
if (self.grid.coordsystem == "cartesian"):
self.grid.temperature.append(numpy.transpose(temperature[i], \
axes=(2,1,0)))
if (self.grid.coordsystem == "cylindrical"):
self.grid.temperature.append(numpy.transpose(temperature[i], \
axes=(2,0,1)))
if (self.grid.coordsystem == "spherical"):
self.grid.temperature.append(numpy.transpose(temperature[i], \
axes=(2,1,0)))
os.system("rm temp.rtin temp.rtout")
示例3: IsotropicDust
# 需要导入模块: from hyperion.model import Model [as 别名]
# 或者: from hyperion.model.Model import set_cylindrical_polar_grid [as 别名]
kabs = data[:,1].copy()[::-1]
ksca = data[:,2].copy()[::-1]
chi = kabs + ksca
albedo = ksca / chi
d = IsotropicDust(nu, albedo, chi)
nr = 10
np = 10
nz = 10
r = arange(nr)*au/2
p = arange(np)/(np-1.)*2*pi
z = (arange(nz)-(float(nz)-1)/2)*au/1
m.set_cylindrical_polar_grid(r, z, p)
dens = zeros((nr-1,np-1,nz-1)) + 1.0e-17
m.add_density_grid(dens, d)
source = m.add_spherical_source()
source.luminosity = lsun
source.radius = rsun
source.temperature = 4000.
m.set_n_photons(initial=1000000, imaging=0)
m.set_convergence(True, percentile=99., absolute=2., relative=1.02)
m.write("test_cylindrical.rtin")