-
Notifications
You must be signed in to change notification settings - Fork 112
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
Not divisible block size with nullspace vectors #251
Comments
EDIT: this is wrong, see comments below. Hi, The following works:
|
Thanks for your rapid response! In the tutorial of nullspace vectors, you are using a block-valued backend with amgcl/amgcl/coarsening/runtime.hpp Lines 116 to 120 in 276a649
|
Thanks for pointing that out, I forgot about this feature! This makes my above response completely irrelevant, sorry. Here is what is really happening:
I am not sure what can be done here. We could, for example, merge a couple of aggregates at the end of aggregation algorithm so that the total number of aggregates is divisible by 2, but I think the bigger problem is that solving a problem with 3x3 structure using 2x2 blocks would be inefficient. With this specific example you could start with 3x3 blocks. That works, but seems to be less efficient that using scalar values:
P.S. this works for 3D problems, as in the tutorial you mentioned, because there we have 6 near-null space vectors, and the coarser systems may still be efficiently represented with 3x3 blocks. |
I see. Other AMG solvers have an option to set the number of systems of PDEs(for example, HYPRE_BoomerAMGSetNumFunctions in Hypre and PDE equations in ML, Trilinos). It seems to use the block structure to improve the scalar solver. Can we do a similar thing in AMGCL? |
When you pass coordinates to form nullspace, you implicitly set the number of equations. When you are not using nullspace vectors, you can set |
Hi @ddemidov ,$\times$ 2 block structure and works fine without nullspace vectors. But when I pass the coordinates to the solver, it returns
I am using AMGCL to solve a 2D linear elasticity problem. It has a 2
what(): Matrix size should be divisible by block_size
Do you have any idea of this problem?
Here are the parameters and sample data.
data.zip
The text was updated successfully, but these errors were encountered: