@@ -13,6 +13,7 @@ class Measure
1313 private:
1414 int Nspin;
1515 int MCS;
16+ void createName (char *name, const int &);
1617
1718 public:
1819 double TOT_energy; // energy
@@ -26,7 +27,7 @@ class Measure
2627 Measure (const int &, const PARAMS &);
2728 void zero ();
2829 void record (double & energy, Spins & sigma, const array_2t &);
29- void output (const double &, const double &);
30+ void output (const double &, const double &, const int & );
3031 void outputWilsonLoop (const Spins & , const array_2t & , const int & );
3132
3233};
@@ -82,10 +83,21 @@ void Measure::record(double & energy, Spins & sigma, const array_2t & WilsonLoop
8283
8384}// update
8485
85- void Measure::output (const double & T, const double & H){
86+ void Measure::output (const double & T, const double & H, const int & SimNum){
87+
88+ char fname[8 ];
89+ createName (fname, SimNum); // create the first two characters of the file name
90+ fname[2 ] = ' .' ;
91+ fname[3 ] = ' d' ;
92+ fname[4 ] = ' a' ;
93+ fname[5 ] = ' t' ;
94+ fname[6 ] = ' a' ;
95+ fname[7 ] = ' \0 ' ;
8696
8797 ofstream cfout;
88- cfout.open (" 00.data" ,ios::app);
98+ cfout.open (fname,ios::app);
99+
100+ // cfout.open("00.data",ios::app);
89101
90102 cfout<<T<<" " ;
91103 cfout<<H<<" " ;
@@ -104,9 +116,43 @@ void Measure::output(const double & T, const double & H){
104116
105117void Measure::outputWilsonLoop (const Spins & sigma, const array_2t & WilsonLoops, const int & SimNum){
106118
107- int SimTemp = SimNum;
108119
109120 char fname[8 ];
121+ createName (fname, SimNum); // create the first two characters of the file name
122+ fname[2 ] = ' .' ;
123+ fname[3 ] = ' w' ;
124+ fname[4 ] = ' n' ;
125+ fname[5 ] = ' u' ;
126+ fname[6 ] = ' m' ;
127+ fname[7 ] = ' \0 ' ;
128+
129+ ofstream cfout;
130+ cfout.open (fname,ios::app);
131+
132+ int L = WilsonLoops[0 ].size ();
133+ int D = WilsonLoops.size ();
134+
135+ double prod;
136+ for (int d=0 ; d<D; d++){
137+ prod = 1 ;
138+ for (int i=0 ; i<L; i++)
139+ prod *= sigma.spin [WilsonLoops[d][i]];
140+ // cfout<<prod<<" ";
141+ // Wilson_RunningAvg[d] += prod;
142+ // cfout<<Wilson_RunningAvg[d]/(1.0*MCstep)<<" ";
143+ cfout<<prod<<" " ;
144+ }
145+ cfout<<endl;
146+
147+ cfout.close ();
148+
149+ }// outputWilsonLoop
150+
151+
152+ // a private function to create the first two characters of the integer file name
153+ void Measure::createName (char *fname, const int & num){
154+
155+ int SimTemp = num;
110156
111157 if (SimTemp/10 == 0 )
112158 fname[0 ]=' 0' ;
@@ -149,35 +195,6 @@ void Measure::outputWilsonLoop(const Spins & sigma, const array_2t & WilsonLoops
149195 else if (SimTemp%2 == 0 ) fname[1 ] = ' 2' ;
150196 else if (SimTemp%1 == 0 ) fname[1 ] = ' 1' ;
151197
152- fname[2 ] = ' .' ;
153- fname[3 ] = ' w' ;
154- fname[4 ] = ' n' ;
155- fname[5 ] = ' u' ;
156- fname[6 ] = ' m' ;
157- fname[7 ] = ' \0 ' ;
158-
159-
160- int L = WilsonLoops[0 ].size ();
161- int D = WilsonLoops.size ();
162-
163- ofstream cfout;
164- cfout.open (fname,ios::app);
165-
166- double prod;
167- for (int d=0 ; d<D; d++){
168- prod = 1 ;
169- for (int i=0 ; i<L; i++)
170- prod *= sigma.spin [WilsonLoops[d][i]];
171- // cfout<<prod<<" ";
172- // Wilson_RunningAvg[d] += prod;
173- // cfout<<Wilson_RunningAvg[d]/(1.0*MCstep)<<" ";
174- cfout<<prod<<" " ;
175- }
176- cfout<<endl;
177-
178- cfout.close ();
179-
180- }// outputWilsonLoop
181-
198+ }// createName
182199
183200#endif
0 commit comments