diff --git a/external/RSL_LITE/module_dm.F b/external/RSL_LITE/module_dm.F index dcf72c0cbe..2bb0367817 100644 --- a/external/RSL_LITE/module_dm.F +++ b/external/RSL_LITE/module_dm.F @@ -2213,8 +2213,8 @@ SUBROUTINE get_full_obs_vector( nsta, nerrf, niobf, & INTEGER N_BUFFER(NIOBF) REAL FULL_BUFFER(NIOBF) INTEGER IFULL_BUFFER(NIOBF) - INTEGER IDISPLACEMENT(1024) ! HARD CODED MAX NUMBER OF PROCESSORS - INTEGER ICOUNT(1024) ! HARD CODED MAX NUMBER OF PROCESSORS + INTEGER, ALLOCATABLE , DIMENSION(:) :: IDISPLACEMENT + INTEGER, ALLOCATABLE , DIMENSION(:) :: ICOUNT INTEGER :: MPI_COMM_COMP ! MPI group communicator INTEGER :: NPROCS ! Number of processors @@ -2225,6 +2225,8 @@ SUBROUTINE get_full_obs_vector( nsta, nerrf, niobf, & ! Get rank of monitor processor and broadcast to others. CALL MPI_COMM_SIZE( MPI_COMM_COMP, NPROCS, IERR ) + ALLOCATE (IDISPLACEMENT(NPROCS)) + ALLOCATE (ICOUNT(NPROCS)) ! DO THE U FIELD NLOCAL_DOT = 0 @@ -2369,6 +2371,8 @@ SUBROUTINE get_full_obs_vector( nsta, nerrf, niobf, & ERRF(10,IFULL_BUFFER(N)) = FULL_BUFFER(N) END DO + DEALLOCATE (IDISPLACEMENT) + DEALLOCATE (ICOUNT) #endif END SUBROUTINE get_full_obs_vector