eos_fixed_ionization

Module

Description

$Id$

Thermodynamics with Fixed ionization fraction

** AUTOMATIC CPARAM.INC GENERATION ************************ Declare (for generation of cparam.inc) the number of f array variables and auxiliary variables added by this module

CPARAM logical, parameter :: leos = .true., leos_ionization = .true., leos_temperature_ionization=.false. CPARAM logical, parameter :: leos_idealgas = .false., leos_chemistry = .false.

MVAR CONTRIBUTION 0 MAUX CONTRIBUTION 0

PENCILS PROVIDED ss; gss(3); ee; pp; lnTT; cs2; cp; cp1; cp1tilde PENCILS PROVIDED glnTT(3); TT; TT1; gTT(3); yH; hss(3,3); hlnTT(3,3) PENCILS PROVIDED rho_anel PENCILS PROVIDED del2ss; del6ss; del2lnTT; cv; cv1; glnmumol(3); ppvap; csvap2 PENCILS PROVIDED rho1gpp(3)


Quick access

Variables:

b_ext_eos, bc_lnrho_hdss_z_liso, calc_pencils_eos, calc_pencils_eos_pencpar, calc_pencils_eos_std, chih_ev, chihminus_ev, cp_const, cpdry, cpdry1, cs0, cs20, cs20_tdep_rate, cs2_tdep_ascale_power, cs2bot, cs2top, cvdry, cvdry1, dlnrho0dz, ee_ion, enum_tdep_cs2_type, eos_before_boundary, eos_update_aux, eoscalc, eoscalc_elem, eoscalc_farray, eoscalc_farray_range, eoscalc_pencil, eoscalc_point, eoscalc_point_f, eosperturb, error_cp, fac_cs, find_mass, get_average_pressure, get_cp, get_cv, get_soundspeed, get_ss, get_ss_pencil, get_stratz, getmu, gz_coeff, gztype, ics, icv, idelta, ieosvar1, ieosvar2, ieosvar_count, ieosvars, ifvap, iglobal_cs2, iglobal_glntt, imumol1, inabad, init_eos, input_file, ioncalc, ioninit, isothermal_lnrho_ss, isothmid, ivars_mod, kappa0, kappa_cst, l_cp, l_gamma, l_gamma_m1, lcalc_cp, lcalc_cp_full, lcheminp_eos, lconst_yh, lcp_as_aux, lcs2_tdep, lcs_as_aux, lcs_as_comaux, lcv_as_aux, ldelta_as_aux, leos_isentropic, leos_isobaric, leos_isochoric, leos_isothermal, leos_localisothermal, lgamma_as_aux, lhminus_opacity_correction, lhubble_eos, linterp_pressure, ll1, ll2, lnabad_as_aux, lnpp_bot, lnrho0, lnrho_e, lnrho_e_, lnrho_h, lnrho_he, lnrho_p, lntt_ion, lntt_ion_, lnttlnrho, lnttss, lpp_as_aux, lpres_grad, lrevise_chih_ev, lrevise_chihminus_ev, lss_as_aux, lstratset, mm1, mm2, mu1_0, mu1_full, mu1yhxhe, mudry, mudry1, muvap, muvap1, nabla_ad, nn1, nn2, one_yh_term, opacity_type, pp0, pp_ion, pr_number, pres_corr, pressure_gradient, pressure_gradient_farray, pressure_gradient_point, read_species, read_thermodyn, rgas_cgs, rho0, rho02, rho_e, rho_e_, rho_h, rho_he, rtsafe, rtsafe_pencil, saha, scale_rgas, set_stratz, sigmasbt, srad0, ss_ion, ss_ion1, tau_relax, tdep_cs2_type, temperature_gradient, temperature_hessian, temperature_laplacian, tt_ion, tt_ion_, va2max_eos, va2power_eos, write_thermodyn, xh2, xhe, xhe_term, xtop, yh0, yh_const, yh_term, yhacc, yhmax, yhmin, ymetals

Routines:

