Alex:

> [...]

I think everything up to this point looks reasonable.

From what I can see, the system_matrix looks right with n_blocks = 2 and  start_indices = {0, 24, 72}, as expected. Next, I run through the Assemble_System() to create a local cell matrix. I start with the Solid elements and cell_matrix_sld. I'm skipping the calculation of the cell matrix for brevity's sake.

for (const auto &cell : dof_handler_sld.active_cell_iterators())
     {
     // *** Placeholder for calculating cell_matrix_sld, a 24x24 matrix ***
     cell->get_dof_indices(local_dof_indices_sld);
     // Add the cell matrix to the system matrix
     for (unsigned int i = 0; i < dofs_per_cell_sld; ++i)
           for (unsigned int j = 0; j < dofs_per_cell_sld; ++j)
             system_matrix.add(local_dof_indices_sld[i],
                               local_dof_indices_sld[j],
                               cell_matrix_sld(i, j));
     }  // end of cell loop


The bit of code 'system_matrix.add(...)' works for when i=0 and j=0, but fails on the next loop when j=1.  I get this error:

The issue here is that you're indexing into the *global* matrix with the indices of only one of the DoFHandler objects. That can't go well. It *should* work if you do the indexing only in the matrix block that corresponds to dof_handler_sld:

            system_matrix.block(block_index_sld, block_index_sld)
                         .add(local_dof_indices_sld[i],
                              local_dof_indices_sld[j],
                              cell_matrix_sld(i, j));

where you define block_index_sld somewhere to either be zero or one.

In your case, this won't work yet because you hadn't built the sparsity pattern yet. You can do that the same way:

  DoFTools::make_sparsity_pattern(dof_handler_sld,
                           block_dsp.block(block_index_sld, block_index_sld));

Best
 W.

--
------------------------------------------------------------------------
Wolfgang Bangerth          email:                 bange...@colostate.edu
                           www: http://www.math.colostate.edu/~bangerth/


--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- You received this message because you are subscribed to the Google Groups "deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to dealii+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/dealii/9a890d55-91f6-ec16-98be-acdb730919d3%40colostate.edu.

Reply via email to