The following is a piece of simulation code I'm working on, and it's purpose is to update the particle velocities (within the array 'parvel') through each iteration of the loop. Where can I place the indexing 'i' such that a new .csv file is created with each loop?
1 2 3 4 5 6 7 8 9 10 11 12 13 14
for (int i = 0; i < timesteps; i++) {
pairpart(P,P); //Randomize P, display
compute(parvel,P,g2); //Compute collisional pairs, assign
collide(parvel,P,g2); //Collide! Re-adjust velocities.
//Build final velocity vectors into CSV files
ofstream array2f;
array2f.open ("array2f_.csv");
for (int i = 0; i < N; i++) {
array2f<<parvel[i*3]<<","<<parvel[i*3+1]<<","<<parvel[i*3+2]<<endl;
}
array2f.close();
}
Your question is somewhat ambiguous since you have two loops, each indexed by i.
Not sure which loop you're referring to.
As it is you will open and write the csv file for each timestep.
Not sure if this is what you want.
In any case, what's going to happen is that that you will open and write to the same file each time through the outer loop.
Are you trying to produce different .csv files?
If so, you need to modify the filename in some manner to make the filenames different.
Ah yes, sorry, the outer loop. As it is now, the same .csv file is re-written each iteration.
"If so, you need to modify the filename in some manner to make the filenames different."
This was exactly my question; I don't know how to do this! A work around I've been using is to put cin.get(); at the end of the loop and just manually re-name the output file after each iteration.
stringstream ss;
ss << "array2f_" << i << ".csv"; // build the filename
array2f.open (ss.str().c_str());
BTW, it's not a good idea to have nested loops with the same loop variable name.
They do have different scopes, so the compiler can tell them apart, but if you needed to reference the outer loop variable from inside the inner loop, you would have a problem. It also confusing to the reader. :)
Thanks, Abstraction, that worked perfectly! Now I can perform the amount of timesteps required (~1e3), and not go insane with manual file manipulation.
About the indexing value. Up to this point I had been copying/pasting tons of code, and there are some residual...effects.
One more question: how do I specify the location within my file system to store the output .csv's?