Skip to content
Snippets Groups Projects
mode_util.f90 42 KiB
Newer Older
  • Learn to ignore specific revisions
  •     INTEGER :: ji
        INTEGER :: idx1, idx2
    
        INTEGER :: status
        INTEGER :: omode
        CHARACTER(LEN=MAXLEN) :: filename
    
        CHARACTER(LEN=:),ALLOCATABLE :: YLIST
        CHARACTER(LEN=NMNHNAMELGTMAX),DIMENSION(nbvar) :: YVARS
    
        outfiles%nbfiles = nbvar
        YLIST = TRIM(options(OPTVAR)%cvalue)
    
        DO ji = 1,nbvar-1
          idx1 = INDEX(YLIST,',')
          idx2 = INDEX(YLIST,'=')
          IF (idx1/=0) THEN
            IF (idx2/=0 .AND. idx2<idx1) THEN
              YVARS(ji) = YLIST(1:idx2-1)
            ELSE
              YVARS(ji) = YLIST(1:idx1-1)
            END IF
            YLIST = YLIST(idx1+1:)
          ELSE
            CALL PRINT_MSG(NVERB_FATAL,'IO','OPEN_SPLIT_NCFILES_OUT','problem separating variable names')
          END IF
    
        YVARS(nbvar) = YLIST
    
          filename = trim(houtfile)//'.'//TRIM(YVARS(ji))
          CALL IO_FILE_ADD2LIST(OUTFILES%TFILES(ji)%TFILE,filename,'UNKNOWN','WRITE', &
    
          CALL IO_FILE_OPEN_ll(OUTFILES%TFILES(ji)%TFILE,HPROGRAM_ORIG=CPROGRAM_ORIG)
    
            outfiles%tfiles(ji)%tfile%LNCCOMPRESS       = .TRUE.
            outfiles%tfiles(ji)%tfile%NNCCOMPRESS_LEVEL = options(OPTCOMPRESS)%ivalue
    
            outfiles%tfiles(ji)%tfile%LNCREDUCE_FLOAT_PRECISION = .TRUE.
    
          status = NF90_SET_FILL(OUTFILES%TFILES(ji)%TFILE%NNCID,NF90_NOFILL,omode)
    
          IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__)
        END DO
    
    
      END SUBROUTINE OPEN_SPLIT_NCFILES_OUT
    
      SUBROUTINE CLOSE_FILES(filelist)
    
        TYPE(filelist_struct),INTENT(INOUT) :: filelist
    
        INTEGER(KIND=LFI_INT) :: ilu,iresp
    
        DO ji=1,filelist%nbfiles
    
          IF (filelist%TFILES(ji)%TFILE%LOPENED) CALL IO_FILE_CLOSE_ll(filelist%TFILES(ji)%TFILE)
    
      END SUBROUTINE CLOSE_FILES
    
    END MODULE mode_util