bc_ism(), bc_lnrho_hds_z_iso(), bc_lnrho_pressure_z(), bc_lnrho_temp_z(), bc_ss_a2stemp_x(), bc_ss_a2stemp_y(), bc_ss_a2stemp_z(), bc_ss_energy(), bc_ss_flux(), bc_ss_flux_condturb_mean_x(), bc_ss_flux_condturb_x(), bc_ss_flux_condturb_z(), bc_ss_flux_turb(), bc_ss_flux_turb_x(), bc_ss_stemp_x(), bc_ss_stemp_y(), bc_ss_stemp_z(), bc_ss_temp2_z(), bc_ss_temp3_z(), bc_ss_temp_old(), bc_ss_temp_x(), bc_ss_temp_y(), bc_ss_temp_z(), bc_stellar_surface(), eos_before_boundary(), get_average_pressure(), get_gamma_etc(), get_slices_eos(), get_soundspeed(), get_stratz(), getdensity(), getmu(), getpressure(), gettemperature(), init_eos(), initialize_eos(), ioncalc(), isothermal_entropy(), isothermal_lnrho_ss(), pencil_criteria_eos(), pencil_interdep_eos(), read_eos_init_pars(), read_eos_run_pars(), register_eos(), rprint_eos(), select_eos_variable(), temperature_gradient(), temperature_hessian(), temperature_laplacian(), units_eos(), write_eos_init_pars(), write_eos_run_pars()

Needed modules

Variables

  • equationofstate/calc_pencils_eos [public]
  • equationofstate/calc_pencils_eos_pencpar [private]
  • equationofstate/calc_pencils_eos_std [private]
  • equationofstate/cp_const [real,public/optional/default=impossible]
  • equationofstate/cs0 [real,public/optional/default=1.0]
  • equationofstate/cs20 [real,public/optional/default=1.0]
  • equationofstate/cs2bot [real,public/optional/default=1.0]
  • equationofstate/cs2top [real,public/optional/default=1.0]
  • equationofstate/ee_ion [real,private]
  • equationofstate/eos_before_boundary [public]
  • equationofstate/eoscalc [public]
  • equationofstate/eoscalc_elem [private]
  • equationofstate/eoscalc_farray [private]
  • equationofstate/eoscalc_pencil [private]
  • equationofstate/eoscalc_point [private]
  • equationofstate/gamma [real,private/optional/default=1.6666666666666667]
  • equationofstate/gamma1 [real,private]
  • equationofstate/gamma_m1 [real,private]
  • equationofstate/get_average_pressure [public]
  • equationofstate/get_soundspeed [public]
  • equationofstate/get_stratz [public]
  • equationofstate/ilnrho_cs2 [integer,parameter=5]
  • equationofstate/ilnrho_ee [integer,parameter=2]
  • equationofstate/ilnrho_eth [integer,parameter=14]
  • equationofstate/ilnrho_lntt [integer,parameter=4]
  • equationofstate/ilnrho_pp [integer,parameter=3]
  • equationofstate/ilnrho_ss [integer,parameter=1]
  • equationofstate/ilnrho_tt [integer,parameter=9]
  • equationofstate/imass [integer,public/optional/default=0]
  • equationofstate/init_eos [public]
  • equationofstate/ioncalc [public]
  • equationofstate/ipp_cs2 [integer,parameter=12]
  • equationofstate/ipp_ss [integer,parameter=11]
  • equationofstate/irho_cs2 [integer,parameter=6]
  • equationofstate/irho_ee [integer,parameter=15]
  • equationofstate/irho_eth [integer,parameter=13]
  • equationofstate/irho_lntt [integer,parameter=8]
  • equationofstate/irho_pp [integer,parameter=16]
  • equationofstate/irho_ss [integer,parameter=7]
  • equationofstate/irho_tt [integer,parameter=10]
  • equationofstate/ivars_mod [integer,private]
  • equationofstate/kappa0 [real,private]
  • equationofstate/kappa_cst [real,private/optional/default=1.0]
  • equationofstate/lnrho0 [real,public/optional/default=0.0]
  • equationofstate/lnrho_e [real,private]
  • equationofstate/lnrho_e_ [real,private]
  • equationofstate/lnrho_h [real,private]
  • equationofstate/lnrho_he [real,private]
  • equationofstate/lnrho_p [real,private]
  • equationofstate/lntt0 [real,public]
  • equationofstate/lntt_ion [real,private]
  • equationofstate/lntt_ion_ [real,private]
  • equationofstate/lnttlnrho [real,private]
  • equationofstate/lnttss [real,private]
  • equationofstate/lpres_grad [logical,public/optional/default=.false.]
  • equationofstate/mu1yhxhe [real,private]
  • equationofstate/nabla_ad [real,private]
  • equationofstate/one_yh_term [real,private]
  • equationofstate/opacity_type [character,private/optional/default='ionized_h']
  • equationofstate/pr_number [real,public/optional/default=0.7]
  • equationofstate/pressure_gradient [public]
  • equationofstate/pressure_gradient_farray [private]
  • equationofstate/pressure_gradient_point [private]
  • equationofstate/rgas [real,private]
  • equationofstate/rho0 [real,public/optional/default=1.0]
  • equationofstate/srad0 [real,private]
  • equationofstate/ss_ion [real,private]
  • equationofstate/temperature_laplacian [public]
  • equationofstate/tt_ion [real,private]
  • equationofstate/tt_ion_ [real,private]
  • equationofstate/xh2 [real,private/optional/default=0.0]
  • equationofstate/xhe [real,private/optional/default=0.1]
  • equationofstate/xhe_term [real,private]
  • equationofstate/yh0 [real,private/optional/default=0.0]
  • equationofstate/yh_term [real,private]

