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

📄 blkiter.h

📁 大型并行量子化学软件;支持密度泛函(DFT)。可以进行各种量子化学计算。支持CHARMM并行计算。非常具有应用价值。
💻 H
字号:
//// blkiter.h//// Copyright (C) 1996 Limit Point Systems, Inc.//// Author: Curtis Janssen <cljanss@limitpt.com>// Maintainer: LPS//// This file is part of the SC Toolkit.//// The SC Toolkit is free software; you can redistribute it and/or modify// it under the terms of the GNU Library General Public License as published by// the Free Software Foundation; either version 2, or (at your option)// any later version.//// The SC Toolkit is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU Library General Public License for more details.//// You should have received a copy of the GNU Library General Public License// along with the SC Toolkit; see the file COPYING.LIB.  If not, write to// the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.//// The U.S. Government is granted a limited license as per AL 91-7.//#ifndef _math_scmat_blkiter_h#define _math_scmat_blkiter_h#ifdef __GNUC__#pragma interface#endif#include <math/scmat/block.h>namespace sc {class SCMatrixRectBlock;class SCMatrixLTriBlock;class SCMatrixDiagBlock;class SCVectorSimpleBlock;class SCElementOp;class SCElementOp2;class SCElementOp3;/** The SCMatrixBlockIter class is used to described iterates that    loop through the elements in a block. */class SCMatrixBlockIter {  public:    SCMatrixBlockIter() {}    virtual ~SCMatrixBlockIter();    /// Returns the row index.    virtual int i() = 0;    /// Returns the column index.    virtual int j() = 0;    /// Set the current element to val.    virtual void set(double val) = 0;    /// Add val to the current element.    virtual void accum(double val);    /// Return the value of the current element.    virtual double get() = 0;    /// Return nonzero if there are more elements.    virtual operator int() = 0;    /// Move to the next element.    virtual void operator++() = 0; // prefix ++    void operator++(int) { operator++(); }    /// Start the iteration over.    virtual void reset() = 0;};class SCMatrixRectBlockIter: public SCMatrixBlockIter {  private:    SCMatrixRectBlock* block;    int i_;    int block_index;    int j_;  public:    SCMatrixRectBlockIter(SCMatrixRectBlock*);    virtual ~SCMatrixRectBlockIter();    int i();    int j();    double get();    void set(double);    operator int();    void operator++();    void reset();};class SCMatrixRectSubBlockIter: public SCMatrixBlockIter {  private:    SCMatrixRectSubBlock* block;    int i_;    int block_index;    int j_;  public:    SCMatrixRectSubBlockIter(SCMatrixRectSubBlock*);    virtual ~SCMatrixRectSubBlockIter();    int i();    int j();    double get();    void set(double);    operator int();    void operator++();    void reset();};class SCMatrixLTriBlockIter: public SCMatrixBlockIter {  private:    SCMatrixLTriBlock* block;    int block_index;    int i_;    int j_;  public:    SCMatrixLTriBlockIter(SCMatrixLTriBlock*);    virtual ~SCMatrixLTriBlockIter();    int i();    int j();    double get();    void set(double);    operator int();    void operator++();    void reset();};class SCMatrixLTriSubBlockIter: public SCMatrixBlockIter {  private:    SCMatrixLTriSubBlock* block;    int block_index;    int i_;    int j_;  public:    SCMatrixLTriSubBlockIter(SCMatrixLTriSubBlock*);    virtual ~SCMatrixLTriSubBlockIter();    int i();    int j();    double get();    void set(double);    operator int();    void operator++();    void reset();};class SCMatrixDiagBlockIter: public SCMatrixBlockIter {  private:    SCMatrixDiagBlock* block;    int block_index;    int i_;  public:    SCMatrixDiagBlockIter(SCMatrixDiagBlock*);    virtual ~SCMatrixDiagBlockIter();    int i();    int j();    double get();    void set(double);    operator int();    void operator++();    void reset();};class SCMatrixDiagSubBlockIter: public SCMatrixBlockIter {  private:    SCMatrixDiagSubBlock* block;    int block_index;    int i_;  public:    SCMatrixDiagSubBlockIter(SCMatrixDiagSubBlock*);    virtual ~SCMatrixDiagSubBlockIter();    int i();    int j();    double get();    void set(double);    operator int();    void operator++();    void reset();};class SCVectorSimpleBlockIter: public SCMatrixBlockIter {  private:    SCVectorSimpleBlock* block;    int block_index;    int i_;  public:    SCVectorSimpleBlockIter(SCVectorSimpleBlock*);    virtual ~SCVectorSimpleBlockIter();    int i();    int j();    double get();    void set(double);    operator int();    void operator++();    void reset();};class SCVectorSimpleSubBlockIter: public SCMatrixBlockIter {  private:    SCVectorSimpleSubBlock* block;    int block_index;    int i_;  public:    SCVectorSimpleSubBlockIter(SCVectorSimpleSubBlock*);    virtual ~SCVectorSimpleSubBlockIter();    int i();    int j();    double get();    void set(double);    operator int();    void operator++();    void reset();};}#endif// Local Variables:// mode: c++// c-file-style: "CLJ"// End:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -