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 type
An 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).