Subroutines and functions

subroutine  equationofstate/register_eos()

14-jun-03/axel: adapted from register_ionization

Use :

sharedvariables (put_shared_variable())

Call to:

svn_id(), fatal_error(), warning(), temperature_gradient(), g2ij(), temperature_laplacian(), del6(), temperature_hessian(), not_implemented()

subroutine  equationofstate/getmu([f[, mu_tmp]])

Calculate mean molecular weight of the gas

12-aug-03/tony: implemented 30-mar-04/anders: Added molecular hydrogen to ionization_fixed

Parameters:
Call to:

fatal_error(), warning(), temperature_gradient(), g2ij(), temperature_laplacian(), del6(), temperature_hessian(), not_implemented()

subroutine  equationofstate/units_eos()

dummy: here we don’t allow for inputting cp.

Call to:

warning(), fatal_error(), temperature_gradient(), g2ij(), temperature_laplacian(), del6(), temperature_hessian(), not_implemented()

subroutine  equationofstate/initialize_eos(f)

Perform any post-parameter-read initialization, e.g. set derived parameters.

2-feb-03/axel: adapted from Interstellar module

Parameters:

f (mx,my,mz,mfarray) [real]

Call to:

warning(), fatal_error(), temperature_gradient(), g2ij(), temperature_laplacian(), del6(), temperature_hessian(), not_implemented()

subroutine  equationofstate/select_eos_variable(variable, findex)

02-apr-06/tony: implemented

Parameters:
  • variable [character,in]

  • findex [integer,in]

Call to:

temperature_gradient(), g2ij(), temperature_laplacian(), del6(), temperature_hessian(), warning(), fatal_error(), not_implemented()

subroutine  equationofstate/pencil_criteria_eos()

All pencils that the EquationOfState module depends on are specified here.

02-04-06/tony: coded

EOS is a pencil provider but evolves nothing so it is unlokely that it will require any pencils for it’s own use.

Call to:

temperature_gradient(), g2ij(), temperature_laplacian(), del6(), temperature_hessian(), warning(), fatal_error(), not_implemented()

subroutine  equationofstate/pencil_interdep_eos(lpencil_in)

Interdependency among pencils from the Entropy module is specified here.

20-11-04/anders: coded

Parameters:

