#ifndef PERTURBED_H_ #define PERTURBED_H_ /** \file perturbed.h * Header file for \ref perturbed.c * * Contains declarations of the functions implemented in \ref perturbed.c * Project: ParallelCarParrinello \author Frederik Heber \date 2006 */ void MinimisePerturbed (struct Problem *P, int *Stop, int *SuperStop); void InitPerturbedEnergyCalculation(struct Problem *P, const int first); void UpdatePerturbedEnergyCalculation(struct Problem *P); void CalculatePerturbedEnergy(struct Problem *P, const int l, const int DoGradient, const int first); void CalculatePerturbationOperator_PxR(struct Problem *P, const fftw_complex *source, fftw_complex *dest, const int l, const int index_pxr); void CalculatePerturbationOperator_RxP(struct Problem *P, const fftw_complex *source, fftw_complex *dest, const int l, const int index_rxp); void CalculatePerturbationOperator_R(struct Problem *P, const fftw_complex *source, fftw_complex *dest, const fftw_complex *source2, const int index_r, const int wavenr); void CalculatePerturbationOperator_P(struct Problem *P, const fftw_complex *source, fftw_complex *dest, const int index_g); void FillCurrentDensity(struct Problem *P); void FillDeltaCurrentDensity(struct Problem *P); double Calculate1stPerturbedDerivative(struct Problem *P, const fftw_complex *source0, const fftw_complex *source, const fftw_complex *ConDir, const fftw_complex *Hc_grad, const fftw_complex *H1c_grad); double Calculate2ndPerturbedDerivative(struct Problem *P, const fftw_complex *source0, const fftw_complex *source, const fftw_complex *ConDir, const double sourceHsource, const double ConDirHConDir, const double ConDirConDir); void FindPerturbedMinimum(struct Problem *P); void CalculateOverlap(struct Problem *P, const int l, const enum PsiTypeTag state); int CheckOrbitalOverlap(struct Problem *P); void ApplyTotalHamiltonian(struct Problem *P, const fftw_complex *source, fftw_complex *dest, fftw_complex ***fnl, const double PsiFactor, const int first); void CalculateMagneticSusceptibility (struct Problem *P); void CalculateMagneticMoment(struct Problem *P); void CalculateChemicalShieldingByReciprocalCurrentDensity(struct Problem *P); void CalculateChemicalShieldingbyDESolver(struct Problem *P); void OutputOrbitalPositions(struct Problem *P, const enum PsiTypeTag type); void fft_Psi(struct Problem *P, const fftw_complex *Psi, fftw_real *PsiR, const int index, const int symmetry); inline int cross(const int i, const int j); inline int crossed(int i, int j); void AllocCurrentDensity(struct Density *Dens0); void DisAllocCurrentDensity(struct Density *Dens0); void PlotVectorPlane(struct Problem *P, int B_Index, int n_orth); void ReadSrcPerturbedPsis(struct Problem *P, enum PsiTypeTag type); inline double ShiftGaugeOrigin(struct Problem *P, double r[NDIM], const int index); inline double sawtooth(struct Lattice *Lat, double L[NDIM], const int index); inline void MinImageConv(struct Lattice *Lat, const double R[NDIM], const double r[NDIM], double *result); void test_fft_symmetry(struct Problem *P, const int l); void test_rxp(struct Problem *P); void TestSawtooth(struct Problem *P, const int index); void TestCurrent(struct Problem *P, const int index); void TestReciprocalCurrent(struct Problem *P, const fftw_complex *currentC, struct OneGData *GArray, int in); #endif /*PERTURBED_H_*/