Todo List

O2scl

Todo

Global todo list:

  • examples:

    • add ex_string, ex_tensor, and ex_eos_had_rmf to the documentation

  • integ/multip

    • replace the old inte_exp_sinh and inte_tanh_sinh integrators with integ_double_exp_boost_multip

    • fix the docs for subdivisions in inte_adapt_cern

    • check to see if polylog.h classes need new integrators (done, created new polylog_multip)

    • make a most consistent interface for the multiprecision integrators and code reuse via, e.g. a parent class?

    • create multiprecision versions of the GSL integrators using the coefficients in the boost headers

  • part

    • improve and calibrate fermion_rel_ld and fermion_rel_cdf25

    • implement fermion_rel_ld in eos_lepton

  • etc

    • implement more code reuse in funct_multip_transform

    • move calc_utf8 and funct_strings classes down in the header file hierarchy so we can include polylogs and other related functions in calc_utf8

  • acol

    • document the cyl_bessel functions better

    • implement find for more types and fix the problem (what is it?) for size_t[]

    • sync read generic and output

    • more options for acol kde to-table, including the options to change the upper and lower x limits

Todo

In class acol_manager:

  • (Future) Fix documentation for value-grid command.

  • (Future) There is quite a bit of code duplication in comm_autocorr() between the “table” and “other” types. This could be streamlined.

  • (Future) sum/max/min/output/interp/deriv/integ/deriv2 for hist, hist_2d, and v<c>

  • (Future) Commands xindex and yindex for table3d.

  • (Future) Fix fit for table.

  • (Future) Use swap instead of copy in ‘select’ for table objects.

  • (Future) Make sure get_input() is used more consistently.

  • (Future) Make sure preview, output, internal, generic, and create work consistently across all types.

  • (Future) Stack-like operations (push, pop, swap, stack-list, etc.)?

  • (Future) Add functionality to ensure that three digit exponents are still handled gracefully (do this by creating a new boolean setting which, if true, always makes three spaces for exponents?)

  • (Future) Fix insert and insert_full so that it automatically renames columns

  • (Future) Allow “insert” commands to be restrictive, avoiding extrapolation

  • (Future) For strings, allow selection of words or substrings

(The original entry is located in <breathe>, line 1.)

Todo

In class auto_format:

  • Allow user-specified table alignments

  • switch to columnify::add_spaces() and add more complicated table line specifications

  • Implement row_max

Future:

  • Create a replacement for std::flush

  • Finish automatic table detection

  • For automatic table detection: allow user to change the number of rows which must have the same number of ‘words’ to verify a table.

  • Make internal algorithm more efficient.

(The original entry is located in <breathe>, line 1.)

Todo

In bessel_K_exp_integ_tl, better testing of accuracy.

(The original entry is located in <breathe>, line 1.)

Todo

In bose_einstein_integ_tl, better testing of accuracy.

(The original entry is located in <breathe>, line 1.)

Todo

  • In class boson_rel: Testing not completely finished.

(The original entry is located in <breathe>, line 1.)

Todo

In class calc_utf8:

  • Future: Add more special functions. Add hypot(x,y,z)?

  • Future: There is some code duplication across the functions, especially with regard to conversion between UTF8 and char32, which could be removed.

(The original entry is located in <breathe>, line 1.)

Todo

In class convert_units:

  • (Future) Add G=1.

(The original entry is located in <breathe>, line 1.)

Todo

In deriv_eqi::deriv_vector(): generalize to other values of npoints.

(The original entry is located in <breathe>, line 1.)

Todo

In class deriv_multip_gsl:

  • More carefully optimize pow_tol_func and the stepsize guesses.

  • Allow the user to specify the value of ‘h’ for the individual derivative objects.

  • Allow the user to determine how many function evaluations or precision required for the last derivative.

(The original entry is located in <breathe>, line 1.)

Todo

  • This function, eos_had_base::f_number_suscept(), should be overloaded for Skyrme with derivatives

