getfem-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Getfem-users] Using a custom finite element


From: Yves Renard
Subject: Re: [Getfem-users] Using a custom finite element
Date: Sat, 2 Feb 2019 17:12:36 +0100 (CET)



Dear Petr,

A pfem as to be stored before it can be used in order to register its 
depedencies.


Without declaring its dependencies (on bgeot::simplex_of_reference(nc) here) 
which is not completely safe, this can be done as follows :








struct my_method_key : virtual public dal::static_stored_object_key {
  std::string name;
  
  bool compare(const static_stored_object_key &oo) const override{
    auto &o = dynamic_cast<const method_key &>(oo);
    return name < o.name;
  }
  
  bool equal(const static_stored_object_key &oo) const override{
    auto &o = dynamic_cast<const method_key &>(oo);
    return name == o.name;
  }
  
  method_key(const std::string &name_) : name(name_) {}
};


int main() {
    using bgeot::base_node;
    getfem::mesh mesh;
    mesh.add_point(base_node(0, 0));
    mesh.add_point(base_node(0, 0.1));
    mesh.add_point(base_node(0.1, 0));
    mesh.add_point(base_node(0.1, 0.1));
    mesh.add_point(base_node(0.2, 0));
    mesh.add_point(base_node(0.2, 0.1));
    mesh.add_triangle(0, 1, 3);
    mesh.add_triangle(0, 2, 3);
    mesh.add_triangle(2, 3, 5);
    mesh.add_triangle(2, 4, 5);
    mesh.region(1).add(0, 2);
    mesh.region(2).add(3, 0);

    getfem::mesh_fem fem(mesh, 2);
    getfem::pfem my_fem = std::make_shared<t_my_fem>();

    auto pnname = std::make_shared<my_method_key>("MY_FEM_NAME");
    add_stored_object(pnname, my_fem, dal::PERMANENT_STATIC_OBJECT);
    fem.set_finite_element(my_fem);



    ...





Off course, if your fem can be of interest for somebody else, you can include 
it in getfem_fem.cc, give it a name and submit your contribution !



Best regards,

Yves.




----- Original Message -----
From: "Александров Петр" <address@hidden>
To: "getfem-users" <address@hidden>
Sent: Friday, February 1, 2019 4:45:26 PM
Subject: [Getfem-users] Using a custom finite element

Hello.
I want to use a custom finite element type.
I have tried to run a following program in attachment, but have got the error

terminate called after throwing an instance of 'gmm::gmm_error'
what(): Error in dal_static_stored_objects.cc, line 259 : 
Failed to add dependent between 0x558eb6a57570 of type 
N5bgeot17geotrans_precomp_E and 0x558eb6a494d0 of type 8t_my_fem.

What is the problem?



reply via email to

[Prev in Thread] Current Thread [Next in Thread]