1.1.1. 06.2.2.2 "put" and "putSlice" functions

putputSlice
IMAS Fortran :: put
program test
    use ids_schemas
    use ids_routines
    implicit none


    type (ids_core_profiles) :: ids ! <= IDS object

    character(len=3)    :: treename = 'ids'
    character(len=20)   :: database = 'test'
    integer             :: shot = 12
    integer             :: run = 22
    character(len=20)   :: usr
    character(len=20)   :: imasVersion
    integer             :: idx

    integer :: i
    

    ! Gets user name and data version
    call get_environment_variable("USER",usr)
    call get_environment_variable("IMAS_VERSION", imasVersion)

    ! Open a database
    call imas_create_env(treename, shot, run, -1,-1, idx, usr, database, imasVersion)

    ! Mandatory to define this property
    ids%ids_properties%homogeneous_time = IDS_TIME_MODE_HOMOGENEOUS

    allocate(ids%ids_properties%comment(1))
    ids%ids_properties%comment(1) = 'IDS stored by put (FORTRAN)'

    ! IDS structure allocation - vectors of size N (!)
    allocate(ids%time(10))
    allocate(ids%global_quantities%ip(10))

    ! --------- THE LOOP -----------------
    do i=1, 10
        ! Do not forget to set-up time!!
        ids%time(i) = i
        
        ! Setting values of data
        ids%global_quantities%ip(i) = 2*i
    enddo
    ! --------- THE LOOP -----------------

    ! Save data in the database
    call ids_put(idx, 'core_profiles', ids)

    ! Cleaning up
    call ids_deallocate(ids)

    ! Close a pulse file
    call imas_close(idx)
end program
IMAS Fortran :: putSlice
program test
    use ids_schemas
    use ids_routines
    implicit none


    type (ids_core_profiles) :: ids ! <= IDS object

    character(len=3)    :: treename = 'ids'
    character(len=20)   :: database = 'test'
    integer             :: shot = 12
    integer             :: run = 23
    character(len=20)   :: usr
    character(len=20)   :: imasVersion
    integer             :: idx

    integer :: i
    

    ! Gets user name and data version
    call get_environment_variable("USER",usr)
    call get_environment_variable("IMAS_VERSION", imasVersion)

    ! Open a database
    call imas_create_env(treename, shot, run, -1,-1, idx, usr, database, imasVersion)

    ! Mandatory to define this property
    ids%ids_properties%homogeneous_time = IDS_TIME_MODE_HOMOGENEOUS

    ! Time NOT dependent data
    allocate(ids%ids_properties%comment(1))
    ids%ids_properties%comment(1) = 'IDS stored by put_slice (FORTRAN)'

    ! IDS structure allocation - vectors of size 1 (!)
    allocate(ids%time(1))
    allocate(ids%global_quantities%ip(1))


    ! --------- THE LOOP -----------------
    do i=1, 10
        ! Do not forget to set-up time!!
        ids%time(1) = i
        
        ! Setting values of data
        ids%global_quantities%ip = 2*i
        
        ! Save data in the database
        if (i == 1) then
            call ids_put(idx, 'core_profiles', ids)
         else
            call ids_put_slice(idx, 'core_profiles', ids)
        end if
    enddo
    ! --------- THE LOOP -----------------

    ! Cleaning up
    call ids_deallocate(ids)

    ! Close a pulse file
    call imas_close(idx)
end program

1.1.2. 06.2.2.3 "get" and "getSlice" functions

getgetSlice
IMAS Fortran :: get
program test
    use ids_schemas
    use ids_routines
    implicit none


    type (ids_core_profiles) :: ids ! <= IDS object

    character(len=3)    :: treename = 'ids'
    character(len=20)   :: database = 'test'
    integer             :: shot = 12
    integer             :: run = 22
    character(len=20)   :: usr
    character(len=20)   :: imasVersion
    integer             :: idx

    integer :: i

    ! Gets user name and data version
    call get_environment_variable("USER",usr)
    call get_environment_variable("IMAS_VERSION", imasVersion)

    ! Open a database
    call imas_open_env(treename, shot, run, idx, usr, database, imasVersion)


    ! Get data
    call ids_get(idx, 'core_profiles', ids)

    write (*,*) "Time : ", ids%time
    write (*,*) "Value: ", ids%global_quantities%ip

    ! Close a pulse file
    call imas_close(idx)
end program
IMAS Fortran :: getSlice
program test
    use ids_schemas
    use ids_routines
    implicit none


    type (ids_core_profiles) :: ids ! <= IDS object

    character(len=3)    :: treename = 'ids'
    character(len=20)   :: database = 'test'
    integer             :: shot = 12
    integer             :: run = 22
    character(len=20)   :: usr
    character(len=20)   :: imasVersion
    integer             :: idx

    integer :: i

    ! Gets user name and data version
    call get_environment_variable("USER",usr)
    call get_environment_variable("IMAS_VERSION", imasVersion)

    ! Open a database
    call imas_open_env(treename, shot, run, idx, usr, database, imasVersion)

    ! Get data
    call ids_get_slice(idx, 'core_profiles', ids, 3.0, 1)

    write (*,*) "Time  : ", ids%time
    write (*,*) "Value : ", ids%global_quantities%ip

    ! Memory clean-up
    call ids_deallocate(ids)

    ! Close a pulse file
    call imas_close(idx)
end program
Building the code
F90=ifort
COPTS = -g `pkg-config imas-ifort --cflags` 
LIBS=`pkg-config imas-ifort --libs` 

all: ids_get.exe ids_put.exe ids_getSlice.exe ids_putSlice.exe

%.exe: %.f90
	$(F90) $(COPTS) -o $@ $< $(LIBS)

clean:
	rm -f *.o *.exe
  • No labels