Deal deal.II community,

I want to apply periodic boundary conditions to my problem. But I can't use 
the make_periodicity_constraint() function due to the special nature of my 
problem (or so I think). So i create the required constraint matrix by 
taking the usual route of the  AffineConstraints::add_entries() function. 

My constraints are of the type: x_i (+ side dof) = a_ij * x_j ( - side 
dof). 

I need to apply these constraints after the assembly routine i.e. in the 
non-linear solver's load step loop (in the problems i have attempted until 
this one the contraints are applied in the setup_system() function).

With this brief, here's the code snippet i use (in the non-linear solver) 
to do the job of applying the constraints on the linear system. I start 
with creating an AffineConstraint object (different from the one used to 
create the system_rhs and system_matrix in the assemble_system() function). 
Then i simply want to apply the constraints using this object to the 
system_matrix and system_rhs. However, i get an error which is given below 
the code snippet.

AffineConstraints<double> constraints1;
// apply constraints
create_1d_pbc_constraints(constraints1);

// print all constraints that are obtained from the above function
constraints1.print(std::cout);
SparsityPattern sp;
sp.copy_from(system_matrix.get_sparsity_pattern());
std::ostringstream oss_4;
oss_4 << "sp.txt";
std::string filename4 = oss_4.str();
std::ofstream output_4(filename4.c_str());
sp.print(output_4);
std::cout << "closing constraint" << std::endl;
constraints1.close();
constraints1.condense(m_rod_Network->system_matrix_network,m_rod_Network->system_rhs_network);

*Output:*

60 0:  1
    60 1:  0
    60 2:  0
    61 0:  0
    61 1:  1
    61 2:  0
    62 0:  0
    62 1:  0
    62 2:  1
    63 3:  1
    63 4:  0
    63 5:  0
    64 3:  0
    64 4:  1
    64 5:  0
    65 3:  0
    65 4:  0
    65 5:  1
closing constraint

--------------------------------------------------------
An error occurred in line <1934> of file 
</tmp/vinayak/spack-stage/spack-stage-dealii-9.4.0-36iqlesdxyr55pceokjxk6hkwcek4m2d/spack-src/include/deal.II/lac/sparse_matrix.h>
 
in function
    void 
dealii::SparseMatrix<Number>::add(dealii::SparseMatrix<Number>::size_type, 
dealii::SparseMatrix<Number>::size_type, number) [with number = double; 
dealii::SparseMatrix<Number>::size_type = unsigned int]
The violated condition was: 
    (index != SparsityPattern::invalid_entry) || (value == number())
Additional information: 
    You are trying to access the matrix entry with index <54,0>, but this
    entry does not exist in the sparsity pattern of this matrix.
    
    The most common cause for this problem is that you used a method to
    build the sparsity pattern that did not (completely) take into account
    all of the entries you will later try to write into. An example would
    be building a sparsity pattern that does not include the entries you
    will write into due to constraints on degrees of freedom such as
    hanging nodes or periodic boundary conditions. In such cases, building
    the sparsity pattern will succeed, but you will get errors such as the
    current one at one point or other when trying to write into the
    entries of the matrix.

Stacktrace:
-----------
#0 
 
/home/vinayak/spack/opt/spack/linux-ubuntu22.04-broadwell/gcc-11.3.0/dealii-9.4.0-36iqlesdxyr55pceokjxk6hkwcek4m2d/lib/libdeal_II.g.so.9.4.0:
 
dealii::SparseMatrix<double>::add(unsigned int, unsigned int, double)
#1 
 
/home/vinayak/spack/opt/spack/linux-ubuntu22.04-broadwell/gcc-11.3.0/dealii-9.4.0-36iqlesdxyr55pceokjxk6hkwcek4m2d/lib/libdeal_II.g.so.9.4.0:
 
void dealii::AffineConstraints<double>::condense<dealii::Vector<double> 
>(dealii::SparseMatrix<double>&, dealii::Vector<double>&) const

The error says "You are trying to access the matrix entry with index 
<54,0>". *This seems to be inconsistent with the constraint matrix* 
(printed in the output above)*. *I am also attaching the sparsity pattern 
if needed.

Can someone help me with this? Also, since this procedure of applying 
constraints in the solver routine is quite different from the usual, it 
would help if someone could confirm that the above way of applying 
constraints is correct and/or if there's anything else i need to keep in 
mind.

Thanks
Vinayak

