Skip to content

Commit 02fd2ee

Browse files
committed
Added automatic file numbering to *.data
1 parent e9699da commit 02fd2ee

2 files changed

Lines changed: 55 additions & 37 deletions

File tree

IsingMonteCarlo.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@ int main ( int argc, char *argv[] )
2222
{
2323
int seed_add;
2424
if ( argc != 2 ){
25-
cout<<"usage: "<< argv[0] <<" integer \n";
26-
return 1;
25+
//cout<<"usage: "<< argv[0] <<" integer \n";
26+
//return 1;
27+
seed_add = 0;
2728
}
2829
else {
2930
seed_add = strtol(argv[1], NULL, 10);
@@ -78,7 +79,7 @@ int main ( int argc, char *argv[] )
7879
accum.outputWilsonLoop(sigma,hamil.WilsonLoops,seed_add);
7980

8081
}//i
81-
accum.output(T,H);
82+
accum.output(T,H,seed_add);
8283
//perc.output(T,param.MCS_);
8384
//sigma.print();
8485
}//k

measure.h

Lines changed: 51 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -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

105117
void 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

Comments
 (0)