Dear Eloi, I think what you are looking for is something like this
md.add_filtered_fem_variable("u", V, region) M = gf.asm_generic(IM, 2, "Test2_u*Test_u", region, md) K = gf.asm_generic(IM, 2, "Grad_Test2_u.Grad_Test_u", region, md) M = scipy.sparse.csc_matrix((M.csc_val(),*(M.csc_ind()[::-1]))) K = scipy.sparse.csc_matrix((K.csc_val(),*(K.csc_ind()[::-1]))) BR Kostas On Thu, Jun 30, 2022 at 4:57 PM Eloi Martinet <eloi.marti...@univ-smb.fr> wrote: > Hello, > I'm using the python interface of GetFEM. My goal is to compute the > laplace eigenvalues on a region of a spherical mesh, as follows (suppose > the mesh, integration method IM and meshfem V is already declared): > > # Assemble the stiffness and mass matrices > md = gf.Model("real") > md.add_fem_variable("u", V) > Kg = gf.asm_generic(IM, 2, "Grad_Test2_u.Grad_Test_u", region, md) > Mg = gf.asm_generic(IM, 2, "Test2_u*Test_u", region, md) > > # Convert to scipy sparse > K = getfem_to_scipy_sparse(Kg) > M = getfem_to_scipy_sparse(Mg) > > # Compute the eigenvalues > eVal, eVec = scipy.linalg.sparse.eigsh(K, k+max_multiplicity+1, M, > sigma=0, which='LM', v0=v0) > > however, the size of the matrices K and M are the same as V.nbdof() > whereas it should have less since the region isn't the whole mesh. > Moreover, when I try to use the function "basic_dof_on_region", I get the > following error : > > NameError: name 'basic_dof_on_region' is not defined > > I saw the things about the extension matrices but this is not clear to me > how to construct it from the label of the region. So my question is what is > the best way to compute eigenvalues on a region ? > > Thank you for your help and have a good day. > Eloi MARTINET. >