/* 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. */ /*-----------------------------------------------------------------------* * * * The dft thread routines and definitions. Used for parallelizing * * with POSIX threads (SMP). * * * *-----------------------------------------------------------------------*/ #ifndef DFT_THREAD_H #define DFT_THREAD_H #ifdef DFT_THREAD class dft_thread_data { public: int id; // Id # of thread: from 0 to N_threads-1 // starting and ending indices, and how many are to be done // end index is inclusive int start, end, n; int i1, i2, i3, i4, i5, i6; // Some integers void *p1, *p2, *p3, *p4, *p5; // Some pointers // simplest constructor dft_thread_data() { id = start = end = n = i1 = i2 = i3 = i4 = i5 = i6 = 0; p1 = p2 = p3 = p4 = p5 = (void *)0; } }; void dft_call_threads(int N, void *p1, void *p2, void *p3, void *p4, void *p5, int i1, int i2, int i3, int i4, int i5, int i6, void *(*routine)(void *)); #endif // DFT_THREAD #endif // DFT_THREAD_H