Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

cd $TUTORIAL_DIR/cpo_basics/fortran
 
Handling CPOs: get() vs. getSlice()
Code Block
title$TUTORIAL_DIR/cpo_basics/fortran/get_cpo_array.f90
linenumberstrue
program diagnostic
    use euitm_schemas
    use euitm_routines
    implicit none

    integer :: idx, i, arraySize
    type (type_equilibrium), pointer :: eqArray(:) ! <= Array !!!



    call euitm_open('euitm', 14, 4, idx)
    
    call euitm_get(idx, 'equilibrium', eqArray)
    arraySize = size(eqArray)
    write (*,*) "Number of slices: ", arraySize
    
	do i=1, arraySize
    	write (*,*) "Time: ", eqArray(i)%time
        write (*,*) "Value of r: ", eqArray(i)%eqgeometry%boundary(1)%r(1)
        write (*,*) "Value of z: ", eqArray(i)%eqgeometry%boundary(1)%z(1)
    enddo
    call euitm_close(idx)
end program
Code Block
title$TUTORIAL_DIR/cpo_basics/fortran/get_cpo_slices.f90
linenumberstrue
program diagnostic
    use euitm_schemas
    use euitm_routines  
    implicit none

    integer :: idx, i, arraySize 
    type (type_equilibrium) :: equilibrium
    real(EUITM_R8), pointer :: timeVector(:)
    real(EUITM_R8) :: time

    call euitm_open('euitm', 14, 4, idx)
    
    call euitm_get_times(idx, 'equilibrium',timeVector)
    
    arraySize = size(timeVector)
    write (*,*) "Number of slices: ", arraySize
    write (*,*) "Time vector: ", timeVector
    
	do i = 1, arraySize
        time = timeVector(i)
        call euitm_get_slice(idx, 'equilibrium', equilibrium, time, 1)
            
    	write (*,*) "Time [", time, "]: ",  equilibrium%time
        write (*,*) "Value of r: ", equilibrium%eqgeometry%boundary(1)%r(1)
        write (*,*) "Value of z: ", equilibrium%eqgeometry%boundary(1)%z(1)
    enddo
    
	call euitm_close(idx)
end program

 

3. Open GetSlice.f90 file

vi GetSlice.f90

...