Examples:
$ python ch13_universe_model.py .35 .35
"""

from __future__ import print_function, division
from helpers import start_parameter
from math import fabs, exp, sqrt, log, pow, log10, pi, sin, tan, cos

print('Astrophysics with a PC : UNIVERSE MODEL')
print('--------------------------------------------------------')
print('')
print('-------Minimal solution program--------')
print('')
print('Input of of the parameters : ')
s = start_parameter('sigma(0) : ', 1)
q = start_parameter('q(0)     : ', 2)

# this for omputes the past (era=0) and the future (era=1)
for era in [0, 1]:
  x = .0
  y = 1.0
  z = 1.0
  ctn = 1

  print('')
  # select the time step
  if era == 0:
    dx = -.02
    print('Computations for the past')
  else:
  """
  return -g * m * d / pow(r, 2)

# some physical constants used in the program :
g = 6.673e-8
m0 = 2e33
r0 = 6.96e10
a = 6.01e22

print('Astrophysics with a PC : WHITE DWARF')
print('--------------------------------------------------------')
print('')
print('-------Minimal solution program--------')
print('')
print('Input of initial conditions and model parameters : ')
rhc  = start_parameter('Log10 of the central density : ', 1)
drkm = start_parameter('Stepsize in km               : ', 2)

# central values of the physical variables
rhoc = pow(10, rhc)
dr = 100000.0 * drkm
print('')
m = .0
r = .0
xc = pow(rhoc / 1964000.0, 1 / 3.0)
pc = a * f(xc)
i = 0

# display heading of the table with the results
print(' i      r          Mr        log(P)     log(rho)       x')
  """
  q = .7104 - .1331 * exp(-3.4488 * tau)
  return teff * pow(.75 * (tau + q), .25)

# some physical constants used in the program :
g = 6.673e-8
a = 7.56464e-15
r = 8.314e7

print('Astrophysics with a PC : STELLAR MODEL')
print('--------------------------------------------------------')
print('')
print('-------Minimal solution program--------')
print('')
print('Input of initial conditions and model parameters : ')
teff = start_parameter('Effective temperature         : ', 1)
gs   = start_parameter('Surface gravit.accel.(log10)  : ', 2)
mu   = start_parameter('Average mean molecular weight : ', 3)
gs = pow(10, gs)

# displat heading of main table
print('')
print(' i     tau        T        Pg         Pr         d        k        ge       z(km)')

# compute central value of physical quantities
tau = .0
d = 1e-13
t = temp(tau, teff)
pg = r * d * t / mu
pr = radpress(t)
kk = absorp(t, d)
  """
  return sqrt(pow(x + 1 - mu, 2) + pow(y, 2))

def vxy(x, y, mu):
  """evaluates potential energy fucntion V(x,y) at point (x,y)
  """
  return (1 - mu) / r1(x, y, mu) + mu / r2(x, y, mu) + (pow(x, 2) + pow(y, 2)) / 2

print('Astrophysics with a PC : EQUIPOTENTIAL CURVES')
print('--------------------------------------------------------')
print('')
print('-------Minimal solution program--------')
print('')
print('Input of initial conditions and parameters : ')
print('')
mu = start_parameter('Mass parameter mu         : ', 1)
x  = start_parameter('Initial conditions : x(0) : ', 2)
y  = start_parameter('                     y(0) : ', 3)

k = vxy(x, y, mu)
print('Potential constant K = {: 11.7f}'.format(k))

# Ask user in which direction to move
drc = start_parameter('Enter 1 to compute Eq.curve as y(x), 2 to compute Eq.curve as x(y)', 4)

if drc == '1':
  dx = start_parameter('stepsize dx = ', 5)
else:
  dy = start_parameter('stepsize dy = ', 5)

# here starts main cycle
Example:
$ python ch02_comet_tails.py .5 .95 1 .03
"""

from __future__ import print_function
from helpers import start_parameter
from math import cos, sin, sqrt, pi

print('Astrophysics with a PC : COMET TAILS')
print('------------------------------------')
print('')
print('-------Minimal solution program--------')
print('')
print('Input parameters and orbital elements : ')
ap  = start_parameter('Perihelion distance (A.U.)      : ', 1)
ecc = start_parameter('Eccentricity of the comet orbit : ', 2)
mu  = start_parameter('Parameter 1 - mu                : ', 3)
g   = start_parameter('Outflow velocity                : ', 4)
p = ap * (1 + ecc) # (4)

for i in range(-4, 5):
  # this for-loop considers 9 positions of the comet in its orbit
  # CLS

  # Compute position of the nucleus and parameters A1, A2 and A3
  nu = 0.5 * i
  r = p / (1 + ecc * cos(nu)) # (6)
  x = r * cos(nu) # (7)
  y = r * sin(nu) # (8)
  a1 = (sqrt(2) / sqrt(mu)) * r # (13a)
def vxy(x, y, mu):
    """evaluates potential energy fucntion V(x,y) at point (x,y)
  """
    return (1 - mu) / r1(x, y, mu) + mu / r2(x, y,
                                             mu) + (pow(x, 2) + pow(y, 2)) / 2


print('Astrophysics with a PC : EQUIPOTENTIAL CURVES')
print('--------------------------------------------------------')
print('')
print('-------Minimal solution program--------')
print('')
print('Input of initial conditions and parameters : ')
print('')
mu = start_parameter('Mass parameter mu         : ', 1)
x = start_parameter('Initial conditions : x(0) : ', 2)
y = start_parameter('                     y(0) : ', 3)

k = vxy(x, y, mu)
print('Potential constant K = {: 11.7f}'.format(k))

# Ask user in which direction to move
drc = start_parameter(
    'Enter 1 to compute Eq.curve as y(x), 2 to compute Eq.curve as x(y)', 4)

if drc == '1':
    dx = start_parameter('stepsize dx = ', 5)
else:
    dy = start_parameter('stepsize dy = ', 5)
Exemplo n.º 7
0
    q = .7104 - .1331 * exp(-3.4488 * tau)
    return teff * pow(.75 * (tau + q), .25)


# some physical constants used in the program :
g = 6.673e-8
a = 7.56464e-15
r = 8.314e7

print('Astrophysics with a PC : STELLAR MODEL')
print('--------------------------------------------------------')
print('')
print('-------Minimal solution program--------')
print('')
print('Input of initial conditions and model parameters : ')
teff = start_parameter('Effective temperature         : ', 1)
gs = start_parameter('Surface gravit.accel.(log10)  : ', 2)
mu = start_parameter('Average mean molecular weight : ', 3)
gs = pow(10, gs)

# displat heading of main table
print('')
print(
    ' i     tau        T        Pg         Pr         d        k        ge       z(km)'
)

# compute central value of physical quantities
tau = .0
d = 1e-13
t = temp(tau, teff)
pg = r * d * t / mu
Examples:
$ python ch07_polytropes.py 1.5 .05 2 3
"""

from __future__ import print_function, division
from helpers import start_parameter
from math import fabs, exp, sqrt, log, pow, log10

print('Astrophysics with a PC : POLYTROPES')
print('--------------------------------------------------------')
print('')
print('-------Minimal solution program--------')
print('')
print('Input of initial conditions and parameters : ')
n    = start_parameter('polytrope index : ', 1)
dr   = start_parameter('stepsize        : ', 2)
mass = start_parameter('mass            : ', 3)
rad  = start_parameter('radius          : ', 4)

# show heading of main table of results on screen
print('  i   x = r/rn       f           h        log(P/Pc)   log(d/dC)     l*mr')

# compute polytrope results in center of the star
x = 0
f = 1
h = 0
i = 0
p = pow(f, n + 1)
d = pow(f, n)
m = -x * x * h
    fz1 = fz3

  # multiple the two integrals with the other factors of the equations
  # of motion
  kr = -4 * pi * sqrt(1 - e * e) / pow(e, 3) * dc * r * k1
  kz = -4 * pi * sqrt(1 - e * e) / pow(e, 3) * dc * z * k2

  return [r, z, e, fe, a0, dc, kr, kz]

print('Astrophysics with a PC : INDIVIDUAL STELLAR ORBITS')
print('--------------------------------------------------------')
print('')
print('-------Minimal solution program--------')
print('')
print('Input of initial conditions and parameters : ')
r   = start_parameter('Initial conditions :  r(0) : ', 1)
z   = start_parameter('Initial conditions :  z(0) : ', 2)
u   = start_parameter('Initial conditions :  u(0) : ', 3)
v   = start_parameter('Initial conditions :  v(0) : ', 4)
vt0 = start_parameter('Initial conditions : vt(0) : ', 5)

