1 #ifndef DYNMAT_H
2 #define DYNMAT_H
3 
4 #include "stdio.h"
5 #include "stdlib.h"
6 #include "string.h"
7 #include "memory.h"
8 #include "interpolate.h"
9 
10 class DynMat {
11 public:
12 
13   DynMat(int, char**);
14   ~DynMat();
15 
16   int nx, ny, nz, nucell;
17   int sysdim, fftdim;
18   double eml2f, eml2fc;
19   char *funit;
20 
21   void getDMq(double *);
22   void getDMq(double *, double *);
23   void writeDMq(double *);
24   void writeDMq(double *, const double, FILE *fp);
25   int geteigen(double *, int);
26   void reset_interp_method();
27 
28   doublecomplex **DM_q;
29 
30   int flag_latinfo;
31   int npt, fftdim2;
32   double Tmeasure, basevec[9], ibasevec[9];
33   double *M_inv_sqrt;
34   double **basis;
35   int *attyp;
36 
37 private:
38 
39   int flag_skip, flag_reset_gamma;
40   Interpolate *interpolate;
41 
42   Memory *memory;
43 
44   int nasr;
45   void EnforceASR();
46 
47   char *binfile, *dmfile;
48   double boltz, q[3];
49 
50   doublecomplex **DM_all;
51 
52   void car2dir();      // to convert basis from cartisian coordinate into factional.
53   void real2rec();
54   void GaussJordan(int, double *);
55 
56   void help();
57   void ShowInfo();
58   void ShowVersion();
59   void Define_Conversion_Factor();
60 };
61 #endif
62