-- 
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/486614cb-9400-438d-8826-be30bbcd1481n%40googlegroups.com.
[0,0,1,2,3,4,5,6,7,8,9,10,11]
[1,1,0,2,3,4,5,6,7,8,9,10,11]
[2,2,0,1,3,4,5,6,7,8,9,10,11]
[3,3,0,1,2,4,5,6,7,8,9,10,11]
[4,4,0,1,2,3,5,6,7,8,9,10,11]
[5,5,0,1,2,3,4,6,7,8,9,10,11]
[6,6,0,1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17]
[7,7,0,1,2,3,4,5,6,8,9,10,11,12,13,14,15,16,17]
[8,8,0,1,2,3,4,5,6,7,9,10,11,12,13,14,15,16,17]
[9,9,0,1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17]
[10,10,0,1,2,3,4,5,6,7,8,9,11,12,13,14,15,16,17]
[11,11,0,1,2,3,4,5,6,7,8,9,10,12,13,14,15,16,17]
[12,12,6,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23]
[13,13,6,7,8,9,10,11,12,14,15,16,17,18,19,20,21,22,23]
[14,14,6,7,8,9,10,11,12,13,15,16,17,18,19,20,21,22,23]
[15,15,6,7,8,9,10,11,12,13,14,16,17,18,19,20,21,22,23]
[16,16,6,7,8,9,10,11,12,13,14,15,17,18,19,20,21,22,23]
[17,17,6,7,8,9,10,11,12,13,14,15,16,18,19,20,21,22,23]
[18,18,12,13,14,15,16,17,19,20,21,22,23,24,25,26,27,28,29]
[19,19,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,28,29]
[20,20,12,13,14,15,16,17,18,19,21,22,23,24,25,26,27,28,29]
[21,21,12,13,14,15,16,17,18,19,20,22,23,24,25,26,27,28,29]
[22,22,12,13,14,15,16,17,18,19,20,21,23,24,25,26,27,28,29]
[23,23,12,13,14,15,16,17,18,19,20,21,22,24,25,26,27,28,29]
[24,24,18,19,20,21,22,23,25,26,27,28,29,30,31,32,33,34,35]
[25,25,18,19,20,21,22,23,24,26,27,28,29,30,31,32,33,34,35]
[26,26,18,19,20,21,22,23,24,25,27,28,29,30,31,32,33,34,35]
[27,27,18,19,20,21,22,23,24,25,26,28,29,30,31,32,33,34,35]
[28,28,18,19,20,21,22,23,24,25,26,27,29,30,31,32,33,34,35]
[29,29,18,19,20,21,22,23,24,25,26,27,28,30,31,32,33,34,35]
[30,30,24,25,26,27,28,29,31,32,33,34,35,36,37,38,39,40,41]
[31,31,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,40,41]
[32,32,24,25,26,27,28,29,30,31,33,34,35,36,37,38,39,40,41]
[33,33,24,25,26,27,28,29,30,31,32,34,35,36,37,38,39,40,41]
[34,34,24,25,26,27,28,29,30,31,32,33,35,36,37,38,39,40,41]
[35,35,24,25,26,27,28,29,30,31,32,33,34,36,37,38,39,40,41]
[36,36,30,31,32,33,34,35,37,38,39,40,41,42,43,44,45,46,47]
[37,37,30,31,32,33,34,35,36,38,39,40,41,42,43,44,45,46,47]
[38,38,30,31,32,33,34,35,36,37,39,40,41,42,43,44,45,46,47]
[39,39,30,31,32,33,34,35,36,37,38,40,41,42,43,44,45,46,47]
[40,40,30,31,32,33,34,35,36,37,38,39,41,42,43,44,45,46,47]
[41,41,30,31,32,33,34,35,36,37,38,39,40,42,43,44,45,46,47]
[42,42,36,37,38,39,40,41,43,44,45,46,47,48,49,50,51,52,53]
[43,43,36,37,38,39,40,41,42,44,45,46,47,48,49,50,51,52,53]
[44,44,36,37,38,39,40,41,42,43,45,46,47,48,49,50,51,52,53]
[45,45,36,37,38,39,40,41,42,43,44,46,47,48,49,50,51,52,53]
[46,46,36,37,38,39,40,41,42,43,44,45,47,48,49,50,51,52,53]
[47,47,36,37,38,39,40,41,42,43,44,45,46,48,49,50,51,52,53]
[48,48,42,43,44,45,46,47,49,50,51,52,53,54,55,56,57,58,59]
[49,49,42,43,44,45,46,47,48,50,51,52,53,54,55,56,57,58,59]
[50,50,42,43,44,45,46,47,48,49,51,52,53,54,55,56,57,58,59]
[51,51,42,43,44,45,46,47,48,49,50,52,53,54,55,56,57,58,59]
[52,52,42,43,44,45,46,47,48,49,50,51,53,54,55,56,57,58,59]
[53,53,42,43,44,45,46,47,48,49,50,51,52,54,55,56,57,58,59]
[54,54,48,49,50,51,52,53,55,56,57,58,59,60,61,62,63,64,65]
[55,55,48,49,50,51,52,53,54,56,57,58,59,60,61,62,63,64,65]
[56,56,48,49,50,51,52,53,54,55,57,58,59,60,61,62,63,64,65]
[57,57,48,49,50,51,52,53,54,55,56,58,59,60,61,62,63,64,65]
[58,58,48,49,50,51,52,53,54,55,56,57,59,60,61,62,63,64,65]
[59,59,48,49,50,51,52,53,54,55,56,57,58,60,61,62,63,64,65]
[60,60,54,55,56,57,58,59,61,62,63,64,65]
[61,61,54,55,56,57,58,59,60,62,63,64,65]
[62,62,54,55,56,57,58,59,60,61,63,64,65]
[63,63,54,55,56,57,58,59,60,61,62,64,65]
[64,64,54,55,56,57,58,59,60,61,62,63,65]
[65,65,54,55,56,57,58,59,60,61,62,63,64]

Reply via email to