⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sparsitypattern.cpp

📁 Dolfin provide a high-performance linear algebra library
💻 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 + -