(The original entry is located in <breathe>, line 1.)

Todo

  • This function, eos_had_base::f_inv_number_suscept(), should be overloaded for Skyrme with derivatives

(The original entry is located in <breathe>, line 1.)

Todo

  • In eos_had_ddc::calc_eq_e(): is the thermodynamic identity is satisfied even when the field equations are not solved? Check this.

(The original entry is located in <breathe>, line 1.)

Todo

In class eos_had_rmf:

  • The functions fcomp_fields(), fkprime_fields(), and fesym_fields() are not quite correct if the neutron and proton masses are different. For this reason, they are currently unused by saturation().

  • The fix_saturation() and calc_cr() functions use mnuc, and should be modified to allow different neutron and proton masses.

  • Check the formulas in the “Background” section

  • Make sure that this class properly handles particles for which inc_rest_mass is true/false

  • The calc_e() function fails to converge at lower densities. See the testing code which has trouble with NL3 and RAPR.

(The original entry is located in <breathe>, line 1.)

Todo

In class eos_had_rmf_hyp:

  • The couplings in the test code match the table but the maximum masses appear much smaller than GM91. I need to check that muons are added correctly, and it might be good to compare with a different reference. This also might be due to a different crust EOS.

  • The interpretation of the calc_e() function is a bit unclear, so I need to more clearly figure out what that function ought to do. I don’t think it’s really used at the moment.

(The original entry is located in <breathe>, line 1.)

Todo

  • In eos_had_schematic::set_a_from_mstar(): This was computed in schematic_sym.nb, which might be added to the documentation?

(The original entry is located in <breathe>, line 1.)

Todo

  • This function, eos_had_schematic::baryon_suscep() is untested.

(The original entry is located in <breathe>, line 1.)

Todo

In class eos_had_skyrme:

  • Convert W0 to b4 and b4p everywhere

  • Remove use of mnuc in calparfun()?

  • Update reference list.

(The original entry is located in <breathe>, line 1.)

Todo

  • This function, eos_had_skyrme::landau_nuclear() needs to be checked.

(The original entry is located in <breathe>, line 1.)

Todo

  • This function, eos_had_skyrme::landau_neutron() needs to be checked.

(The original entry is located in <breathe>, line 1.)

Todo

In function eos_had_skyrme::calpar():

  • Does this work for both ‘a’ and ‘b’ non-zero?

  • Compare to similar formulas in [Margueron02].

(The original entry is located in <breathe>, line 1.)

Todo

  • In eos_had_skyrme::alt_params_set(): These expressions are not exactly the same as those in [Bender03], so I need to find out why and make this more clear.

(The original entry is located in <breathe>, line 1.)

Todo

  • In class eos_nse_full: I don’t think inc_lept_phot=false works because then all WS cells have infinite size because of no electrons. For the moment, this variable is protected to discourage the user from changing it.

(The original entry is located in <breathe>, line 1.)

Todo

  • In eos_quark_cfl::calc_eq_temp_p(): It surprises me that n3 is not -res[11]. Is there a sign error in the color densities?

(The original entry is located in <breathe>, line 1.)

Todo

  • In eos_quark_cfl::gapped_eigenvalues(): In the code, the equal mass case seems to be commented out. Why?

(The original entry is located in <breathe>, line 1.)

Todo

  • In class eos_quark_njl: better documentation.

  • future Remove the stored quark pointers if they are unnecessary?

(The original entry is located in <breathe>, line 1.)

Todo

  • In class eos_sn_ls: There are still a few points for which the electron/photon EOS seems to be off, but this may be the result of small inaccuracies from finite-differencing the LS table.

(The original entry is located in <breathe>, line 1.)

Todo

  • In class eos_sn_stos: Add the T=0 and Ye=0 data to this class. Separate tables for these cases have been released, but I don’t think this class can read them yet.

(The original entry is located in <breathe>, line 1.)

