iso_level.cpp - use difference in ionization / recombination rates in source/sink for exchange with next resolved atoms in next lower ionization stage. At high densities excited states have very large ion/rec rates which cancel one another when level is in LTE. Using the differences is more stable fur such densities.
trivial changes in comments
ion_solver.cpp
iso.h
iso_ionize_recombine.cpp
with this change in iso_level.cpp test suite has following issues:
blr_hizqso.out: crashed
blr_n09_p20_Z20.out: crashed
limit_conserve.out: crashed
all crashes are due to radius_increment finds inconsistent populations
radius_increment.cpp at line number 152
following have asserts thrown;
may be serious, should look at:
orion_hii_pdr - molecular ions changes, esp HeH+
trivial changes;
pdr_coolbb
blr_n13_p18_Z20 - took more iterations per zone
blr_n12_p19 slight change in 1640
known problem unrelated to this:
grains_conserve