# Vector Basis Function

I had questions about accessing Nedelec basis functions before and I used them successfully. Thank you for your answers. But now I have another question. As given in DefElement, basis functions are available in the entire cell. For example, for the triangle element, the basis function value at any point is a 6-element vector corresponding to the (x,y) coordinates originating from 3 edges. However, in various works that I will do in more complex geometries, such as calculating the Grammian matrix, etc., I want to find the value of the Nedelec basis function originating from any edge at any point. I only want to find the value originating from this edge and calculate the Grammian matrix using these values. For example, for the figure given in the attachment, I want to access the basis functions originating from all edges, including adjacent edges, and find their inner product. This can be done with the function below, but edge numbering etc. In terms of I want to do what this function does:

V = FunctionSpace(mesh, (“Nedelec 1st kind H(curl)”, 1))
u = ufl.TrialFunction(V)
v = ufl.TestFunction(V)
a = ufl.inner(u, v) * ufl.dx
A=dolfinx.fem.petsc.assemble_matrix(dolfinx.fem.form(a))
A=dolfinx.fem.assemble_matrix(dolfinx.fem.form(a))
As = scipy.sparse.csr_matrix((A.data, A.indices, A.indptr))
Asf = As.toarray()
print(Asf)

I can also access the basic functons with this code Mapped quadrature points, weights and solution at these quadrature points - #4 by dokken, but my question is actually how can I access two edge vector basis I want to easily find the inner product of the function. I can somehow do this by writing code myself, but how can I do this more easily in Fenicsx? Actually, my question is kind of like, where there are multiple meshes, common edges, etc. how can I calculate the Grammian matrix accurately similar to the ‘a = ufl.inner(u, v) * ufl.dx’ function in complex scenarios. Additionally, Nedelec basis function element numbering for triangle elements is different from basic connectivity matrix element numbering. How does this function handle this numbering difference?

As far as I can tell, you should use `dolfinx.fem.Expression`, which you give pre-determined points on the reference element. Then, in turn, you can evaluate this expression at the physical points in any cell by calling `dolfinx.fem.Expression.eval(mesh, numpy_array_of_cell_indices)`
as shown in: