I tried to understand the meaning of different syntax of different FE spaces that I thought they were the same. But I found they were different.

1.

```
V1 = HDiv ( mesh, order = order, dirichlet = "wall|cyl|inlet" )
V2 = FESpace ( "vectorfacet", mesh, order = order, dirichlet = "wall|cyl|inlet" )
Q = L2( mesh, order = order-1)
V = FESpace ([V1,V2,Q])
```

2.

```
V1 = HDiv ( mesh, order = order, dirichlet = "wall|cyl|inlet" )
V2=TangentialFacetFESpace (mesh, order = order, dirichlet ='wall|cyl|inlet' )
Q = L2( mesh, order = order-1)
V = FESpace ([V1,V2,Q])
```

3.

```
V1 = HDiv ( mesh, order = order, dirichlet = "wall|cyl|inlet" )
Vhat = FacetFESpace(mesh, order = order, dirichlet= "wall|cyl|inlet" )
#V2=[Vhat, Vhat]
Q = L2( mesh, order = order-1)
V = FESpace ([V1,Vhat, Vhat,Q])
```

4.

```
V1 = HDiv ( mesh, order = order, dirichlet = "wall|cyl|inlet" )
V2=VectorFacetFESpace (mesh, order = order, dirichlet ='wall|cyl|inlet' )
Q = L2( mesh, order = order-1)
V = FESpace ([V1,V2,Q])
```

The first two cases gave the same results. The 3rd case had the error: NgException: UmfpackInverse: Numeric factorization failed. When running the last case, the error is ‘NgException: Matrix dimensions don’t fit: mat is 2 x 1, vec is 2’.

The problem is from 3.6. The code is attached.

Could you please explain what the difference among those space are and when I should use a specific one?

Thank you so much.

Attachment: FacetFEspace1.ipynb