Hi John,

the function is there and can be used, but not for hp::DoFHandler yet. Maybe you can try to implement it for hp::DoFHandler yourself. Feel free to ask if you need some help. I would be happy to help.

Bärbel

--
Bärbel Janssen
Institut für Angewandte Mathematik
Universität Heidelberg

Im Neuenheimer Feld 293, Raum 213
Telefon: +49 6221 54-5449


On Wed, 8 Sep 2010, Bärbel Janssen wrote:

Hi John,

yes, Martin and I we finished the make_flux_sparsity_pattern function. Please give me a sec and I try to check it in. I will let you know then.

Bärbel

--
Bärbel Janssen
Institut für Angewandte Mathematik
Universität Heidelberg

Im Neuenheimer Feld 293, Raum 213
Telefon: +49 6221 54-5449


On Wed, 8 Sep 2010, John Chapman wrote:

Hi Martin,

You asked two questions, which I'll answer in turn. There was an exception thrown, namely

An error occurred in line <466> of file </extra/tmp/dealii_6.3.1/deal.II/lac/include/lac/sparse_matrix.templates.h> in function void dealii::SparseMatrix<number>::add(unsigned int, unsigned int, const unsigned int*, const number2*, bool, bool) [with number2 = double, number = double]
The violated condition was:
   counter < cols->row_length(row)
The name and call sequence of the exception was:
   ExcInternalError()
Additional Information:
(none)

Secondly I think that your comment about the sparsity pattern is true. I am creating the sparsity pattern with
 constraints.clear ();
 DoFTools::make_hanging_node_constraints (dof_handler,constraints);
 constraints.close ();
CompressedSetSparsityPattern csp (dof_handler.n_dofs(),dof_handler.n_dofs());
 DoFTools::make_sparsity_pattern (dof_handler, csp, constraints, false);
 sparsity_pattern.copy_from (csp);
 system_matrix.reinit (sparsity_pattern);
but of course I need DoFTools::make_flux_sparsity_pattern, but this doesn't take constraints (as typically a dG method doesn't have any). However my application will be introducing some constraints so changing this section would only be a temporary solution.

I know Barbel was also looking at a make_flux_sparsity_pattern(...,constraints,...) function, so perhaps she can shed some light on the problem.

John

On 08/09/10 09:31, Martin Kronbichler wrote:
Dear John,

Assuming that I want to continue to use
constraints.distribute_local_to_global, how do I treat the assembly
terms ui_ve_matrix, ue_vi_matrix i.e. those that contain integrals
involving cell and neighbor?  The two cells may not have the same number
of degrees of freedom, so the matrices may not be square, so I tried to use
void ConstraintMatrix::distribute_local_to_global      (      const
FullMatrix<  double>  &         local_matrix,
          const std::vector<  unsigned int>  &       row_indices,
          const std::vector<  unsigned int>  &       col_indices,
          MatrixType&       global_matrix
      )             const
but the local_dof_indices and neighbor_dof_indices are not the correct
variables to pass - how do I get row_indices and col_indices from the
dof_indices?
What do you mean by "not the correct variables to pass"? To me your
assembly routines seems correct. Your matrix ui_ve_matrix has
local_dof_indices.size() rows and neighbor_dof_indices.size() columns,
which is exactly the dimension the distribute_local_to_global function
expects. So I can't really see any flaw with this problem. Is some kind
of exception thrown (there might still be a bug in that distribute_l_t_g
function, we haven't been using it so much yet)? How is the sparsity
pattern of your matrix obtained - did you use
make_flux_sparsity_pattern?

Best,
Martin
_______________________________________________
dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii
_______________________________________________
dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii

Reply via email to