lpencil_in (npencils) [logical]

Call to:

temperature_gradient(), g2ij(), temperature_laplacian(), del6(), temperature_hessian(), warning(), fatal_error(), not_implemented()

subroutine  equationofstate/getdensity(ee, tt, yh, rho)
Parameters:
  • ee [real,in]

  • tt [real,in]

  • yh [real,in]

  • rho [real,out]

Call to:

warning(), fatal_error(), not_implemented()

subroutine  equationofstate/get_gamma_etc([gamma[, cp[, cv[, f]]]])
Parameters:
  • gamma [real,out,]

  • cp [real,out,]

  • cv [real,out,]

  • f (mfarray) [real,in,]

Call to:

warning(), fatal_error(), not_implemented()

subroutine  equationofstate/temperature_gradient(f, glnrho, gss, glntt)

Calculate thermodynamical quantities, cs2 and cp1tilde and optionally glnPP and glnTT gP/rho=cs2*(glnrho+cp1tilde*gss)

17-nov-03/tobi: adapted from subroutine eoscalc

Parameters:
  • f (mx,my,mz,mfarray) [real,in]

  • glnrho (nx,3) [real,in]

  • gss (nx,3) [real,in]

  • glntt (nx,3) [real,out]

Call to:

fatal_error(), not_implemented()

subroutine  equationofstate/temperature_hessian(f, hlnrho, hss, hlntt)

Calculate thermodynamical quantities, cs2 and cp1tilde and optionally hlnPP and hlnTT hP/rho=cs2*(hlnrho+cp1tilde*hss)

17-nov-03/tobi: adapted from subroutine eoscalc

Parameters:
  • f (mx,my,mz,mfarray) [real,in]

  • hlnrho (nx,3,3) [real,in]

  • hss (nx,3,3) [real,in]

  • hlntt (nx,3,3) [real,out]

Call to:

fatal_error(), not_implemented()

subroutine  equationofstate/read_eos_init_pars(iomsg)
Parameters:

iomsg [character,out]

Use :

file_io (parallel_unit())

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/write_eos_init_pars(unit)
Parameters:

unit [integer,in]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/read_eos_run_pars(iomsg)
Parameters:

iomsg [character,out]

Use :

file_io (parallel_unit())

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/write_eos_run_pars(unit)
Parameters:

unit [integer,in]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/isothermal_entropy(lnrho, t0, ss)

Isothermal stratification: initilizes ss from lnrho. This routine should be independent of the gravity module used.

Sound speed (and hence Temperature), is initialised to the reference value:

sound speed: cs^2_0 from start.in density: rho0 = exp(lnrho0)

11-jun-03/tony: extracted from isothermal routine in Density module

to allow isothermal condition for arbitrary density

17-oct-03/nils: works also with leos_ionization=T 18-oct-03/tobi: distributed across ionization modules

Parameters:
  • lnrho (mx,my,mz) [real,in]

  • t0 [real,in]

  • ss (mx,my,mz) [real,out]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/isothermal_lnrho_ss(lnrho, t0, rho0, ss)

Isothermal stratification for lnrho and ss (for yH=0!)

Uses T=T0 everywhere in the box and rho=rho0 in the mid-plane

Currently only works with gravz_profile=’linear’, but can easily be generalised.

11-feb-04/anders: Programmed more or less from scratch

Parameters:
  • lnrho (mx,my,mz) [real,out]

  • t0 [real,in]

  • rho0 [real,in]

  • ss (mx,my,mz) [real,out]

Use :

gravity (gravz_profile())

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_ss_flux(f, topbot[, lone_sided])

constant flux boundary condition for entropy (called when bcz=’c1’)

23-jan-2002/wolf: coded 11-jun-2002/axel: moved into the entropy module

8-jul-2002/axel: split old bc_ss into two 3-oct-16/MR: added new optional switch lone_sided

Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

  • lone_sided [logical]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_ss_flux_turb(f, topbot)

dummy routine

4-may-2009/axel: dummy routine

Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_ss_flux_turb_x(f, topbot)

