Re: incorrect header format: python

From: Florian Bürzle <florian.buerzle_at_uni-konstanz.de>
Date: Wed, 23 May 2012 19:08:32 +0200

Dear Joana,

I haven't investigated this in detail, but you define the floating point variables as 'c_float' whereas (according to the GADGET documentation) they should be 'c_double'. Then, you need to re-calculate the number of bytes within your header and to modify the struct format string accordingly (i. e. change every 'f' to 'd').

Hope this helps!

Cheers
Florian

Am 23.05.2012 um 16:18 schrieb joana.figueira_at_upc.edu:

> Hi everyone,
>
> I installed GADGET2 and it is running perfectly with the examples provided by GADGET itself and with the example provided by Nathan Goldbaum at astrobites.
> So now I'm creating my initial conditions script but I decided to create it in python. However, I always get the 'incorrect header format' message and I have no idea why. So what did I do?:
>
> in order to create the header I used c_type structures as follows:
>
> class Create_Header(Structure):
> SixDoubles=c_double*6
> SixInts=c_int*6
> OneDouble=c_double*1
> _fields_ = [("npart",SixInts),
> ("massarr",SixDoubles),
> ("time", c_float ),
> ("redshift", c_float),
> ...
> ("bytes",c_byte*(256- 6*4- ...))] #here I force the header to have 256 bytes
>
> where for each of the fields I assign a list of values or a value(eg: header.time=0.0).
> Later on I have to convert it to binary format, for that I'm using pack.struct(),like:
>
> p = struct.pack("iiiiiiffffffffiiiiiiiiiiffffiiiiiiiiiiif",header.npart[0],\
> header.npart[1],header.npart[2],header.npart[3],\
> header.npart[4],header.npart[5]...)
>
> I'm sure the header has 256 bytes: I checked using sizeof(header).
> This way of packing seems fine: I checked using struct.unpack.
> ..so basically I have no idea what I am missing... do you have any ideas?
>
> I also tried to read my header in the IC script provided in astrobites, using 'readu' and then save it using writeu, turns out that GADGET stops working again... so I used the TRANSFER_COUNT while writing this header into the file and I always get:TRANSFER_COUNT=1, even if I change the variables or size of the header... I don't really know much of IDL, so I was wondering that maybe you could have some idea of what I am doing wrong...
>
> In attach I send you a simple example based on my script, where I show how I'm creating and saving the header so you can have a clear picture of what I'm doing with it...
>
> Thanks in advance,
> Joana.
>
> <setup_IC.py>
> -----------------------------------------------------------
>
> If you wish to unsubscribe from this mailing, send mail to
> minimalist_at_MPA-Garching.MPG.de with a subject of: unsubscribe gadget-list
> A web-archive of this mailing list is available here:
> http://www.mpa-garching.mpg.de/gadget/gadget-list

-----------------------------------------------------------------------------------------------------------
Florian Bürzle
University of Konstanz
Department of Physics, Group Prof. Nielaba
Universitätsstr. 10
78464 Konstanz, Germany
tel: +49 7531 88 3790
web: http://cms.uni-konstanz.de/physik/nielaba/mitarbeiter/florian-buerzle/
-----------------------------------------------------------------------------------------------------------
Received on 2012-05-23 19:08:31

This archive was generated by hypermail 2.3.0 : 2023-01-10 10:01:31 CET