Dear Jean-François and Andriy,

The simplest way for the import in python of gmsh files with the activated option for the lower dimension elements is to define it as a new format, may be something as "gmsh_with_lower_dim_elt". I can add it, this is very simple to do.

Best regards,

Yves




On 11/11/2020 13:30, Andriy Andreykiv wrote:
Jean-François,

Yes, I use a classical region to store the elements. A region with line elements is not different from any other region.

Regarding the numerical difficulties you're referring to, well, we didn't have singularities there. We also had a Neuman like term (mixed Dirichlet/Neuman condition that was switching depending on the solution, geomechanical sink), but no issues like yours. You might consider consulting Yves Renard <mailto:yves.ren...@insa-lyon.fr> about it. Maybe you can also use special shape functions in the 3D elements around your lines.  For example, I know Getfem supportsX-Fem <http://getfem.org/userdoc/xfem.html#xfem> and maybe you could enrich your solution with some asymptotic shape functions around the line elements.

Best regards,
                         Andriy


On Tue, 10 Nov 2020 at 23:39, Jean-François Barthélémy <jfrancois.barthel...@gmail.com <mailto:jfrancois.barthel...@gmail.com>> wrote:

    Thank you very much Andriy. This is clear. It seems that the
    problem relies on the current limitation of import and not on the
    assembly implementation. However the documentation made me think
    that a region in a mesh of dimension N could only store elements
    of dimension N or faces of dimension N-1 bit not less and as the
    bricks require a region ID I was afraid that it would be a
    limitation although of course there is no fundamental problem in
    integrating lineic terms... In your problem, you also use a
    classical region ID to store your line terms, don't you?

    Well other issues may arise from this kind of term defined on a
    line: indeed the solution induced by a Neumann lineic term is
    expected to take infinite values in the vicinity of the line
    (think about Green function in a conductive or elastic problem
    which varies as ln(r) close to the line or 1/r for a pointwise
    Neumann term). Then a linear or nonlinear term involving the local
    solution at the line itself and contributing to the matrix term
    (lhs) may cause problem or at least lead to an unreliable
    solution. Have you encountered such difficulties?

    Best regards
    Jean-François


    -------- Message d'origine --------
    De : Andriy Andreykiv <andriy.andrey...@gmail.com
    <mailto:andriy.andrey...@gmail.com>>
    Date : 10/11/2020 22:10 (GMT+01:00)
    À : Jean-François Barthélémy <jfrancois.barthel...@gmail.com
    <mailto:jfrancois.barthel...@gmail.com>>
    Objet : Re: Terms on a physical line in 3D

    Dear Jean-François,

    Unfortunately I don't work in Python interface, so I don't know.
    But yes, that's add_all_element_type flag.
    Alternatively, if your line mesh is very simple you could add
    these elements one by one to the volume mesh, in your Python code.

    Yes yes, I'm quite sure the line elements will work in high level
    generic assembly. That's a generic Getfem behaviour. We're using
    Getfem in our company and we have boundary conditions,
    defined on line elements, embedded in a volumetric mesh. We define
    non-linear terms using high-level assembly on those line elements.

    I suspect it's me or my colleague Liang Jin who actually
    introduced this flag, so that we can import these line elements,
    because the previous behaviour was
    that these line elements were always skipped.

    So, yes, if you are able to recompile getfem and the interface
    that would be the simplest solution. You might choose to commit
    your changes to Getfem repo as well.

    Best regards,
                                Andriy

    On Tue, 10 Nov 2020 at 19:13, Jean-François Barthélémy
    <jfrancois.barthel...@gmail.com
    <mailto:jfrancois.barthel...@gmail.com>> wrote:

        Dear Andriy,

        Thank you for your answer.

        Is the flag that you mention the boolean
        "add_all_element_type" which is set to false by default in
        getfem_import.cc?

        I should have mentioned that I was working with the python
        interface and it seems that this flag cannot be changed from
        the python interface. The current behavior is that a GMSH
        physical line is imported as the surface region containing
        convexes which have an intersection with the line, which is of
        course not what I need.

        Anyway, do you suggest that I recompile getfem and the python
        API by setting a default true value for this flag in order to
        get the physical lines properly stored in a region? Afterwards
        you are sure that a "line" region would work in the high level
        generic assembly? If this is the case, I wonder why the
        developers have set this flag to the default false value, do
        you know why?

        Thank you very much

        Best regards

        Jean-François




        Le mar. 10 nov. 2020 à 16:57, Andriy Andreykiv
        <andriy.andrey...@gmail.com
        <mailto:andriy.andrey...@gmail.com>> a écrit :

            Dear Jean-François,

            Yes, this is possible. It was routinely done before.

            You need to have your 3D mesh AND line elements explicitly
            defined (Getfem doesn't have edges of volume elements as
            entities).
            You could use GMSH for that or define the mesh in your
            code. In GMSH you can assign physical domains to all
            elements, including your line elements.
            During the import of your GMSH mesh you would need to set
            somewhere a flag "not to ignore lower dimension elements",
            so that your lines are getting properly imported.
            After importing GMSH mesh into getfem::mesh and having
            region ID's for the volume as well as for the line
            elements you can define their interpolations
            (getfem::mesh_fem),
            integration methods (getfem::mesh_im), create a
            getfem::model, add unknown variables and use higher order
            assembly to define your nonlinear terms.

            Best regards,
                                       Andriy



            On Tue, 10 Nov 2020 at 16:29, Jean-François Barthélémy
            <jfrancois.barthel...@gmail.com
            <mailto:jfrancois.barthel...@gmail.com>> wrote:

                Dear Getfem users,

                I have a 3D mesh in which physical lines are
                identified (ie set of edges). These lines may be on
                the boundary or in the interior of the domain.

                I would like to build a model incorporating (linear
                and even nonlinear) terms on these lines (ie
                integration domain of dimension m.dim()-2). This could
                be used for example to model a concentrated line of
                current injection in an electric ohmic problem (rhs
                term) or a lineic domain of high conductivity
                (contributing then to the matrix term). Is there any
                way to do so in Getfem?

                Thank you in advance

                Best regards

                Jean-François Barthélémy


--

  Yves Renard (yves.ren...@insa-lyon.fr)       tel : (33) 04.72.43.87.08
  INSA-Lyon
  20, rue Albert Einstein
  69621 Villeurbanne Cedex, FRANCE
  http://math.univ-lyon1.fr/~renard

---------

Reply via email to