Todo

In eos_tov_polytrope, document the behavior of the baryon density in the small energy density limit

(The original entry is located in <breathe>, line 1.)

Todo

Future: In fermi_dirac_integ_direct, create a new function allowing arbitrary values of ‘a’ in the equation above.

(The original entry is located in <breathe>, line 1.)

Todo

In fermi_dirac_integ_tl, better testing of accuracy.

(The original entry is located in <breathe>, line 1.)

Todo

  • In class fermi_dirac_multip: implement degenerate and nondegenerate expansions.

(The original entry is located in <breathe>, line 1.)

Todo

In class fermion_deriv_rel_tl:

  • Future: The option err_nonconv=false is not really implemented yet.

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

(The original entry is located in <breathe>, line 1.)

Todo

Class fermion_deriv_thermo_tl

Future:

  • 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.

(The original entry is located in <breathe>, line 1.)

Todo

In class fermion_eff:

  • Future: Use bracketing to speed up one-dimensional root finding.

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

(The original entry is located in <breathe>, line 1.)

Todo

In class fermion_nonrel_tl

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

  • Future: 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.

(The original entry is located in <breathe>, line 1.)

Todo

In class fermion_rel_tl:

  • Future: I had to remove the shared_ptr stuff because the default algorithm types don’t support multiprecision, but it might be nice to restore the shared_ptr mechanism somehow.

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

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

  • Future: I’d like to change the lower limit on the entropy integration, but the value in the code at the moment (stored in <tt>ll</tt>) makes bm_part2.cpp worse.

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

(The original entry is located in <breathe>, line 1.)

Todo

In class fermion_thermo_tl:

  • Future: Create a Chebyshev approximation for inverting the the Fermi functions for massless_calc_density() functions?

(The original entry is located in <breathe>, line 1.)

Todo

In function massless_pair_density()

  • Future: This could be improved by including more terms in the expansions.

(The original entry is located in <breathe>, line 1.)

Todo

In function calc_mu_deg()

  • Future: Make a function like this for dndm, dsdT, etc. for fermion_deriv .

(The original entry is located in <breathe>, line 1.)

Todo

In class fit_nonlin:

  • Allow the user to specify the derivatives

  • Fix so that the user can specify automatic scaling of the fitting parameters, where the initial guess are used for scaling so that the fitting parameters are near unity.

(The original entry is located in <breathe>, line 1.)

Todo

In class gen_test_number, need to test this class somehow.

(The original entry is located in <breathe>, line 1.)

Todo

In class inte_multi, the function integ_err() this class could now be made a child of the class inte in the future.

(The original entry is located in <breathe>, line 1.)

Todo

Class inte_qawf_gsl_sin: More documentation and examples for the qawf, qawo and qawc integrators.

(The original entry is located in <breathe>, line 1.)

Todo

CLass mcarlo_vegas: Mode = importance only doesn’t give the same answer as GSL yet.

(The original entry is located in <breathe>, line 1.)

Todo

Function mcarlo_vegas::vegas_minteg_err():

  • Should stage be passed by reference?

  • There was an update between gsl-1.12 and 1.15 which has not been implemented here yet.

(The original entry is located in <breathe>, line 1.)

Todo

Class mroot:

Future: Change ntrial to size_t?

(The original entry is located in <breathe>, line 1.)

Todo

In class mroot_cern:

Future:

  • Modify this so it handles functions which return non-zero values.

  • Move some of the memory allocation out of msolve()

  • Give the user access to the number of function calls

  • Rename nier6, nier7, and nier8 to something sensible.

  • It may be that the o2 native Householder transformations should be used here instead of the inline version given here.

Based on the CERNLIB routines RSNLEQ and DSNLEQ, which was based on [More79] and [More80] and is documented at http://wwwasdoc.web.cern.ch/wwwasdoc/shortwrupsdir/c201/top.html

(The original entry is located in <breathe>, line 1.)

Todo