dummy routine

31-may-2010/pete: dummy routine

Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_ss_flux_condturb_x(f, topbot)

23-apr-2014/pete: dummy

Parameters:
Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_ss_flux_condturb_mean_x(f, topbot)

07-jan-2015/pete: dummy

Parameters:
Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_ss_flux_condturb_z(f, topbot)

15-jul-2014/pete: dummy

Parameters:
Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_ss_temp_old(f, topbot)

boundary condition for entropy: constant temperature

23-jan-2002/wolf: coded 11-jun-2002/axel: moved into the entropy module

8-jul-2002/axel: split old bc_ss into two

23-jun-2003/tony: implemented for leos_fixed_ionization

Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_ss_temp_x(f, topbot)

boundary condition for entropy: constant temperature

3-aug-2002/wolf: coded

Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_ss_temp_y(f, topbot)

boundary condition for entropy: constant temperature

3-aug-2002/wolf: coded

Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_ss_temp_z(f, topbot[, lone_sided])

boundary condition for entropy: constant temperature

3-aug-2002/wolf: coded

Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

  • lone_sided [logical]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_lnrho_temp_z(f, topbot)

boundary condition for density: constant temperature

19-aug-2005/tobi: distributed across ionization modules

Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_lnrho_pressure_z(f, topbot)

boundary condition for density: constant pressure

19-aug-2005/tobi: distributed across ionization modules

Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_ss_temp2_z(f, topbot)

boundary condition for entropy: constant temperature

3-aug-2002/wolf: coded

26-aug-2003/tony: distributed across ionization modules

Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_ss_temp3_z(f, topbot)

31-jan-2013/axel: coded to impose cs2bot and dcs2bot at bottom

Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_ss_stemp_x(f, topbot)

boundary condition for entropy: symmetric temperature

3-aug-2002/wolf: coded

Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_ss_stemp_y(f, topbot)

boundary condition for entropy: symmetric temperature

3-aug-2002/wolf: coded

Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_ss_stemp_z(f, topbot)

boundary condition for entropy: symmetric temperature

3-aug-2002/wolf: coded

Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_ss_a2stemp_x(f, topbot)

boundary condition for entropy: symmetric temperature

3-aug-2002/wolf: coded

Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_ss_a2stemp_y(f, topbot)

boundary condition for entropy: symmetric temperature

3-aug-2002/wolf: coded

Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_ss_a2stemp_z(f, topbot)

boundary condition for entropy: symmetric temperature

3-aug-2002/wolf: coded

Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_ss_energy(f, topbot)

boundary condition for entropy

may-2002/nils: coded 11-jul-2002/nils: moved into the entropy module

Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_stellar_surface(f, topbot)
Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_lnrho_cfb_r_iso(f, topbot)
Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_lnrho_hds_z_iso(f, topbot)
Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_lnrho_hdss_z_iso(f, topbot)
Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

Call to:

not_implemented(), fatal_error()

subroutine  equationofstate/bc_ism(f, topbot, j)

30-nov-15/fred: Replaced bc_ctz and bc_cdz. Apply observed scale height locally from Reynolds 1991, Manchester & Taylor 1981 for warm ionized gas - dominant scale height above 500 parsecs. Apply constant local temperature across boundary for entropy. Motivation to prevent numerical spikes in shock fronts, which cannot be absorbed in only three ghost cells, but boundary thermodynamics still responsive to interior dynamics. 06-jun-22/fred update to allow setting scale height in start.in or run.in default is density_scale_factor=impossible so that scale_factor is 0.9, assuming unit_length = 1 kpc and scale is 400 pc. To change scale height add to start_pars or run_pars density_scale_factor=… in dimensionless units Copied from eos_ionization written for entropy - may need revision Currently not correct for energy variable

Parameters:
  • f (,,*,*) [real]

  • topbot [integer,in]

  • j [integer]

Call to:

fatal_error()

subroutine  equationofstate/pushpars2c(p_par)
Parameters:

p_par (20) [integer]

Use :

syscalls (copy_addr())