On Monday 19 November 2007 11:52, mikael gueguen wrote: > Le 19 nov. 07 à 11:31, Yves Renard a écrit : > > On Monday 19 November 2007 11:15, mikael gueguen wrote: > >> hi > >> what is the good way to write global matrix for FEM with gmm? > >> if i use a dense_matrix for writing the global matrix during the > >> assembly procedure, i have problem with large scale problem, > >> and if i use a col_matrix < gmm::wsvector<double> >, it 's not > >> possible to access the rows, and i cannot insert boundary condition. > >> > >> How can i resolve that? > > > > You mean you want to prescribe Dirichlet type boundary conditions > > (solution > > prescribed on the boundary) ? > > yes > > > It depends on how you prescribe the boundary conditions. There is > > at least > > three possibilities : Adapt the stiffness matrix cleaning some > > lines of the > > matrix, penalization or Lagrange multipliers. > > i set to zero the row and column corresponding to prescribed dof: > gmm::scale(gmm::mat_col(M,c),0.); > gmm::scale(gmm::mat_row(M,c),0.); > M(c,c)=1.; > > > For the first method, the optimal way if either to have a row matrix > > (row_matrix < gmm::wsvector<double> > or row_matrix < > > gmm::rsvector<double> > > > for instance) or if you have a column matrix, set to zero the > > potentialy non > > zero elements by considering the neighbor dofs (i.e. the dofs of > > the elements > > containing the dof to be prescribed). > > only the dofs of the element? but i must also access the row and > colums elements in my matrix in this case.
The function add_Dirichlet_dof(M, B, mf, dof, dof_val); do this job (line 1266 of getfem_assembling.h). Yves. -- Yves Renard ([EMAIL PROTECTED]) tel : (33) 04.72.43.87.08 Pole de Mathematiques, INSA de Lyon fax : (33) 04.72.43.85.29 20, rue Albert Einstein 69621 Villeurbanne Cedex, FRANCE http://math.univ-lyon1.fr/~renard --------- _______________________________________________ Getfem-users mailing list [email protected] https://mail.gna.org/listinfo/getfem-users