class mroot_hybrids

Future:

  • Is all the setting of vectors and matrices to zero really necessary? Do they need to be executed even if memory hasn’t been recently allocated?

  • Convert more ubvectors to vec_t.

  • Some more of the element-wise vector manipulation could be converted to BLAS routines.

  • It’s kind of strange that set() sets jac_given to false and set_de() has to reset it to true. Can this be simplified?

  • Many of these minpack functions could be put in their own “minpack_tools” class, or possibly moved to be linear algebra routines instead.

  • There are still some numbers in here which the user could have control over, for example, the nslow2 threshold which indicates failure.

(The original entry is located in <breathe>, line 1.)

Todo

class mroot_hybrids

Future: Replace this with c dnrm2 from ref cblas_base.h

(The original entry is located in <breathe>, line 1.)

Todo

class mroot_hybrids

Future: Replace this function with daxpy?

(The original entry is located in <breathe>, line 1.)

Todo

class mroot_hybrids

Future: Replace this function with daxpy?

(The original entry is located in <breathe>, line 1.)

Todo

class mroot_hybrids

Future: This function is just right-multiplication, so we could use the O2scl cblas routines instead.

(The original entry is located in <breathe>, line 1.)

Todo

In class nstar_rot:

  • Better documentation is needed everywhere.

  • Test the resize() function

  • It appears that KAPPA and KSCALE contant an arbitrary constant, try changing it and see if we get identical results. Try to ensure that the values are consistent between the eos_nstar_rot class and the nstar_rot class.

  • Variables r_is_gp, p_center, h_center, and others only occur in spherical_star(), integrate(), and make_center(), and can be moved to function parameters or otherwise reorganized.

  • Directly compare spherical_star() output with tov_solve results

(The original entry is located in <breathe>, line 1.)

Todo

In class nucmass_dz_fit: Document each field.

(The original entry is located in <breathe>, line 1.)

Todo

In class nucmass_dz_fit_33: Document each field.

(The original entry is located in <breathe>, line 1.)

Todo

  • In nucmass_fit::eval_isospin_beta(): More documentation and compute uncertainty.

(The original entry is located in <breathe>, line 1.)

Todo

In class nucmass_frdm:

  • Fix pairing energy and double vs. int

  • Document drip_binding_energy(), etc.

  • Decide on number of fit parameters (10 or 12?) or let the user decide

  • Document the protected variables

  • Set the neutron and proton masses and hbarc to Moller et al.’s values

(The original entry is located in <breathe>, line 1.)

Todo

In class nucmass_hfb:

  • Mg40 is present in some tables but not others. Compare hfb14-plain with hfb14-plain_v0. This may be related to the fact that the mass excess of Mg40 differs significantly between the 2003 and 2013 Audi et al. tables?

  • Update to include hfb17.

(The original entry is located in <breathe>, line 1.)

Todo

  • In class nucmass_ldrop, 12/4/14: This doesn’t gracefully handle negative values of n0 and n1 as then the neutron and proton densities become negative. This needs to be addressed. For now, there is a fix at line 246 in nucmass_ldrop.cpp .

(The original entry is located in <breathe>, line 1.)

Todo

In class nucmass_ldrop_skin:

  • This is based on LPRL, but it’s a little different in Lattimer and Swesty. I should document what the difference is.

  • The testing could be updated.

(The original entry is located in <breathe>, line 1.)

Todo

Class nucmass_sdnp is unfinished.

(The original entry is located in <breathe>, line 1.)

Todo

Class nucmass_wlw is unfinished.

(The original entry is located in <breathe>, line 1.)

Todo

In class polylog, test with higher accuracy floating point types.

(The original entry is located in <breathe>, line 1.)

Todo

In class prob_cond_mdim_gaussian:

  • This should be a symmetric conditional probability, i.e. f$ P(x|y) = P(y|x) f$. Test this.

(The original entry is located in <breathe>, line 1.)

Todo

