Ideas for Future Development
Class o2scl::fermion_deriv_rel_tl< fp_t >

The option err_nonconv=false is not really implemented yet.

The pair_density() function is a bit slow because it computes the non-derivative thermodynamic quantities twice, and this could be improved.

Class o2scl::fermion_deriv_thermo_tl< fp_t >

Include explicit zero-temperature calculation, maybe by making this a child of fermion_zerot or by making a new fermion_deriv_zerot?

There is also a closed form for the derivatives of massless fermions with pairs at finite temperature in Constantinou et al. 2014 which could be implemented here.

Member o2scl::fermion_deriv_thermo_tl< fp_t >::calc_mu_deg (fermion_deriv &f, fp_t temper, fp_t prec)
There is some repetition of the code for this function and the function o2scl::fermion_thermo_tl::calc_mu_deg() . which could be avoided.
Member o2scl::fermion_deriv_thermo_tl< fp_t >::calc_mu_ndeg (fermion_deriv &f, fp_t temper, fp_t prec, bool inc_antip=false)
There is some repetition of the code for this function and the function o2scl::fermion_thermo_tl::calc_mu_ndeg() . which could be avoided.
Class o2scl::fermion_eff

Use bracketing to speed up one-dimensional root finding.

Implement the same method of allowing the user to turn on or off the degenerate and nondegenerate expansions as in o2scl::fermion_rel_tl .

Class o2scl::fermion_nonrel_tl< inte_t, fp_t >

Implement o2scl::fermion_nonrel_tl::pair_density() and o2scl::fermion_nonrel_tl::pair_mu(). [AWS, 1/23/19: it is not entirely clear to me that antiparticles will be useful.]

This could be improved by performing a Chebyshev approximation (for example) to invert the density integral so that we don't need to use a solver.

Class o2scl::fermion_rel_tl< fp_t >

The expressions which appear in in the integrand functions density_fun(), etc. could likely be improved, especially in the case where o2scl::part::inc_rest_mass is false. There should not be a need to check if ret is finite.

It appears this class doesn't compute the uncertainty in the chemical potential or density with calc_density(). This could be fixed.

I'd like to change the lower limit on the entropy integration, but the value in the code at the moment (stored in ll) makes bm_part2.cpp worse.

The function pair_mu() should set the antiparticle integrators as done in fermion_deriv_rel.

Member o2scl::fermion_rel_tl< fp_t >::calc_density_tlate (fermion_t &f, fp_t temper)
There is still quite a bit of code duplication between this function and calc_mu_tlate() .
Member o2scl::fermion_rel_tl< fp_t >::pair_fun (fp_t x, fermion &f, fp_t T, bool log_mode)
Particles and antiparticles have different degeneracy factors, so we separately use the expansions one at a time. It is probably better to separately generate a new expansion function which automatically handles the sum of particles and antiparticles.
Class o2scl::fermion_thermo_tl< fp_t >
Create a Chebyshev approximation for inverting the the Fermi functions for massless_calc_density() functions?
Member o2scl::fermion_thermo_tl< fp_t >::calc_mu_deg (fermion &f, fp_t temper, fp_t prec=1.0e-18)
Make a function like this for dndm, dsdT, etc. for fermion_deriv .
Member o2scl::fermion_thermo_tl< fp_t >::massless_pair_density (fermion &f, fp_t temper)
This could be improved by including more terms in the expansions.
Class o2scl::fermion_zerot_tl< fp_t >
Use hypot() and other more accurate functions for the analytic expressions for the zero temperature integrals. [Progress has been made, but there are probably other functions which may break down for small but finite masses and temperatures]
Class o2scl::nucmass_ame

Create a caching and more intelligent search system for the table. The table is sorted by A and then N, so we could probably just copy the search routine from mnmsk_mass, which is sorted by Z and then N (some code written for this, but it doesn't work yet).

Should m_neut and m_prot be set to the neutron and proton masses from the table by default?

Class o2scl::nucmass_densmat
If this isn't going to be in a child of nucmass, then maybe we can simplify binding_energy_densmat_derivs() to just binding_energy().
Member o2scl::nucmass_densmat::binding_energy_densmat_derivs (double Z, double N, double npout, double nnout, double nneg, double T, double &E, double &dEdnp, double &dEdnn, double &dEdnneg, double &dEdT)
Extend to negative N and Z?
Class o2scl::nucmass_dz_fit
This appears to be limited for large nuclei because 'i' becomes larger than imax and then statements like noc[i][j]=moc-ju and noc[i+1][j]=ju become invalid. This needs to be more carefully understood and documented. For now, is_included() just arbitrarily chooses 240 as a maximum for N and Z.
Class o2scl::nucmass_fit
Convert to a real fit with errors and covariance, etc.
Class o2scl::nucmass_frdm
Add microscopic part.
Member o2scl::nucmass_info::parse_elstring (std::string ela, int &Z, int &N, int &A)

Warn about malformed combinations like Carbon-5

Right now, n4 is interpreted incorrectly as Nitrogen-4, rather than the tetraneutron.

Interpret strings with the full name rather than just the abbreviation.

Member o2scl::part_calibrate_class::part_calibrate (part_t &p, thermo_t &th, bool test_pair, std::string file, bool nr_mode=false, int verbose=0, bool external=false)
Also calibrate massless fermions?

Documentation generated with Doxygen. Provided under the GNU Free Documentation License (see License Information).