Hello SfePy devels,
Could you, please, explain me some SfePy internals?
(1) Question 1. Surface processing.
As I see in examples the 3D meshes contains only volume elements
(tetrahedra) and no surface elements (triangles). But in problem solution
pipeline we need to apply essential boundary conditions on surface nodes
and need to evaluate some surface integrals, for example, for Neumann
boundary conditions. How does SfePy working with surfaces?
For essential boundary conditions, yes, we can take only the far nodes in
tetrahedra. But for the surface integrals we need the surface elements --
triangles. Does SfePy extract boundary triangles from volume tetrahedra?
(2) Question 2. Dimensions of the SfePy arrays.
Consider the postprocesing hook:
def post_process(out, pb, state, extend = False):
electric_field = pb.evaluate('ev_grad.2.Omega(u)', mode='el_avg')
flux = pb.evaluate('d_surface_flux.2.Gamma(m.K, u)', mode='el_avg')
In my example shapes are:
electric_field: (5235, 1, 3, 1)
flux: (3898, 1, 1, 1)
Could you explain me why the variables are 4-dimensional arrays. My
understanding is following:
1. 1st dimension is the number of the tetrahedra element. 5235 is the total
number of the volume element. By what is 3898? Is it a number of the
tetrahedra which are contains in boundary or is it a number of triangles on
2. The 3d dimension is the dimension of variable. The grad is a 3
dimensional vector, the flux is a scalar. But what are the 2nd and 4th