class root

Future:

  • Maybe consider allowing the user to specify the stream to which ‘verbose’ information is sent.

(The original entry is located in <breathe>, line 1.)

Todo

class root

Future: Return early if the bracketing procedure finds a root early?

(The original entry is located in <breathe>, line 1.)

Todo

class root_brent_gsl

Future:

  • There is some duplication in the variables c x_lower, c x_upper, c a, and c b, which could be removed. Some better variable names would also be helpful.

  • Create a meaningful enum list for ref o2scl::root_brent_gsl::test_form.

  • There is code duplication between the test_interval here and in root_toms748.

(The original entry is located in <breathe>, line 1.)

Todo

class root_cern

Future:

  • Double-check this class to make sure it cannot fail while returning 0 for success.

(The original entry is located in <breathe>, line 1.)

Todo

class root_cern

Future:

  • This number should probably default to one of the GSL tolerances.

(The original entry is located in <breathe>, line 1.)

Todo

class root

Future: Implement the functions solve() and solve_bkt() for derivative solvers.

(The original entry is located in <breathe>, line 1.)

Todo

class root_stef

Future:

  • There’s some extra copying here which can probably be removed.

  • Compare directly to GSL

  • This can probably be modified to shorten the step if the function goes out of bounds as in exc_mroot_hybrids.

(The original entry is located in <breathe>, line 1.)

Todo

In function pair_density():

  • Needs a bit more error checking and more documentation.

  • Future: Generalize to generic vector types. (Does this require reworking the GSL linear fitting routines? Doesn’t matter now, the GSL linear fitting routines are now reworked.)

  • Future: Possibly create a new gsl_bspline class which replaces the GSL bspline workspace

  • Future: Allow user to probe chi squared and the covariance?

(The original entry is located in <breathe>, line 1.)

Todo

In class table:

  • Future: Create a sort_column_names() or a function to arbitrarily rearrange the columns

  • The present structure, std::map<std::string,col,string_comp> atree and c std::vector<aiter> alist; could be replaced with c std::vector<col> list and c std::map<std::string,int> tree where the map just stores the index of the the column in the list.

(The original entry is located in <breathe>, line 1.)

Todo

In table::function_vector(): FIXME: there may be a problem with the OpenMP code if an exception is thrown in the calculator class and there is not a unique error handler for each thread.

(The original entry is located in <breathe>, line 1.)

Todo

In class table3d:

  • Future: Improve interpolation and derivative caching, possibly through non-const versions of the interpolation functions.

  • Future: Should there be a clear_grid() function separate from clear_data() and clear()?

  • Future: Allow the user to more clearly probe ‘size_set’ vs. ‘xy_set’? (AWS 07/18: This is apparently resolved.)

(The original entry is located in <breathe>, line 1.)

Todo

In class tensor:

  • Future: Create an operator[] for tensor and not just tensor1?

  • Future: Could implement arithmetic operators + and - and some different products.

  • Future: Implement copies to and from vector and matrices

  • Future: Implement tensor contractions, i.e. tensor = tensor * tensor

  • Future: Could be interesting to write an iterator for this class.

  • Future: Try character and string tensors?

(The original entry is located in <breathe>, line 1.)

Todo

Class tensor_grid: It is possible for the user to create a tensor_grid object, upcast it to a tensor object, and then use tensor::resize() to resize the tensor, failing to resize the grid. Following this, grid access functions will access random parts of memory or segfault. This can be fixed by ensuring that resize functions are virtual and have a version in tensor_grid which ensure that the grid and tensor data are matched. The problem is that the resize functions are templates, so they cannot be virtual.

  • Future: Create a swap function for the grid similar to the data swap function in the parent ref o2scl::tensor class?

  • Future: Only allocate space for grid if it is set.

  • Future: as with ref o2scl::tensor, generalize to other base data types.

  • Future: The function ref interp_linear_partial() appears to be a generalization of ref copy_table3d_interp_values_setxy(), so there may be some code duplication between the two that can be avoided.