# initialize galaxy model parameters
dt = .001
e = .99
dc = 11613.5
a0 = 2.8
fe = 1.4292567

# initialize main cycle
h = r * vt0
past = 0
  for the components of the velocity for input values of x,y,u and v, and mu
  """
  r1 = sqrt((x - mu) * (x - mu) + y * y)
  r2 = sqrt((x + 1 - mu) * (x + 1 - mu) + y * y)
  fu = -(1 - mu) * (x - mu) / r1**3 - mu * (x + 1 - mu) / r2**3 + x + 2 * v
  fv = -(1 - mu) * y / r1**3 - mu * y / r2**3 + y - 2 * u
  return [fu, fv]

print('Astrophysics with a PC : RESTRICTED THREEBODY PROBLEM')
print('--------------------------------------------------------')
print('')
print('-------Minimal solution program--------')
print('')
print('Input of initial conditions and parameters : ')
print('')
mu = start_parameter('Mass parameter mu         : ', 1)
x  = start_parameter('Initial conditions : x(0) : ', 2)
y  = start_parameter('                     y(0) : ', 3)
u  = start_parameter('                     u(0) : ', 4)
v  = start_parameter('                     v(0) : ', 5)
dt = start_parameter('Time step                 : ', 6)

t = dt
n = 20
ni = 1
ch = ''

while ch == '':
  print('   i       t          x            y             u            v')
  print('')
  fx = u
  fy = v
  s = sqrt(pow(u, 2) + pow(v, 2))
  rho = datm(y)
  fu = -k1 * rho * s * u * exp(-1 / 3.0 * log(m))
  fv = -k1 * rho * s * v * exp(-1 / 3.0 * log(m)) - 980
  fm = -k2 * rho * pow(s, 3) * exp(2 / 3.0 * log(m))
  return [fx, fy, fu, fv, fm, s]

print('Astrophysics with a PC : METEOR')
print('------------------------------------')
print('')
print('-------Minimal solution program--------')
print('')
print('Input of initial conditions and parameters : ')
y   = start_parameter('Initial height (km)             : ', 1)
u   = start_parameter('Initial horizontal speed (km/s) : ', 2)
v   = start_parameter('Initial vertical speed (km/s)   : ', 3)
m   = start_parameter('Initial mass (gram)             : ', 4)
k1  = start_parameter('Parameter K1  : ', 5)
k2  = start_parameter('Parameter K2  : ', 6)
tau = start_parameter('Parameter tau : ', 7)

# transform input data x, y, u and v from km to cm
# and make sure that y is negative
y = y * 100000.0
x = .0
u = u * 100000.0
v = -1 * fabs(v * 100000.0)
minit = m
t = .0
    return -g * m * d / pow(r, 2)


# some physical constants used in the program :
g = 6.673e-8
m0 = 2e33
r0 = 6.96e10
a = 6.01e22

print('Astrophysics with a PC : WHITE DWARF')
print('--------------------------------------------------------')
print('')
print('-------Minimal solution program--------')
print('')
print('Input of initial conditions and model parameters : ')
rhc = start_parameter('Log10 of the central density : ', 1)
drkm = start_parameter('Stepsize in km               : ', 2)

# central values of the physical variables
rhoc = pow(10, rhc)
dr = 100000.0 * drkm
print('')
m = .0
r = .0
xc = pow(rhoc / 1964000.0, 1 / 3.0)
pc = a * f(xc)
i = 0

# display heading of the table with the results
print(' i      r          Mr        log(P)     log(rho)       x')
Examples:
$ python ch06_dynamical_parallax.py 78.8 17.6 .3 1.7 .06 .3
"""

from __future__ import print_function, division
from helpers import start_parameter
from math import fabs, exp, sqrt, log, pow

print('Astrophysics with a PC : DYNAMICAL PARALLAX')
print('--------------------------------------------------------')
print('')
print('-------Minimal solution program--------')
print('')
print('Input of the observed data : ')
p = start_parameter('Orbital period (years)                     : ', 1)
a = start_parameter('Apparent distance (arc seconds)            : ', 2)
mv1 = start_parameter('Apparent magnitude of first component      : ', 3)
mv2 = start_parameter('Apparent magnitude of second component     : ', 4)
bc1 = start_parameter('Bolometric magnitude of first component    : ', 5)
bc2 = start_parameter('Bolometric magnitude of second component   : ', 6)
print('')
print('  i       m1        m2      dist       par       Mb1       Mb2')

eps = .01  # pre-defined constant in text

# select starting values for the two masses
m1 = 1.0
m2 = 1.0
stopcrit = 0
i = 1
      variables a (atomic fraction) and m (molecular fraction)
  """
  fa = 1 - a - m - k1 * pow(m, 2) * a
  if m > .0:
    fm = k1 * pow(m, 2) * a + k2 * (a - 1 + m) * pow(m, n)
  else:
    fm = 0
  return [fa, fm]

print('Astrophysics with a PC : GALACTIC STAR FORMATION')
print('--------------------------------------------------------')
print('')
print('-------Minimal solution program--------')
print('')
print('Input of initial conditions and parameters : ')
m  = start_parameter('Initial fraction of molecular clouds : ', 1)
a  = start_parameter('Initial fraction of atomic gas       : ', 2)
n  = start_parameter('Parameter n  : ', 3)
k1 = start_parameter('Parameter k1 : ', 4)
k2 = start_parameter('Parameter k2 : ', 5)
print('')

s = 1 - a - m
dx = .02

# heading of main cycle
print('  i      x         a         m           s')

# prepare for main cycle
x = 0
ni = 1
  """
    r1 = sqrt((x - mu) * (x - mu) + y * y)
    r2 = sqrt((x + 1 - mu) * (x + 1 - mu) + y * y)
    fu = -(1 - mu) * (x - mu) / r1**3 - mu * (x + 1 - mu) / r2**3 + x + 2 * v
    fv = -(1 - mu) * y / r1**3 - mu * y / r2**3 + y - 2 * u
    return [fu, fv]


print('Astrophysics with a PC : RESTRICTED THREEBODY PROBLEM')
print('--------------------------------------------------------')
print('')
print('-------Minimal solution program--------')
print('')
print('Input of initial conditions and parameters : ')
print('')
mu = start_parameter('Mass parameter mu         : ', 1)
x = start_parameter('Initial conditions : x(0) : ', 2)
y = start_parameter('                     y(0) : ', 3)
u = start_parameter('                     u(0) : ', 4)
v = start_parameter('                     v(0) : ', 5)
dt = start_parameter('Time step                 : ', 6)

t = dt
n = 20
ni = 1
ch = ''

while ch == '':
    print('   i       t          x            y             u            v')
    print('')
  """
    fa = 1 - a - m - k1 * pow(m, 2) * a
    if m > .0:
        fm = k1 * pow(m, 2) * a + k2 * (a - 1 + m) * pow(m, n)
    else:
        fm = 0
    return [fa, fm]


print('Astrophysics with a PC : GALACTIC STAR FORMATION')
print('--------------------------------------------------------')
print('')
print('-------Minimal solution program--------')
print('')
print('Input of initial conditions and parameters : ')
m = start_parameter('Initial fraction of molecular clouds : ', 1)
a = start_parameter('Initial fraction of atomic gas       : ', 2)
n = start_parameter('Parameter n  : ', 3)
k1 = start_parameter('Parameter k1 : ', 4)
k2 = start_parameter('Parameter k2 : ', 5)
print('')

s = 1 - a - m
dx = .02

# heading of main cycle
print('  i      x         a         m           s')

# prepare for main cycle
x = 0
ni = 1
Examples:
$ python ch06_dynamical_parallax.py 78.8 17.6 .3 1.7 .06 .3
"""

from __future__ import print_function, division
from helpers import start_parameter
from math import fabs, exp, sqrt, log, pow

print('Astrophysics with a PC : DYNAMICAL PARALLAX')
print('--------------------------------------------------------')
print('')
print('-------Minimal solution program--------')
print('')
print('Input of the observed data : ')
p   = start_parameter('Orbital period (years)                     : ', 1)
a   = start_parameter('Apparent distance (arc seconds)            : ', 2)
mv1 = start_parameter('Apparent magnitude of first component      : ', 3)
mv2 = start_parameter('Apparent magnitude of second component     : ', 4)
bc1 = start_parameter('Bolometric magnitude of first component    : ', 5)
bc2 = start_parameter('Bolometric magnitude of second component   : ', 6)
print('')
print('  i       m1        m2      dist       par       Mb1       Mb2')

eps = .01 # pre-defined constant in text

