15 CHARACTER (LEN=*),
PARAMETER ::
16 1 vn_cal =
'signal_diag_cal',
17 2 vn_cext =
'signal_diag_cext',
18 3 vn_plasma =
'signal_diag_plasma',
19 4 vn_sname =
'signal_diag_sname'
20 CHARACTER(LEN=*),
PARAMETER,
DIMENSION(1) ::
21 1 d1dim = (/
'num_diagno'/)
22 CHARACTER(LEN=*),
DIMENSION(2),
PARAMETER ::
23 1 d2dim = (/
'str_len ',
'num_diagno'/)
29 REAL(rprec),
ALLOCATABLE,
DIMENSION(:) :: signal_diag_cext,
31 CHARACTER (LEN=30),
ALLOCATABLE,
DIMENSION(:) :: signal_sname
36 SUBROUTINE read_v3post_file (file_or_extension, filename, ierr)
42 INTEGER,
INTENT(out) :: ierr
43 CHARACTER(LEN=*),
INTENT(in) :: file_or_extension
44 CHARACTER(LEN=*),
INTENT(out) :: filename
48 INTEGER,
PARAMETER :: iunit_init = 10
60 CALL parse_extension(filename, file_or_extension, isnc)
63 CALL read_v3post_nc (filename, ierr)
65 print *,
"NETCDF wout file can not be opened on this platform"
70 CALL safe_open (iunit, ierr, filename,
'old',
'formatted')
71 IF (ierr .eq. 0)
CALL read_v3post_text(iunit, ierr)
75 END SUBROUTINE read_v3post_file
78 SUBROUTINE read_v3post_text(iunit, ierr)
83 INTEGER :: iunit, ierr
87 stop
'read_v3post TEXT file read not implemented!'
89 END SUBROUTINE read_v3post_text
93 SUBROUTINE read_v3post_nc(filename, ierr)
99 INTEGER,
INTENT(out) :: ierr
100 CHARACTER(LEN=*),
INTENT(in) :: filename
104 INTEGER :: ncdf, istat
105 INTEGER,
DIMENSION(2) :: dimlens
108 call cdf_open(ncdf,filename,
'r', ierr)
109 IF (ierr .ne. 0)
THEN
110 print *,
' Error opening v3post .nc file'
115 CALL read_v3post_deallocate
117 CALL cdf_inquire(ncdf, vn_plasma, dimlens)
118 num_diagno = dimlens(1)
120 ALLOCATE (signal_diag_cext(num_diagno),
121 1 signal_diag_plasma(num_diagno),
122 1 signal_sname(num_diagno), stat=istat)
124 IF (istat .ne. 0) stop
'Allocation error in read_v3post'
125 signal_diag_cext = 0 ; signal_diag_plasma = 0
126 CALL cdf_read(ncdf, vn_cext, signal_diag_cext)
127 CALL cdf_read(ncdf, vn_plasma, signal_diag_plasma)
128 CALL cdf_read(ncdf, vn_sname, signal_sname)
131 END SUBROUTINE read_v3post_nc
134 SUBROUTINE read_v3post_deallocate
143 IF (
ALLOCATED(signal_diag_cext))
DEALLOCATE (signal_diag_cext,
144 1 signal_sname, signal_diag_plasma, stat=istat)
146 END SUBROUTINE read_v3post_deallocate
148 END MODULE read_v3post_mod