On 25/02/17 03:48, Jesus wrote:
>
> Hello all,
> I have created a function in Gadget2 that calculates a velocity
> increment (dv), and I add this increment on the file timestep.c every
> 100 timesteps.
> However, I'd like to know if my function is actually doing what I
> want, so I want to output a file that writes "dv1, dv2, dv3".
> What I did was to add this immediately after I calculate dv on
> timestep.c, on the advance_and_find_timesteps function:
>
> if (ThisTask ==0)
> {
> fprintf( t_out, "%e, %e, %e, %e, %e, %e\n",
> P[i].Pos[0], P[i].Pos[1], P[i].Pos[2], dv1, dv2, dv3 ) ;
> }
Dear Jesus,
As you wrote it, only the particles hosted on the master task will be
written (ThisTask ==0).
You can avoid this problem by opening one file by task, adding for
example .n at the end of the
filename (where n=ThisTask) to differentiate them, and then remove the
if (ThisTask ==0).
Cheers,
yves
>
> The file is created and the values are written, but it only writes
> 1400 values (out of 20,000 particles). I am not sure how to fix this
> so that all the 20,000 values are written. If I remove the if
> statement, the code crashes, saying "Segmentation fault: 11. Signal
> code: Address not mapped"
>
> If anyone has any suggestions, please let me know.
> Thank you very much.
>
> -Jesus
>
--
---------------------------------------------------------------------
Dr. Yves Revaz
Laboratory of Astrophysics
Ecole Polytechnique Fédérale de Lausanne (EPFL)
Observatoire de Sauverny Tel : +41 22 379 24 28
51. Ch. des Maillettes Fax : +41 22 379 22 05
1290 Sauverny e-mail : Yves.Revaz_at_epfl.ch
SWITZERLAND Web : http://people.epfl.ch/yves.revaz
---------------------------------------------------------------------
Received on 2017-02-27 08:48:48