How to find the mass donor in Master thesis by Remco Groenendijk

How to find the mass donor in
accreting double white dwarf binaries?
Master thesis by
Remco Groenendijk
Supervisor
Dr. Paul Groot
18 August 2004
Department of Astrophysics
University of Nijmegen
Toernooiveld 1
6525 ED Nijmegen
The Netherlands
Archived under code AF 10
Typeset using LATEX
Email: [email protected]
1
1
Summary
In this thesis a theoretical model for interacting double white dwarf binaries is
constructed. These are systems containing two white dwarfs orbiting each other.
These stars are so close to each other that mass is being transferred between
them. They are also called AM CVn stars, named after the first system of this
kind to be detected.
These systems emit a very specific spectrum. The observations of periodically changing radial velocity signatures in a helium dominated accretion disk
tell us that they are binaries and that the donor star must have mainly helium
in its outer layers. Because a helium star would outshine the other components,
it is concluded that the donor is a helium white dwarf or a semi-degenerate
remnant of a giant star. In the spectrum of these systems no radiation has yet
been identified as coming from the donor. The goal of this thesis is to make
a model which can be used to predict under what circumstances and how we
can observe the donor in these kind of systems. This gives observers a handle
on how to find these objects. Once found the masses of both white dwarfs can
be measured. The anticipated mass distribution of the two components in AM
CVn stars puts strong constraints on evolutionary models of binaries.
I have constructed a model of an AM CVn star, taken a few free parameters
and have tried to find out for which values of these parameters the donor star
can be easily observed. I found that in most cases the donor star can not be
seen. It might become visible in the first ∼0.1 or ∼1 Myr of mass transfer by
irradiation coming from an impact spot of the accreted matter on the primary.
I have calculated for different white dwarf masses how long this phase lasts.
Under the most favourable conditions the donor might also be more luminous
than the accretor after ∼ 108 yr. This could happen when the donor is a helium
white dwarf and the accretor is a carbon white dwarf, because helium white
dwarfs cool more slowly than carbon white dwarfs do. But for this to happen
the heating of the accretor, as a result of mass transfer, needs to be negligible.
2
Contents
1 Summary
2
2 Introduction
2.1 The evolution of single stars . .
2.2 The evolution of binaries . . . .
2.3 The evolution of AM CVn stars
2.4 The stability of AM CVn stars
2.5 Why we look at AM CVn stars
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
4
7
8
10
11
3 Method and approach
15
3.1 Irradiation of the donor . . . . . . . . . . . . . . . . . . . . . . . 15
3.2 Time evolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.3 White dwarf cooling . . . . . . . . . . . . . . . . . . . . . . . . . 19
4 Results
23
4.1 The effect of different white dwarf masses . . . . . . . . . . . . . 24
4.2 The effect of the cooling time . . . . . . . . . . . . . . . . . . . . 28
4.3 The effect of the accretor’s spin . . . . . . . . . . . . . . . . . . . 28
5 Discussion and conclusions
32
6 Future work
34
7 Appendix
38
3
2
Introduction
In this paper I have constructed a theoretical model for double white dwarfs
with mass transfer. In this section first a short introduction is given on the
evolution of these kinds of systems, starting with evolution of single stars and
continuing with binary stars. Then the evolution of double white dwarfs with
mass transfer is discussed. Finally I explain why it is important to study these
systems in detail and how they help us to better understand binary evolution
and accretion physics.
2.1
The evolution of single stars
Stars are born out of clouds of gas. These clouds contract under their own
gravity. This happens for a spherical cloud when its mass is bigger than the
so-called Jeans Mass MJ given in units of solar masses (M¯ ) by (see for instance
Prialnik 2000 [27])
3
T2
(1)
MJ ≈ 105 √ M¯ ,
n
where T is the temperature of the cloud in Kelvin and n the number of gas
particles per m3 .
Figure 1: M16, a star forming region.
As a cloud contracts its density increases and smaller parts of the cloud
will also exceed their Jeans Mass and start contracting themselves. At first,
the gravitational energy that is released in the collapse of the cloud is radiated
away. But as the small clouds get more and more dense, they get more opaque
and the gravitational energy is converted more and more into heat. This heat
causes an outward pressure given approximately by the ideal gas law:
Pgas =
<
ρT
µ
where
4
1
1
1
+ ,
≡
µ
µI
µe
(2)
where Pgas is the gas pressure, < = 8.3 × 103 J kg−1 K−1 is the ideal gas
−1
constant, ρ the density, µ−1
I the mean atomic mass and µe the average number
of free electrons per nucleon. For solar composition µ=0.61. This pressure slows
down the contraction. But without an internal heat source, the cloud has to
keep contracting to create a pressure that balances the force of gravity. The
small cloud is then called a protostar. In the end at the center of these clouds,
depending on their mass, the density and temperature will eventually rise to
about 105 kg m−3 and 107 K. At this point hydrogen fusion starts and a new
star is born.
The fusion causes the temperature at the center of the star to remain high.
Therefore the pressure, as given by equation 2, remains high too. This stops the
contraction for a long time. The star is then said to be on the main sequence
and it remains there for about 90% of its active life. Consequently, most stars
including our Sun are on the main sequence. Hydrogen is turned into helium
and slowly the mass percentage of helium in the core increases. After hydrogen
is exhausted in the core, there is no more heat supply in the inert He-core. As
a result of that it starts to contract. This causes its temperature to increase
and hydrogen starts to burn in a shell surrounding the core. While the core is
contracting the outer layers of the star expand to giant dimensions; the star is
then called a red giant. In this process the core heats up and finally helium can
ignite returning the star to a semi-stable phase of He-core burning or the He
main sequence.
Figure 2: The Crab nebula, the remnant of a supernova that was observed
almost 1000 years ago.
After helium is exhausted, the temperature of the core can rise again if the
mantle of the star is massive enough. In practice this happens for stars that
were more massive than 8 M¯ at the start of their main sequence. Heavier and
heavier elements can fuse until finally iron is formed, after which a supernova
(SN) explosion forms a neutron star or a black hole. The amount of energy
released in a SN is huge. During a SN a single star can produce more light than
5
the entire galaxy it is in (some 1011 stars!). SN are classified observationally in
SN Type I where no hydrogen lines are observed and in Type II where there is
hydrogen present.
Most stars (the ones with mass M < 8M¯ ) do not finish this evolutionary
path. Once a carbon- oxygen-core is formed, the temperature and pressure in
the core never increases to a point where carbon can fuse and that is why the
evolution stops. Now the core could start contracting further to increase the
temperature and the pressure again to a point where carbon fusion would start.
However this doesn’t happen. The reason for this has to with the Pauli exclusion
principle.
The Pauli exclusion principle states that two fermions can not be in the
same state. This happens for instance in atoms; the outer electrons have to
have a higher quantum number for their energy, because all the lower energy
states are already filled with other electrons. The same thing can happen in a
compact star. The electrons are packed so closely together that some of them
have to have a higher energy and subsequently a higher corresponding velocity.
This causes a pressure called degeneracy pressure. This pressure can prevent a
further collapse of a stars. If a burnt-out star is supported by this pressure, it
slowly cools and fades away from our view. Such a star is called a white dwarf
(WD). Now it is easy to see why in general the radius of a WD is smaller for
a bigger mass (see equation 6). When a WD is more massive, it requires more
pressure to prevent it from collapsing. This means the electrons must have a
higher average velocity. This happens if they are packed together even more
tightly. So the WD must have a smaller radius.
The degeneracy pressure depends on the speed of the electrons. And of
course this speed can not be larger than the speed of light c. This causes a
maximum to this pressure. This maximum pressure corresponds to a maximum
WD mass. This mass is called the Chandrashekar mass ' 1.4 Solar masses
(= 1.4 M¯ ).
Figure 3: Mass distribution of DA white dwarfs, based on multichannel spectroscopy for 70 stars done by Weidemann and Koester (1984) [38]
During their lives, stars blow away a large fraction of their mass in a wind.
6
That is why it is estimated that stars with a mass up to ±8M¯ (Prialnik [27]
page 165 ) can evolve to white dwarfs. From observations it is known that the
mass distribution of white dwarfs shows a clear peak, with two tails (see figure
3). The peak is at a mass of ∼ 0.6M¯ a tail is found between 0.2M¯ and
0.4M¯ and to higher masses (> 0.6M¯ ). The first tail belongs to white dwarfs
with a helium core. Their progenitors were not heavy enough to ever ignite
helium. The peak belongs to carbon oxygen white dwarfs, whose progenitors
did ignite helium. In the final phases of their lives these stars undergo thermal
pulses caused by the alternate burning of hydrogen and helium in thin shells.
This causes a large stellar wind that blows away most of their mass and lets
them evolve to ∼ 0.6M¯ carbon white dwarfes. Finally there are some very
rare oxygen-neon-magnesium white dwarfes most of which have masses near the
Chandrashekar mass.
2.2
The evolution of binaries
In the past century our understanding of the evolution of single stars has increased dramatically. There are still some loose ends, but most evolutionary
phases, especially the main sequence, are well understood. This creates a new
opportunity for astrophysicists. Knowing that more than 50 % of all the observed stars are in a binary system (Duquennoy and Mayor 1991[3]), it is an
obvious step to go and study their evolution in more detail.
L1
M
2
~R 2
M1
a
~R 1
Figure 4: The Roche lobe; R1 and R2 are defined as the radii of spheres having
a volume equal to the volume of the corresponding Roche lobe.
The simplest binary systems are wide binary systems. These stars orbit
one another, but their separation is so large that they do not interact during
their evolution. This allows them to evolve just like two single stars. The more
interesting ones are close binary systems. In these systems the stars are so
close to each other that mass is transferred between at least once during their
evolution. A good way of understanding what happens then, is by looking at
the so-called Roche lobe of such a system (see figure 4). The heavier star has a
mass M1 and the lighter a mass M2 .
7
Looking at the system in a co-rotating frame there is a point where all the
forces exactly balance and where the potential goes through a saddle point.
This point is called the inner Langragian point (L1 ). The Roche lobe is an
equipotential line through this point. If either of the stars fills its Roche lobe,
than mass will be transferred from that star to the other. So both the heavier
as well as the lighter star can, in principle, accrete. During binary evolution
Roche lobe overflow can occur several times.
A star can fill its Roche lobe when either it expands or when its Roche lobe
shrinks. Expansion of a star can for instance occur when the star is in its red
giant phase. Shrinking of the Roche lobe occurs when the orbital separation (a)
between the stars decreases. This happens when orbital angular momentum is
lost by, for instance, magnetic braking or gravitational wave emission. There are
many evolutionary paths for binaries. Not all of these paths will be discussed
here, but just the ones leading to the formation of AM CVn stars.
The two stars in a close binary usually cannot be resolved, but the systems
still can be recognised as binaries. This is because the stars in a binary revolve
around each other. The light of the stars is then periodically Doppler shifted to
the blue (or red) if a star is coming towards (or going away from) the observer.
Another way to find semi detached binaries is looking for an accretion disk.
These disks can be found in the spectrum, because they are often hot (producing
UV or X-rays) and the profile of their emission lines has a very specific shape.
Observations tell us that the radius of the disk is about half the radius of the
Roche lobe of the primary. Very often a hot spot can be seen on the disk; this
is the spot where the stream of mass from the donor hits the disk.
2.3
The evolution of AM CVn stars
White dwarf binaries with mass transfer are also called AM CVn stars after
the first system of this kind to be detected by Humason and Zwicky (1947)
[8]. Smak (1967) [32] discovered that AM CVn shows photometric variability
with a period of about ∼18 minutes and suggested that it is a binary. Soon
after that Paczy´
nski (1967) [22] realised that this could be a semi-detached pair
of degenerate white dwarfs in which mass transfer is driven by loss of angular
momentum due to gravitational wave radiation.
Right now there are 13 of these systems known with periods varying from 5.3
to 65.1 minutes (see table 1). From the spectra of AM CVn stars, the absence of
hydrogen features strongly suggests that donors in these systems are extremely
helium rich, because for helium rich accretion discs Balmer emission lines are
stronger than He lines, even if the He/H ratio is ∼100.
Several formation scenarios have been proposed for AM CVn stars. The first
way to form an AM CVn star is discussed by Faulkner et al. (1972) [4]. They
suggested two possibilities for the helium rich donor in AM CVn: (i) a helium
star with a mass of 0.4-0.5M¯ and (ii) a helium white dwarf. The first possibility
is excluded because the helium star would dominate the spectrum and cause
the accretor to have large radial velocity variations, none of which are observed.
Thus they concluded that AM CVn stars are interacting double white dwarfs.
Compact detached double WD binaries are taken as the direct progenitors of
AM CVn stars. These detached binaries are expected to form after a common
envelope phase. In this phase the orbital distance of the system shrinks from
typically 100 R¯ to 1 R¯ (see Nelemans et al. (2001a) [16], hereafter NPVY).
8
Table 1: list of all the known and suspected AM CVn systems.
Object
Porb (s)
Reference
RX J0806
321.25 ∗ Israel et al.(2002) [10];
Ramsay, Hakala and Cropper (2002) [28]
V407 Vul
569.38 ∗ Cropper et al. (1998) [2]
ES Cet
620.26
Warner and Woudt (2002) [36]
AM CVn
1028.7
Solheim et al. (1998) [33];
Skillman et al. (1999) [31]
HP Lib
1102.7
O’Donoghue et al. (1994) [21];
Patterson et al. (2002) [25]
CR Boo
1471.3
Wood et al. (1987) [37];
Patterson et al. (1997) [23]
KL Dra
1500 ∗
Wood et al. (2002) [39]
V803 Cen
1612.0
Patterson et al. (2000) [24]
CP Eri
1701.2
Abbott et al. (1992) [1]
‘2003aw’
2040 ∗
Woudt and Warner (2003) [41]
SDSS J1240-01 2241
Roelofs private communication
GP Com
2974
Nather, Robbinson and Stover (1981) [15];
Marsh, Horne and Rosen (1991) [11]
CE-315
3906
Ruiz et al. (2001) [29];
Woudt and Warner (2001) [40]
Notes: ∗ It is not sure if these periods are orbital periods. They might
be the super hump periods.
The timescale in which the stars spiral in is estimated to be .1 year (Iben (1993)
[9] and references therein). After this phase the two WDs cool and spiral in as
a result of gravitational wave emission. The AM CVn star is formed when the
lighter WD fills its Roch lobe and mass transfer starts. By then the secondary
is expected to be cool enough (see section 3.3) that it can be approximated with
a zero temperature WD.
A second way to form a helium transferring binary in the right period range
was first outlined by Savonije et al. (1986) [30]. They describe a system with
a neutron star as an accretor, but the idea remains the same. Consider a lowmass, non-degenerate helium burning star, with a white dwarf companion. If
the components are close enough, loss of angular momentum via gravitational
wave radiation may result in Roche lobe overflow before helium exhaustion in
the stellar core. When the mass of the helium star decreases below ∼0.2M ¯ ,
core helium burning stops and the star becomes semi-degenerate at a period of
∼10 minutes. This causes the mass-radius relation to invert, which means (see
section 3.2 and equation 24) that their orbital period will start to increase as a
result of mass loss. Such a system will also have the observed characteristics of
an AM CVn star.
A third way to form an AM CVn star is to form it out of a cataclysmic
variable (CV). This possibility was dismissed by NPVY, because its probability
would be very low. Recently Podsiadlowski et al. (2002) [26] have argued that
the probability might not be so low after all. A CV is a binary consisting of a
WD and a main sequence star (or a red giant). This formation route requires
that a normal H-rich star (∼1M¯ ) starts to transfer mass near the end of or just
9
after hydrogen core burning. Such systems become ultra compact binaries with
a period as short as ∼10 minutes where the secondary is initially non-degenerate
and hydrogen-rich, but increasingly becomes degenerate and helium-rich during
its evolution.
2.4
The stability of AM CVn stars
Most of the AM CVn stars are expected to have a helium accretion disk, but at
periods of a few minutes the size of the stars becomes comparable to the orbital
distance. Marsh and Steeghs (2002) [12] have argued that V407 Vul is a system
where the mass stream of the donor hits the accretor directly. To be able to
get a small period, the donor must fill its Roche lobe very late. So one needs
a small radius for the donor. The donors of the first formation scenario (the
detached double WD route) are colder and thus smaller. Therefore the double
white dwarf route is expected to produce the highest number of systems in a
direct impact phase. It is instructive to see the relative sizes of AM CVn stars
for two typical cases (See figure 5). The WDs are assumed to be cold, so that
the zero temperature mass-radius relation (equation 6) can be used.
Sun
R= 7.0 x 10
10
cm
a = 5.8 x 10 9 cm
P= 3 x 102
WD1
s
WD 2
WD1
Earth
a = 3.3 x 10 10 cm
P= 4 x 103 s
WD 2
a = 3.8 x 10 10cm
P= 2.6 x 10 6 s = 1 month
Moon
Figure 5: The relative sizes of AM CVn systems with masses: M1 = 0.6M¯ and
M2 = 0.1M¯ . Their orbital distances a and periods P are plotted in the figure.
Once mass transfer starts, it can be either stable or unstable. The first type
of instability occurs when the accretion is super-Eddington. When the mass
stream hits the accretor, it will produce radiation. The radiation pressure can
prevent more mass from falling in. This amount of luminosity is called the
Eddington luminosity. When that happens a common envelope will form in
which the stars spiral in and finally merge. The Eddington accretion rate is
given by (Marsh 2004 [13])
8πGmp cM1
,
M˙ Edd =
σT (φL1 − φa )
10
(3)
where G is the gravitational constant, mp the mass of a proton, c the speed
of light, M1 the mass of the accretor, σT the Thomson cross-section of the
electron and (φL1 − φa ) the potential drop between the inner Langragian point
and the accretor. In figure 7 the systems that are stable against the Eddington
instability are the ones below the dot-dashed line.
Mass loss can cause the orbital distance to increase or decrease. This depends on the speed at which the angular momentum can be transferred back
to the orbit. When the orbital distance decreases this leads to a second kind of
instability. Marsh et al. 2004 [13] calculate the criteria for stability and they
parameterize the speed at which the angular momentum is fed back to the orbit
by the synchronisation timescale τs . τs is the timescale on which the accretor
synchronises its spin to the orbit of the system. Figure 6 and 7 summarize the
results of Marsh et al. 2004 [13]. The conclusion is that the number of systems,
that remain stable after the onset of mass transfer is highly dependent on τ s ,
which is poorly known. This means that there are still large uncertainties in
modelling the expected number of AM CVn stars.
Figure 6: This figure is from Marsh et al.(2004) [13]. The criteria for stability
for different values of M1 and M2 are plotted. In the upper left part mass
transfer is always unstable. In the lower right part always stable. In between
the stability of the mass transfer depends on the value of τs . Lines that indicate
the stable region for different values of τs are plotted as dotted lines with the
value of τs in years next to them.
2.5
Why we look at AM CVn stars
As mentioned in the last section astrophysicists are trying to develop evolutionary models for all kinds of binaries. Currently, uncertainties in population
models are estimated to be as high as an order of magnitude. Processes such
as common envelope evolution and the onset of mass transfer are poorly understood. Unfortunately these phases last a very short time, so there is almost no
chance of finding a system in such a phase. The only thing that can be done
to improve our understanding of these processes is observing systems that are
11
Figure 7: This figure is from Marsh et al. (2004) [13]. Figure 6 is overplotted
with the masses of double white dwarfs at birth from the binary population
models of NPVY that survive in the case of strong coupling (τs = 0). The surviving models do not reach the limit of guaranteed stability in this case (upper
dashed curve) because super-Eddington accretion becomes the more stringent
constraint (as marked by the dot-dashed line).
going to go into, and have left these phases. AM CVn stars are clearly recognisable end products of binary evolution. So they can systematically be searched
for. Finding the total number of AM CVn systems up to a certain magnitude
puts serious constraints on evolutionary models. If the mass ratio for AM CVn
stars could be determined as well, the constraints would be even stronger.
Up until now no direct emission coming from the donor has ever been measured. If a spectral line could be found in which the donor dominates the
spectrum, the velocity of the donor could be found by looking at the Doppler
shift in that line. With that velocity the mass estimates for both the components of the system can be improved. That is why the goal of my thesis has
been to model how we can find a signal from the donor in the spectrum of an
AM CVn star.
Some AM CVn stars might be progenitors of SN explosions. If the mass
transfer in an AM CVn star pushes the accretor over the Chandrasekhar mass,
then the accretor will collapse. Because there is no more hydrogen in the system,
the explosion will be detected as a SN Type Ia. If it is known how many AM
CVn stars should explode in a SN Type Ia explosion, we know how many of
these events still have to be explained.1
Another thing that should be noted is that AM CVn stars are strong sources
of gravitational waves. The energy loss by means of gravitational radiation is
1 Supernovae Type Ib and Ic also exist, it is expected that these types of explosions occur
when giant stars collapse. These stars have such a strong wind, that they have no more
hydrogen envelopes left at the moment they collapse. That is why they are still detected as a
SN type I.
12
Figure 8: The emission of gravitational waves.
given by the formula (see for instance Paczy´
nski (1967) [22])
32 G4 (M1 M2 )2 (M1 + M2 )
dEgr
=−
dt
5 c5
a5
(4)
for the two masses M1 , M2 moving on a circular orbit with a separation a. c
is the speed of light and G the gravitational constant. This means that heavy
objects with a short orbital distance are the strongest source of gravitational
waves.
Although compact binaries with neutron stars or black holes are even stronger
sources, it turns out that these kind of binaries are far more rare. Consequently
they are on average much further away from us. The detection of gravitational
waves has recently become a hot topic, because of the Laser Interferometer
Space Antenna (LISA). LISA will be the first gravitational wave detector in
space. Its launch is planned for 2012 and its total lifetime is estimated to be
five years. Nelemans et al. (2001c) [17] and Nelemans (2004) [19] find that the
majority of the systems that can be detected by LISA will be double WD binaries: They expect LISA to find ∼11.000 resolved detached double white dwarfs
as well as ∼11.000 resolved AM CVn systems.
AM CVn stars also provide a unique opportunity to study accretion physics.
Accretion disks show a wide variety of (partly) unexplained phenomena such as
dwarf novae outbursts and jets (see figure 9). That is why they are a hot topic
in astrophysics. Many models for these disks are being made. AM CVn stars
provide an excellent opportunity to test these models. Their orbital period is
convenient for observations. And most of all because almost all accretion disks
are dominated by hydrogen, AM CVn stars provide a unique opportunity to
test disk models on helium disks.
Another topic that can be studied with AM CVn stars are super humps.
The small orbital distance in AM CVn stars allows the secondary to perturb
the disk. The disk will become eccentric and will start to precess. This motion
13
Figure 9: A simulation of a disk with jets around a black hole made by Rob
Hynes.
results in super humps in the lightcurve. Simulations of Hirose and Osaki (1990,
1993) [6] and [7] have shown that there is a relation between the orbital (P orb )
and the super hump period (Pprec ) given by:
1+q
Pprec
=A
,
Porb
q
(5)
where A ' 3.73 for systems of q < 0.1. Where q is the mass ratio of the system
(M2 /M1 ). This is why some observed periods might be the super hump period
(see footnote of table 1).
14
3
Method and approach
The goal of my research has been to find a method in which the donor of an
AM CVn star can be identified observationally, because in all the AM CVn
systems there has never been a signal found coming from the donor. So I want
to know what kind of spectrum the donor emits and how that spectrum can be
distinguished from the other components of the system. The donor in AM CVn
systems is rather cool, large and near the accretor. That is why irradiation by
for instance an impact spot might make it visible. I have written a program
that simulates such a system to see when this happens (The complete code is
added in the appendix). I will explain what it does here; first in an overview
and afterwards in more detail.
In subsection 3.1 I show how with two white dwarf masses the Roche lobe and
orbital period of a binary can be calculated. With this information I calculate
where the mass stream from the donor hits the primary and how much energy is
released in that process. Then I calculate how much of the energy gets irradiated
on to the donor.
In subsection 3.2 I show how those parameters evolve with time. I calculate
the mass transfer rate, and with that the values of M1 and M2 as a function of
time.
In order to calculate the evolution of AM CVn systems we first need the
masses and temperatures of the WDs at the birth of the AM CVn system.
There are many possibilities for these numbers (see figure 7 and 13). Therefore
I have tracked the evolution of AM CVn systems for a number of different initial
parameters. Apart from those different cases I distinguish between two extreme
cases:
1. The radiation that is falls on both the primary and the secondary is completely absorbed and causes them to heat up. So I assume that the atmosphere is perfectly conducting all the heat to the core.
2. The radiation that is falls on both the primary and the secondary is processed completely locally and re-emitted there. No heat is conducted to
the cores, so the WDs do not heat up.
Using these cases I finally show in subsection 3.3 how I model the cooling of
both the accretor and the donor.
3.1
Irradiation of the donor
First I model an AM CVn system in the direct impact phase. I assume that
the WDs of the AM CVn system have formed out of a pair of detached double
WDs (the first formation channel; see section 2.3). This means that we can use
Eggleton’s zero temperature mass-radius relation (equation 24 of Marsh et al.
(2004) [13]), to calculate a radius R for a given mass M :
R
R¯
=
0.0114
"
"µ
M
MCh
× 1 + 3.5
µ
¶− 23
M
Mp
15
−
¶− 32
M
MCh
¶ 32 # 21
µ
¶−1 #− 23
µ
+
M
Mp
,
(6)
Figure 10: The ballistic stream as plotted by my program for M1 = 0.5 M¯ and
M2 = 0.25 M¯ , 60,000 years after the onset of mass transfer. The irradiated
surface on the donor has been filled.
where MCh = 1.44M¯ and Mp = 0.00057M¯ . This relation is valid for all white
dwarf masses in the range 0 < M < MCh . We find the orbital separation a
using an equation for the Roche lobe quoted by Warner (1995) ([35] equation
2.5c):
1
2
R2 (0.6q 3 + log(1 + q 3 )
.
(7)
a=
2
0.49q 3
With this a plot of the Roche lobe is made. The orbital period P is given by
Kepler’s third law:
4π 2 a3
P2 =
.
(8)
G(M1 + M2 )
To find out where the stream of mass hits the accretor the trajectory of this
stream is calculated. Besides the two gravitational forces F~g of both stars, there
is also a coriolis force F~cor and a centrifugal force F~cen working on a particle of
the stream of mass m. This is because the Roche lobe is taken in a co-rotating
frame. The forces are given by:
GM2 mˆ
r2
GM1 mˆ
r1
+
,
F~g =
2
2
r1
r2
F~cor = −2m~
ω × ~v ,
F~cen = −~
ω × (~
ω × ~r), (9)
where ~r1 and ~r2 are vectors from the centers of the accretor and the donor to
the particle, ~r is the vector from the center of mass to the particle, v its velocity
r
(~v = d~
~ is its angular velocity (~v = ω
~ × ~r).
dt ) and ω
The mass-stream is then plotted and the place of the impact spot on the
primary is calculated. We want to see if the donor gets irradiated by the impact
spot. To do this we assume that all the energy is converted into radiation at
that spot and that that radiation then spreads out in all directions. This means
for instance that we assume that half of the radiation falls on the accretor.
16
We now calculate how many of the 360◦ are covered by the donor. This
gives a percentage of the radiation that falls on the donor. We approximate the
Figure 11: The projection of the irradiated surface onto a sphere.
donor by a sphere that is partly being irradiated. We can use a y-parameter to
indicate upto how far this sphere is being irradiated. Setting y to y = 0 at the
center of the donor (see figure 11) we get
y=
tan(δ − α/2)
,
tan(α/2)
(10)
where α is the angle in which the donor is seen in the sky from the impact spot
and δ is the angle in which the irradiated surface of the donor is seen in the sky
from the impact spot (figure 11). So y runs from y = 1 for complete irradiation
to y = −1 if there is no irradiation. Now we can calculate the percentage Q of
the cross section of the donor that is being irradiated. This is given by:
Z
2 yp
Q=
1 − y 02 dy 0 .
(11)
π −1
In this way we approximate the projection with a flat circle. This is a good
approximation, because the distance d between the center of the donor and the
impact spot is more than three times the radius of the donor R2 for common
mass ratios (see figure 11). Now we can find out what percentage of the radiation
emitted at the impact spot is being absorbed by the donor. Taking the radiation
to be emitted in X-rays this percentage is given by:
η=
Pab
(1 − A)QπR22
=
,
Pem
4πd2
(12)
where Pab is the absorbed power on the donor and Pem the emitted power of
the radiation from the impact spot, d is the distance between the two stars and
A is the X-ray albedo. Albedo is the fraction of light that is reflected by a body
or surface. It is taken to be constant and equal to 0.4 which roughly agrees with
Milgrom and Salpeter (1974) [14].
The emitted power is calculated using the difference in potential φ between
the start (at L1) and the end of the ballistic stream (at the impact spot on the
17
accretor), because the motion of the particles in the stream is well approximated
by a free-fall. Setting the potential energy U equal to the kinetic energy K, we
get for the velocity of the particles in the stream at the impact point in the
frame of the Rochelobe:
p
vabs = φ(L1 ) − φ(impact spot).
(13)
If the accretor is spinning at an angular velocity ω1 , then the relative velocity
of the particles with respect to the accretor, vrel , will be less than their absolute
velocity. Taking the direction of the normal on the primary at the impact spot
ˆ we can decompose the ~vabs and ~vrel in
as rˆ and the perpendicular direction φ,
these directions:
~vabs
=
~vrel
=
ˆ
vabs r rˆ + vabs φ φ,
ˆ
vrel r rˆ + vrel φ φ.
(14)
(15)
The components of ~vrel are calculated by:
vrel φ
=
vrel r
=
vabs φ − ω1 R1 ,
vabs r
(16)
(17)
and the emitted power follows from:
2
,
Pab = M˙ vrel
(18)
with M˙ as the mass transfer rate. As a result of mass transfer the accretor will
be spun up, but the tidal coupling to the orbit will cause it to spin down. The
strength of this coupling is not well known (Marsh et al. (2004) [13]). That is
why ω1 is taken as a free parameter that can vary between 0 and its break-up
spin rate ω1 max , given by:
s
GM1
.
(19)
ω1 max =
R13
3.2
Time evolution
I have shown how to calculate the amount of radiation from the impact spot
that reaches the donor. Now I will show how that radiation changes with time.
The evolution of a binary is driven by the loss of angular momentum from
the orbit. The orbital angular momentum is given by:
r
Ga
Jorb =
M1 M2 ,
(20)
M
with M = M 1 + M 2. This angular momentum slowly decreases. So taking the
mass to be conserved (M˙ 1 = −M˙ 2 ) we get:
1 a˙
d log(Jorb )
J˙orb
M˙ 2
=
= (1 − q)
+
,
dt
J
M2
2a
(21)
with q = M2 /M1 . The size of the Roche lobe can be approximated by (Paczy´
nski
(1967) [22]):
¶1
µ
a˙
1 M˙ 2
R˙ 2
M2 3
= +
.
(22)
⇒
R2 ' 0.46a
M
R2
a 3 M2
18
Filling in
a˙
a
for equation 22 in equation 21 gives:
à ! ·
¸−1
ζ(M2 ) 5
J˙
M˙ 2
×
,
=
+ −q
M2
J
2
6
(23)
where ζ(M2 ) is given by:
ζ(M2 ) =
R˙ 2 M2
d log(R2 )
.
=
˙
R 2 M2
d log(M2 )
(24)
Using equation 6, it follows that:
ζ2 (M )
=
1
−
3
"µ
M
Mch
¶− 32
−
µ
M
Mch
¶ 23 #−1 µ
M
Mch
¶− 32
"
µ
¶ #−1 " µ
¶#
¶− 23 µ
¶− 23 µ
2
7 M
M
Mp
Mp
×
+ 1 + 3.5
(25)
.
+
+
3
Mp
M
3 Mp
M
Assuming that the angular momentum is only lost from the orbit by the emission
of gravitational waves we get (Landau and Lifshitz (1971) [20]):
à ! à !
J˙
J˙
32 G3 M1 M2 M
.
(26)
=
=−
J
J
5 c5
a4
orb
With these numbers equation 23 gives the mass transfer rate for each value of
M1 and M2 and the evolution an AM CVn system can be calculated. 2 Knowing
the mass transfer rate as a function of the masses allows for the calculation of
the masses as a function of time. The mass transfer rate does not depend on
direct impact or disk accretion in our treatment where the angular momentum
of the primary is being neglected. The evolution of the period as a function of
time is given in figure 12.
In the next few sections I will often plot the orbital period on the X-axis.
There is a one-on-one correspondence between the orbital period and the age of
an AM CVn star for given masses. This is plotted in figure 12.
3.3
White dwarf cooling
To find most probable values for the masses and temperatures WDs at the
onset of mass transfer, models of NPVY and Tutukov (1996) [34] are used.
These models expect these values to vary of a large range see figures 7, 13 and
14.
Therefore we take 3 different combinations of masses and 3 different ages of
the WDs at the birth of the AM CVn star. We use figure 7 to get reasonable
masses. First we assume, that the value of τs ' 1000 yr. We then take two
extreme cases of AM CVn stars, that would still survive the onset of mass
2 A more thorough treatment is given in Marsh et al. (2004) [13], where the stability of
the mass transfer is considered and the spin of the accretor is also taken into account. The
angular momentum stored in this spin is however small. That is why it is neglected here. It
is however very important for the stability of the mass transfer at the moment of Roche lobe
overflow.
19
Figure 12: The evolution of the orbital period for three different sets of masses
at the start of mass transfer: M1 = 0.2 M¯ and M2 = 0.1 M¯ (solid), M1 = 0.5
M¯ and M2 = 0.25 M¯ (dashed), M1 = 1.0 M¯ and M2 = 0.2 M¯ (dotted).
t = 0 yr when the mass transfer starts.
transfer: M1 = 0.2 M¯ , M2 = 0.1 M¯ for low masses and M1 = 1.0 M¯ ,
M2 = 0.2 M¯ for high masses. If we assume that τs ' 0.1 year then most
systems will have masses in the range: M1 = 0.5 M¯ , M2 = 0.25 M¯ . So from
now on I will only track the evolution of these three systems.
To get the temperatures of the WDs at the birth of the AM CVn system
we use figure 13 from Nelemans (private communication) and figure 14. I take
systems that are 1 Myr, 0.1 Gyr and 1 Gyr old at the start of mass transfer.
In order to get a temperature of the WDs at these different ages, I use an
approximation of the cooling curves of Hansen 1999 [5] made by Nelemans et
al. (2004) [19] as shown in figure 15. These curves are a rough translation of
fig. 10 of Hansen (1999) [5].
The heat content U of a WD is stored in the nondegenerate ions.
U∝
TM
,
Amp
(27)
where T is the temperature and M the mass of the WD, A is the baryon number
and mp the proton mass. This means that helium cores (baryon number A=4)
contain more heat than do carbon or oxygen cores (A=12 and 16), thus helium
core WDs are brighter at the same age.
The luminosity of a star is related to its temperature by:
L = 4πR2 σT 4
⇒
1
T = αL 4 ,
(28)
where σ = 5.67 × 10−8 Jm−2 s−1 K−4 is Stefan-Boltzmann‘s constant and α =
1
(4πR2 σ) 4 . If a WD is not heated by accretion, then:
κα − 3 ˙
L 4 L,
−L = U˙ = κT˙ =
4
20
(29)
0.4
1e+10
1e+09
tcool (yr)
m2 (Msun)
0.3
0.2
1e+08
1e+07
0.1
1e+06
0
0.5
1
M1 (Msun)
1.5
2
0
1e+10
1e+10
1e+09
1e+09
tcool (yr)
tcool (yr)
0
1e+08
1e+07
1e+06
1e+06
0.1 0.2 0.3 0.4 0.5 0.6
q = m2/M1
0.2
m2 (Msun)
0.3
0.4
0.5
1
M1 (Msun)
1.5
2
1e+08
1e+07
0
0.1
0
Figure 13: This figure, from the models from NPVY, shows the time the WD
have been cooling, tcool , at the moment that mass transfer starts.
Figure 14: This figure is taken from Tutukov and Yungelson (1996) [34]. The
birthrate of AM CVn stars as a function of the age of the secondaries is shown.
21
where κ is the proportionality factor in equation 27 (U = κT ). Equation 29 is
solved by:
µ
¶− 34
3
L=
,
(30)
t+C
ακ
where C is an integration constant. This solution is fitted to the cooling curves
of Hansen 1999 [5] by Nelemans (2004) [19] as:
log(L) = log(Lmax ) − 1.33log(t),
(31)
where L is given in units of L¯ and t in years. log(Lmax ) is fitted by3 :
½
9 − (0.9 − MWD )
for MWD > 0.5M¯ .
log(Lmax ) =
9.4 − 1.33(0.45 − MWD ) for MWD < 0.5M¯ .
Because carbon WDs stars their lifes warmer the helium WDs, the luminosity
of carbon WDs is cut off at log(L/L¯ )= 2 and for helium WDs at log(L/L¯ )=
0.5. From this fit it follows that:
µ ¶− 34
3
.
(32)
Lmax =
ακ
This is how the WDs cool if there is accretional heating (case 2 in section 3).
If the WDs heat up (case 1) then equation 29 gives:
κα − 3 ˙
L 4L
P − L = U˙ =
4
⇒
3
4 − 34
(P (t) − L) L 4 ,
L˙ = Lmax
3
(33)
where P (t) is the power of the accretional heat in units of L¯ that heats up the
core of the WD for a given time t. This is then integrated numerically to find
L as a function of age t for the accretor. Taking for the accretor:
½
1/2Pem (t) in the direct impact phase.
P (t) =
1/2Pbl (t) in the disk phase.
Where Pbl is the power released in the boundary layer. Pbl is calculated by:
µ
¶
Pbl = 1/2Pacc = 1/2M˙ φ(L1 ) − φ(acc) ,
(34)
where Pacc is total accretion power. We assume that half of it is released in the
disk and the other half is released in the boundary layer. φ(acc) is the potential
taken on the surface of the accretor.
For the donor the accretional heating is taken to be Pab , which is taken as the
irradiation from the impact spot in de direct impact phase and the irradiation
from the hot spot on the disk in the disk phase. The disk radius is taken to be
half the radius of the Roche lobe of the accretor.
3 no cristalization effects are taken into account, which would release a latent heat. This is
because that happens only after roughly 5 Gyr
22
Figure 15: This figure is taken from Nelemans et al. (2004) [19]. It presents the
cooling curves of white dwarfs.
4
Results
In the introduction I have explained what AM CVn stars are and why it is
important to look at them. I have made a model describing the evolution of
an AM CVn star. In the theoretical background I explained the formulae I
have used and the assumptions I have made. In this section the results will be
discussed.
In my program I have taken a few free parameters:
• The accretion can cause the WDs to warm up or not.
Case 1 : The WDs heat up as a result of accretion.
Case 2 : The WDs do not heat up as a result of accretion.
• The masses of the WDs at the onset of mass transfer. As explained in
section 3.3, I have looked at the evolution of these three systems:
1. M1 = 0.2 M¯ and M2 = 0.1 M¯ .
2. M1 = 0.5 M¯ and M2 = 0.25 M¯ .
3. M1 = 1.0 M¯ and M2 = 0.2 M¯ .
• The time tcool the WDs have been cooling at the moment the AM CVn
star is formed (see figure 14 and 13).
1. tcool = 106 yr.
2. tcool = 108 yr.
3. tcool = 109 yr.
• The spin of the accretor ω1 is taken to vary between 0 and ω1 max
1. ω1 = 0 s−1 .
2. ω1 = 1/2 ω1 max .
3. ω1 = ω1 max .
23
4.1
The effect of different white dwarf masses
The goal of my thesis is to find the secondary in an AM CVn star. So I want
to know in which systems they are relatively bright. Making plots for the three
systems with and without heating up of the WDs (case 1 and case 2) we get
6 plots: figure 16, 17, 18, 19, 20 and 21 (taking tcool = 108 yr and ω1 = 0
s−1 ). The luminosity of the accretor LWD1 , the luminosity of the donor LWD2 ,
the accretion power released at the impact spot Pem and the accretion power
received by the secondary Pab are plotted against time in the direct impact
phase. In the disk phase Pem is replaced by the power released at the hot spot
and Pab is then the power of the hot spot that falls on the donor. In the disk
phase the power released in the boundary layer Pbl is also plotted. The power
released in the accretion disk can be found in the same figures too. This is
because the power released in the disk (including the power released at the hot
spot on the disk) is taken equal to Pbl .
Looking at these plots some conclusions can be drawn for all plots: The
irradiation of the donor in the direct impact phase lasts only a short time,
because the impact spot moves behind the accretor as seen from the donor.
When that happens, Pab = 0 L¯ so log10 (Pab /L¯ ) = −∞. Using this, it is easy
to see in the plots when the disk phase starts, by looking at the sharp increase
in Pab (see figure 16). A lighter systems stays in the direct impact phase much
longer (figure 16 and 17), the third system (M1 = 1.0 M¯ and M2 = 0.2 M¯ ,
figure 20 and 21) even starts with a disk. It is also clear that even in the most
favourable scenario the heating up of the donor is negligible, but the heating up
of the accretor can be very important.
Looking at the first system (M1 = 0.2 M¯ and M2 = 0.1 M¯ , figure 16 and
17), the donor is always going to be less luminous than the accretor, because
both the donor and the accretor are taken to be made up out of helium. This
means that the heavier star (the accretor) will cool slowest. I still see two
possibilities how one might find the donor in such a system:
Until 106 years the irradiated part of the donor might be seen when the
impact spot is blocked from our view by the accretor. This part of the donor
could heat up locally and produce a different spectrum and different spectral
lines as the accretor.
After 108 years the donor is not a lot less luminous than the other components and it might be seen. But it is still going to be hard to distinguish the
spectrum of donor in the total spectrum or the system, because the spectrum
of the accretor will resemble that of the donor and it will be more luminous.
Looking at the second system (M1 = 0.5 M¯ and M2 = 0.25 M¯ , figure 18
and 19), we see that without heating up, the donor is brighter than the accretor
at all ages. This is because helium WDs cool slower than carbon WDs (The
WDs are carbon WDs if their mass is bigger than 0.5 M¯ ). After 108 years the
luminosity of the donor will also be comparable to that of the accretor even if
there is a moderate heating of the accretor. The chance of seeing a hot irradiated
surface (like in the first system) seems very small, because of the short lifespan
of the direct impact phase.
Looking at the third system (M1 = 1.0 M¯ and M2 = 0.2 M¯ ), figure 20 and
21), we see that without heating up the donor is not brighter than the accretor.
Although the donor is made of helium and thus cools more slowly, the large
mass of the accretor has the same effect on its cooling. Even if the accretor is
24
Figure 16: The power that the different components of an AM CVn system emit
as a function of time. LWD1 (solid), LWD2 (dashed), Pem (dash-dot-dot-dot),
Pab (dotted), and Pbl (dot-dash-dot-dash).
For: case 1, M1 = 0.2 M¯ and M2 = 0.1 M¯ , tcool = 108 yr and ω1 = 0 s−1 .
Figure 17: The power that the different components of an AM CVn system emit
as a function of time. LWD1 (solid), LWD2 (dashed), Pem (dash-dot-dot-dot),
Pab (dotted), and Pbl (dot-dash-dot-dash).
For: case 2, M1 = 0.2 M¯ and M2 = 0.1 M¯ , tcool = 108 yr and ω1 = 0 s−1 .
25
Figure 18: The power that the different components of an AM CVn system emit
as a function of time. LWD1 (solid), LWD2 (dashed), Pem (dash-dot-dot-dot),
Pab (dotted), and Pbl (dot-dash-dot-dash).
For: case 1, M1 = 0.5 M¯ and M2 = 0.25 M¯ , tcool = 108 yr and ω1 = 0 s−1 .
Figure 19: The power that the different components of an AM CVn system emit
as a function of time. LWD1 (solid), LWD2 (dashed), Pem (dash-dot-dot-dot),
Pab (dotted), and Pbl (dot-dash-dot-dash).
For: case 2, M1 = 0.5 M¯ and M2 = 0.25 M¯ , tcool = 108 yr and ω1 = 0 s−1 .
26
Figure 20: The power that the different components of an AM CVn system emit
as a function of time. LWD1 (solid), LWD2 (dashed), Pem (dash-dot-dot-dot),
Pab (dotted), and Pbl (dot-dash-dot-dash).
For: case 1, M1 = 1.0 M¯ and M2 = 0.2 M¯ , tcool = 108 yr and ω1 = 0 s−1 .
Figure 21: The power that the different components of an AM CVn system emit
as a function of time. LWD1 (solid), LWD2 (dashed), Pem (dash-dot-dot-dot),
Pab (dotted), and Pbl (dot-dash-dot-dash).
For: case 2, M1 = 1.0 M¯ and M2 = 0.2 M¯ , tcool = 108 yr and ω1 = 0 s−1 .
27
heated up only a little, it is still going to be very hard to see a sign of the donor
in the spectrum of this system.
4.2
The effect of the cooling time
If the WDs are older when mass transfer starts they will be cooler. In order
to see this effect I have made a plot of the second system (M1 = 0.5 M¯ and
M2 = 0.25 M¯ ; the most promising system to find the donor). For that system
I have made plots for a cooling time of 106 years and 109 years. With and
without letting the stars heat up (case 1 and case 2) with ω1 = 0. See figure
22, 23, 24 and 25. The plots for tcool = 108 years are already plotted in figure
18 and 19
If the AM CVn star is born after 106 years of cooling of the WDs, then the
WDs are still luminous at the moment mass transfer starts. Because carbon
WDs start their lifes warmer the accretor will be the most luminous star. In
the case when the accretion only moderately heats up the WDs, the donor will
be more luminous after ∼ 107 years. This could happen even sooner if the
accretor is much older than the donor at the onset of mass transfer. If that
is also the case, then the donor will always be the most luminous star of the
system. These seem to be the most favourable circumstances to find the donor.
Note that the cooling curves of the donor in figure 22 and 23 are not accurate
before t = 107 years, because the intrinsic luminosity of helium WDs is cut off
at log10 (L/L¯ ) = −0.5 (see section 3.3).
If both, the donor and the accretor, are 109 years old at the onset of mass
transfer, then the best chances of finding the donor are in a very old system
t & 108 yr and only if the accretor does not heat up significantly.
4.3
The effect of the accretor’s spin
If the accretor is spun up, then the accretion flow will hit the accretor at a
relatively lower velocity producing less energy. In this we assume that the
energy released depends n the velocity difference between the stream and the
WD surface. Two systems are plotted, both for the second system, ((M1 = 0.5
M¯ and M2 = 0.25 M¯ ) with tcool = 108 years only with heating up (case 1)
for ω1 = 1/2ω1 max (figure 26) and ω1 = ω1 max (figure 27). The figure with
ω1 = 0 s−1 is already plotted (figure 18).
In this model a higher ω1 only has an effect as long as the system is in the
direct impact phase. It decreases the radiation produced at the impact spot
most, when the mass stream hits the donor at an angle of almost 90◦ with
respect to the normal to the surface of the accretor. So this effect is most
important when the impact spot is on the back side of the accretor as seen from
the donor. This means that it will hardly influence the amount of irradiation
on the donor. It also hardly seems to influence the heating of the accretor.
Therefore it can be concluded that the effect of spin of the accretor in finding
the donor is negligible.
28
Figure 22: The power that the different components of an AM CVn system emit
as a function of time. LWD1 (solid), LWD2 (dashed), Pem (dash-dot-dot-dot),
Pab (dotted), and Pbl (dot-dash-dot-dash).
For: case 1, M1 = 0.5 M¯ and M2 = 0.25 M¯ , tcool = 106 yr and ω1 = 0 s−1 .
Figure 23: The power that the different components of an AM CVn system emit
as a function of time. LWD1 (solid), LWD2 (dashed), Pem (dash-dot-dot-dot),
Pab (dotted), and Pbl (dot-dash-dot-dash).
For: case 2, M1 = 0.5 M¯ and M2 = 0.25 M¯ , tcool = 106 yr and ω1 = 0 s−1 .
29
Figure 24: The power that the different components of an AM CVn system emit
as a function of time. LWD1 (solid), LWD2 (dashed), Pem (dash-dot-dot-dot),
Pab (dotted), and Pbl (dot-dash-dot-dash).
For: case 1, M1 = 0.5 M¯ and M2 = 0.25 M¯ , tcool = 109 yr and ω1 = 0 s−1 .
Figure 25: The power that the different components of an AM CVn system emit
as a function of time. LWD1 (solid), LWD2 (dashed), Pem (dash-dot-dot-dot),
Pab (dotted), and Pbl (dot-dash-dot-dash).
For: case 2, M1 = 0.5 M¯ and M2 = 0.25 M¯ , tcool = 109 yr and ω1 = 0 s−1 .
30
Figure 26: The power that the different components of an AM CVn system emit
as a function of time. LWD1 (solid), LWD2 (dashed), Pem (dash-dot-dot-dot),
Pab (dotted), and Pbl (dot-dash-dot-dash).
For: case 1, M1 = 0.5 M¯ and M2 = 0.25 M¯ , tcool = 108 yr and ω1 = 0.5ω1 max .
Figure 27: The power that the different components of an AM CVn system emit
as a function of time. LWD1 (solid), LWD2 (dashed), Pem (dash-dot-dot-dot),
Pab (dotted), and Pbl (dot-dash-dot-dash).
For: case 1, M1 = 0.5 M¯ and M2 = 0.25 M¯ , tcool = 108 yr and ω1 = ω1 max .
31
5
Discussion and conclusions
In order to find out when the donor can be seen in AM CVn stars I have made
a model for the evolution of this kind of system, to determine how the spectrum
of such a system changes during its evolution. I have looked at the effects of
different parameters: heating up of the WDs as a result of accretion, different
masses of the WDs, different ages of the WDs at the start of mass transfer and
at the effect of the spin of the accretor on the luminosity of the system. This
gives a large range of parameters in which an AM CVn star can be found. I
have made a model to predict out how and when the donor star can be best
found. There are two cases in which this happens.
In very young systems (t . 105 or 106 yr), where the system is in a direct
impact phase (see figure 6 for the possible mass ratios for this phase) and the
impact spot is still facing the donor. The X-rays produced at the impact spot
will irradiate the donor with ionizing radiation. This could change the spectrum
coming from this part of the donor and produce different spectral lines. If there
is a spectral line in which the donor dominates the spectrum, then the speed
of the donor can be found by looking at the red- and blue-shift of that line. It
is clear from figure 6 that the number of systems in a direct impact phase is
highly sensitive to the value of τs . A small value for τs would make it easier to
find the donor in this way. It is important to note that a large part of the time
that a system is in a phase of direct impact, the impact spot is not facing the
donor (see for instance figure 19). This will significantly decrease the chances
of finding the donor in this way. In this same time span the donor might also
be more luminous than the accretor if it is a very young star and the accretor
is an old one. The accretor can be cold if it has not had enough time to warm
up or if is not warming up effectively.
Another promising scenario to find the donor is in systems that contain a
carbon WD as an accretor and an helium WD as a donor. If the accretor is
also not much heavier than the donor (not more then 3 to 4 times) then the
donor will have a larger heat content than the accretor and thus cool more
slowly (see equation 27). Therefore a system with a large value for q would be
favourable for the detection of the donor in this way, but the existence of these
kind of systems depends strongly on the value of τs . A small value of τs would
also increase the chances of finding the donor in this way. In most cases the
spectrum of the donor will not be observable, because due to the mass transfer
the donor will have a similar composition in its surface as the accretor.
There are two aspects that have not been modelled, that I expect to have a
major influence on the luminosity of an AM CVn star. In old AM CVn systems
both of these effects would decrease the luminosity of the donor much further.
The first aspect is that for the cooling of both the accretor and the donor I have
taken their heat content to be constant. Since mass is lost the heat content will
in fact change, especially for the donor, whose mass relatively changes the most.
The second aspect is that I have not taken the effect of compressional heating
into account. As the masses of the WDs change, so does their radius. Since the
donor grows when mass is lost, it will cool. Likewise the accretor will heat up.
Some other aspects that might also play a roll, but have not been considered
in the model are: i) Other possible formation scenarios. If the donor is formed
out of a helium burning star, then the donor will still be warm when its core
burning stops. At the same time the accretor might also be warm as a result of
32
past accretion. Note that the mass radius relation for the donor will be different.
The system will start as an AM CVn star at a period of ∼ 10 minutes, which
is for most combinations of WD masses already in the disk phase. ii) The tidal
heating of the donor, deformation by the gravity of the accretor, might heat
it up. I expect that this effect is not very strong, because these forces will be
zero if the donor is synchronised to the orbit. iii) The rapid spin of the accretor
might smear out the impact spot. If the smearing is small it will move the
impact spot further out of the view of the secondary. In the most extreme case
the spin of the accretor could smear the impact spot over a narrow band on its
equator, moving it back into sight again for the donor. The spin of the accretor
would also decrease the light produced in the disk phase and thus lower the
luminosity released in the boundary layer.
33
6
Future work
The next step would be to add compressional heating and changing heat contents
to this model. The compressional energy can be estimated by using the fact that
for a star of mass M and radius R, with a constant density, the total internal
energy U is given by (see Prialnik (2000) [27] section 2.4):
U =−
3 GM 2
.
5 R
(35)
Together with the mass-radius relation (equation 6), this gives the total internal
energy of a WD for a given mass. Also a better estimate for the efficiency at
which the accretion heats up the core of the accretor is required. We must
calculate how far the accretion stream penetrates the atmosphere of the accretor.
This can be estimated by looking at where the atmospheric pressure is equal
to the ram pressure of the stream. Also the thickness of the atmosphere and
the efficiency at which heat is conducted through the atmosphere need to be
calculated. All this is required to check if the donor could in any scenario
outshine the accretor after ∼ 108 yr.
In order to find out how the donor can be seen in the direct impact phase,
it is important to find out what kind of emission lines are produced in a helium
atmosphere which gets irradiated by X-rays. The absorbtion for helium of Xrays should be calculated. This will depend on the angle at wich the irradiation
hits the atmosphere. To calculate this, the spatial plot of my program (see
figure 10) can be used. In order to estimate what kind of X-rays are produced
at the impact spot, observations of polars can be used, or a theoretical model
of the impact spot can be made.
34
References
[1] Abbott, Timothy M. C.; Robinson, Edward L.; Hill, Gary J.; Haswell, Carole A., 1992, ”Two unusual cataclysmic variables at high Galactic latitude
- CP Eridani and AL Comae”, ApJ, 399, 680
[2] Cropper M.; Harrop-Allin M. K.; Mason K. O., Mittaz J. P. D.; Potter
S. B.; Tamsay G., 1998, ”RX J1914.4+2456 - The first double-degenerate
polar?”, MNRAS, 293, L57
[3] Duquennoy, A.; Mayor, M. 1991, ”Multiplicity among solar-type stars in
the solar neighbourhood. II - Distribution of the orbital elements in an
unbiased sample”, A & A, 248, 485
[4] Faulkner, John; Flannery, Brian P.; Warner, Brian, 1972, ”UltrashortPeriod Binaries. II. HZ 29 (=AM CVn): a Double-White Semidetached
Postcataclysmic Nova?” ApJ, 175, 79
[5] Hansen, Brad M. S., 1999, ”Cooling Models for Old White Dwarfs”, ApJ,
520, 680
[6] Hirose, Masahito; Osaki, Yoji, 1990, ”Hydrodynamic simulations of accretion disks in cataclysmic variables - Superhump phenomenon in SU UMa
stars”, PASJ, 42, 135
[7] Hirose, Masahito; Osaki, Yoji, 1993, ”Superhump periods in SU Ursae
Majoris stars: Eigenfrequency of the eccentric mode of an accretion disk”,
PASJ, 45, 595
[8] Humason, M., Zwicky, F., 1947, ”A Search for Faint Blue Stars.”, ApJ,
105, 85
[9] Iben, Icko, Jr.; Livio, Mario, 1993, ”Common envelopes in binary star
evolution”, PASP, 105, 1373
[10] Israel G. L. et al., 2002, ”RX J0806.3+1527: A double degenerate binary
with the shortest known orbital period (321s)”, A&A, 386, L13
[11] Marsh, T. R.; Horne, Keith; Rosen, Simon, 1991, ”Evidence for CNO processed material in the accretion disk of GP Comae”, ApJ, 366, 535
[12] Marsh, T. R.; Steeghs, D., 2002, ”V407 Vul: a direct impact accretor”,
MNRAS, 331, L7-L11
[13] Marsh, T. R.; Nelemans, G.; Steeghs, D., 2004, ”Mass transfer between
double white dwarfs”, MNRAS, 350, 113-128
[14] Milgrom, M.; Salpeter, E. E., 1974 ”Models for X-ray illuminated atmospheres”, ApJ, 196, 583-588.
[15] Nather, R. E.; Robinson, E. L.; Stover, R. J., 1981, ”The twin-degenerate
interacting binary G61-29”, ApJ, 244, 269
[16] Nelemans, G.; Yungelson, L. R.; Portegies Zwart, S. F.; Verbunt, F., 2001,
”Population synthesis for double white dwarfs I. Close detached systems”,
A&A, 365, 491-507
35
[17] Nelemans, G.; Yungelson, L. R.; Portegies Zwart, S. F., 2001, ”The gravitational wave signal from the Galactic disk population of binaries containing
two compact objects”, A&A, 375, 890-898
[18] Nelemans, G.; Yungelson, L. R.; Portegies Zwart, S.F. 2003, ”Short-period
AM CVn systems as optical, X-ray and gravitational-wave sources”, MNRAS, 349, 181-192
[19] Nelemans, G.; Yungelson, L. R.; Portegies Zwart, S. F., 2004, ”Shortperiod AM CVn systems as optical, X-ray and gravitational-wave sources”,
MNRAS, 349, 181-192
[20] Landau, Lev Davidovich; Lifshitz, E. M., 1971, ”The classical theory of
fields” (Book)
[21] O’Donoghue, D.; Kilkenny, D.; Chen, A.; Stobie, R. S.; Koen, C.; Warner,
B.; Lawson, W. A., 1994, ”EC:15330-1403 and the Am-Canum Stars”,
MNRAS, 271, 910
[22] Paczy´
nski, B. (1967), ”Gravitational Waves and the Evolution of Close
Binaries” Acta Astron., 17, 287
[23] Patterson, J. et al., 1997, ”Superhumps in Cataclysmic Binaries. XII. CR
Bootis, a Helium Dwarf Nova”, PASP, 109, 1100 (P1997)
[24] Patterson, Joseph; Walker, Stan; Kemp, Jonathan; O’Donoghue, Darragh;
Bos, Marc; Stubbings, Rod, 2000, ”V803 Centauri: A Helium-rich Dwarf
Nova”, PASP, 112, 625 (P2000)
[25] Patterson J.; Fried R. E.; Rea R.; Kemp J.; Espaillat C. et al.; 2002, ”Superhumps in Cataclysmic Binaries. XXI. HP Librae (=EC 15330-1403)”,
PASP, 114, 65
[26] Podsiadlowski, PH; Han, Z; Rappaport S., 2002, ”Cataclysmic variables
with evolved secondaries and the progenitors of AM CVn stars”, MNRAS,
340, 1214-1228
[27] Prialnik, D. 2000, ”Stellar Structure and Evolution” (Book), Cambridge
University Press
[28] Ramsay G.; Hakala P.; Cropper M., 2002, ”RX J0806+15: the shortest
period binary?”, MNRAS, 332, L7
[29] Ruiz, Maria Teresa; Rojo, Patricio M.; Garay, Guido; Maza, Jose, 2001,
”CE 315: A New Interacting Double-Degenerate Binary Star”, ApJ, 552,
679
[30] Savonije, G. J.; de Kool, M.; van den Heuvel, E. P. J., 1986, ”The minimum
orbital period for ultra-compact binaries with helium burning secondaries”,
A&A, 155, 51-57
[31] Skillman D. R. et al., 1999, ”Superhumps in Cataclysmic Binaries. XVII.
AM Canum Venaticorum”’, PASP, 111, 1281
[32] Smak, J. (1967), ”Light Variability of HZ 29”, A&A, Vol 17, No 3
36
[33] Solheim J. -E et al. 1998, ”Whole Earth Telescope observations of AM
Canum Venaticorum - discoseismology at last”, A&A, 332, 939
[34] Tutukov, A.; Yungelson, L, 1999, ”Double-degenerate semidetached binaries with helium secondaries: cataclysmic variables, supersoft X-ray
sources, supernovae and accretion-induced collapses”, MNRAS 280, 10351045
[35] Warner B., 1995, ”Cataclysmic variable stars” (Book), Cambridge Astrophysics Series
[36] Warner B.; Woudt P. A., 2002,”KUV 01584-0939: A Helium-transferring
Cataclysmic Variable with an Orbital Period of 10 Minutes”, PASP, 114,
129
[37] Wood, M. A.; Winget, D. E.; Nather, R. E.; Hessman, Frederic V.; Liebert,
James; Kurtz, Donald W.; Wesemael, F.; Wegner, G., 1987, ”The exotic
helium variable PG 1346 + 082”, ApJ, 313, 757
[38] Weidemann V.; Koester D., 1984, ”Mass distribution of DA white dwarfs
and atmospheric parameters of ZZ Ceti stars”, A&A, 132, 195-202
[39] Wood, Matt A.; Casey, Matthew J.; Garnavich, Peter M.; Haag, Brooke,
2002, ”Superhumps in the helium dwarf nova KL Draconis”, MNRAS, 328,
159
[40] Woudt, P. A.; Warner, B., 2001 ”High-speed photometry of faint cataclysmic variables - I. V359 Cen, XZ Eri, HY Lup, V351 Pup, V630 Sgr,
YY Tel, CQ Vel and CE-315” MNRAS, 328, 159
[41] Woudt, A.; Warner, B. 2003, ”The new AM CVn star in Hydra”, MNRAS,
345, 1266-1270
37
7
Appendix
In this section the c-program is included with which the calculations have been
done:
/********************************************************************************************************/
/* A program that calculates and plots graphicly the impactpoint of a balistic stream of mass, */
/* that is transferred in an AM CVn star. Further it calaculates the amount of radiation of this */
/* impact point, that is absorbed on the secondary. (the irradiated surface is also shown graphicly). */
/* M1 and M2 are taken as free variables. Coordinate system: positive x to the right, positive y */
/* up, positive z out of paper, zero in CM, M2 on negative x-axis, M1 on positive x-axis. */
/* */
/* This can be done sevaral times for different values of M2 which are characterize by values of m. */
/* The evolution of an AM CVn system is calculated for given masses of M1 and M2. The luminosity */
/* of the different components is calculated and plotted against the time. This can be done with and */
/* without heating up of the WDs. */
/********************************************************************************************************/
#include "cpgplot.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define pi
3.1415926536 // Rarely a program uses a more accurate value of pi.
()
#define e
2.7182818
// this one doesn’t need a discription, right? ()
#define c
2.998e8
// velocity of light through vacuum (m/s)
#define G
6.673e-11
// Gravitational constant (m^3 kg^-1 s^-2)
#define Msol 1.989e30
// Solar mass (kg)
#define Rsol 6.9598e8
// Solar radius (m)
#define Lsol 3.8515e26
// Solar luminosity (J s^-1)
#define Mch
1.44
// Chandrasekhar mass (Msol)
#define year 3.156e7
// Number of seconds per year (s)
#define Kb
1.38e-23
// Boltsmanns constant (J/K)
#define sigma 5.67e-8
// Stefan-Boltsmanns constant (J m^-2 s-1 K-4)
#define m_H
1.66e-27
// Atomic mass unit (kg)
#define Mp
0.00057
// a constant used in Eggletons mass-radius relation. (Msol)
/********************************************************************************/
/* There are a few free parameters: (they are set in main() ) */
/* */
/* -M1, M2 at the birth of the AM CVn system (Mch>M1>M2>0) */
/* -w1 can be chanced (from 0 to w1_max) by variing factorw1 between 0 and 1 */
/* -factor, can be chanced to increase accuracy (=1.01 accurate; =1.5fast */
/* -autoscale can be chanced to automatically scale plotspatial. */
/********************************************************************************/
char deviceSpatial[] = "10/xserve"; // "10/xserve" or "/ps" or "?"; the device in which the spatial plot is made. ()
char deviceXvsY[]
= "11/xserve"; // "11/xserve" or "/ps" or "?"; the device in which X[m] is plotted vs Y[m]. ()
float tbegin; // the time WD2 can cool before masstransfer starts (year)
float t_ev; // the evolution time; a running parameter (year)
float tdisk; // the time at which the diskphase starts (year)
float t3[4001]; // runs with t_ev; is used to get a better resolution (year)
float timestep; // how much time passes in one step=4e5 (year)
float q;
// mass ratio ()
float M1, M2;
// primary mass, secondary mass (Msol)
float M1initial, M2initial;
// primary mass, secondary mass (Msol)
float M2dot; // The masstransferrate; the time derivative of M2 (<0) (Msol year^-1)
float R1; // radius of primary (m)
float R2; // radius of secondary (m)
float a; // binary seraration (m)
float Porb; // orbital period (s)
float w; // omega angularvelocity of the orbit (s^-1)
float R_disk; // radius of the accretiondisk. (only present in the second part of the program (m)
float w1; // omega angularvelocity of WD1 around it’s own axis (is set in getDynamics) (s^-1)
float w1_max; // maximum anglarvelocity of WD1 around it’s own axis. (s^-1)
float factorw1; // w1=factorw1*w1_max
float L1[2];
// inner Lagrange point distance vector to centre of mass (m)
float KL1[2];
// inner Lagrange point velocity vector to centre of mass (m)
float a1[2], a2[2];
// primary, secondary distance vectors to centre of mass
(m)
float K1[2], K2[2];
// binary velocity vectors (m/s)
float xval[1000]; // the x values of the balistic stream [steps!!!!] (m)
float yval[1000]; // the y values of the balistic stream (m)
float roche1x[2][1001]; // rochelobepoints of the primary
[x or y][1+rocheBins] ()
float roche2x[2][1001]; // rockelobepoints of the secondary [x or y][1+rocheBins] ()
float impact[2]; // impact position[x,y]; either on WD1 or the hotspot on the disk (m,m)
float phi; // place of impact on WD1; define by angle with resect to horizontal line (degrees)
float impactangle; // impactangle of the balisticstream and the normal of the primary (degrees)
float irradiatedsurface[2][1001]; // point which mark the surface being radiated [x/y][rochebins]
(m,m)
float partofcircle; // Taking the projection of WD2 as a circle, this is the part of the circle...
// ...that gets irradiated. 1 => completely; -1 => not at all. ()
float openingangle; // How much of the 180 degrees irradiation hits WD2
(degrees)
float Pout[1001]; // Outgoing Power emitted at the impactspot [calculated at getdynamics] (J/s)
float Pin[1001]; // Incomming Power received at WD2 [calculated at getdynamics] (J/s)
float P_bl[1001]; // The energy releades at the boundrylayer [calculated at getdynamics] (J/s)
float X1[1001],X2[1001],X3[1001],X4[1001],X5[1001];// X is plotted vs Y for different values of m.... (?)
float Y1[1001],Y2[1001],Y3[1001],Y4[1001],Y5[1001];// ...this way the memory is only reserved once. (?)
float factor; // timestep*=factor; So it sets the speed; factor=1.3 fast =1.01 accurate. () ()
int
heating; // when the WDs heat up then heating=1; if not heating =0. ()
int
autoscale=1; // scaling of plotspatial; =1=> zoom to fit screen; =0=>manual scaling. ()
int
n1,n5; // count number of point to plot Y vs X. should be less the 1001. ()
int
rocheBins = 100; // roche lobe phase bins. The number of point of a rochelobe = 100 ()
int
plotSpatial; // plot IDs ()
int
plotXvsY; // plot IDs ()
int
noimpact=1; // is set to 0, when there is impact. (In getBallistics) ()
int
irradiation; // Does WD2 see the impactspot; 2=completely, 1=partially, 0=not at all ()
38
int
long
long
p; // counts rochebins of WD2, which are irradiated ()
steps = 1000;
// iterative steps in several calculations =1000 ()
steps2 = 1000;
// iterative steps in ballistics calculation (should be changed there)=step1 ()
/************************************************************************/
/* This function uses Eggleton’s zero temperature mass-radius relation */
/* (formula 24 of Mass Transfer between Double White Dwarfs to get R */
/* for all values of M. It’s called at getDynamics() */
/************************************************************************/
float getRadius(float M)
{
float R; /*radius (m)*/
R=0.0114*Rsol*sqrt(pow((M/Mch),-0.6667)-pow((M/Mch),0.6667))*pow((1+3.5*pow((M/Mp),-0.6667)+(Mp/M)),-0.6667);
if(M>Mch)
printf("Mass > Mch");
return(R);
}
/************************************************************************************************/
/*This function calculates the basic values of an AMCVn system. It’s only imput are M1 and M2 */
/************************************************************************************************/
void getDynamics(void)
{
R1=getRadius(M1);
R2=getRadius(M2);
q=M2/M1;
a=R2*(0.6*pow(q,0.667)+log(1+pow(q,0.333)))/(0.49*pow(q,0.667)); /*2.5c Warner*/
Porb=pow(((4*pi*pi*a*a*a)/(G*Msol*(M1+M2))),0.5); /*Keplers law 2.1a Warner*/
w = 2*pi/Porb;
w1_max=sqrt(G*M1*Msol/(R1*R1*R1));
w1=factorw1*w1_max;
a1[0] = a*M2/(M1+M2);
a1[1] = 0.;
a2[0] = -a*M1/(M1+M2);
a2[1] = 0.;
K1[0] = 0.;
K1[1] = -2*pi*a1[0]/Porb;
K2[0] = 0.;
K2[1] = -2*pi*a2[0]/Porb;
L1[0] = -a / (1.0015 + pow(q,0.4056)) + a1[0]; /* Warner 2.4c accurate to 1% in 0.04<q<1 */
L1[1] = 0.;
KL1[0] = 0.;
KL1[1] = -2*pi*L1[0]/Porb;
// R_disk=pow(((-a2[0]*(-a2[0]-R2)-a1[0]*a1[0])*w),2)/(G*Msol*(M1+M2)); /*calculates the radius of a possible accretiondisk*/
R_disk=0.5*(a1[0]-L1[0]);
// printf(" a1(0)=%4.2le a2(0)=%4.2le Porb=%4.2le a=%4.2le \n R1=%4.2le R2=%4.2le M1=%g M2=%g w=%4.2le w1=%4.2le w1_max=%4.2le\n",
// a1[0], a2[0], Porb, a, R1, R2, M1, M2, w, w1, w1_max);
}
/************************************************************************/
/* This function calculates Zeta_2 for a given value of mass (M). */
/* Zeta_2 = d log(R2)/ d log(M2) */
/* It is called for in getAngularmomentum(). */
/************************************************************************/
float getZeta_2 (float M)
{
float Zetafirst; /*dummy; the first part of the expression of Zeta_2*/
float Zetasecond; /*dummy; the second part of the expression of Zeta_2*/
float Zeta_2; /*= d log(R2)/ d log(M2) */
Zetafirst = -0.333*(1/(pow((M/Mch),-0.667)-pow((M/Mch),0.667)))*pow((M/Mch),-0.667);
Zetasecond = (0.667/(1+3.5*pow((M/Mp),-0.667)+(Mp/M)))*(2.333*pow((M/Mp),-0.667)+(Mp/M));
Zeta_2=Zetafirst+Zetasecond;
// Y[m]=Zetafirst;
// printf("zetafirst=%4.2le zetasecond=%4.2le \n",Zetafirst, Zetasecond);
return(Zeta_2);
}
/************************************************************************/
/* This function calculates the masstransferrate in an AMCVn system. */
/************************************************************************/
void getAngularmomentum()
{
double J_orb; /*The angular momentum stored in the orbit of the binary*/ // (kg m^2 s^-1)
double Jdot_gr; /*The change of J_orb per second due to gravitational waves*/ // (kg m^2 s^-2)
float adot; /*The timedirivative of a*/ // (
m
s^-1)
float Zeta_2; /*Dummy variable; See Marsh et ai 2004 for a definition*/
float Zeta_rL; /*Dummy variable; See Marsh et ai 2004 for a definition=0.333*/
float k=0.2; /*The moment of inertia of the WD = 0.2 in equation 6 of Nelemans 2004 ai*/ //(?)
J_orb=sqrt(G*a/((M1+M2)*Msol))*M1*Msol*M2*Msol;
Jdot_gr=-6.4*((G*G*G)/(pow(c,5)))*(M1*Msol*M2*Msol*(M1+M2)*Msol/(pow(a,4)))*J_orb;
Zeta_2 = getZeta_2(M2);
Zeta_rL=0.333; /*0.333*(1+q)*2*log(1+pow(q,0.333)-pow(q,0.333)/(1+pow(q,0.333)))/(0.6*pow(q,0.667)+log(1+pow(q,0.333))); in Marsh 2004 (almost equal to 0.3)*/
M2dot=year*M2*Jdot_gr/(J_orb*(1+0.5*Zeta_2-0.5*Zeta_rL-q)); /*be careful with the units of year and Msol*/
// Y[m]=log10(-M2dot);
// printf("Zeta_2=%4.2lf Zeta_rL=%4.2lf J_orb=%4.2le Jdot_gr=%4.2le M2dot=%4.2le \n", Zeta_2, Zeta_rL, J_orb, Jdot_gr, M2dot);
}
/********************************************************************************************************/
/* This function calculates the potential for given x and y coordinates. It’s called at getRocheLobes() */
/********************************************************************************************************/
float getRochePotential(float x, float y)
{
return (-G*M1*Msol / sqrt(pow(x-a1[0],2)+pow(y-a1[1],2))
-G*M2*Msol / sqrt(pow(x-a2[0],2)+pow(y-a2[1],2))
-0.5*pow(w,2)*(x*x + y*y));
}
/****************************************************************************************/
/* This function calculates the coordinates of the Roche Lobe. Method: move outward */
39
/* radially from the primary and the secondary as long as the potential is less than */
/* the potential in L1. Then repeat at a different angle, theta. */
/****************************************************************************************/
void getRocheLobes(void)
{
float potentialL1; /*the potential in L1
*/
float potential; /*the potential in a point
*/
float theta; /*going round M1 and M2 by changing theta
*/
float r,x,y; /*distance to the center of M1 or M2; x,y:Coordinates
*/
int n; /*a running variable to sweet around M1 and M2. It runs from 0 to rocheBins */
potentialL1 = getRochePotential(L1[0],L1[1]);
theta = 0.;
for (n=1; n<rocheBins; n++)
{
r = 0.9*R2;
theta = 2*pi*n/rocheBins;
do
{
r += fabs(a1[0]-L1[0])/steps; /*fabs=absolute value*/
x = a1[0] - r*cos(theta); /* starting at L1 viewed from primary, going counter-clockwise */
y = a1[1] - r*sin(theta);
potential = getRochePotential(x,y);
//
printf("x-a0=%4.2le y=%4.2le r=%4.2le potential=%4.2le potentialL1=%4.2le \n "
//
, x-a1[0], y, r, potential, potentialL1);
}
while (potential <= potentialL1);
roche1x[0][n] = x;
roche1x[1][n] = y;
//
printf("y1=%4.2le n=%d \n",roche1x[1][n], n);
}
roche1x[0][0] = L1[0];
roche1x[1][0] = L1[1];
roche1x[0][rocheBins] = L1[0]; /*coordinates of the Roche Lobe, they .... */
roche1x[1][rocheBins] = L1[1]; /*...are plotted in plotrochelobe(). */
theta = 0.; /*for the secondary the same...*/
for (n=1; n<=rocheBins; n++)
{
r = 0.9*R2; /*the rochelobe of the primary can’t be smaller than the secondary */
theta = 2*pi*n/rocheBins;
do
{
r += fabs(a2[0]-L1[0])/rocheBins;
x = a2[0] + r*cos(theta); /* starting at L1 viewed from the secondary, */
y = a2[1] + r*sin(theta); /* going counter-clockwise
*/
potential = getRochePotential(x,y);
}
while (potential < potentialL1);
roche2x[0][n] = x;
roche2x[1][n] = y;
roche2x[0][rocheBins] = L1[0];
roche2x[1][rocheBins] = L1[1];
//
printf("y2=%4.2le n=%d \n",roche2x[1][n], n);
}
roche2x[0][0] = L1[0];
roche2x[1][0] = L1[1];
roche2x[0][rocheBins] = L1[0];
roche2x[1][rocheBins] = L1[1];
}
/**************************************************************************/
/* This function calculates the coordinates of the balistic stream. This */
/* is a free fall trajectory from L1 until either WD1 or the disk is hit */
/* by the stream. This is determined by impactradius.
*/
/**************************************************************************/
void getBallistics(float impactradius) /*the ballistic stream runs until it closer to WD1 than impactradius*/
{
float t = 0.; /*a time variable (s)*/
float dt; /*timestep*/
float mx[2], mv[2], ma[2]; /*co rotating -position, -velocity and -acceleration in SI*/
float distance; /*Distance to M1 or M2 */
int n=0; /*counts the points of the trajectory. There are step2 point, with a maximum of step1*/
mx[0] = L1[0]+0.01*fabs(L1[0]); /* start test mass just outside of L1 point to start falling*/
mx[1] = 0;
mv[0] = 0;
mv[1] = 0;
noimpact=1;
for(n=0;n<steps;n++)
{
ma[0] = G*M1*Msol*(a1[0]-mx[0]) * pow(pow(a1[0]-mx[0],2) + pow(mx[1],2),-1.5) /* gravity from M1
*/
+ G*M2*Msol*(a2[0]-mx[0]) * pow(pow(a2[0]-mx[0],2) + pow(mx[1],2),-1.5) /* gravity from M2
*/
+ mx[0] * pow(w,2) /* Centrifugal force */
+ 2*w*mv[1];
/* Coriolis force
*/
ma[1] = G*M1*Msol*(-mx[1]) * pow(pow(a1[0]-mx[0],2) + pow(mx[1],2),-1.5)
+ G*M2*Msol*(-mx[1]) * pow(pow(a2[0]-mx[0],2) + pow(mx[1],2),-1.5)
+ mx[1] * pow(w,2)
+ -2*w*mv[0];
dt = 2*sqrt(pow(a/steps,2)) / sqrt((pow(mv[0],2) + pow(mv[1],2))); /* time it takes with previous speed to cross 2*a/steps */
if (dt > 2*Porb/steps) /* (dt>2*Porb/steps)*/
{ /* Dont change these 2’s. The maximum length of the ballistic stream... */
dt = 2*Porb/steps; /* is set in such a way, that is will hit WD1 in the first passage... */
} /* else not at all. */
mv[0] += ma[0] * dt;
mv[1] += ma[1] * dt;
mx[0] += mv[0] * dt;
mx[1] += mv[1] * dt;
t += dt;
xval[n] = mx[0];
40
//
yval[n] = mx[1];
distance=sqrt(pow((mx[0]-a1[0]),2)+pow((mx[1]-a1[1]),2));
printf("xval =%4.2le and yval=%4.2le and distance=%4.2le R1=%4.2le\n", xval[n], yval[n],distance, R1);
if(distance<impactradius)
{
steps2=n;
impact[0]=(mx[0]-a1[0]);
impact[1]=(mx[1]-a1[1]);
noimpact=0;
break;
}
}
phi=180/pi*atan(impact[1]/impact[0]); /*place of impact on WD1; define by angle phi with resect to horizontal line*/
if(phi<0) /*So -pi/2<atan<=pi/2 !!!*/
{
phi+=180;
}
}
/****************************************************************************************/
/* Function calculates the coordinates of the donor that are being irradiated. It also */
/* calculates the % of radiation emitted at the impactspot, that is being absorbed by */
/* the donor. Use Plotconstructionlines() and appended figure to how the angles work. */
/* Note: *counterclockwise is positive for all angles! */
/*
*angle=0 means horizontal. */
/* */
/* Fist it is checked if the impactspot "sees" the secondary. This done with alpha1, */
/* alpha2 and beta. Then the openingangle is found between gammamin and gammamax. */
/* If there is irradiation, than it is calculated upto what height (y or placeoncircle) */
/* WD2 is being irradiated. */
/****************************************************************************************/
void getIrradiatedsurface()
{
float directionnormal[2]; /* the x- and y-components of a vector between a1[] and impact[]
*/
float alpha1; //(degrees) /* the angle between the horizontal and the lineA1 between impact and the upperpart of WD1 */
float alpha2; //(degrees) /* the angle between the horizontal and the lineA2 between impact and the lower part of WD1 */
float alpha; //(degrees) /* the complete openingangle for WD2: alpha=alpha2-alpha1
*/
float beta;
//(degrees) /* the angle between the horizontal and the lineB. lineB goes through impact and is....
*/
/* ...perpendicular with the normal. It’s the horizon for a person on WD1 at impact[]
*/
float gamma; //(degrees) /* the angles between the horizontal and the lines between impact and the Roch lobe of WD2 */
float gammamax;//(degrees) /* angle between the horizontal and the line C1 between impact and the lower part of the rochelobe of WD2 */
float gammamin;//(degrees) /* angle between the horizontal and the line C2 between impact and the upper part of the rochelobe of WD2 */
float placeoncircle; //() /* runs from 1 to -1; the irradiation hits a unit-circle at this y-coordinate
*/
float dummy; // () /* this dummy is used to solve an integral
*/
int n; /* counts the rocheBins
*/
int min, max; /* impact[][min]/impact[][max] is the minimum/maximum irradiated point on WD2.
*/
directionnormal[0]=impact[0]/(sqrt(impact[0]*impact[0]+impact[1]*impact[1]));
directionnormal[1]=impact[1]/(sqrt(impact[0]*impact[0]+impact[1]*impact[1]));
alpha1=(180/pi)*atan(((a2[1]-R2*directionnormal[1])-(impact[1]+a1[1]) )/( (a2[0]-R2*directionnormal[0])-(impact[0]+a1[0]) ) );
alpha2=(180/pi)*atan(((a2[1]+R2*directionnormal[1])-(impact[1]+a1[1]) )/( (a2[0]+R2*directionnormal[0])-(impact[0]+a1[0]) ) );
beta= (180/pi)*atan(directionnormal[0]/(-1*directionnormal[1]));
/*first see what kind of irradiation there is */
if(beta<alpha1)
{
irradiation=2; /*full irradiation from impactspot*/
}
else
{
if(beta<alpha2)
{
irradiation=1; /*partial irradiation from impactspot*/
}
else
{
irradiation=0; /*no irradiation from impactspot */
}
}
// printf("alpha1=%4.2f alpha2=%4.2f beta=%4.2f irradiation=%d \n",alpha1, alpha2, beta, irradiation);
/*then find the points of roche2x[][] which are irradiated and at Plotirradiatedsurface() a polygon is drawn between them*/
if((irradiation==1)||(irradiation==2))
{
p=0;
gammamax=-90;
gammamin=90;
min=0;
max=0;
for(n=0;n<rocheBins;n++)
{
gamma=(180/pi)*atan(((impact[1]+a1[1])-roche2x[1][n])/((impact[0]+a1[0])-roche2x[0][n]));
//
printf("n=%d gamma=%4.2f beta=%4.2f switch=%d \n",n, gamma, beta, (roche2x[0][n]>a2[0]));
if((gamma>beta)&&(roche2x[0][n]>a2[0])) /*gamma>beta => WD1 is not blocking the view AND roche2x[0][n]>a2[0] => WD2 is not blocking the view*/
{
if(gammamax<gamma)
{
gammamax=gamma;
max=n;
}
if(gammamin>gamma)
{
gammamin=gamma;
min=n;
}
irradiatedsurface[0][p]=roche2x[0][n];
irradiatedsurface[1][p]=roche2x[1][n];
/*if you want to see which points are found; you let the lines below be drawn, remember to move this function below Plotrochelobes!
*/
//
cpgsls(1);
41
//
//
//
//
//
cpgmove((impact[0]+a1[0]), (impact[1]+a1[1])); /*draws upper line ...
*/
cpgdraw(roche2x[0][min], roche2x[1][min]); /*... to mark impact area: line C1 */
cpgmove((impact[0]+a1[0]), (impact[1]+a1[1])); /*draws lower line ...
*/
cpgdraw(roche2x[0][max], roche2x[1][max]); /*... to mark impact area: line C2 */
printf("n=%d irradiatedsurface[0][%d]=%4.2le irradiatedsurface[0][%d]=%4.2le \n", n, p,irradiatedsurface[0][p],p, irradiatedsurface[1][p]);
p++;
}
}
}
else
{
/*no irradiation from impactspot */
//
printf("no irradiation \n");
gammamin=0;
gammamax=0;
}
openingangle=gammamax-gammamin;
if(openingangle==-180)
{
openingangle=0; /*to correct the small difference between the first and second approach; R2 is not exactly R_{Rochelobe}*/
} /*because the radius of the rochelobe of R2; it’s not exactly circular.*/
// printf("openingangle=%4.2f gammamin=%4.2f gammamax=%4.2f \n", openingangle, gammamin, gammamax);
alpha=gammamax-alpha1;
if(openingangle>0)
{
placeoncircle= (tan((pi/180)*(openingangle-0.5*alpha)))/tan((pi/180)*0.5*alpha); /*runs from 1 to -1*/
if(placeoncircle>1)
{
placeoncircle=1; /*to correct for small mistakes due to rounding (again because R2 is nog R_{Rochelobe}), they’d blow up later.*/
}
//
printf("openingangle=%4.2f gammamax=%4.2f alpha1=%4.1f beta=%4.1f alpha=%4.2f placeoncircle=%4.2f \n \n",
//
openingangle, gammamax, alpha1, beta, alpha, placeoncircle);
}
else
{
placeoncircle=-1;
}
partofcircle=0;
for(dummy=-0.999; dummy<=placeoncircle; dummy+=0.003) /*this could perhaps be done analytically, but this works fine*/
{
partofcircle+=(2/pi)*sqrt(1-dummy*dummy)*0.003; /*we’re integrating a function that’s half a circle, so we do x2 and divide...*/
}
/*... by the area of an entire unit-circle:pi*/
// printf("placeoncircle=%4.2f partofcircle=%4.2f openingangle=%4.2f \n \n",placeoncircle, partofcircle, openingangle);
}
/****************************************************************************************/
/* This function calculates the impactangle between the balistic stream and the normal */
/* of the surface of WD1. Note: that if the impact is on the upper half of WD1 things */
/* will go wrong! */
/* It also calculates some variables connected the impact, such as what percentage of
*/
/* the radiation emitted at the impactspot falls onto WD2. (=Pin/Pout) */
/****************************************************************************************/
void getImpactdynamics()
{
float psi; //(degrees)/* angle of impact not relative to the primary */
float v_abs, v_abs_r, v_abs_phi; //(m/s)/* absolute velocities in CM-frame*/
float v_rel, v_rel_r, v_rel_phi; //(m/s)/* relative velocities to rotation WD1*/
float Mdot; //(Msol/year)/*should go to getDynamics; around 1e-8 Msol*/
float distance; //(m)
/*distance between the center of WD2 and the impactspot*/
float irradiatedpart; //() /*what part of the 4pi degrees of radiation fall on WD2*/
float Tout; //(K) /*T_max of the blackbody radiation assumed to be coming from the impactpoint*/
float nu_max, lambda_max; //(Hz), (m)/*The maximum of a blackbody spectrum for resp. the frequency and the wavelength*/
float albedo=0.4; //(), /*The X-ray albedo ~0.4*/
Mdot=-M2dot;
psi=180/pi*atan((yval[steps2]-yval[steps2-1])/(xval[steps2]-xval[steps2-1])); /*be careful with pi/2<atan<pi/2 */
impactangle=phi-psi;
// printf("psi=%4.2f phi[m]=%4.2f, impactangle=%4.2f \n", psi, phi[m], impactangle);
v_abs
= sqrt(2*(getRochePotential(L1[0],L1[1])-getRochePotential((impact[0]+a1[0]),(impact[1])+a1[1]))); /*U=K; energy conservation */
v_abs_r
= v_abs*cos(impactangle*pi/180);
v_abs_phi
= v_abs*sin(impactangle*pi/180);
v_rel_r
= v_abs_r;
v_rel_phi
= v_abs_phi-w1*R1;
v_rel
= sqrt(v_rel_r*v_rel_r+v_rel_phi*v_rel_phi);
// printf("m=%d v_abs=%4.2le v_abs_r=%4.2le v_abs_phi=%4.2le v_rel=%4.2le v_rel_r=%4.2le v_rel_phi=%4.2le, L1=%4.2le,impact=%4.2le \n",
// m, v_abs, v_abs_r, v_abs_phi, v_rel, v_rel_r, v_rel_phi, getRochePotential(L1[0],L1[1]), getRochePotential(impact[0],impact[1]));
// printf("w1*R1=%4.2le impact[0]=%4.2le, impact[1]=%4.2le \n", w1*R1, impact[0], impact[1]);
Pout[n1]=0.5*Mdot*(Msol/year)*v_rel*v_rel;
Tout=(2*m_H)*v_rel*v_rel/(3*Kb); /*1/2 m v^2 = 3/2 K T; Helium mass=2*m_H*/
lambda_max=0.002898/Tout;
nu_max=c/lambda_max;
distance=sqrt(pow((impact[0]-a2[0]),2)-pow((impact[1]-a2[1]),2));
irradiatedpart=partofcircle*R2*R2/(4*distance*distance); /*we take the projection of WD2 to be a flat circle, it should be round, but*/
Pin[n1]=albedo*Pout[n1]*irradiatedpart;
/*since distance>3*R2 this is a minor effect*/
P_bl[n1]= 0.5*Mdot*(Msol/year)*(getRochePotential(L1[0],L1[1])-getRochePotential((a1[0]),(a1[1]+R1))); /*mind the 0.5* !!!! */
// printf("R2=%4.2le, distance=%4.2le a=%4.2le irradiatedpart=%4.2f \n",R2, distance, a, irradiatedpart);
// printf("Pout=%4.2le Pin=%4.2le Tout=%4.2le lambda_max=%4.2le nu_max=%4.2le \n", Pout, Pin, Tout, lambda_max, nu_max);
}
/************************************************************************/
/* This function is used to see in what range variables are plotted. */
/* It finds minium- and maximum value of a float data set. */
/************************************************************************/
void getminmax(float *a, int na, float *amin, float *amax) /*data points, number of points, returned min, returned maximum) */
{
int i;
*amax = a[0];
*amin = *amax;
for(i=0;i<na;i++)
{
42
if (*amin>a[i]) *amin = a[i];
if (*amax<a[i]) *amax = a[i];
}
return;
}
/********************************************************************************/
/* This function plots the axis for the spatial plot. This can be done
*/
/* by manual imput of the range (in this function) then autoscale = 0,
*/
/* or it can automatically scale the plot to fit in the screen. (autoscale=1)
*/
/* It also puts to stars at the centre of WD1 and WD2. */
/********************************************************************************/
void Plotspatialaxis()
{
float factor=1.1;
float xmin1, xmax1; /*minimum xvalues for the rochelobe around M1*/
float xmin2, xmax2; /*minimum xvalues for the rochelobe around M2*/
float ymin1, ymax1; /*minimum yvalues for the rochelobe around M1*/
float ymin2, ymax2; /*minimum yvalues for the rochelobe around M2*/
float xmin, xmax, ymin, ymax; /*min and max values for the axis*/
cpgsls(1); /*select linestyle; solid */
if(autoscale==1)
{
getminmax(roche1x[0],rocheBins,&xmin1, &xmax1);
getminmax(roche1x[1],rocheBins,&ymin1, &ymax1);
getminmax(roche2x[0],rocheBins,&xmin2, &xmax2);
getminmax(roche2x[1],rocheBins,&ymin2, &ymax2);
if(xmin1<xmin2)
xmin=xmin1;
else
xmin=xmin2;
if(xmax1>xmax2)
xmax=xmax1;
else
xmax=xmax2;
if(ymin1<ymin2)
ymin=ymin1;
else
ymin=ymin2;
if(ymax1>ymax2)
ymax=ymax1;
else
ymax=ymax2;
cpgsls(1);
cpgenv(factor*xmin, factor*xmax, factor*ymin, factor*ymax, 1, 0); /* sets the axis 4th:1=same scale */
}
else
{ /* =(a1[0]-10.7e7, a1[0]+5e7, -5e7, 5e7, 1, 0)
*/
//
cpgenv(a1[0]-10.7e7, a1[0]+5e7, -5e7, 5e7, 1, 0); /* with this scale the direct impact phase fits just in the screen
cpgenv(a1[0]-3.2e8 ,a1[0]+2.2e8,-2.2e8 ,2.2e8 , 1, 0); /*(a1[0]-3.2e8 ,a1[0]+2.2e8,-2.2e8 ,2.2e8 , 1, 0) */
} /* with this scale the diskfase upto t=1e9 yr fits just in the screen */
cpgpt1(a1[0],a1[1],3); /*Plots CM of M1 */
cpgpt1(a2[0],a2[1],3); /*Plots CM of M2 */
cpglab("x (m)", "y (m)", "Balistic stream");
}
*/
/****************************************************************/
/* This function draws the Roche Lobe by drawing lines between */
/* the point of the Roche Lobe */
/****************************************************************/
void Plotrochelobes() /*Plots the axis and the Roche lobes */
{
Plotspatialaxis();
cpgsls(2); /*set line style dashed */
cpgline((rocheBins+1), roche1x[0], roche1x[1]); /*plots lines around M1 */
cpgsls(1); /*set line style solid */
cpgline((rocheBins+1), roche2x[0], roche2x[1]); /*plots lines around M2 */
// printf("ymin=%4.2le ymin1=%4.2le ymin2=%4.2le rocheBins=%d \nand roche1x[0][0]=%4.2le roche1x[0][rocheBins/2]=%4.2le \n",
// ymin, ymin1, ymin2,rocheBins, roche1x[0][0], roche1x[0][rocheBins/2]);
// printf("xmin=%4.2le xmax=%4.2le ymin=%4.2le ymax=%4.2le \n", xmin, xmax, ymin, ymax);
}
/***********************************/
/* This function plots the primary */
/***********************************/
void PlotM1()
{
cpgsfs(2); /*set fillstyle*/
cpgcirc(a1[0],a1[1],R1); /*draw circle
}
*/
/*********************************************/
/* This function plots the ballistic stream */
/*********************************************/
void Plotballistics()
{
cpgsls(1);
cpgline(steps2, xval, yval);
}
/*************************************************************************/
/* This function plots some construction lines (A1, A2 and B), that are */
/* mentioned in getIrradiatedsurface(). The use of this function is */
/* optional and insightful. */
/*************************************************************************/
void Plotconstructionlines() /*if this is turned on lines A1, A2, B, and a horizontal line are drawn */
{ /*it helps to understand getIrradiation. */
float directionnormal[2]; /*the x- and y-components of a vector between a1[] and impact[] */
directionnormal[0]=impact[0]/(sqrt(impact[0]*impact[0]+impact[1]*impact[1]));
43
directionnormal[1]=impact[1]/(sqrt(impact[0]*impact[0]+impact[1]*impact[1]));
cpgsls(4);
/*set linestyle*/
cpgmove(a1[0],a1[1]);
/*moves pen position to CM of M1; is used together with the next line...*/
cpgdraw((3*impact[0]+a1[0]), (3*impact[1]+a1[1]));
/*...draws the normal on the surface of WD1
*/
cpgmove(impact[0]+a1[0]+5*R1*directionnormal[1], impact[1]+a1[1]-5*R1*directionnormal[0]); /*draws line B through... */
cpgdraw(impact[0]+a1[0]-5*R1*directionnormal[1], impact[1]+a1[1]+5*R1*directionnormal[0]); /*...impact and perpendicular to the normal */
cpgmove(a2[0]-R2*directionnormal[0],a2[1]-R2*directionnormal[1]);
/*draws line through a2[] parallel to the normal... */
cpgdraw(a2[0]+R2*directionnormal[0],a2[1]+R2*directionnormal[1]);
/*...to normal, with a length of 2*R2.
*/
cpgmove((impact[0]+a1[0]-4*R1), (impact[1]+a1[1]));
/*draws horizontal line through... */
cpgdraw((impact[0]+a1[0]+4*R1), (impact[1]+a1[1]));
/*impact[] */
cpgsls(2);
cpgmove((impact[0]+a1[0]), (impact[1]+a1[1])); /*draws lineA1 between impact and... */
cpgdraw(a2[0]-R2*directionnormal[0],a2[1]-R2*directionnormal[1]); /*lower part of WD1
*/
cpgmove((impact[0]+a1[0]), (impact[1]+a1[1]));
/*draws lineA2 between impact and... */
cpgdraw(a2[0]+R2*directionnormal[0],a2[1]+R2*directionnormal[1]); /*upperpart of WD1
*/
}
/************************************************/
/* This function plots the irradiated surface */
/************************************************/
void Plotirradiatedsurface()
{
cpgsfs(4); /*set fill style; to color the irradiated surface.*/
if((irradiation==1)||(irradiation==2))
{
cpgpoly(p, irradiatedsurface[0],irradiatedsurface[1]);
/*draws a polygon */
}
}
/************************************************************************/
/* This function make the plot between X1[m]...X5[m] and Y1[m]....Y5[m] */
/* m changes for different values of M1 and M2. */
/************************************************************************/
void PlotYvsX() /*Makes a plot of the X1 vs Y1, X2 vs Y2 and X3 vs Y3, for different m, i, j */
{ /*X, Y are set in getXvsY() and the labels of the axis are set in main() */
float xmin1, xmax1, ymin1, ymax1; /*minimum and maximum of X1 and Y1*/
float xmin2, xmax2, ymin2, ymax2; /*minimum and maximum of X2 and Y2*/
float xmin3, xmax3, ymin3, ymax3; /*minimum and maximum of X3 and Y3*/
float xmin4, xmax4, ymin4, ymax4; /*minimum and maximum of X4 and Y4*/
float ymin5, ymax5; /*minimum and maximum of Y5*/
float xmin, xmax, ymin, ymax; /*min and max values for the axis*/
float deltax, deltay; /*range of X and of Y */
cpgslct(plotXvsY); /*selects the figure to plot*/
getminmax(X1, n1, &xmin1, &xmax1); /*gat the minimum and maximum values of 1,2 and 3*/
getminmax(Y1, n1, &ymin1, &ymax1);
getminmax(X2, n1, &xmin2, &xmax2);
getminmax(Y2, n1, &ymin2, &ymax2);
getminmax(X3, n1, &xmin3, &xmax3);
getminmax(Y3, n1, &ymin3, &ymax3);
getminmax(X4, n1, &xmin4, &xmax4);
getminmax(Y4, n1, &ymin4, &ymax4);
getminmax(Y5, n5, &ymin5, &ymax5);
xmin=xmin1; /*compare the minimum and maximum values of 1,2 and 3 and find the extremes of them*/
xmax=xmax1;
ymin=ymin1;
ymax=ymax1;
if(xmin2<xmin)
xmin=xmin2;
if(xmax2>xmax)
xmax=xmax2;
if(ymin2<ymin)
ymin=ymin2;
if(ymax2>ymax)
ymax=ymax2;
if(xmin3<xmin)
xmin=xmin3;
if(xmax3>xmax)
xmax=xmax3;
if(ymin3<ymin)
ymin=ymin3;
if(ymax3>ymax)
ymax=ymax3;
if(xmin4<xmin)
xmin=xmin4;
if(xmax4>xmax)
xmax=xmax4;
if(ymin4<ymin)
ymin=ymin4;
if(ymax4>ymax)
ymax=ymax4;
if(ymin5<ymin)
ymin=ymin5;
if(ymax5>ymax)
ymax=ymax5;
deltax=xmax-xmin;
deltay=ymax-ymin;
// printf("xmin1=%4.2f and xmax1=%4.2f and ymin1=%4.2f and ymax1=%4.2f \n", xmin1, xmax1, ymin1, ymax1);
// printf("xmin2=%4.2f and xmax2=%4.2f and ymin2=%4.2f and ymax2=%4.2f \n", xmin2, xmax2, ymin2, ymax2);
// printf("xmin3=%4.2f and xmax3=%4.2f and ymin3=%4.2f and ymax3=%4.2f \n", xmin3, xmax3, ymin3, ymax3);
// printf("xmin=%4.2f and xmax=%4.2f and ymin=%4.2f and ymax=%4.2f \n", xmin, xmax, ymin, ymax);
cpgenv(xmin, xmax, ymin+0.1*deltay, ymax, 0, 0); /*sets the axis 4th:0=different scale; 0.9=>1.1 if xmin<0 */
if(heating==0)
{
cpgsls(1); /*1=solid*/ //WD1 without heating up
cpgline(n1,X1,Y1);
cpgsls(2); /*2=dashed*/ //WD2 without heating up
cpgline(n1,X2,Y2);
}
cpgsls(4); /*4=dotted*/ //Pin
44
cpgline(n1,X3,Y3);
cpgsls(5); /*5=dash-dot-dot-dot*/ //Pout
cpgline(n1,X4,Y4);
cpgsls(3); /*3=dot-dash-dot-dash*/ //P_bl
cpgline(n5,X5,Y5);
}
/****************************************************************/
/* For a given a WD mass (M) and cooling time (t) this */
/* function calculates the luminosity of the star. */
/* It is also used to get right boundary conditions to solve */
/* the differential equation in PlotnewLwd() */
/****************************************************************/
float get Luminosity(float M, float t)
{
float Lmax; /*in Lsol*/
float logL;
if(M<0.5)
{
Lmax=9.4-1.33*(0.45-M);
logL=Lmax-1.33*log10(t);
//
if(logL>-0.5)
//
{logL=-0.5;}
}
if(M>=0.5)
{
Lmax=9-(0.9-M);
logL=Lmax-1.33*log10(t);
//
if(logL>2)
//
{logL=2;}
}
// printf("log10L=%4.2f ",logL);
return(pow(10,logL));
}
/************************************************************************/
/* This function gets the X1[m]...X5[m] coordinates that are plotted */
/* against Y1[m]...Y5[m]. */
/************************************************************************/
void getXvsY()
{
float Xvalue, Yvalue;
Xvalue=log10(t_ev); /*Select X-axis for the second plot. it is not time PlotnewLwd() should not be plotted*/
t3[n1]=t_ev;
X1[n1]=Xvalue;
Y1[n1]=log10(getLuminosity(M1initial,t_ev+tbegin)); /*cooling of WD1 without heating up*/
X2[n1]=Xvalue;
Y2[n1]=log10(getLuminosity(M2initial,t_ev+tbegin)); /*cooling of WD2 without heating up*/
X3[n1]=Xvalue;
if(log10(Pin[n1]/Lsol)>-7)
{Y3[n1]=log10(Pin[n1]/Lsol);}
else
{Y3[n1]=-7;}
X4[n1]=Xvalue;
if(log10(Pout[n1]/Lsol)>-7)
{Y4[n1]=log10(Pout[n1]/Lsol);}
else
{Y4[n1]=-7;}
printf("n1=%d X1=%4.2f Y1=%4.2f Y2=%4.2f Y3=%4.2f Y4=%4.2f \n", n1, X1[n1], Y1[n1], Y2[n1], Y3[n1], Y4[n1]);
if(noimpact==1)
{
X5[n5]=Xvalue;
Y5[n5]=log10(P_bl[n1]/Lsol);
//
printf("n5=%d X5=%4.2f Y5=%4.2f Y2=%4.2f\n", n5, X5[n5],Y5[n5], Y2[n1]);
n5++;
}
n1++;
}
/************************************************************************/
/* This function chops the Pin-graf up and it roughly ‘integrates‘ */
/* between the calculated point, to get a better resolution for 4000 */
/* in stead of ~40 steps.
*/
/************************************************************************/
float getPout(float t2)
{
int n=0;
float P; /*in J/s*/
float stop=0;
while(stop==0)
{
if(t2>t_ev)
{
printf("error in Pout()");
break;
}
if(t2>t3[n])
{n++;}
else
{stop=1;}
}
// printf("n=%d",n);
if(t2<tdisk) /*in the direct impact phase Pout is the power released in the impact spot.*/
{return(Pout[n]/Lsol);}
else /*in the disk phase Pout is the power released in the boundary layer. */
{return(P_bl[n]/Lsol);}
}
45
/************************************************************************/
/* This function chops the Pin-graph up and it roughly ‘integrates‘ */
/* between the calculated point, to get a better resolution for 4000 */
/* in stead of ~40 steps.
*/
/************************************************************************/
float getPin(float t2)
{
int n=0;
float P; /*in J/s*/
float stop=0;
while(stop==0)
{
if(t2>t_ev)
{
printf("error in Pin()");
break;
}
if(t2>t3[n])
{n++;}
else
{stop=1;}
}
return(Pin[n]/Lsol);
}
/****************************************************************/
/* This function calculates Lmax for a given M */
/****************************************************************/
float getLmax(float M)
{
float logLmax;
if(M<0.5) /*first get Lmax for different values of M*/
{logLmax=9.4-1.33*(0.45-M);}
if(M>=0.5)
{logLmax=9-(0.9-M);}
return(pow(10, logLmax));
}
/****************************************************************/
/* This function calculates and plots the new WD luminosities */
/* taking into account the heating of the WDs. */
/* getPin() and getPout() are used, because this function needs */
/* more steps to solve the integral than the original program */
/* uses. */
/****************************************************************/
void PlotnewLwd(float M, int linestyle)
{
float Lmax; /*in Lsol*/
float logLmax;
float L; /*in Lsol*/
float t2; /*in years*/
float t2step;
float Ldot; /*an infinidecimal step in L*/
float x[4001],y[4001], z[4001];
int n;
t2=1e4;
Lmax=getLmax(M);
t2step=t2/100;
L=getLuminosity(M,tbegin);
logLmax=log10(Lmax);
// printf("logLmax=%4.2le, Lmax=%4.2le, L=%4.2le \n", logLmax, Lmax, L);
n=0;
while(t2<t_ev/factor)
{
if(linestyle==1)
{
Ldot=1.333*pow(Lmax,-0.75)*(0.5*getPout(t2)-L)*pow(L,0.75);
}
if(linestyle==2)
{
Ldot=1.333*pow(Lmax,-0.75)*(getPin(t2)-L)*pow(L,0.75);
}
L+=Ldot*t2step;
t2+=t2step;
x[n]=log10(t2);
y[n]=log10(L); /*calculated luminosity with heating*/
z[n]=log10(getLuminosity(M,t2)); /*the old luminosity without heating*/
t2step*=1.005;
//
printf("n=%d x=%4.2g y=%4.2g, z[n]=%4.2g Ldot=%4.2le, -log10Ldot=%4.2le
// n, x[n], y[n], z[n], Ldot, log10(-Ldot), getPin(t2));
n++;
}
// printf("logLmax=%4.2le, Lmax=%4.2le, L=%4.2le \n", logLmax, Lmax, L);
cpgsls(linestyle);
cpgline(n,x,y);
// cpgline(n,x,z);
}
Pin=%4.2g\n",
int main()
{
/*checking if PGplot is working*/
if ((plotXvsY = cpgopen(deviceXvsY)) <= 0)
/* Open Y vs X plot*/
{
return EXIT_FAILURE;
}
if ((plotSpatial = cpgopen(deviceSpatial)) <= 0) /* Open Spatial Coordinates plot*/
{
46
return EXIT_FAILURE;
}
printf("test \n");
/*initializing some parameters*/
/*these variables can be changed freely:*/
tbegin=1e8; /*cooling time*/
M1=0.5;
M2=0.25;
factor=1.5; /*1.3=fast. 1.01 accurate*/
heating=1; /*do the WDs heat up? 1=> yes; 0=>no.*/
factorw1=0.5;
/*these variables should stay the same:*/
n1=0; /* n1..n4 change for different values of M1 and M2 */
M1initial=M1;
M2initial=M2;
timestep=7e3;
t_ev=timestep;
/*calculation the evolution of of the direct impact phase.*/
while(1)
{
noimpact=1;
M2+=M2dot*timestep; /* mass is conserved; Note: M2dot<0
*/
M1-=M2dot*timestep;
getDynamics();
getAngularmomentum();
getRocheLobes();
getBallistics(R1); /* noimpact can be set to 0 here if there is impact
*/
if(noimpact==1)
{
tdisk=t_ev;
printf("no more impact and tdisk=%4.2le \n", tdisk);
break; /* if there is no more impact, the diskphase ends.
*/
}
getIrradiatedsurface(); /*it calculates both the openingangle and the irradiatedsurface*/
getImpactdynamics();
getXvsY();
t_ev+=timestep;
timestep=timestep*factor;
//{} /*Close the loop here to make only one plotSpatial
*/
cpgslct(plotSpatial); /*Selects the figure to plot*/
cpgask(0); /*0=> new spatial graphs are automatically drawn. 1=>press enter for a new graph */
Plotrochelobes();
PlotM1();
Plotballistics();
Plotirradiatedsurface();
//
Plotconstructionlines(); /*This function is optional
*/
} /*Close the loop here to make a plotSpatial for all m */
/*calculation of the evolution of the disk impact phase */
while(t_ev<1e10)
{
getDynamics();
M2+=M2dot*timestep;
M1-=M2dot*timestep;
getAngularmomentum();
getRocheLobes();
getBallistics(R_disk); /*Note: there should always be an impact on the disk.
*/
getIrradiatedsurface(); /*it calculates both the openingangle and the irradiatedsurface
*/
getImpactdynamics();
noimpact=1; /*just to values for P_bl are taken... */
getXvsY(); /*...in getimpact */
t_ev+=timestep;
timestep=timestep*factor;
//{} /*Close the loop here to make only one plotSpatial
*/
cpgslct(plotSpatial); /*Selects the figure to plot*/
cpgask(0); /*0=> new spatial graphs are automatically drawn. 1=>press enter for a new graph */
Plotrochelobes();
PlotM1();
Plotballistics();
Plotirradiatedsurface();
cpgsfs(2); /*set fill style*/
cpgcirc(a1[0],a1[1],R_disk); /*Plotdisk, plots the disk*/
} /*Close the loop here to make a plotSpatial for all m (or i or j) */
cpgclos(); /*Closes plotSpatial*/
PlotYvsX();
if(heating==1)
{
PlotnewLwd(M1initial,1); /*gets and plots a cooling curve...*/ /* (mass of WD, accretor=1; donor=2)*/
PlotnewLwd(M2initial,2); /*... with accretional heating
*/
}
cpglab("log\\u10\\d(t) (years) ", "log\\u10\\d(L) (Solar luminosity)","");
cpgclos(); /*Closes plotXvsY*/
printf("heating=%d, M1=%4.2f M2=%4.2f log10(tbegin)=%4.2f, factorw1=%4.2f \n", heating, M1initial, M2initial,
log10(tbegin), factorw1);
return EXIT_SUCCESS;
}
47