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

Reply via email to