Skip to content

Conversation

@wence-
Copy link
Contributor

@wence- wence- commented Jul 5, 2019

This makes the default user experience friendlier.

@wence- wence- requested review from dham and pefarrell July 5, 2019 10:53
@colinjcotter
Copy link
Contributor

colinjcotter commented Jul 9, 2019 via email

@wence-
Copy link
Contributor Author

wence- commented Jul 9, 2019

Also isn't fieldsplit plus LU on the blocks only marginally better than unpreconditioned GMRES for e.g. mixed Poisson? This feels like a fool's errand ...

The proposal is:

  1. I can assemble an AIJ matrix -> use LU

  2. I can't assemble an AIJ matrix (Real constraints) -> use fieldsplit + LU on the bit I can assemble + sherman-morrison.

@pefarrell
Copy link
Contributor

Yes, if you have n real variables (n small, typically n = 1) then full Schur fieldsplit + LU for (1, 1) block + n iterations of GMRES on the Schur complement solves the problem exactly (in exact arithmetic).

@pefarrell
Copy link
Contributor

If you have a mixed system then even in 2D LU can get big fast and/or defeat the MUMPS memory management heuristics. Is this really a robust option?

David makes a good point. I would suggest also defaulting to "mat_mumps_icntl_14": 200 (or similar).

@rckirby
Copy link
Contributor

rckirby commented Jul 9, 2019 via email

@wence-
Copy link
Contributor Author

wence- commented Jul 10, 2019

OK, so which of these best describes the conclusion of these discussions?

  1. Yes, do this (with the better mumps options + fieldsplit/LU for problems with real blocks)
  2. Yes, do this, but use superlu_dist instead of mumps (malloc! 64bit!)
  3. No, continue with the current state of play.

@colinjcotter
Copy link
Contributor

colinjcotter commented Jul 10, 2019 via email

@pefarrell
Copy link
Contributor

I vote for option #1. With "mat_mumps_icntl_14": 200 MUMPS is almost bulletproof.

@colinjcotter No one is advocating fieldsplits when not necessary (they are necessary with real blocks because of technical limitations).

@rckirby
Copy link
Contributor

rckirby commented Jul 11, 2019 via email

@wence- wence- force-pushed the wence/solver-defaults branch 2 times, most recently from b4d2830 to 449388b Compare July 12, 2019 13:19
@wence- wence- force-pushed the wence/solver-defaults branch from 449388b to c1198d6 Compare July 12, 2019 13:23
@wence-
Copy link
Contributor Author

wence- commented Jul 12, 2019

If we're happy with the proposal of options, I think this is now right. If not, I'll leave it until agreement is reached on what we want.

pefarrell
pefarrell previously approved these changes Jul 15, 2019
@pefarrell
Copy link
Contributor

It would be good to have a test that just solved a problem with R-blocks.

@wence- wence- force-pushed the wence/solver-defaults branch 2 times, most recently from 0344278 to ce1f816 Compare August 26, 2019 10:13
@wence- wence- force-pushed the wence/solver-defaults branch from ce1f816 to 0609b07 Compare August 26, 2020 14:38
@wence-
Copy link
Contributor Author

wence- commented Aug 26, 2020

I think I finally fixed all the corner cases. Let's hope tests pass.

@wence- wence- force-pushed the wence/solver-defaults branch from 0609b07 to 978f495 Compare September 2, 2020 22:11
@wence-
Copy link
Contributor Author

wence- commented Sep 9, 2020

Ready for review. All tests are passing now.

We now no longer translate options when inserting into the options
dictionary.
@wence- wence- force-pushed the wence/solver-defaults branch from 978f495 to 0ca54f6 Compare September 21, 2020 10:52
This changes the default to obey the principle of least surprise.
@wence- wence- force-pushed the wence/solver-defaults branch from 0ca54f6 to 1c1beec Compare September 22, 2020 09:38
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

Successfully merging this pull request may close these issues.

7 participants