Hi everyone,

I am trying to define the boundary conditions in a way which I am more
familiar with. I have only one type of BC which is Drichilet and I am doing
that simply by making indices that are on the outer surface of the domain to
be zero in the stiffness (k) and mass (m) matrix and 1 for the mass matrix
if index i==j.

Ok I am trying to do that, but I am facing a problem for the mass matrix
when the index i==j, since I am using:
matrix_B.add_matrix (Me, dof_indices);

which will add several 1 to the diagonal terms in the matrix.

I know that I am applying my BC in a very poor way, I was trying to  imitate
one of the example to my purpose and this what I am doing:

      for (unsigned int side=0; side<elem->n_sides(); side++){
          if (elem->neighbor(side) == NULL)
            {
              const std::vector<std::vector<Real> >&  phi_face =
fe_face->get_phi();
              const std::vector<Real>& JxW_face = fe_face->get_JxW();
              const std::vector<Point >& qface_point = fe_face->get_xyz();

              // Compute the shape function values on the element
              // face.
              fe_face->reinit(elem, side);

              // Loop over the face quadrature points for integration.
              // for (unsigned int qp=0; qp<qface.n_points(); qp++)
              // {
              // Matrix contribution of the L2 projection.
               for (unsigned int i=0; i<phi_face.size(); i++){
                  for (unsigned int j=0; j<phi_face.size(); j++){
                    Ke(i,j) = 0.;
                    if (i==j){Me(i,j) = 1.;}
                    else     {Me(i,j) = 0.;}
                   }
              // } // end face quadrature point loop
          } // end if (elem->neighbor(side) == NULL)
        }  // end boundary condition section
      }
      matrix_A.add_matrix (Ke, dof_indices);
      matrix_B.add_matrix (Me, dof_indices);

Appreciate if someone can find me a way the will make the diagonal terms of
the surface of mass matrix to be equal 1. And if someone has better
suggestion than the miss that I am doing in  ( for (unsigned int i=0;
i<phi_face.size(); i++){
                  for (unsigned int j=0; j<phi_face.size(); j++){ ......)

I will appreciate that too.

Thanks in advance,
Omar
------------------------------------------------------------------------------
Achieve unprecedented app performance and reliability
What every C/C++ and Fortran developer should know.
Learn how Intel has extended the reach of its next-generation tools
to help boost performance applications - inlcuding clusters.
http://p.sf.net/sfu/intel-dev2devmay
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to