Skip to content

Transition from GslVector to libMesh::NumericVector #663

@dmcdougall

Description

@dmcdougall

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions