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

Further developments in Polytope and RefFE for high order FEM #49

Closed
4 tasks
santiagobadia opened this issue Jul 19, 2019 · 4 comments
Closed
4 tasks

Comments

@santiagobadia
Copy link
Member

santiagobadia commented Jul 19, 2019

  1. For the moment I do not have a NodesArray. It is quite simple to create one, but I am not sure it is needed. In fact, it was not in RefFE. Adding it should be straighforward.

  2. For the moment, I keep the old one because for anisotropic order the new version is not working yet, we consider same order in all dimensions. On the other hand, the generation of monomials is only working for n-cubes and n-tets. We should probably think about changes in the polynomial machinery to include other cases.

As a result, there are two missing parts:

  • Create heterogeneous order nodes on n-cubes using the new machinery and eliminate the old NodesArray

  • Create a new NodesArray if needed. The only thing I have not implemented is the set of nodes in the closure of a n-face. Is that needed? It seems that it is not used in the code but I guess it will be needed in facet integration for non-conforming DG methods

  • Think about more general monomial generation for high order FEM

I still need to define:

@fverdugo
Copy link
Member

  • Think about more general monomial generation for high order FEM

This work needs to be done in the other repo TensorPolynomialBases.jl. I can do this. For scalar-valued polynomials it is quite clear what anisotropic order is. But for vector, and tensor valued ones? What do we need, 1. or 2. ?

  1. Different order in each direction, but idem for all components. E.g., in 2D, $u_1(x_1,x_2)$ and $u_2(x_1,x_2)$ have the same order in each direction.

  2. A more general case, where the order in each direction also depends on the component. E.g., in 2D, $u_1(x_1,x_2)$ and $u_2(x_1,x_2)$ can have different orders in each direction.

Implementing 1. is straight forward. Implementing 2. requires some more work but can also be done.

@santiagobadia
Copy link
Member Author

The funcionality 2 is needed to implement Nedelec or RT elements. E.g., Qk,k+1xQk+1,k. It can only be used for n-cubes. For Tets even more complicated, check Olm's article.

@santiagobadia santiagobadia changed the title Further developments for high order FEM Further developments in Polytope and RefFE for high order FEM Jul 21, 2019
@fverdugo
Copy link
Member

For n-cubes, I can implement the monomials needed for Nedelec or RT for arbitrary dimensions.

However, for n-simplices, do we want to implement the general formula in Olm's paper? or we need to implement only the formula for 2D and the formula for 3D?

@fverdugo
Copy link
Member

For n-cubes, I can implement the monomials needed for Nedelec or RT for arbitrary dimensions.

Done!

@santiagobadia I have implemented the monomial basis needed for Nedelec for n-cubes for arbitrary dims. It can be build with the constructor GradMonomialBasis (I have called like this since it corresponds to the gradient of the monomials of an isotropic Q-space, but we can find another name...)

using Gridap
p = Point{2,Int}[(2,3),(5,7)]
T = VectorValue{2,Float64}
b = GradMonomialBasis(T,3) # Q_{2,3} \times Q_{3,2}
evaluate(b,p)
evaluate((b),p)

You will need to instantiate your environment

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

2 participants