# select starting values for the two masses
m1 = 1.0
m2 = 1.0
stopcrit = 0
i = 1
a = 7.56464e-15
rgas = 8.314e7
xx = .7
yy = .27
zz = .03
mu = .618238
m0 = 2e33
r0 = 6.96e10
l0 = 3.83e33

print('Astrophysics with a PC : STELLAR MODEL')
print('--------------------------------------------------------')
print('')
print('-------Minimal solution program--------')
print('')
mtot = start_parameter(
    'Input parameter : Approximation of total mass (2 - 15) : ', 1)
print('')

# show heading of main table
print(
    'i    Mr/Mo    log(p)   log(T)   log(d)   r/r0     log(E)   log(L)     x        f        h'
)

w = log10(mtot)

# central values of temperature and density
tc = 7.23937 + .2724354 * w - .0401771 * w * w
tc = pow(10, tc)
dc = 2.27899 - 1.658707 * w + .29329095 * w * w
dc = pow(10, dc)
Exemplo n.º 19
0
    # multiple the two integrals with the other factors of the equations
    # of motion
    kr = -4 * pi * sqrt(1 - e * e) / pow(e, 3) * dc * r * k1
    kz = -4 * pi * sqrt(1 - e * e) / pow(e, 3) * dc * z * k2

    return [r, z, e, fe, a0, dc, kr, kz]


print('Astrophysics with a PC : INDIVIDUAL STELLAR ORBITS')
print('--------------------------------------------------------')
print('')
print('-------Minimal solution program--------')
print('')
print('Input of initial conditions and parameters : ')
r = start_parameter('Initial conditions :  r(0) : ', 1)
z = start_parameter('Initial conditions :  z(0) : ', 2)
u = start_parameter('Initial conditions :  u(0) : ', 3)
v = start_parameter('Initial conditions :  v(0) : ', 4)
vt0 = start_parameter('Initial conditions : vt(0) : ', 5)

# initialize galaxy model parameters
dt = .001
e = .99
dc = 11613.5
a0 = 2.8
fe = 1.4292567

# initialize main cycle
h = r * vt0
past = 0
Exemplo n.º 20
0
    fy = v
    s = sqrt(pow(u, 2) + pow(v, 2))
    rho = datm(y)
    fu = -k1 * rho * s * u * exp(-1 / 3.0 * log(m))
    fv = -k1 * rho * s * v * exp(-1 / 3.0 * log(m)) - 980
    fm = -k2 * rho * pow(s, 3) * exp(2 / 3.0 * log(m))
    return [fx, fy, fu, fv, fm, s]


print('Astrophysics with a PC : METEOR')
print('------------------------------------')
print('')
print('-------Minimal solution program--------')
print('')
print('Input of initial conditions and parameters : ')
y = start_parameter('Initial height (km)             : ', 1)
u = start_parameter('Initial horizontal speed (km/s) : ', 2)
v = start_parameter('Initial vertical speed (km/s)   : ', 3)
m = start_parameter('Initial mass (gram)             : ', 4)
k1 = start_parameter('Parameter K1  : ', 5)
k2 = start_parameter('Parameter K2  : ', 6)
tau = start_parameter('Parameter tau : ', 7)

# transform input data x, y, u and v from km to cm
# and make sure that y is negative
y = y * 100000.0
x = .0
u = u * 100000.0
v = -1 * fabs(v * 100000.0)
minit = m
t = .0
Example:
$ python ch02_comet_tails.py .5 .95 1 .03
"""

from __future__ import print_function
from helpers import start_parameter
from math import cos, sin, sqrt, pi

print('Astrophysics with a PC : COMET TAILS')
print('------------------------------------')
print('')
print('-------Minimal solution program--------')
print('')
print('Input parameters and orbital elements : ')
ap = start_parameter('Perihelion distance (A.U.)      : ', 1)
ecc = start_parameter('Eccentricity of the comet orbit : ', 2)
mu = start_parameter('Parameter 1 - mu                : ', 3)
g = start_parameter('Outflow velocity                : ', 4)
p = ap * (1 + ecc)  # (4)

for i in range(-4, 5):
    # this for-loop considers 9 positions of the comet in its orbit
    # CLS

    # Compute position of the nucleus and parameters A1, A2 and A3
    nu = 0.5 * i
    r = p / (1 + ecc * cos(nu))  # (6)
    x = r * cos(nu)  # (7)
    y = r * sin(nu)  # (8)
    a1 = (sqrt(2) / sqrt(mu)) * r  # (13a)