Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Transition from GslVector to libMesh::NumericVector #663

Open
dmcdougall opened this issue Nov 2, 2018 · 0 comments
Open

Transition from GslVector to libMesh::NumericVector #663

dmcdougall opened this issue Nov 2, 2018 · 0 comments
Assignees

Comments

@dmcdougall
Copy link
Member

This issue is a bear.

I have a branch called numeric_vector. There are a few parts to this branch:

  1. Add libmesh's numeric vector stuff to queso's build system
  2. Add GslNumericVector/GslSparseMatrix sublcasses of NumericVector/SparseMatrix that wrap around GslVector/GslMatrix
  3. Add explicit instantiations for queso's classes around the classes in 2.
  4. Add explicit instantiations for queso's classes around EigenSparse(Vector|Matrix)
  5. Items 3 and 4 require adding queso methods to these classes so that they compile with queso's "vector/matrix api"
  6. Take what's common out of 2. and 3. and put it in the base classes NumericVector/SparseMatrix
  7. Add explicit instantiation on of queso's classes around NumericVector/SparseMatrix
  8. Wherever queso or user code uses queso's api for interacting with vectors and matrices, use libmesh's api instead
  9. Remove the explicit instantiations around GslNumericVector/EigenSparseVector and the matrix equivalents

I've done up to item 4, but I haven't updated the test suite to cover that case. All of queso compiles, links, and passes tests (at least locally for me, I'm sure I missed stuff) with explicit instantiations for Eigen (so up to item 3 above) but the tests only hit the explicit instantiations around GslNumericVector and GslSparseMatrix.

There are definitely code stinks in this branch:

  1. I'm not properly generated the libmesh_config.h files from queso's build system (it should really all go into queso_config.h)
  2. The optimisation routines will need to be updated to use nlopt or similar optimisation package
  3. The tests need to be updated to cover Eigen (go through every source file in the test directory and replace: a) GslNumericVector with EigenSparseVector; and b) GslSparseMatrix with EigenSparseMatrix.

I'm switching employers and didn't get all of this finished, so I'm documenting the state of it here so it can be picked up. I'm sure I've forgotten things so I'll add stuff as I remember it.

People probably interested in this ticket are @roystgnr and @briadam

@dmcdougall dmcdougall self-assigned this Nov 2, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant