Thank you,  Kostas.  You are very dedicated!
It is OK, there are few ways to go. People I think have just got used to
the elegant and convenient way of integration in *getfem *and are
becoming lazy to do some work :)
Assuming that we have basic_dof_from_cvid and basic_dof_nodes method we
have everything we need to implement Newton Cotes(for example) formulas
manually for each edge.
It just takes some extra code and time
I prefer this way, maybe i will try the projection/ interpolation approach
soon.
But just for your and Yves notes, even in mechanics(especially in fluids),
evaluation of field circulation might be useful. Again it is not a problem
or issue just extra sci/tech/eng service
Regards and thank you for clarifying things, Egor


вт, 20 июл. 2021 г. в 20:24, Konstantinos Poulios <[email protected]>:

> Dear Egor,
>
> Ok I suspected that you might be in 3D, but referring to "quad" made me
> assume that you were asking about 2D. In this case, the question is more
> tricky because GetFEM's architecture does not support 1D integrals in a 3D
> mesh. As you probably know, mesh regions can only contain convexes and
> convex faces. Integration methods are also defined only in convexes and
> convex faces. Hence I am not very positive that a solution exists based on
> the same 3D mesh.
>
> The only solution that I see is by creating a 2D mesh from your 3D mesh.
> E.g. you could define a 2D mesh that contains all faces of a 3D simplex,
> and then integrate on the faces (i.e. edges of this 2D mesh). Or
> alternatively, you can also directly create a 1D mesh in 3D, based on the
> edges of your 3D mesh, but these are more difficult to extract.
>
> In any case, working with 2 meshes, one 3D mesh, and one 2D (or 1D) mesh,
> will require you to transfer information between meshes using the different
> interpolation functions in GetFEM, e.g. using an identity interpolate
> transformation:
> [image: image.png]
> I hope that this helps you decide about a strategy and please ask again if
> you need help at lower level with the implementation of such a strategy. I
> have a vague impression that this question has also been discussed in the
> past in the mailing list, so you might be able to find some tips in older
> posts as well.
>
> Not sure why the edges python function is marked as deprecated. @Yves: Do
> you have a hint on that?
>
> In any case relevant code in C++ can be found in
>
> https://git.savannah.nongnu.org/cgit/getfem.git/tree/interface/src/getfemint_misc.cc
> (build_edge_list)
>
> https://git.savannah.nongnu.org/cgit/getfem.git/tree/src/bgeot_mesh_structure.cc
> (mesh_edge_list)
> But these are quite low level functions.
>
> Best regards
> Kostas
>
>
>
>
>
> On Tue, Jul 20, 2021 at 12:20 PM Egor Vtorushin <[email protected]>
> wrote:
>
>> Kostas,
>> thank you for answering thу question and sorry for the delay in
>> communication.  I am sorry for missing important point - i am in 3D space
>> In 2D HHO example it works fine since
>>
>> # # Boundary selection
>>
>> flst  = m.outer_faces()
>> GAMMAD = 1
>> m.set_region(GAMMAD, flst)
>>
>> managing with 1D faces that are the edges I suppose.
>> In 3D  all_faces provides access to 2d faces. Consider 4 points simplex
>> that  have 4 faces. I can integrate over an area of one of faces or many
>> using regions built with outer_faces output.
>> In my situation I have to make 1D integration over edges with respect to
>> length. The 4 point simplex has 4 faces and 6 1D edges.
>>
>> At first glance outer_faces() method doesn't provide access to 1D edges for 
>> 3D meshes and with is my problem, assuming the fact that it returns empty 
>> array for dim=1 or dim=2
>>
>> *boxm*.outer_faces()
>> Out[:
>> array([[0, 0, 0, 0, 0, 0],
>>        [0, 1, 2, 3, 4, 5]], dtype=int32)
>>
>> *boxm*.outer_faces(3)
>> Out:
>> array([[0, 0, 0, 0, 0, 0],
>>        [0, 1, 2, 3, 4, 5]], dtype=int32)
>>
>> *boxm*.outer_faces(2)
>> Out: array([], shape=(2, 0), dtype=int32)
>> *EMPTY*
>> *boxm*.outer_faces(1)
>> Out: array([], shape=(2, 0), dtype=int32)
>>
>> *EMPTY*
>>
>>
>> Here *boxm *is 1 convex rectangular PARALLELEPIPED
>>
>> Regards, Egor
>>
>>
>>
>> пн, 19 июл. 2021 г. в 15:31, Konstantinos Poulios <
>> [email protected]>:
>>
>>> Dear Egor Vtorushin,
>>>
>>> Have a look at the outer_faces method:
>>> [image: image.png]
>>> if you put only one element in CVIDs you will get what you want, I guess.
>>>
>>> I am not sure how efficient it is to calculate these integrals for all
>>> elements one by one though.
>>>
>>> "mesh.all_faces" might also be relevant for your question. You can also
>>> have a look at HHO examples like
>>>
>>>
>>> https://git.savannah.nongnu.org/cgit/getfem.git/tree/interface/tests/python/demo_elasticity_HHO.py
>>>
>>> Best regards
>>> Kostas
>>>
>>> On Mon, Jul 19, 2021 at 8:59 AM Egor Vtorushin <[email protected]>
>>> wrote:
>>>
>>>> Dear  Yves,
>>>> Do you have any hints how to manage 1D integral over a loop containing
>>>> simplex' or quad' *edges*.
>>>> Let  I have an electrical field(or current ) computed in   simplex or
>>>> quad mesh nodes. Then i need to calculate the field circulation over
>>>> edge-loop for each *face *according to Stokes' theorem/formula
>>>> There is an obsoleted  function
>>>>     edges(*CVLST=None*, **args*)
>>>> <http://getfem.org/python/cmdref_Mesh.html#getfem.Mesh.edges>
>>>>
>>>> Synopsis: [E,C] = Mesh.edges(self [, CVLST][, ‘merge’])
>>>>
>>>> [OBSOLETE FUNCTION! will be removed in a future release]
>>>>
>>>> Return the list of edges of mesh M for the convexes....
>>>> Maybe  there is a way to utilize the Mesh.edges function or another
>>>> way?
>>>> Regards, Egor Vtorushin
>>>>
>>>>

Reply via email to