Put Entire IDSΒΆ
This example focuses on putting IDS into entry and passing IDS validation.
See also
API documentation for: ids_put()
subroutine put_entire_ids()
use ids_routines
implicit none
type(ids_equilibrium) :: equilibrium
integer(ids_int) :: data_entry, status
! 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)
! set mandatory field
equilibrium%ids_properties%homogeneous_time = IDS_TIME_MODE_HOMOGENEOUS
! when ids_properties.homogeneous_time is set to IDS_TIME_MODE_HOMOGENEOUS,
! all time-dependent fields values correspond to <ids>.time vector.
allocate(equilibrium%time(3))
equilibrium%time = (/ 1.0, 2.0, 3.0 /)
! equilibrium/vacuum_toroidal_field/b0 should have the same size as equilibrium/time
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)
! NOTE: some IDS fields are put automatically by Access Layer. Examples of this type of fields are:
! - <ids>/ids_properties/version_put/data_dictionary
! - <ids>/ids_properties/version_put/access_layer
! - <ids>/ids_properties/version_put/access_layer_language
! IDSs fields can be printed using write or print statement
write(*,*) 'printing equilibrium from put_entire_ids() subroutine'
write(*,*) 'equilibrium/time:'
write(*,'(F5.2)') equilibrium%time
write(*,*) 'equilibrium/vacuum_toroidal_field/b0 :'
write(*,'(F5.2)') equilibrium%vacuum_toroidal_field%b0
call ids_deallocate(equilibrium)
call imas_close(data_entry, status)
end subroutine put_entire_ids