/* $RCSfile$ * $Author$ * $Date$ * $Revision$ * * Copyright (C) 2001-2007 Stephan Michels <stephan@vern.chem.tu-berlin.de> * * Contact: cdk-devel@lists.sf.net * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public License * as published by the Free Software Foundation; either version 2.1 * of the License, or (at your option) any later version. * All we ask is that proper credit is given for our work, which includes * - but is not limited to - adding the above copyright notice to the beginning * of your source code files, and to any copyright notice that you may distribute * with programs based on this work. * * This program 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * */ package org.openscience.cdk.math.qm; import org.openscience.cdk.math.Matrix; import org.openscience.cdk.math.Vector; /** * A basis set must implement this class. * * @author Stephan Michels <stephan@vern.chem.tu-berlin.de> * @cdk.githash * @cdk.created 2001-07-02 * @cdk.module qm */ public interface IBasis { /** * Gets the number of base vectors */ public int getSize(); /** * Gets the dimension of the volume, which describes the base. */ public double getMinX(); /** * Gets the dimension of the volume, which describes the base. */ public double getMaxX(); /** * Gets the dimension of the volume, which describes the base. */ public double getMinY(); /** * Gets the dimension of the volume, which describes the base. */ public double getMaxY(); /** * Gets the dimension of the volume, which describes the base. */ public double getMinZ(); /** * Gets the dimension of the volume, which describes the base. */ public double getMaxZ(); /** * Calculates the function value an (x,y,z). * @param index The number of the base */ public double getValue(int index, double x, double y, double z); /** * Calculates the function values. * @param index The number of the base */ public Vector getValues(int index, Matrix x); /** * Calculate the overlap integral S = <phi_i|phi_j>. * * @param i Index of the first base * @param j Index of the second base */ public double calcS(int i, int j); /** * Calculates the impulse J = -<d/dr chi_i | d/dr chi_j>. * * @param i Index of the first base * @param j Index of the second base */ public double calcJ(int i, int j); /** * Calculates the potential V = <chi_i | 1/r | chi_j>. * * @param i Index of the first base * @param j Index of the second base */ public double calcV(int i, int j); /** * Calculates a two eletron fout center integral * I = <chi_i chi_j | 1/r12 | chi_k chi_l >. * * @param i Index of the first base * @param j Index of the second base * @param k Index of the third base * @param l Index of the fourth base */ public double calcI(int i, int j, int k, int l); }