-
Notifications
You must be signed in to change notification settings - Fork 570
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
MueLu: PCoarsen factory extension for serendipity element #13546
Comments
Automatic mention of the @trilinos/muelu team |
Depending on how you build the fine level operator, an alternative approach could be of interest. |
@cgcgcg Thanks, I will look into it. Do you know anything about the multiple dof per node in intrepid2? |
@nasseralkmim Can you explain why you want multiple dofs per node? Is it that you have multiple variables defined with the same basis? The usual thing for this is to use the single-dof basis multiple times. Intrepid2 would support multiple dofs per node through subclassing, but this seems like a much more complicated approach than just using the single-dof basis multiple times. |
@CamelliaDPG I'm doing standard elasticity with multiple translations per node. In MueLu I need to pass a string with the basis, for example: <Parameter name="pcoarsen: hi basis" type="string" value="hgrad_quad_i2"/>
<Parameter name="pcoarsen: lo basis" type="string" value="hgrad_quad_c1"/> Then, the if (deriv == "hgrad" && el == "quad" && poly == "c") {
if (degree == 1)
return rcp(new Intrepid2::Basis_HGRAD_QUAD_C1_FEM<KokkosExecutionSpace, Scalar, Scalar>());
else
return rcp(new Intrepid2::Basis_HGRAD_QUAD_Cn_FEM<KokkosExecutionSpace, Scalar, Scalar>(degree, Intrepid2::POINTTYPE_EQUISPACED)); Any idea on how to use single dof basis multiple times? Footnotes1 From |
@nasseralkmim How you manage this will depend on how you're doing your local to global mapping. Are you using the Panzer DofManager? I'm not too familiar with the examples we have, but I do see that there is one at This example doesn't involve MueLu directly; perhaps @cgcgcg can weigh in on whether there's anything special you need to do with MueLu for this case and/or what a good multivariate MueLu examples to imitate would be. |
@CamelliaDPG I'm not using I see the DOF manager is capable of managing multiple dofs per node and it is also used in the function mentioned by @cgcgcg. The question now is how to integrate this Footnotes1 https://github.com/trilinos/Trilinos/blob/master/packages/panzer/disc-fe/src/Panzer_Interpolation.cpp Trilinos/packages/muelu/src/Transfers/PCoarsen/MueLu_IntrepidPCoarsenFactory_def.hpp Line 546 in fb58dc8
|
Maybe @csiefer2 can help. |
IntrepidPCoarsenFactory, as it currently exists, is restricted to nodal single-dof basis functions supported by Intrepid/Intrepid2. |
Question
Hi, I would like to try the Pcoarsen factory to create a 2-level hierarchy from a quadratic element to a linear element.
I noticed that Serendipity quad elements were introduced here https://github.com/trilinos/Trilinos/commit/c3b1a94753b3611e3f931a1a1b6e9f026b30ecb8.
But the interface in MueLu apparently is not updated to parse those https://github.com/trilinos/Trilinos/blob/fb58dc8b5611d9606664cebd251de0b8949892ed/packages/muelu/src/Transfers/PCoarsen/MueLu_IntrepidPCoarsenFactory_def.hpp#L180.
Not sure if the rest of the PCoarsen factory is capable of supporting those elements.
Some questions:
BasisFactory
seems straight forward).Best regards,
Nasser
The text was updated successfully, but these errors were encountered: