Dear Iago, I think this is the term "Normal" which leads to this error (can you verify it ?). The normal is indeed constant for an affine geometric transformation but I a not sure that this term is taken into account for exact computations. The simplest is to use a cubature method !
Yves. Iago Barbeiro <[email protected]> a écrit : > Dear Ronan, > Thanks for the prompt answer. > > You are right, circular domain and holes may sound higher order > transformation, but it is not the case here. > I'm using an affine triangular mesh, GT_PK(2,1), and also affine continuos > shape functions FEM_PK(2,1). > Any other clues? > > Regards, > > Iago > > > 2009/9/5 Ronan Perrussel <[email protected]> > >> Dear Iago, >> >> the exact integration is mainly linked to the use of an affine mesh. >> Is it the case here? You speak about a circular hole and maybe you use >> second order transformation for the elements around the hole... >> >> I hope it helps. >> >> Best regards, >> Ronan >> >> Iago Barbeiro a écrit : >> >>> Dear Getfem++ users, >>> >>> I am facing problems to build an elementary matrix using the generic >>> assembly procedure and I hope anyone could give me a hand. >>> >>> It is a boundary integral in a two dimensional mesh (It is a circular >>> domain with a circular hole inside and I want to integrate over both >>> boundaries): >>> >>> Int[boundary]((Grad(p).normal).dp) >>> >>> So it is a bilinear form in "p" and "dp" where both are scalars defined >>> with the same fem (mf_p). >>> >>> For that I have tried the following block: >>> >>> *template<typename MAT> * >>> *void asm_P_Lap_boundary(const MAT &K_,* >>> * ** const mesh_im &mim,* >>> * ** const mesh_fem &mf_p, * >>> * ** const mesh_region &rg) {* >>> * >>> * >>> * MAT &K = const_cast<MAT &>(K_);* >>> * >>> * >>> * getfem::generic_assembly assem;* >>> * * >>> * assem.set("M(#1,#1)+=comp(Grad(#1).Normal().Base(#1))(:,i,i,:);");* >>> * * >>> * assem.push_mi(mim);* >>> * assem.push_mf(mf_p);* >>> * assem.push_mat(K);* >>> * assem.assembly(rg);* >>> * }* >>> >>> Where the mesh_region was built using: >>> >>> *getfem::mesh_region boundary;* >>> *getfem::outer_faces_of_mesh(mymesh, boundary);* >>> >>> But then I found an error message, which is: >>> >>> *============================================* >>> *| An error has been detected !!! |* >>> *============================================* >>> *Error in getfem_mat_elem.cc, line 121 : * >>> *Exact integration not allowed in this context* >>> >>> Why exact integration would not be allowed here? Am I doing something >>> wrong? Any light? >>> >>> Thanks for your attention! >>> >>> Iago C. Barbeiro >>> ------------------------------------------------------------------------ >>> >>> _______________________________________________ >>> Getfem-users mailing list >>> [email protected] >>> https://mail.gna.org/listinfo/getfem-users >>> >>> >> >> > _______________________________________________ Getfem-users mailing list [email protected] https://mail.gna.org/listinfo/getfem-users
