Nuclear Network 'net14' for hydrodynamical calculations



This nuclear network solver is specially designed to be coupled to hydrodynamics codes that need to evaluate the gross impact in energy of nuclear processes related to alpha particles captures and photodisintegrations. These are specially relevant in Type Ia scenarios.

The network starts in 4He and goes up 13 nuclear species more, until 60Zn, via alpha-gamma reactions. Three heavy-ion alpha-producing reactions are also included (see diagram above). Minor effects, such as Coulombic corrections to the ionic component of the plasma (Ogata & Ichimaru, Phys. Rev. A 36, 1987; Yakolvev & Shalybkov, ASPRv 7, 311Y, 1989) and a screening enhancement factor (Mochkovitch & Nomoto, A&A 154, 1986) have been also incorporated to the scheme.

The main advantage of net14 is that it is based in a linearization of the differential of the implicit discretization of the equations governing the evolution of molar fractions of each nuclear specie. This allows the solver to track the nuclear evolution in a single iteration. If larger time-steps or very detailed nucleosynthetic studies are needed, is better to rely on the iterative version of this network (see Sec. 3.1.2 of the main paper). Nevertheless, in most cases net14 is enough for accounting of the overall nuclear evolution and energy input/output.

A second advantage is that net14 includes the energy equation as additional differential equation to be solved jointly with the species evolution equations. This provides temperature as an output. Solving the temperature equation along with the species evolution equation proved to be very numerically robust, specially during nuclear statistical equilibrium (NSE). This methodology also allows to consistently follow in detail the freeze-out of the system when density and/or temperature decrease, without imposing any freeze-out temperature.



net14 is structured as a Fortran90 subroutine (net14.f90) and a nuclear module (nuclear_module.f90), that can be called/imported from other programs. When the tar ball is unpacked the following structure is created:

  • makefile
  • plotnuc.gpl
  • testnuclear.f90
  • src/eose.f
  • src/eosi.f
  • src/eosr.f
  • src/net14.f90
  • src/nuclear_module.f90

Of those, only net14.f90 and nuclear_module.f90 are actually needed to implement net14 in another code. All the other files are the infrastructure to test/play with net14, mimicking a series of scenarios that involve different burning stages.

If you do 'make clean' and 'make', a 'runnet14' executable file will be created. The file '' contains all the data that is needed to setup specific scenarios. The default scenario provided with the tar ball corresponds to Carbon and Oxygen burning under the explosive conditions that are typical on White Dwarfs that are the onset of type Ia Supernovas.


First run with net14

Compile the testing code coupled with net14 doing 'make clean' and 'make'. This will generate an executable file 'runnet14'. Execute that file and, after some screen output, it will generate a data file named 'result.d'. This file contains the following data in columns, where each row corresponds to one time-step:

  • physical time (s)
  • temperature (K)
  • time-step (s)
  • sum of mass fractions
  • 14 columns with the mass fraction of every specie
  • density (g/cm3)
  • nuclear energy generation rate

To easily see the evolution of the mass fraction of every specie, we include a Gnuplot script that plots all 14 species in function of the time-step number (i.e. global iteration). In Gnuplot, simply do load 'plotnuc.gpl' and the following plot should appear:


Now let's assume that an adiabatic expansion takes place. As the dynamical timescale is usually very big compared with the typical nuclear timescale for carbon burning, it is reasonable to assume that the burning happens very fast and the system doesn't reacts to expansion until it has reached NSE (where timescales are long again). Therefore, we can set the following parameters in

  • Adiabatic_exp T
  • Start_exp 1000
  • Iterations 2000

Now we can execute runnet14 again (no need to re-compile) and we will obtain the following evolution:

As density decreases exponentially, the temperature also decreases, following an adiabatic path. As nuclear rates are very sensitive to Temperature, we rapidly get out of equilibrium as photodesintegrations become less and less efficient. Neverthless, alpha captures are still happening and all elements scale up in the chain until reaching the iron peak, in particular 56Ni. The abundances of all elements flatten when temperature and density are low enough to sustain further nuclear reaction, and they freeze out. In particular, every element freezes out at different iterations, meaning that they hava a different freeze-out temperature.



The main authors of SPHYNX are Rubén M. Cabezón and Domingo García-Senz.

For questions, bug-reports, and/or suggestions you can contact them writting an email to:

  • ruben.cabezon <at>
  • domingo.garcia <at>

Installation and compiling

net14 is written in fortran90. Therefore a fortran compiler is needed. Apart from this, the tutorial below needs gnuplot to generate the plots shown.

After downloading net14, uncompress it with tar xjvf net14-<version>.tar.bz2

To compile the package simply do:

  • make clean
  • make

This will generate an executable named runnet14.


Parameters file

  • The first 14 lines contain the initial mass fraction of every species.
  • Initial_temp: Initial given Temperature (K)
  • Initial_dens: Initial given density (g/cm3)
  • Iterations: Maximum number of time-steps for the simulated scenario.
  • Screening: Activate (T)  or deactivate (F) the enhanced factors due to screening.
  • Adiabatic_exp: Activate (T)  or deactivate (F) the mimicking of an adiabatic expansion via decreasing density exponentially.
  • Start_exp: Iteration at which the mimicking of the adiabatic expansion should start (f.e. a iteration when the system is in NSE).
  • Isotherm_test: Activate (T)  or deactivate (F) a test with fixed temperature (f.e. test 28Si photodissociation).
  • Theta: Can take values 0 <= Theta < 1. If Theta=0 the calculation is fully implicit. If Theta ~ 1 the caculation is fully explicit. (Recommended value: Theta=0)