Dear community

I am asking your help today about imposing affine constraints. I understood 
well example 6, but when it comes to apply it to sparse MPI matrices I get 
lost. I am not sure if example 27 is of help for my case.

What would I like to simulate? Take two separate domains, with conformal 
meshes. I want to impose that two sets of nodes share the same solution, 
i.e. the solution field is continuous. To this aim, the dofs to be tied 
have been collected in a set of pairs (which has been verified, it is OK). 
Hence, say the set is named tie_table, the dof tie_table.first shall be 
equal to tie_table.second .

So far so good, but from now on it blurs to me. I figured out that I shall 
build the affine constraint (say it is named m_interfaces_constraints) and 
update the sparsity pattern (say it is named dsp). 

The dsp has been created after the hanging node constraints
  
  DoFTools::make_flux_sparsity_pattern( this->dof_handler,
                                       dip,
                                       this->hanging_node_constraints,
                                       /*keep constrained dofs*/ false);

and it has been updated afterwards like that:

  for (auto tie_table_ii : tie_table )
        {

            if ( tie_table_ii.first < tie_table_ii.second )

            // we shall make sure not to impose a tie twice ...
            
          {
                dsp->add( tie_table_ii.first, tie_table_ii.second  ) ;
                dsp->add( tie_table_ii.second, tie_table_ii.first  ) ;
                m_interfaces_constraints.add_line( tie_table_ii.first );
                m_interfaces_constraints.add_entry( tie_table_ii.first, 
tie_table_ii.second, 1 );
          }
        }

  m_interfaces_constraints.close();


Is the above reasonable to build the m_interfaces_constraints? Am I missing 
something? At this point how shall I proceed in distributing the cell 
matrix into the system matrix in the assembly phase? The following code 
does not seem to work.

  ... make entries in cell_matrix, cell_rhs ...
        cell->get_dof_indices (local_dof_indices);
        
this->hanging_node_constraints.distribute_local_to_global(cell_matrix, 
cell_rhs,
                                                                  
local_dof_indices,
                                                                  
this->system_matrix, this->system_rhs);
        
this->m_interfaces_constraints.distribute_local_to_global(cell_matrix, 
cell_rhs,
                                                                
 local_dof_indices,
                                                                
 this->system_matrix, this->system_rhs);

specifically, the instruction 
this->m_interfaces_constraints.distribute_local_to_global generates the 
following error:


--------------------------------------------------------
An error occurred in line <1683> of file 
</var/folders/py/_sybqp9s7pn6y633bs_bqyp00000gn/T/albertosalvadori/spack-stage/spack-stage-dealii-9.2.0-ujawazz34bb5ybgxwfovovdrwaem4ymj/spack-src/source/lac/trilinos_sparse_matrix.cc>
 
in function
    void dealii::TrilinosWrappers::SparseMatrix::add(const 
dealii::TrilinosWrappers::SparseMatrix::size_type, const 
dealii::TrilinosWrappers::SparseMatrix::size_type, const 
dealii::TrilinosWrappers::SparseMatrix::size_type *, const 
dealii::TrilinosScalar *, const bool, const bool)
The violated condition was: 
    ierr == 0
Additional information: 
    An error with error number 2 occurred while calling a Trilinos function
--------------------------------------------------------

Finally, shall I call this function? What does it do?

  m_interfaces_constraints.condense(*dsp);

I appreciate your help, very much.

Alberto





-- 


Informativa sulla Privacy: http://www.unibs.it/node/8155 
<http://www.unibs.it/node/8155>

-- 
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/ae36b1dd-a214-4f1b-ad38-086e9c5fb8dan%40googlegroups.com.

Reply via email to