OpenAtom  Version1.5a
matrix2file.C
1 #include "matrix2file.h"
2 #include "charm++.h"//< Just for CkAbort!!
3 #include <assert.h>
4 
5 void dumpMatrix(const char *infilename, double *matrix, int xdim, int ydim,int w,int x,int y, int z, bool symmetric)
6 {
7  char fmt[1000];
8  char filename[1000];
9  memset(fmt, 0 , 1000);
10  memset(filename, 0 , 1000);
11  strncpy(fmt,infilename,999);
12  strncat(fmt,"_%d_%d_%d_%d_%d.out",999);
13  sprintf(filename,fmt, w, x, y, z, symmetric);
14  FILE *loutfile = fopen(filename, "w");
15 #ifdef PAIRCALC_TEST_DUMP
16  fprintf(loutfile,"%d\n",ydim);
17 #endif
18  for(int i=0;i<xdim;i++)
19  for(int j=0;j<ydim;j++)
20  fprintf(loutfile,"%d %d %.12g\n",x+i,y+j,matrix[i*ydim+j]);
21  fclose(loutfile);
22 }
23 
24 
25 
26 void dumpMatrix(const char *infilename, complex *matrix, int xdim, int ydim,int w,int x,int y, int z, bool symmetric)
27 {
28  char fmt[1000];
29  char filename[1000];
30  memset(fmt, 0 , 1000);
31  memset(filename, 0 , 1000);
32  strncpy(fmt,infilename,999);
33  strncat(fmt,"_%d_%d_%d_%d_%d.out",999);
34  sprintf(filename,fmt, w, x, y, z, symmetric);
35  FILE *loutfile = fopen(filename, "w");
36 #ifdef PAIRCALC_TEST_DUMP
37  fprintf(loutfile,"%d\n",ydim);
38 #endif
39  for(int i=0;i<xdim;i++)
40  for(int j=0;j<ydim;j++)
41  fprintf(loutfile,"%d %d %.12g %.12g\n",x+i,y+j,matrix[i*ydim+j].re, matrix[i*ydim+j].im);
42  fclose(loutfile);
43 }
44 
45 
46 
47 void loadMatrix(const char *infilename, double *matrix, int xdim, int ydim,int w,int x,int y, int z, bool symmetric)
48 {
49  char fmt[1000];
50  char filename[1000];
51  memset(fmt, 0 , 1000);
52  memset(filename, 0 , 1000);
53  strncpy(fmt,infilename,999);
54  strncat(fmt,"_%d_%d_%d_%d_%d.out",999);
55  sprintf(filename,fmt, w, x, y, z, symmetric);
56  FILE *loutfile = fopen(filename, "r");
57  if(loutfile!=NULL)
58  {
59  int junk1,junk2;
60  for(int i=0;i<xdim;i++)
61  for(int j=0;j<ydim;j++)
62  assert(fscanf(loutfile,"%d %d %lf\n",&junk1,&junk2,&(matrix[i*ydim+j])));
63  fclose(loutfile);
64  }
65  else
66  {
67  CkAbort(filename);
68  }
69 }
70 
71 
72 
73 void loadMatrix(const char *infilename, complex *matrix, int xdim, int ydim,int w,int x,int y, int z, bool symmetric)
74 {
75  char fmt[1000];
76  char filename[1000];
77  memset(fmt, 0 , 1000);
78  memset(filename, 0 , 1000);
79  strncpy(fmt,infilename,999);
80  strncat(fmt,"_%d_%d_%d_%d_%d.out",999);
81  sprintf(filename,fmt, w, x, y, z, symmetric);
82  FILE *loutfile = fopen(filename, "r");
83  if(loutfile!=NULL)
84  {
85  int junk1,junk2;
86  for(int i=0;i<xdim;i++)
87  for(int j=0;j<ydim;j++)
88  assert(fscanf(loutfile,"%d %d %lf %lf\n",&junk1,&junk2,&(matrix[i*ydim+j].re),&(matrix[i*ydim+j].im)));
89  fclose(loutfile);
90  }
91  else
92  {
93  CkAbort(filename);
94  }
95 }
96 
97 //! NOTE: this uses the evil piny convention
98 void dumpMatrix2DDouble(const char *infilename, double **matrix, int xdim, int ydim,int w,int x,int y, int z, bool symmetric)
99 {
100  char fmt[1000];
101  char filename[1000];
102  memset(fmt, 0 , 1000);
103  memset(filename, 0 , 1000);
104  strncpy(fmt,infilename,999);
105  strncat(fmt,"_%d_%d_%d_%d_%d.out",999);
106  sprintf(filename,fmt, w, x, y, z, symmetric);
107  FILE *loutfile = fopen(filename, "w");
108  for(int i=0;i<xdim;i++)
109  for(int j=1;j<=ydim;j++)
110  fprintf(loutfile,"%d %d %.12g\n",i,j,matrix[i][j]);
111  fclose(loutfile);
112 }
113 void loadMatrix2DDouble(const char *infilename, double **matrix, int xdim, int ydim,int w,int x,int y, int z, bool symmetric)
114 {
115  char fmt[1000];
116  char filename[1000];
117  memset(fmt, 0 , 1000);
118  memset(filename, 0 , 1000);
119  strncpy(fmt,infilename,999);
120  strncat(fmt,"_%d_%d_%d_%d_%d.out",999);
121  sprintf(filename,fmt, w, x, y, z, symmetric);
122  FILE *loutfile = fopen(filename, "r");
123  if(loutfile!=NULL)
124  {
125  int junk1,junk2;
126  for(int i=0;i<xdim;i++)
127  for(int j=1;j<=ydim;j++)
128  assert(fscanf(loutfile,"%d %d %lf\n",&junk1,&junk2,&(matrix[i][j])));
129  fclose(loutfile);
130  }
131  else
132  {
133  CkAbort(filename);
134  }
135 }
136 
137 
138 //! NOTE: this uses the evil piny convention
139 void dumpMatrix2DInt(const char *infilename, int **matrix, int xdim, int ydim,int w,int x,int y, int z, bool symmetric)
140 {
141  char fmt[1000];
142  char filename[1000];
143  memset(fmt, 0 , 1000);
144  memset(filename, 0 , 1000);
145  strncpy(fmt,infilename,999);
146  strncat(fmt,"_%d_%d_%d_%d_%d.out",999);
147  sprintf(filename,fmt, w, x, y, z, symmetric);
148  FILE *loutfile = fopen(filename, "w");
149  for(int i=0;i<xdim;i++)
150  for(int j=1;j<=ydim;j++)
151  fprintf(loutfile,"%d %d %d\n",i,j,matrix[i][j]);
152  fclose(loutfile);
153 }
154 void loadMatrix2DInt(const char *infilename, int **matrix, int xdim, int ydim,int w,int x,int y, int z, bool symmetric)
155 {
156  char fmt[1000];
157  char filename[1000];
158  memset(fmt, 0 , 1000);
159  memset(filename, 0 , 1000);
160  strncpy(fmt,infilename,999);
161  strncat(fmt,"_%d_%d_%d_%d_%d.out",999);
162  sprintf(filename,fmt, w, x, y, z, symmetric);
163  FILE *loutfile = fopen(filename, "r");
164  if(loutfile!=NULL)
165  {
166  int junk1,junk2;
167  for(int i=0;i<xdim;i++)
168  for(int j=1;j<=ydim;j++)
169  assert(fscanf(loutfile,"%d %d %d\n",&junk1,&junk2,&(matrix[i][j])));
170  fclose(loutfile);
171  }
172  else
173  {
174  CkAbort(filename);
175  }
176 }
177