[SofaBaseLinearSolver] Make CRSMultiMatrixAccessor optional (compilation and usage) #2372
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
CRSMultiMatrixAccessor was isolated in #2220 and was make compilable by default.
The only case where it could be used is in MatrixLinearSolver by defining a macro (SOFA_SUPPORT_CRS_MATRIX), but this one was never defined so effectively the CRSMultiMatrixAccessor was never used (even if compiled)
Thing is, CRSMultiMatrixAccessor takes a loooong time to compile (and takes heap of memory).
The reason is that it needs to compile
(6 * 6 * 6 * 2 * 2) * 2 = 1728functions because of chains of template. (EDIT actually it is even more than that:(6 + (6*6) + (6*6*6) + (6*6*6*2) + (6*6*6*2*2)) * 2
= 3108)So in the end, either you want to compile it and use it, or dont use it but dont compile it...
A cmake (advanced) option is introduced for people who really wish to use it.
By the way CRSMultiMatrixAccessor code quality is very dubious (const_cast<> everywhere...),
and the english comments are.... special
For the sake of it, std::cout calls have been replaced with msg_info() as well.
By submitting this pull request, I acknowledge that
I have read, understand, and agree SOFA Developer Certificate of Origin (DCO).
Reviewers will merge this pull-request only if