On Wed, 28 Apr 2010, liang cheng wrote:

No quadrature rule was added in the fill_dirichlet_bc() because no such 
commands in the
ex8 neither, I don't dare to violate the example too much, so didn't plug the 
quadrature
rule in fill_dirichlet_bc().

You're using a quadrature rule somewhere, though: it's
QBase::n_points() that's failing.  In ex8 there are two calls to
n_points() - did you add a third, and in any case which of them is
failing?  (look for the traceout files with stack traces, or run in a
debugger)  For the failing one, how did you declare the rule?  Is it
being initialized before use?

I guess this problem is related to the matrix definition,

Almost certainly not, but let's try and clear up that too.  ;-)

maybe my guessing is incorrect. 
The matrix system was defined as followed,

  SparseMatrix<Number>&  stiffness = 
large_deform_system.get_matrix("stiffness");
  SparseMatrix<Number>&  damping   = large_deform_system.get_matrix("damping");
  SparseMatrix<Number>&  mass      = large_deform_system.get_matrix("mass");
  NumericVector<Number>& force     = large_deform_system.get_vector("force");

However these matrix doesn't participate in computation.

Yes, they do.  These are the global sparse matrices and forcing vector
that define the ex8 algebraic problem on the entire domain.   But they
are constructed from components like:

DenseSubMatrix<Number>
    Kuu(Ke),  Kuv(Ke), Kuw(Ke),
    Kvu(Ke),  Kvv(Ke), Kvw(Ke),
    Kwu(Ke), Kwv(Ke), Kww(Ke);

which are the dense matrices (and submatrices, for each variable) on
each element.  In ex8, stiffness.add_matrix(Ke, dof_indices) adds a
permutation (from local to global indices) of the Ke matrix to the
stiffness matrix.

These matrix seems required for the Newmark solver as I dig into the
newmark_system.C/h.

Not just required for the NewmarkSystem solver, but for the underlying
time integration algorithm... if you didn't want to use the Newmark
method then ex8 might not have been the best choice of starting point
for you.

Is this 'SparseMatrix' data structure quit different with the that
of 'DenseMatrix<Number>'?

Yes.  With one variable on a grid of a million trilinear hexahedra,
for instance, the SparseMatrix will be a (roughly) 1000000x1000000
matrix (which fits into memory because we only store the 1000000x27
potentially non-zero entries) while the DenseMatrix will be a 8x8
matrix with all 64 entries typically non-zero.
---
Roy
------------------------------------------------------------------------------
_______________________________________________
Libmesh-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/libmesh-users

Reply via email to