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

📄 matrix.h

📁 大型并行量子化学软件;支持密度泛函(DFT)。可以进行各种量子化学计算。支持CHARMM并行计算。非常具有应用价值。
💻 H
📖 第 1 页 / 共 2 页
字号:
    /// Make this refer to m.    RefSymmSCMatrix(SymmSCMatrix *m);    ~RefSymmSCMatrix();    /// Make this refer to m.    RefSymmSCMatrix& operator=(SymmSCMatrix* m);    /// Make this and m refer to the same matrix.    RefSymmSCMatrix& operator=(const RefSymmSCMatrix& m);    // matrix specific members  public:    /** Create a vector with dimension d by d.        The data values are undefined. */    RefSymmSCMatrix(const RefSCDimension& d,const Ref<SCMatrixKit>&);    /// Multiply this by a matrix and return a matrix.    RefSCMatrix operator*(const RefSCMatrix&) const;    RefSCMatrix operator*(const RefSymmSCMatrix&) const;    /// Multiply this by a vector and return a vector.    RefSCVector operator*(const RefSCVector&a) const;    RefSymmSCMatrix operator*(double) const;    /// Matrix addition and subtraction.    RefSymmSCMatrix operator+(const RefSymmSCMatrix&) const;    RefSymmSCMatrix operator-(const RefSymmSCMatrix&) const;    /// Return the inverse of this.    RefSymmSCMatrix i() const;    /// Return the generalized inverse of this.    RefSymmSCMatrix gi() const;    /** These call the SCMatrix members of the same name after checking for        references to 0. */    RefSymmSCMatrix clone() const;    RefSymmSCMatrix copy() const;    void set_element(int,int,double) const;    void accumulate_element(int,int,double) const;    double get_element(int,int) const;    RefSCMatrix get_subblock(int br, int er, int bc, int ec);    RefSymmSCMatrix get_subblock(int br, int er);    void assign_subblock(const RefSCMatrix&, int br, int er, int bc, int ec);    void assign_subblock(const RefSymmSCMatrix&, int br, int er);    void accumulate_subblock(const RefSCMatrix&, int, int, int, int);    void accumulate_subblock(const RefSymmSCMatrix&, int, int);    RefSCVector get_row(int);    void assign_row(const RefSCVector&, int);    void accumulate_row(const RefSCVector&, int);    void accumulate_symmetric_outer_product(const RefSCVector&) const;    double scalar_product(const RefSCVector&) const;    void accumulate_symmetric_product(const RefSCMatrix&) const;    void accumulate_symmetric_sum(const RefSCMatrix&) const;    /// Add a * b * a.t() to this.    void accumulate_transform(const RefSCMatrix&a,const RefSymmSCMatrix&b,                        SCMatrix::Transform = SCMatrix::NormalTransform) const;    void accumulate_transform(const RefSCMatrix&a,const RefDiagSCMatrix&b,                        SCMatrix::Transform = SCMatrix::NormalTransform) const;    void accumulate_transform(const RefSymmSCMatrix&a,                              const RefSymmSCMatrix&b) const;    void randomize() const;    void assign(const RefSymmSCMatrix&) const;    void scale(double) const;    void assign(double) const;    void assign(const double*) const;    void assign(const double**) const;    void convert(double*) const;    void convert(double**) const;    void accumulate(const RefSymmSCMatrix&) const;    void element_op(const Ref<SCElementOp>&) const;    void element_op(const Ref<SCElementOp2>&,                    const RefSymmSCMatrix&) const;    void element_op(const Ref<SCElementOp3>&,                    const RefSymmSCMatrix&,                    const RefSymmSCMatrix&) const;    double trace() const;    int n() const;    RefSCDimension dim() const;    Ref<SCMatrixKit> kit() const;    void print(std::ostream&) const;    void print(const char*title=0,               std::ostream&out=ExEnv::out0(), int =10) const;    void save(StateOut&);    void restore(StateIn&);    /** Solves this x = v.  Overwrites v with x. */    double solve_lin(const RefSCVector&) const;    /// Returns the determinant of the referenced matrix.    double determ() const;    /// Returns the eigenvalues of the reference matrix.    RefDiagSCMatrix eigvals() const;    /// Returns the eigenvectors of the reference matrix.    RefSCMatrix eigvecs() const;    /** Sets eigvals to the eigenvalues and eigvecs        to the eigenvalues and eigenvectors of the referenced matrix. */    void diagonalize(const RefDiagSCMatrix& eigvals,                     const RefSCMatrix& eigvecs) const;    /// Assign and examine matrix elements.    SymmSCMatrixdouble operator()(int i,int j) const;    /** If this matrix is blocked return the number of blocks.     * Otherwise return 1.     */    int nblock() const;    /** If this matrix is blocked return block i.     * Otherwise return this as block 0.     */    RefSymmSCMatrix block(int i) const;};/// Allow multiplication with a scalar on the left.RefSymmSCMatrix operator*(double,const RefSymmSCMatrix&);/** The RefDiagSCMatrix class is a smart pointer to an DiagSCMatrix    specialization. */class RefDiagSCMatrix: public Ref<DiagSCMatrix> {    // standard overrides  public:    /** Initializes the matrix pointer to 0.  The reference must        be initialized before it is used. */    RefDiagSCMatrix();    /// Make this and m refer to the same SCMatrix.    RefDiagSCMatrix(const RefDiagSCMatrix& m);    /// Make this refer to m.    RefDiagSCMatrix(DiagSCMatrix *m);    ~RefDiagSCMatrix();    /// Make this refer to m.    RefDiagSCMatrix& operator=(DiagSCMatrix* m);    /// Make this and m refer to the same matrix.    RefDiagSCMatrix& operator=(const RefDiagSCMatrix & m);    // matrix specific members  public:    /** Create a diagonal matrix with dimension d by d.  The data values        are undefined. */    RefDiagSCMatrix(const RefSCDimension&,const Ref<SCMatrixKit>&);    /// Multiply this by a matrix and return a matrix.    RefSCMatrix operator*(const RefSCMatrix&) const;    RefDiagSCMatrix operator*(double) const;    /// Matrix addition and subtraction.    RefDiagSCMatrix operator+(const RefDiagSCMatrix&) const;    RefDiagSCMatrix operator-(const RefDiagSCMatrix&) const;    /// Return the inverse of this.    RefDiagSCMatrix i() const;    /// Return the generalized inverse of this.    RefDiagSCMatrix gi() const;    /// These call the SCMatrix members of the same name    /// after checking for references to 0.    RefDiagSCMatrix clone() const;    RefDiagSCMatrix copy() const;    void set_element(int,double) const;    void accumulate_element(int,double) const;    double get_element(int) const;    void randomize() const;    void assign(const RefDiagSCMatrix&) const;    void scale(double) const;    void assign(double) const;    void assign(const double*) const;    void convert(double*) const;    void accumulate(const RefDiagSCMatrix&) const;    void element_op(const Ref<SCElementOp>&) const;    void element_op(const Ref<SCElementOp2>&,                    const RefDiagSCMatrix&) const;    void element_op(const Ref<SCElementOp3>&,                    const RefDiagSCMatrix&,                    const RefDiagSCMatrix&) const;    int n() const;    RefSCDimension dim() const;    Ref<SCMatrixKit> kit() const;    double trace() const;    void print(std::ostream&) const;    void print(const char*title=0,               std::ostream&out=ExEnv::out0(), int =10) const;    void save(StateOut&);    void restore(StateIn&);    /// Returns the determinant of the referenced matrix.    double determ() const;    /// Assign and examine matrix elements.    DiagSCMatrixdouble operator()(int i) const;    /** If this matrix is blocked return the number of blocks.     * Otherwise return 1.     */    int nblock() const;    /** If this matrix is blocked return block i.     * Otherwise return this as block 0.     */    RefDiagSCMatrix block(int i) const;};/// Allow multiplication with a scalar on the left.RefDiagSCMatrix operator*(double,const RefDiagSCMatrix&);class SCVectordouble {   friend class RefSCVector;  private:    RefSCVector vector;    int i;        SCVectordouble(SCVector*,int);  public:    SCVectordouble(const SCVectordouble&);    ~SCVectordouble();    double operator=(double a);    double operator=(const SCVectordouble&);    operator double();    double val() const;};class SCMatrixdouble {   friend class RefSCMatrix;  private:    RefSCMatrix matrix;    int i;    int j;        SCMatrixdouble(SCMatrix*,int,int);  public:    SCMatrixdouble(const SCMatrixdouble&);    ~SCMatrixdouble();    double operator=(double a);    double operator=(const SCMatrixdouble&);    operator double();    double val() const;};class SymmSCMatrixdouble {   friend class RefSymmSCMatrix;  private:    RefSymmSCMatrix matrix;    int i;    int j;        SymmSCMatrixdouble(SymmSCMatrix*,int,int);  public:    SymmSCMatrixdouble(const SCMatrixdouble&);    ~SymmSCMatrixdouble();    double operator=(double a);    double operator=(const SymmSCMatrixdouble&);    operator double();    double val() const;};class DiagSCMatrixdouble {   friend class RefDiagSCMatrix;  private:    RefDiagSCMatrix matrix;    int i;    int j;        DiagSCMatrixdouble(DiagSCMatrix*,int,int);  public:    DiagSCMatrixdouble(const SCMatrixdouble&);    ~DiagSCMatrixdouble();    double operator=(double a);    double operator=(const DiagSCMatrixdouble&);    operator double();    double val() const;};}#ifdef INLINE_FUNCTIONS#include <math/scmat/matrix_i.h>#endif#endif// Local Variables:// mode: c++// c-file-style: "CLJ"// End:

⌨️ 快捷键说明

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