Read Entire IDSΒΆ
This example focuses on reading whole IDS from entry.
See also
- API documentation for:
subroutine read_entire_ids()
!! We are storing and reading back an IDS - equilibrium. Data are stored inside MDS+ file.
use ids_routines
implicit none
integer(ids_int) :: data_entry, status
type(ids_equilibrium) :: equilibrium
! NOTE: this block of code uses FORCE_CREATE_PULSE mode in order to create example data
call imas_open('imas:mdsplus?path=./testdb_mdsplus', FORCE_CREATE_PULSE, data_entry, status)
! fill IDS with example data
equilibrium%ids_properties%homogeneous_time = IDS_TIME_MODE_HOMOGENEOUS
allocate(equilibrium%time(3))
equilibrium%time = (/ 1.0, 2.0, 3.0 /)
allocate(equilibrium%vacuum_toroidal_field%b0(3))
equilibrium%vacuum_toroidal_field%b0 = (/ 1.0, 2.0, 3.0 /)
call ids_put(data_entry, 'equilibrium', equilibrium)
call ids_deallocate(equilibrium)
call imas_close(data_entry, status)
! NOTE: this block of code uses OPEN_PULSE mode in order to read example data
call imas_open('imas:mdsplus?path=./testdb_mdsplus', OPEN_PULSE, data_entry, status)
call ids_get(data_entry, 'equilibrium', equilibrium)
! here you can access content of the IDS equilibrium
! some_variable = equilibrium.some_element
! equilibrium.some_element = ...
! etc.
! one may check if IDS was filled with data using ids_ids_defined(<ids>) subroutine
write(*,*) 'is equilibrium defined?: ', ids_is_defined(equilibrium)
call ids_deallocate(equilibrium)
end subroutine read_entire_ids