📄 sparsitypattern.cpp
字号:
// Copyright (C) 2007 Garth N. Wells.// Licensed under the GNU LGPL Version 2.1.//// First added: 2007-03-13// Last changed:#include <dolfin/dolfin_log.h>#include <dolfin/SparsityPattern.h>using namespace dolfin;//-----------------------------------------------------------------------------SparsityPattern::SparsityPattern() { dim[0] = 0; dim[1] = 0; sparsity_pattern.clear();}//-----------------------------------------------------------------------------SparsityPattern::~SparsityPattern(){ //Do nothing}//-----------------------------------------------------------------------------void SparsityPattern::init(uint M){ dim[0] = M; dim[1] = 0; sparsity_pattern.clear();}//-----------------------------------------------------------------------------void SparsityPattern::init(uint M, uint N){ dim[0] = M; dim[1] = N; sparsity_pattern.clear(); sparsity_pattern.resize( M );}//-----------------------------------------------------------------------------void SparsityPattern::numNonZeroPerRow(uint nzrow[]) const{ if ( dim[1] == 0 ) error("Non-zero entries per row can be computed for matrices only."); if ( sparsity_pattern.size() == 0 ) error("Sparsity pattern has not been computed."); // Compute number of nonzeros per row std::vector< std::set<int> >::const_iterator set; for(set = sparsity_pattern.begin(); set != sparsity_pattern.end(); ++set) nzrow[set-sparsity_pattern.begin()] = set->size();}//-----------------------------------------------------------------------------dolfin::uint SparsityPattern::numNonZero() const{ if ( dim[1] == 0 ) error("Total non-zeros entries can be computed for matrices only."); if ( sparsity_pattern.size() == 0 ) error("Sparsity pattern has not been computed."); // Compute total number of nonzeros per row uint nz = 0; std::vector< std::set<int> >::const_iterator set; for(set = sparsity_pattern.begin(); set != sparsity_pattern.end(); ++set) nz += set->size(); return nz;}//-----------------------------------------------------------------------------void SparsityPattern::disp() const{ if ( dim[1] == 0 ) warning("Only matrix sparsity patterns can be displayed."); std::vector< std::set<int> >::const_iterator set; std::set<int>::const_iterator element; for(set = sparsity_pattern.begin(); set != sparsity_pattern.end(); ++set) { cout << "Row " << endl; for(element = set->begin(); element != set->end(); ++element) cout << *element << " "; cout << endl; } }//-----------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -