/* DFT++ is a density functional package developed by the research group of Professor Tomas Arias Copyright 1996-2003 Sohrab Ismail-Beigi This file is part of DFT++. DFT++ is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. DFT++ 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 General Public License for more details. You should have received a copy of the GNU General Public License along with DFT++; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Please see the file CREDITS for a list of authors. For academic users, we request that publications using results obtained with this software reference "New algebraic formulation of density functional calculation," by Sohrab Ismail-Beigi and T.A. Arias, Computer Physics Communications 128:1-2, 1-45 (June 2000). and, if using the wavelet basis, further reference "Multiresolution analysis of electronic structure: semicardinal and wavelet bases," T.A. Arias, Reviews of Modern Physics 71:1, 267-311 (January 1999). and "Robust ab initio calculation of condensed matter: transparent convergence through semicardinal multiresolution analysis,'' I.P. Daykov, T.A. Arias, and Torkel D. Engeness, Physical Review Letters, 90:21, 216402 (May 2003). For your convenience, preprints of the above articles may be obtained from http://arXiv.org/abs/cond-mat/9909130, 9805262, and 0204411, respectively. */ #ifndef DFT_WL_BASIS_H #define DFT_WL_BASIS_H class WL_BasisSpec { public: Gridspec gridspec[NgridMx]; Gridspec gridspec_dense[NgridMx]; Lattice *lattice; int use_dense; //ipd: HACK // calls the old L/invL for orthorhombic cells, because the new // operators are much much slower int use_L_orthorhombic; // Needed for initialization from Everything void setup(Everything &e); // Needed for planewave compatibility. Eliminate if possible! //ipd: the symmetries are holding it //int Nx, Ny, Nz, NxNyNz; int size_realgrid; int kpt_fold[3]; //ipd: rename this to state_dep or k_dep, or whatever int basis_flag; // 0 for k-indep bases, 1 otherwise // Stores the gridspec filename. char filename[DFT_FILENAME_LEN]; //WL_BasisSpec(char *filename); // specify a gridspec file WL_BasisSpec(); // default is "gridspec" }; class WL_Basis { public: WL_BasisSpec *basis_spec; // points to global BasisSpec QuantumNumber *qnum; int nbasis; // number of basis elements in the basis int lwork; // stores the size of the workspace associated with this grid //ipd: this is part of BlochState // double weight; // int representation; WL_Basis(); // Needed for compatibility with planewaves. Might do something later. void setup_template(WL_BasisSpec &global_spec); void setup(const vector3 &kvec); }; #endif // DFT_WL_BASIS_H