diff --git a/Source/dump.f90 b/Source/dump.f90 index bb2a3290afd..7de3abe6f25 100644 --- a/Source/dump.f90 +++ b/Source/dump.f90 @@ -1296,7 +1296,7 @@ SUBROUTINE INITIALIZE_MESH_DUMPS(NM) IF (ABS(OB%Z2-M%ZS)SIZE(M%PATCH)) CALL REALLOCATE_PATCH(NM,SIZE(M%PATCH),SIZE(M%PATCH)+10) + IF (M%N_PATCH>SIZE(M%PATCH)) CALL REALLOCATE_PATCH(NM,SIZE(M%PATCH),SIZE(M%PATCH)+10,'PATCH') PA => M%PATCH(M%N_PATCH) PA%I1 = MIN(M%IBAR,MAX(0,NINT( GINV(OB%X1-M%XS,1,NM)*RDXI ))) ; PA%IG1 = PA%I1+1 PA%I2 = MIN(M%IBAR,MAX(0,NINT( GINV(OB%X2-M%XS,1,NM)*RDXI ))) ; PA%IG2 = PA%I2 @@ -1464,20 +1464,30 @@ END SUBROUTINE INITIALIZE_MESH_DUMPS !> \param NM Mesh number !> \param N1 Current size of array !> \param N2 New size of array +!> \param PATCH_NAME Character string indicating which PATCH_TYPE variable to reallocate -SUBROUTINE REALLOCATE_PATCH(NM,N1,N2) +SUBROUTINE REALLOCATE_PATCH(NM,N1,N2,PATCH_NAME) INTEGER, INTENT(IN) :: N1,N2,NM TYPE (PATCH_TYPE), DIMENSION(:), ALLOCATABLE :: PATCH_DUMMY TYPE (MESH_TYPE), POINTER :: M +CHARACTER(*), INTENT(IN) :: PATCH_NAME M => MESHES(NM) ALLOCATE(PATCH_DUMMY(1:N2)) -PATCH_DUMMY(1:N1) = M%PATCH(1:N1) -DEALLOCATE(M%PATCH) -ALLOCATE(M%PATCH(1:N2)) -M%PATCH(1:N2) = PATCH_DUMMY(1:N2) +SELECT CASE(PATCH_NAME) + CASE('PATCH') + PATCH_DUMMY(1:N1) = M%PATCH(1:N1) + DEALLOCATE(M%PATCH) + ALLOCATE(M%PATCH(1:N2)) + M%PATCH(1:N2) = PATCH_DUMMY(1:N2) + CASE('EXTERIOR_PATCH') + PATCH_DUMMY(1:N1) = M%EXTERIOR_PATCH(1:N1) + DEALLOCATE(M%EXTERIOR_PATCH) + ALLOCATE(M%EXTERIOR_PATCH(1:N2)) + M%EXTERIOR_PATCH(1:N2) = PATCH_DUMMY(1:N2) +END SELECT DEALLOCATE(PATCH_DUMMY) END SUBROUTINE REALLOCATE_PATCH @@ -2298,7 +2308,7 @@ SUBROUTINE WRITE_SMOKEVIEW_FILE ! Create EXTERIOR_PATCHes with which Smokeview colors, textures, or contours exterior mesh boundaries. - ALLOCATE(M%EXTERIOR_PATCH(10*(6+N_VENT_TOTAL))) ; M%N_EXTERIOR_PATCH = 0 + ALLOCATE(M%EXTERIOR_PATCH(10)) ; M%N_EXTERIOR_PATCH = 0 ! The size of EXTERIOR_PATCH will expand if need be. ALLOCATE(VENT_INDICES(MAX(M%IBAR,M%JBAR),MAX(M%JBAR,M%KBAR),6)) ; VENT_INDICES = 0 VENT_LOOP: DO N=1,M%N_VENT @@ -2634,6 +2644,8 @@ SUBROUTINE DUMMY_VENTS(FI,N1,N2) VENT_INDICES(I:ISTP,J:JSTP,FI) = -1 M%N_EXTERIOR_PATCH = M%N_EXTERIOR_PATCH + 1 + IF (M%N_EXTERIOR_PATCH>SIZE(M%EXTERIOR_PATCH)) & + CALL REALLOCATE_PATCH(NM,SIZE(M%EXTERIOR_PATCH),SIZE(M%EXTERIOR_PATCH)+10,'EXTERIOR_PATCH') EP => M%EXTERIOR_PATCH(M%N_EXTERIOR_PATCH) SELECT CASE(FI) CASE (1) ; EP%I1=0 ; EP%I2=0 ; EP%J1=I-1 ; EP%J2=ISTP ; EP%K1=J-1 ; EP%K2=JSTP ; EP%IOR= 1