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

weighted BFBT Preconditioner #5830

Open
6 tasks
tjhei opened this issue Jun 6, 2024 · 6 comments
Open
6 tasks

weighted BFBT Preconditioner #5830

tjhei opened this issue Jun 6, 2024 · 6 comments

Comments

@tjhei
Copy link
Member

tjhei commented Jun 6, 2024

  • merge first matrix-based implementation, Implement BFBT preconditioner #5753
  • add tests/benchmarks
  • Run a large scaling test
  • Add AMG for Schur complement block
  • Experiment with skipping inner S solve and switching outer solver to GMRES/IDR
  • matrix-free implementation

FYI @quangx

@tjhei
Copy link
Member Author

tjhei commented Jun 11, 2024

examples to test:

  • coobook/convection_box/
  • benchmarks/burstedde/
  • benchmarks/annulus

@quangx
Copy link
Contributor

quangx commented Jun 12, 2024

examples to test:

  • coobook/convection_box/
  • benchmarks/burstedde/
  • benchmarks/annulus

Below is a table with iteration counts. Linear solver tolerance is set to 1e-10 for convection box and burstedde and 1e-6 for annulus.

Preconditioner Convection box Burstedde Annulus Steinberger Continental extension
Weighted BFBT 53 68 47 div by 0 5000+
Inverse Mass Matrix 50 34 56 - -

@tjhei
Copy link
Member Author

tjhei commented Jun 12, 2024

cookbooks/steinberger?
cookbooks/continental_extension?

@jdannberg
Copy link
Contributor

Some more suggestions:

2D Spherical

2D compressible convection with a reference profile and material properties from BurnMan
coookbooks/burnman/burnman.prm
→ need to set end time to 0

2D spherical, top: fixed velocity, bottom: tangential; T-dependent viscosity + viscosity jumps
→ this one could be used to test different formulations for the mass conservations equation as well (like projected density) if we think that might cause problems

Convection using a pressure–temperature look-up table and the rheology of Steinberger and Calderwood (2006)
cookbooks/steinberger/steinberger.prm
→ need to set end time to 0
2D quarter spherical shell with periodic boundary; projected density approximation, strong viscosity contrasts

Since the one above did not work: could try
Thermochemical plume model using multiple P–T look-up tables
cookbooks/multicomponent_steinberger/steinberger_thermochemical_plume.prm
This is like the one above, but with tangential velocity boundaries on all sides, and without the projected density approximation

3D spherical

benchmarks/nsinker_spherical_shell/gmg.prm
3D spherical, fized velocity top+ bottom

2D box

Sublithospheric convection beneath an oceanic plate with a grain size dependent rheology
cookbooks/grain_size_ridge/grain_size_ridge.prm
→ need to set end time to 0
combination of prescribed velocity and traction boundaries, very strong viscosity contrasts

3D box

relatively simple:
Using the World Builder to model the thermal structure of oceanic transform faults
cookbooks/transform_fault_behn_2007/temperature_dependent.prm (There’s aslo an isoviscous version in the same folder)
→ need to set end time to 0
combination of fixed boundary velocity and traction (material can flow through bottom, left, right boundaries)

@quangx
Copy link
Contributor

quangx commented Jun 30, 2024

Test Inverse Mass Matrix Weighted BFBT
2D Spherical 90,82 No convergence
3D Spherical (3,4 levels) 120, No convergence 56 , 82
2D box - No convergence
3D box - No convergence
Convection box 50 53
Burstedde 34 68
Annulus 56 47
Steinberger - Division by 0
Continental extension - No convergence

@tjhei
Copy link
Member Author

tjhei commented Jun 30, 2024

burnman.prm works when you set the pressure scaling to 1. This likely means something is still off with pressure scaling.

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

3 participants