wiki:neqcooling

Version 27 (modified by ehansen, 12 years ago) ( diff )

Non-equilibrium Cooling


The Physics of NEQ Cooling

NEQ (Non-equilibrium) cooling has the potential to include a lot of physics. However, there are currently only a few things that have been tested. The NEQ cooling option provides a cooling rate based on hydrogen excitation, ionization, and recombination. The rate also includes an approximation for metal excitation based on the DM cooling curve. Helium can also be added to a simulation to make use of a more accurate mean molecular weight mu. However, ionization and recombination for helium has not yet been successfully tested. There is also untested code for molecular hydrogen (H2) dissociation.


Implementation into AstroBEAR 2.0

A lot has changed with NEQ cooling from astrobear 1.0 to astrobear 2.0.

In astrobear 1.0, the main cooling routine would call a subroutine called Cool_Derivatives. It would pass in q and something called cell info, and return dqdt for both energy and the various species. Before calculating cooling rates, Cooling_Derivatives would call a separate subroutine called EOS_vars to calculate the temperature and species number densities. It would also call a subroutine called nparticle to get the number of particles and number of electrons.

Astrobear 2.0 still uses Cool_Derivatives to get dqdt, but the subroutine has changed. The temperature and number densities are calculated ahead of time and passed into Cool_Derivatives. They are calculated by a single subroutine called GetNEQvars. This was done for 2 reasons…

1) Now the NEQ cooling routine looks a lot like the other cooling source terms. It calculates temperature exactly like the other routines, and it now includes familiar routines such as NEQCoolingStrength. Also, there is the familiar (gamma - 1) scaling depending on whether q is primitive or conservative. Similar to NEQCoolingStrength is a routine called NEQSpeciesChange which is used to get the change in the species number densities.

2) Any number density relevant to NEQ cooling can be calculated directly within Cooling_Derivatives. There is no longer any need to call the subroutine nparticle.

The main cooling routine also passes the iCooling parameter to Cool_Derivatives, but that is only used for Z Cooling.

There was also some work done to the initialization. A subroutine called Addneqtracers was created to add species tracers depending on which logicals the user has turned on. The only species that have been fully tested so far are H, HII, and He. The ionization and recombination for H/HII is well understood and works as expected in the code. HeII and HeIII ionization/recombination is questionable…He can be used to essentially raise the mean molecular weight mu, but it won't do anything else. The subroutine InitNeqCool? initializes the ionization and recombination tables.

NEQ Cooling makes use of DM cooling as well. This is why the routines InitDMCool and DMCoolingRate were moved to the NEQ cooling module neqcooling.f90. So the architecture is like this:

  • cooling.f90 is the main file that controls the different cooling source terms and it uses neqcooling.f90 via USE NEQCoolingSrc
  • neqcooling.f90 contains initialization subroutines for NEQ and DM cooling. It also has the DMCoolingRate function, the GetNEQvars subroutine, and the tables for ionization and recombination.
  • i_evolve.f90 is an include file for neqcooling.f90. It contains the all-important Cool_Derivatives which uses the tables from neqcooling.f90 to calculate dqdt.

There are several routines within these .f90 files which are probably not doing anything. They are just leftovers from astrobear 1.0 which we might not need anymore, but for now I will just leave them untouched. In the future these routines could probably be condensed and better organized.


NEQ cooling was initially tested with the radiative instability module. Those results are below, but these were inconclusive. The real test was done with the 1D radiative shock problem.

Initial Runs Using Radiative Instability Module

Density

These runs have the following initial parameters:

  • density = 1 particle/cc
  • velocity = 100 km/s
  • temperature = 100 K
  • resolution (fixed) = 1000 x 1 x 1
  • physical length of domain = 0.1 pc
  • final time = 1e-4 s
No Cooling
DM
NEQ


Temperature

Non-equilibrium Specifics

Attachments (7)

Note: See TracWiki for help on using the wiki.