Project

General

Profile

Fortran user guide, writing data

Writing UNSIO data from fortran language is pretty simple and is done in 3 steps:

  1. UNSIO initialization for saving
  2. setting data
  3. saving

Unsio intialization for saving

You must first initialize UNSIO engine by calling uns_save_init() function.

snapshot_type="gadget2" 
ident=uns_save_init(filename,snaphot_type)

uns_save_init() accepts 2 parameters :

  • filename, is a string which contain the input file you want to save.

return value

uns_save_init() returns a unique identifier ident (positif integer) which will be used later in all unsio functions. A negative returned value means that something bad happen.

Setting data

Unsio fortran interface provides several functions to set data into an output snapshot

Setting arrays

example:


integer ngas
real * 4 pos(3,ngas)
character * 80 component, tag

component = "gas" 
tag =  "pos" 

ok = uns_set_array_f(ident,component,tag ,pos, ngas)       ! write positions for component gas

  • ident corresponds to the return value of the function uns_save_init() during unsio save initialization.
  • component specify which component we want to save, here it's "gas" component.
  • tag specify which array data we want to set. Here it's positions.
  • pos is the array itself which contain all "gas" particles to be saved ( Three dimensional arrays must be declared always in that way array(3,MAXBODIES) )
  • ngas specify the number of gas particles

Function uns_set_array_f return an integer, 1 in case of success
To have a complete description of uns_set_array_X function, follow this link.

Setting values

Functions uns_set_value_X (f "float" , i "integer') prepare floating or integer value to be saved.

example:

integer  ok
real * 4 time

ok = uns_set_value_f(ident, "time", time)    !  save time

To have a complete description of uns_set_value_X function, follow this link.

Saving data

Once all data have been set, a snapshot can be write on disk by calling subroutine uns_save()

call uns_save(ident) 

uns_save(ident) accept one parameter which is the identifier value return during unsio save initialization.

Closing file

Use uns_close_out(ident) to close an open unsio file by unsio save initialization , example :

integer ok

ok = uns_close_out(ident)  ! Ident is the file descriptor return by uns_save_init

This function accepts one parameter.

Return value

uns_close_out() returns a positive number (>=0). A negative returned value means that the simulation has not been opened or an unexpected error occurred.

A complete example

To see a complete example, follow this link.