Hello all,
Previously, I initialized my system matrix in this way (option A)
DoFTools::make_flux_sparsity_pattern(dof_handler,
dsp,
cell_coupling,
face_coupling);
constraints_newton_update.condense(dsp);
SparsityTools::distribute_sparsity_pattern(dsp,
hp_index_set,
mpi_communicator,
hp_relevant_set);
system_matrix.reinit(hp_index_set,
hp_index_set,
dsp,
mpi_communicator);
However, the generated system matrix is singular. I was stuck by the singular matrix problem for about 2 weeks.
Then, I initialized the matrix with option B, which generates a full rank matrix. Although, I don't see the difference between these 2 ways. Can someone explain this to me? Thans in advance.
DoFTools::make_flux_sparsity_pattern(dof_handler,
dsp,
cell_coupling,
face_coupling);
constraints_newton_update.condense(dsp);
sparsity_pattern.copy_from(dsp);
system_matrix.reinit(hp_index_set,
sparsity_pattern,
mpi_communicator);