The User Section is added to the CLASS data format. It is defined in the Fortran source as follows:
type user ! Type for all user subsections sequence integer(kind=4) :: n ! Number of user subsections type (user_sub), pointer :: sub(:) ! Array of subsections end typeAn object of type user is added to the type observation structure in the data format. This user object can contain an arbitrary number of subsections. This allows several user subsections to exist for the same observation.
Then each of these user subsection is described by the following type:
type user_sub ! Type for each user subsection sequence character(len=12) :: owner ! Owner of the subsection character(len=12) :: title ! Title of the subsection integer(kind=4) :: version ! Version of the subsection integer(kind=4) :: ndata ! Length of the data(:) array integer(kind=4), pointer :: data(:) ! Place holder for information end type
Finally, this new User Section is different from the other ones in the CLASS data format since its size is not constant. This implies some modifications in the subroutines. In particular, a whole copy of observation to observation (obsout = obsin) is forbidden: it must be done in a specific way, taking care of allocating the pointers in the user section before the copy. For the same reason, the User Section is not buffered and must be re-read everytime needed on the disk (in other words SET VIRTUAL ON has no effect).