Dear Clair, Indeed, this should work when you replace "dof" by "basic_dof" in function names. It should work also if you just ignore the warnings. If it is still not working, please post a as small as possible program which where the problem occurs.
Yves. Clair Poignard <[email protected]> a écrit : > Dear All, > > > in the version getfem-3.1, I was using the following procedure (see > the end of the mail) to obtain a mass_matrix jump > \int_\Gamma (u^+-u^-)(\phi^+-\phi^-)\xdif \Gamma, where u is the > unknown (discontinuous across \Gamma), and \phi is the test-function > in the space of function piecewise H^1 (I used FEM_PK_DISCONTINUOUS > elements to solve this problem). > > In the new version, when I compile I am said that > "ind_dof_of_element' is deprecated" and similarly for > "'nb_dof_of_element'"and for "point_of_dof'". In the file > getfem_mesh_fem.h, it is mentioned that ind_basic_dof_of_element has > to be used (and similarly for nb_... and point_...) instead of > ind_dof_of_element > > However if I replace in my program, the mass matrix jump identically > equals zero... > > As you probably see, I am not an expert in computation, so if you > have an idea... > > Best regards, > > Clair > > > /class mass_matrix_jump : public getfem::compute_on_inter_element { > > protected : > > sparse_matrix &M; > double coeff_; > > virtual void compute_on_gauss_point > (getfem::fem_interpolation_context ctx1, getfem::pfem pf1, > getfem::fem_interpolation_context ctx2, getfem::pfem pf2, > getfem::papprox_integration pai1) { > scalar_type w = pai1->integration_coefficients()[ctx1.ii()]; > base_small_vector up(mf.linked_mesh().dim()); > const base_matrix& B = ctx1.B(); > gmm::mult(B, pgt1->normals()[f1], up); > scalar_type norm = gmm::vect_norm2(up); > scalar_type J = ctx1.J() * norm; > > size_type cv1 = ctx1.convex_num(); > size_type cv2 = ctx2.convex_num(); > getfem::base_tensor t1, t2; > pf1->real_base_value(ctx1, t1); > pf2->real_base_value(ctx2, t2); > > for (size_type i = 0; i < pf1->nb_dof(cv1); ++i) > for (size_type j = 0; j < pf1->nb_dof(cv1); ++j) > M(mf.ind_dof_of_element(cv1)[i], > mf.ind_dof_of_element(cv1)[j]) > += coeff_ * J * w * t1[i] * t1[j]; > for (size_type i = 0; i < pf2->nb_dof(cv2); ++i) > for (size_type j = 0; j < pf2->nb_dof(cv2); ++j) > M(mf.ind_dof_of_element(cv2)[i], > mf.ind_dof_of_element(cv2)[j]) > += coeff_ * J * w * t2[i] * t2[j]; > for (size_type i = 0; i < pf1->nb_dof(cv1); ++i) > for (size_type j = 0; j < pf2->nb_dof(cv2); ++j) { > M(mf.ind_dof_of_element(cv1)[i], > mf.ind_dof_of_element(cv2)[j]) > -= coeff_ * J * w * t1[i] * t2[j]; > M(mf.ind_dof_of_element(cv2)[j], > mf.ind_dof_of_element(cv1)[i]) > -= coeff_ * J * w * t1[i] * t2[j]; > } > } > > public : > > mass_matrix_jump(sparse_matrix &MM, const getfem::mesh_im &mmim, > const getfem::mesh_fem &mmf, double coeff = 1.) > : compute_on_inter_element(mmim, mmf), M(MM), coeff_(coeff) { > GMM_ASSERT1(mf.get_qdim() <= 1); > } > > }; > / > > > _______________________________________________ Getfem-users mailing list [email protected] https://mail.gna.org/listinfo/getfem-users
