Info |
---|
In this tutorial - how can you integrate your code with UAL
- how can you access data via UAL
|
Accessing data from UAL requires some modification to your code. In this part of tutorial, we will take a closer look on how to access IDS via UAL.
3.2.1
...
Changes
CHEAT SHEET |
ITM | IMAS |
---|
use euitm_schemas | use ids_schemas |
use euitm_routines | use ids_routines |
type (type_<cpo_name>) :: cpo | type (ids_<ids_name>) :: ids |
type (type_<cpo_name>), pointer :: cpoArray(:) ! <= Array !!! | type (ids_<ids_name>) :: ids <== SINGLE OBJ !!! |
call euitm_create('euitm', shot, run, refShot, refRun, idx) | call imas_create('ids', shot, run, refShot, refRun, idx) |
call euitm_open('euitm', shot, run, idx) | call imas_open('ids', shot, run, idx) |
call euitm_put(idx, '<cpo_name>', cpoArray) <== ARRAY! | call ids_put(idx, '<ids_name>', ids) <== SINGLE OBJ |
call euitm_put_non_timed(idx,"<cpo_name>", cpo) | call ids_put_non_timed(idx,"<ids_name>",ids) |
call euitm_put_slice(idx, '<cpo_name>', cpo) | call ids_put_slice(idx, '<ids_name>', ids) |
call euitm_deallocate(cpoArray) | call ids_deallocate(ids) |
call euitm_close(idx) | call imas_close(idx) |
call euitm_enable_mem_cache(idx) | call imas_enable_mem_cache(idx) |
call euitm_disable_mem_cache(idx) | call imas_disable_mem_cache(idx) |
call euitm_flush_all(idx) | call imas_flush_all(idx) |
...
3.2.2 CPO/IDS put
put() CPO vs IDS |
---|
Code Block |
---|
| program diagnostic
use euitm_schemas
use euitm_routines
implicit none
integer :: idx, i, arraySize
type (type_equilibrium), pointer :: cpoArray(:) ! <= Array !!ARRAY!
! Open a database
call euitm_create('euitm', 11, 22, -1, -1, idx)
! CPO structure allocation
allocate(cpoArray(10))
!SCALARS (!)
do i=1, 10
cpoArray(i)%time = VALUE
cpoArray(i)%x%y = VALUE
enddo
call euitm_put(idx, 'equilibrium', cpoArray)
call euitm_deallocate(cpoArray)
! Close a pulse file
call euitm_close(idx)
end program |
| Code Block |
---|
| program diagnostic
use ids_schemas
use ids_routines
implicit none
integer :: idx, i
type (ids_core_profiles) :: ids ! <= Single object !!!
! Open a database
call imas_create('ids', 11, 22, -1, -1, idx)
! Mandatory to define this property
ids%ids_properties%homogeneous_time = 1
! IDS structure allocation
allocate(ids%time(110))
allocate(ids%x%y(110))
!SCALARS (!)
do i=1, 10
ids%time(i) = VALUE
ids%x%y(i) = VALUE
enddo
! VECTORS
ids%time = timeVector
ids%x%y = valueVector
call ids_put(idx, 'core_profiles', ids)
call ids_deallocate(ids)
! Close a pulse file
call imas_close(idx)
end program
|
|
Let's check how to read these data in Fortran.
3.2.3 CPO/IDS putSlice
4. Open example file
putSlice() CPO vs IDS |
---|
Code Block |
---|
| program diagnostic
use euitm_schemas
use euitm_routines
implicit none
integer :: idx, i
type (type_equilibrium) :: cpo ! <= Single object !!!
! Open a database
call euitm_create('euitm', 11, 22, -1, -1, idx)
! Time NOT dependent data
allocate(cpo%datainfo%dataprovider(1))
cpo%datainfo%dataprovider="FI"
call euitm_put_non_timed(idx, 'equilibrium', cpo)
cpo%time = VALUE
cpo%x%y = VALUE
call euitm_put_slice(idx, 'equilibrium', cpo)
call euitm_deallocate(cpoArray)
! Close a pulse file
call euitm_close(idx)
end program |
| Code Block |
---|
| program diagnostic
use ids_schemas
use ids_routines
implicit none
integer :: idx, i
type (ids_core_profiles) :: ids ! <= Single object !!!
! Open a database
call imas_create('ids', 11, 22, -1, -1, idx)
! Mandatory to define this property
ids%ids_properties%homogeneous_time = 1
! Time NOT dependent data
allocate(ids%ids_properties%comment(1))
ids%ids_properties%comment(1) = 'A test idsIDS put usingby put_slice'
call ids_put_non_timed(idx,"core_profiles",ids)
! IDS structure allocation
allocate(ids%time(1))
allocate(ids%x%y(1))
ids%time(1) = VALUE
ids%x%y(1) = VALUE
call ids_put_slice(idx, 'core_profiles', ids)
call ids_deallocate(ids)
! Close a pulse file
call imas_close(idx)
end program
|
|
...
3.2
...
.4 CPO/IDS get
Exercise no. 4 - After this exercise you will:
get() CPO vs IDS |
---|
Code Block |
---|
| program diagnostic
use euitm_schemas
use euitm_routines
implicit none
integer :: idx, i, arraySize
type (type_equilibrium), pointer :: cpoArray(:) ! <= Array !!!
! Open a database
call euitm_open('euitm', 14, 4, idx)
! Get data
call euitm_get(idx, 'equilibrium', cpoArray)
! Check array size
arraySize = size(cpoArray) ! <= array of CPOs
! SCALARS (!)
do i=1, arraySize
write (*,*) "Time : ", cpoArray(i)%time
write (*,*) "Value: ", cpoArray(i)%x%y
enddo
! Close a pulse file
call euitm_close(idx)
end program |
| Code Block |
---|
| program diagnostic
use ids_schemas
use ids_routines
implicit none
integer :: idx, i, arraySize
type (ids_core_profiles) :: ids ! <= Single object !!!
! Open a database
call imas_open('ids', 14, 4, idx)
! Get data
call imasids_get(idx, 'core_profiles', ids)
! Check array size
arraySize = size(ids%time) ! <= time vector
! SCALARS (!)
do i=1, arraySize
write (*,*) "Time : ", ids%time(i)
write (*,*) "Value: ", ids%x%y(i)
enddo
! VECTORS
write (*,*) "Time : ", ids%time
write (*,*) "Value: ", ids%x%y
! Close a pulse file
call imas_close(idx)
end program |
|
...
3.2.5 CPO/IDS getSlice
getSlice() CPO vs IDS |
---|
Code Block |
---|
language | cpp |
---|
title | ITM |
---|
linenumbers | true |
---|
| program diagnostic
! UAL library
use euitm_schemas
use euitm_routines
implicit none
integer :: idx
type (type_equilibrium) :: cpo
! Open a database
call euitm_open('euitm', 11, 4, idx)
! Get data
call euitm_get_slice(idx, 'equilibrium', cpo, 4.0, 1)
write (*,*) "Time : ", cpo%time
write (*,*) "Value : ", cpo%x%y
! Memory clean-up
call euitm_deallocate(cpo)
! Close a pulse file
call euitm_close(idx)
end program |
| Code Block |
---|
| program diagnostic
! UAL library
use ids_schemas
use ids_routines
implicit none
integer :: idx
type (ids_core_profiles) :: ids
! Open a database
call imas_open('ids', 11, 22, idx)
! Get data
call ids_get_slice(idx, 'core_profiles', ids, 4.0, 1)
write (*,*) "Time : ", ids%time
write (*,*) "Value : ", ids%x%y
! Memory clean-up
call ids_deallocate(ids)
! Close a pulse file
call imas_close(idx)
end program |
|