getfem-users
[Top][All Lists]
Advanced

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

Re: [Getfem-users] different mesh_fem definitions for different regions


From: Renard Yves
Subject: Re: [Getfem-users] different mesh_fem definitions for different regions
Date: Wed, 05 Aug 2009 21:33:18 +0200
User-agent: Dynamic Internet Messaging Program (DIMP) H3 (1.1.2)


Dear Umut,

You are right ! The reason why the coupling matrix is zero is that the two mesh_fem are defined on separated elements. Since the computation is done element per element, on no element the two finite element method are both defined ! So the result is logical.

You could use the partial_mesh_fem objects but the functions
getfem::assembling_Dirichlet_condition(SM, B, meshFemDom2, 4, V);
does not work with such a "reduced" fem.

The best way, I think is to define a global mesh_fem (see attached file) and to specify the mesh_region at the ssembly procedure. The you will have to "filter" the resulting matrices to retain only the dof inside the regions of interest. (using meshFemDom1.basic_dof_on_region(1) and meshFemDom2.basic_dof_on_region(2))

Pay attention not to compute your coupling term on both element corresponding to the faces on the interface. Otherwise you will compute you term twice and you should find again zero (due to the opposite direction of the normals).

Yves.





Umut Tabak <address@hidden> a écrit :

Renard Yves wrote:

Dear Umut,

I your exemple, you should define two mesh_fems as follows :



  getfem::mesh_fem meshFemCore1(mshGmsh);
  // region 1, scalar domain, pressure field, dimension 1
  for(getfem::mr_visitor i(region1); !i.finished(); ++i){
meshFemCore1.set_finite_element(i.cv(),getfem::fem_descriptor("FEM_QK(3, 1)"));
  }
  meshFemCore.set_qdim(1); // not really necessary.

  getfem::mesh_fem meshFemCore2(mshGmsh);
  // region 2, vectorial domain, displacement field, dimension 3
  for(getfem::mr_visitor i(region2); !i.finished(); ++i){
meshFemCore2.set_finite_element(i.cv(),getfem::fem_descriptor("FEM_QK(3, 1)"));
  }
  meshFemCore.set_qdim(3);



Then, you can use these two mesh_fem objects in the assembly procedure in order to compute your coupling term.

Dear Professor Renard,

I guess with your great help, I am close to what I would like to get, I updated my code and can define regions on one mesh. The last problem I am having is that I can not assemble, integral term on the interface surface, well not really, I can run the code without problems but the point is that I do not get any terms. For this integral, i need to integrate that term over quad regions, but using the predefined mesh_fems, this does not seem possible to me, or I am still having some mistakes, the code is attached, region 3 is the interface region inside the mesh domain on which I would like to assemble my coupling terms. Am I experiencing a problem due to the normal definition, or is there a problem in the index expressions?

Best regards,
Umut







reply via email to

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