(The original entry is located in <breathe>, line 1.)

Todo

In set_grid_packed(): Define a more generic interface for matrix types

(The original entry is located in <breathe>, line 1.)

Todo

In tensor_grid::interp_linear_partial(): Double check and document if the vector “ix_to_interp” needs to be ordered. I’m pretty sure it doesn’t, so long as the ordering in c val and c ix_to_interp are consistent.

(The original entry is located in <breathe>, line 1.)

Todo

In class uniform_grid:

  • Future: Implement operator==, etc?

(The original entry is located in <breathe>, line 1.)

Todo

In hfb_sp_load(): Document models 22 through 27.

(The original entry is located in <breathe>, line 1.)

Todo

In tensor::index_spec_preprocess():

Future: Improve this to be more intelligent about whitespace and other characters between index specifications. Right now, this function fails if there are, e.g. two spaces between index specs.

(The original entry is located in <breathe>, line 1.)

Todo

In tensor::rarrange_and_copy():

Future: Return a scalar if possible as a rank 1 tensor with 1 element.

(The original entry is located in <breathe>, line 1.)

Todo

In function split_string(), the rules surrounding spaces and quotes are not well documented.

  • Future: Replace with a better algorithm. Should quotes be escaped?

(The original entry is located in <breathe>, line 1.)

Todo

In function pair_calibrate()

  • Future: Create a version where the user specifies log vs. linear instead of autodetecting.

  • Future: Compare this algorithm to linear_or_log() and document the differences.

(The original entry is located in <breathe>, line 1.)

Todo

(Future) Create an HDF file I/O example

(The original entry is located in /Users/awsteiner2/wcs/o2scl/doc/o2scl/sphinx/hdf.rst, line 58.)

Todo

Create a 1- and 2-D histogram example.

(The original entry is located in /Users/awsteiner2/wcs/o2scl/doc/o2scl/sphinx/hist.rst, line 48.)

Todo

Fix the interpolation plot for this example.

(The original entry is located in /Users/awsteiner2/wcs/o2scl/doc/o2scl/sphinx/interp.rst, line 115.)

Todo

Global todo list:

  • examples:

    • add ex_string, ex_tensor, and ex_eos_had_rmf to the documentation

  • integ/multip

    • replace the old inte_exp_sinh and inte_tanh_sinh integrators with integ_double_exp_boost_multip

    • fix the docs for subdivisions in inte_adapt_cern

    • check to see if polylog.h classes need new integrators (done, created new polylog_multip)

    • make a most consistent interface for the multiprecision integrators and code reuse via, e.g. a parent class?

    • create multiprecision versions of the GSL integrators using the coefficients in the boost headers

  • part

    • improve and calibrate fermion_rel_ld and fermion_rel_cdf25

    • implement fermion_rel_ld in eos_lepton

  • etc

    • implement more code reuse in funct_multip_transform

    • move calc_utf8 and funct_strings classes down in the header file hierarchy so we can include polylogs and other related functions in calc_utf8

  • acol

    • document the cyl_bessel functions better

    • implement find for more types and fix the problem (what is it?) for size_t[]

    • sync read generic and output

    • more options for acol kde to-table, including the options to change the upper and lower x limits

(The original entry is located in /Users/awsteiner2/wcs/o2scl/doc/o2scl/sphinx/todos.rst, line 6.)

Todo

In yanic:

  • Need to fix function names in case where there is no namespace.

  • Simplify code duplication in parsing: reading global and member functions should be the same

  • Allow use of numpy.arange for uniform_grid arguments

  • Document .i format

  • Make sure data members named ‘del’ are properly renamed without hacking, e.g. with a py_name argument

  • Make sure negative size_t arguments are rejected in python

(The original entry is located in /Users/awsteiner2/wcs/o2scl/doc/o2scl/sphinx/yanic.rst, line 231.)