66 INTEGER, INTENT(IN) :: INODE, LBUFR, BUFR(LBUFR)
67 INTEGER, INTENT(INOUT) :: INFO(2)
68 INTEGER, INTENT(OUT) :: IWHANDLER
69 TYPE(DESCBAND_STRUC_T), POINTER, DIMENSION(:) :: FDBD_ARRAY_TMP
70 INTEGER :: OLD_SIZE, NEW_SIZE, I, IERR
71 iwhandler = -1
73 IF (info(1) .LT. 0) RETURN
74 IF (iwhandler > size(fdbd_array)) THEN
75 old_size = size(fdbd_array)
76 new_size =
max( (old_size * 3) / 2 + 1, iwhandler)
77 ALLOCATE(fdbd_array_tmp(new_size),stat=ierr)
78 IF (ierr.GT.0) THEN
79 info(1)=-13
80 info(2)=new_size
81 RETURN
82 ENDIF
83 DO i=1, old_size
84 fdbd_array_tmp(i)=fdbd_array(i)
85 ENDDO
86 DO i=old_size+1, new_size
87 fdbd_array_tmp(i)%INODE = -9999
88 fdbd_array_tmp(i)%LBUFR = -9999
89 NULLIFY(fdbd_array_tmp(i)%BUFR)
90 ENDDO
91 DEALLOCATE(fdbd_array)
92 fdbd_array=>fdbd_array_tmp
93 NULLIFY(fdbd_array_tmp)
94 ENDIF
95 fdbd_array(iwhandler)%INODE = inode
96 fdbd_array(iwhandler)%LBUFR = lbufr
97 ALLOCATE(fdbd_array(iwhandler)%BUFR(lbufr), stat=ierr)
98 IF (ierr > 0 ) THEN
99 info(1)=-13
100 info(2)=lbufr
101 RETURN
102 ENDIF
103 fdbd_array(iwhandler)%BUFR = bufr
104 RETURN
subroutine, public mumps_fdm_start_idx(what, from, iwhandler, info)