// (-*-c++-*-) /**************************************************************************** * * DFT++: density functional package developed by * the research group of Prof. Tomas Arias, MIT. * * Principal author: Sohrab Ismail-Beigi * * Modifications for MPI version: Kenneth P Esler, * Sohrab Ismail-Beigi, and * Tairan Wang. * * Modifications for LSD version: Jason A Cline, * Gabor Csanyi, * Tairan Wang, and * Evan Reed * * Modifications for lattice/Pulay forces: Gabor Csanyi and * Sohrab Ismail-Beigi * * K-point symmetries: Nicolaj Moll * * Ionic dynamics and relaxation: Tairan Wang and * Evan Reed * * Copyright (C) 1996-2000 Sohrab Ismail-Beigi * * Permission granted to the academic community to * freely distribute and use this software provided that this notice is * maintained intact, and all publications resulting from its use * cite the following reference: * * Sohrab Ismail-Beigi and T. A. Arias, "New Algebraic Formulation of * Density Functional Calculation", Computer Physics Communications, * volume 128, issue 1-2, pages 1-45, June 2000. * ****************************************************************************/ /*----------------------- IonDyninfo ----------------------------------* * * * Tairan Wang, Mar 31. 1999 * * * * Class IonDyninfo: * * Extended class from Ioninfo to include dynamics information * * * *-----------------------------------------------------------------------*/ #ifndef DFT_IONDYNINFO_H #define DFT_IONDYNINFO_H class IonDyninfo { public: Ioninfo *ioninfo; // static ion information // ionic-run control parameters: int max_ionic_steps, ion_start_iter; char ion_dyn_action[DFT_MSG_LEN]; // Rotator files for disk-cached wavefunctions for extrapolateion in ion dynamics. char *oldFileRead; char *oldFileWrite; // for Verlet dynamics vector3 **atpos_old; vector3 **atpos_next; vector3 **atvel; // We need various lattice vectors and inverses to do dynamics Lattice *lattice; real ionic_kT, // in Hartree ionic_stepsize; // in femto-second int velsc_flag ; public: IonDyninfo(); ~IonDyninfo(); void setup(Everything &e); void print_force(const Output *out, Everything &e) const { ioninfo->print_force(out, e); } void print_pos(Output *out, int flag, Output *log, Everything &e); void print_pos(Output *out, int flag, int nstep, Output *log, Everything &e); // local function prototypes: void ioninit(); void ioncontinue( Elecinfo *elecinfo ); void iondyn( int iter ); // this is Sohrab's new thingy, when we updated the .c file, we can // enable it here /*void extrapolate_column_bundle_array(char *oldfname, int nbundles, * column_bundle *C, column_bundle *Y); */ void check_pos(); int dump_n_extrapolate_Y(Everything &everything, int iter); int relax_ion(const Control &cntrl); }; #endif // DFT_IONDYNINFO_H