diff --git a/Source/cons.f90 b/Source/cons.f90 index d4b338ad64c..36973dd38bb 100644 --- a/Source/cons.f90 +++ b/Source/cons.f90 @@ -267,7 +267,6 @@ MODULE GLOBAL_CONSTANTS LOGICAL :: NO_PRESSURE_ZONES=.FALSE. !< Flag to suppress pressure zones LOGICAL :: CTRL_DIRECT_FORCE=.FALSE. !< Allow adjustable direct force via CTRL logic LOGICAL :: REACTING_THIN_OBSTRUCTIONS=.FALSE. !< Thin obstructions that off-gas are present -LOGICAL :: CHECK_BOUNDARY_ONE_D_ARRAYS=.FALSE. !< Flag that indicates that ONE_D array dimensions need to be checked LOGICAL :: TENSOR_DIFFUSIVITY=.FALSE. !< If true, use experimental tensor diffusivity model for spec and tmp LOGICAL :: OXPYRO_MODEL=.FALSE. !< Flag to use oxidative pyrolysis mass transfer model LOGICAL :: OUTPUT_WALL_QUANTITIES=.FALSE. !< Flag to force call to WALL_MODEL diff --git a/Source/dump.f90 b/Source/dump.f90 index 15cfab93b9f..b9474407980 100644 --- a/Source/dump.f90 +++ b/Source/dump.f90 @@ -3579,7 +3579,7 @@ SUBROUTINE DUMP_RESTART(T,DT,NM) DO IW=1,N_WALL_CELLS WC => WALL(IW) RC=0 ; IC=0 ; LC=0 - CALL PACK_WALL(NM,OS,WC,WC%SURF_INDEX,RC,IC,LC,UNPACK_IT=.FALSE.,COUNT_ONLY=.FALSE.) + CALL PACK_WALL(NM,OS,WC,WC%SURF_INDEX,RC,IC,LC,UNPACK_IT=.FALSE.,COUNT_ONLY=.FALSE.,CHECK_BOUNDS=.FALSE.) WRITE(LU_CORE(NM)) WC%SURF_INDEX WRITE(LU_CORE(NM)) OS%REALS,OS%INTEGERS,OS%LOGICALS ENDDO @@ -3589,7 +3589,7 @@ SUBROUTINE DUMP_RESTART(T,DT,NM) DO ITW=1,N_THIN_WALL_CELLS TW => THIN_WALL(ITW) RC=0 ; IC=0 ; LC=0 - CALL PACK_THIN_WALL(NM,OS,TW,TW%SURF_INDEX,RC,IC,LC,UNPACK_IT=.FALSE.,COUNT_ONLY=.FALSE.) + CALL PACK_THIN_WALL(NM,OS,TW,TW%SURF_INDEX,RC,IC,LC,UNPACK_IT=.FALSE.,COUNT_ONLY=.FALSE.,CHECK_BOUNDS=.FALSE.) WRITE(LU_CORE(NM)) TW%SURF_INDEX WRITE(LU_CORE(NM)) OS%REALS,OS%INTEGERS,OS%LOGICALS ENDDO @@ -3599,7 +3599,7 @@ SUBROUTINE DUMP_RESTART(T,DT,NM) DO ICF=1,N_CFACE_CELLS_DIM CFA => CFACE(ICF) RC=0 ; IC=0 ; LC=0 - CALL PACK_CFACE(NM,OS,CFA,CFA%SURF_INDEX,RC,IC,LC,UNPACK_IT=.FALSE.,COUNT_ONLY=.FALSE.) + CALL PACK_CFACE(NM,OS,CFA,CFA%SURF_INDEX,RC,IC,LC,UNPACK_IT=.FALSE.,COUNT_ONLY=.FALSE.,CHECK_BOUNDS=.FALSE.) WRITE(LU_CORE(NM)) CFA%SURF_INDEX WRITE(LU_CORE(NM)) OS%REALS,OS%INTEGERS,OS%LOGICALS ENDDO @@ -3610,7 +3610,7 @@ SUBROUTINE DUMP_RESTART(T,DT,NM) LPC => LAGRANGIAN_PARTICLE_CLASS(LP%CLASS_INDEX) OS => LPC%PARTICLE_STORAGE RC=0 ; IC=0 ; LC=0 - CALL PACK_PARTICLE(NM,OS,LP,LP%CLASS_INDEX,RC,IC,LC,UNPACK_IT=.FALSE.,COUNT_ONLY=.FALSE.) + CALL PACK_PARTICLE(NM,OS,LP,LP%CLASS_INDEX,RC,IC,LC,UNPACK_IT=.FALSE.,COUNT_ONLY=.FALSE.,CHECK_BOUNDS=.FALSE.) WRITE(LU_CORE(NM)) LP%CLASS_INDEX WRITE(LU_CORE(NM)) OS%REALS,OS%INTEGERS,OS%LOGICALS ENDDO @@ -3797,7 +3797,7 @@ SUBROUTINE READ_RESTART(T,DT,NM) RC=0 ; IC=0 ; LC=0 CALL ALLOCATE_STORAGE(NM,SURF_INDEX=SURF_INDEX,WALL_INDEX=IW) WC => MESHES(NM)%WALL(IW) - CALL PACK_WALL(NM,OS,WC,SURF_INDEX,RC,IC,LC,UNPACK_IT=.TRUE.,COUNT_ONLY=.FALSE.) + CALL PACK_WALL(NM,OS,WC,SURF_INDEX,RC,IC,LC,UNPACK_IT=.TRUE.,COUNT_ONLY=.FALSE.,CHECK_BOUNDS=.TRUE.) ENDDO READ(LU_RESTART(NM)) N_THIN_WALL_CELLS,N_THIN_WALL_CELLS_DIM @@ -3809,7 +3809,7 @@ SUBROUTINE READ_RESTART(T,DT,NM) RC=0 ; IC=0 ; LC=0 CALL ALLOCATE_STORAGE(NM,SURF_INDEX=SURF_INDEX,THIN_WALL_INDEX=ITW) TW => MESHES(NM)%THIN_WALL(ITW) - CALL PACK_THIN_WALL(NM,OS,TW,SURF_INDEX,RC,IC,LC,UNPACK_IT=.TRUE.,COUNT_ONLY=.FALSE.) + CALL PACK_THIN_WALL(NM,OS,TW,SURF_INDEX,RC,IC,LC,UNPACK_IT=.TRUE.,COUNT_ONLY=.FALSE.,CHECK_BOUNDS=.TRUE.) ENDDO READ(LU_RESTART(NM)) N_CFACE_CELLS_DIM @@ -3821,7 +3821,7 @@ SUBROUTINE READ_RESTART(T,DT,NM) RC=0 ; IC=0 ; LC=0 CALL ALLOCATE_STORAGE(NM,SURF_INDEX=SURF_INDEX,CFACE_INDEX=ICF) CFA => MESHES(NM)%CFACE(ICF) - CALL PACK_CFACE(NM,OS,CFA,SURF_INDEX,RC,IC,LC,UNPACK_IT=.TRUE.,COUNT_ONLY=.FALSE.) + CALL PACK_CFACE(NM,OS,CFA,SURF_INDEX,RC,IC,LC,UNPACK_IT=.TRUE.,COUNT_ONLY=.FALSE.,CHECK_BOUNDS=.TRUE.) ENDDO READ(LU_RESTART(NM)) NLP,NLPDIM,PARTICLE_TAG @@ -3836,7 +3836,7 @@ SUBROUTINE READ_RESTART(T,DT,NM) RC=0 ; IC=0 ; LC=0 CALL ALLOCATE_STORAGE(NM,LP_INDEX=IP,LPC_INDEX=CLASS_INDEX,SURF_INDEX=LPC%SURF_INDEX) LP => MESHES(NM)%LAGRANGIAN_PARTICLE(IP) - CALL PACK_PARTICLE(NM,OS,LP,CLASS_INDEX,RC,IC,LC,UNPACK_IT=.TRUE.,COUNT_ONLY=.FALSE.) + CALL PACK_PARTICLE(NM,OS,LP,CLASS_INDEX,RC,IC,LC,UNPACK_IT=.TRUE.,COUNT_ONLY=.FALSE.,CHECK_BOUNDS=.FALSE.) ENDDO ENDIF diff --git a/Source/func.f90 b/Source/func.f90 index 8a2d84c32b0..b5e33bc54d8 100644 --- a/Source/func.f90 +++ b/Source/func.f90 @@ -3322,7 +3322,8 @@ SUBROUTINE ALLOCATE_STORAGE(NM,LP_INDEX,LPC_INDEX,SURF_INDEX,WALL_INDEX,CFACE_IN WC%N_REALS = 0 WC%N_INTEGERS = 0 WC%N_LOGICALS = 0 - CALL PACK_WALL(NM,OS_DUMMY,WC,SURF_INDEX,WC%N_REALS,WC%N_INTEGERS,WC%N_LOGICALS,UNPACK_IT=.FALSE.,COUNT_ONLY=.TRUE.) + CALL PACK_WALL(NM,OS_DUMMY,WC,SURF_INDEX,WC%N_REALS,WC%N_INTEGERS,WC%N_LOGICALS,UNPACK_IT=.FALSE.,COUNT_ONLY=.TRUE.,& + CHECK_BOUNDS=.FALSE.) ELSEIF (PRESENT(THIN_WALL_INDEX)) THEN @@ -3351,7 +3352,8 @@ SUBROUTINE ALLOCATE_STORAGE(NM,LP_INDEX,LPC_INDEX,SURF_INDEX,WALL_INDEX,CFACE_IN TW%TD_INDEX = TD_INDEX TW%B1_INDEX = B1_INDEX - CALL PACK_THIN_WALL(NM,OS_DUMMY,TW,SURF_INDEX,TW%N_REALS,TW%N_INTEGERS,TW%N_LOGICALS,UNPACK_IT=.FALSE.,COUNT_ONLY=.TRUE.) + CALL PACK_THIN_WALL(NM,OS_DUMMY,TW,SURF_INDEX,TW%N_REALS,TW%N_INTEGERS,TW%N_LOGICALS,UNPACK_IT=.FALSE.,COUNT_ONLY=.TRUE.,& + CHECK_BOUNDS=.FALSE.) ELSEIF (PRESENT(CFACE_INDEX)) THEN @@ -3384,7 +3386,8 @@ SUBROUTINE ALLOCATE_STORAGE(NM,LP_INDEX,LPC_INDEX,SURF_INDEX,WALL_INDEX,CFACE_IN CFA%B2_INDEX = B2_INDEX CFA%BR_INDEX = BR_INDEX - CALL PACK_CFACE(NM,OS_DUMMY,CFA,SURF_INDEX,CFA%N_REALS,CFA%N_INTEGERS,CFA%N_LOGICALS,UNPACK_IT=.FALSE.,COUNT_ONLY=.TRUE.) + CALL PACK_CFACE(NM,OS_DUMMY,CFA,SURF_INDEX,CFA%N_REALS,CFA%N_INTEGERS,CFA%N_LOGICALS,UNPACK_IT=.FALSE.,COUNT_ONLY=.TRUE.,& + CHECK_BOUNDS=.FALSE.) ENDIF @@ -3678,12 +3681,13 @@ END SUBROUTINE ALLOCATE_STORAGE !> \param LC Counter of logical variables !> \param UNPACK_IT Logical indicating whether the data is to be packed or unpacked !> \param COUNT_ONLY Logical indicating whether the aim is simply to count variables +!> \param CHECK_BOUNDS Logical indicating whether to check the array bounds of the items being unpacked -SUBROUTINE PACK_PARTICLE(NM,OS,LP,LPC_INDEX,RC,IC,LC,UNPACK_IT,COUNT_ONLY) +SUBROUTINE PACK_PARTICLE(NM,OS,LP,LPC_INDEX,RC,IC,LC,UNPACK_IT,COUNT_ONLY,CHECK_BOUNDS) USE COMP_OPERATORS, ONLY: EQUATE INTEGER, INTENT(IN) :: NM,LPC_INDEX -LOGICAL, INTENT(IN) :: UNPACK_IT,COUNT_ONLY +LOGICAL, INTENT(IN) :: UNPACK_IT,COUNT_ONLY,CHECK_BOUNDS INTEGER, INTENT(INOUT) :: IC,RC,LC INTEGER :: BC_INDEX,OD_INDEX,B1_INDEX,B2_INDEX,BR_INDEX TYPE(LAGRANGIAN_PARTICLE_TYPE), POINTER :: LP @@ -3742,7 +3746,7 @@ SUBROUTINE PACK_PARTICLE(NM,OS,LP,LPC_INDEX,RC,IC,LC,UNPACK_IT,COUNT_ONLY) ! Boundary Coordinates IF (LPC%INCLUDE_BOUNDARY_COORD_TYPE) CALL PACK_BOUNDARY_COORD(NM,IC,RC,OS,BC_INDEX,UNPACK_IT,COUNT_ONLY) -IF (LPC%INCLUDE_BOUNDARY_ONE_D_TYPE) CALL PACK_BOUNDARY_ONE_D(NM,IC,RC,LC,OS,OD_INDEX,UNPACK_IT,COUNT_ONLY) +IF (LPC%INCLUDE_BOUNDARY_ONE_D_TYPE) CALL PACK_BOUNDARY_ONE_D(NM,IC,RC,LC,OS,OD_INDEX,UNPACK_IT,COUNT_ONLY,CHECK_BOUNDS) IF (LPC%INCLUDE_BOUNDARY_PROP1_TYPE) CALL PACK_BOUNDARY_PROP1(NM,IC,RC,LC,OS,B1_INDEX,UNPACK_IT,COUNT_ONLY,LPC%SURF_INDEX) IF (LPC%INCLUDE_BOUNDARY_PROP2_TYPE) CALL PACK_BOUNDARY_PROP2(NM,IC,RC,OS,B2_INDEX,UNPACK_IT,COUNT_ONLY) IF (LPC%INCLUDE_BOUNDARY_RADIA_TYPE) CALL PACK_BOUNDARY_RADIA(NM,RC,OS,BR_INDEX,UNPACK_IT,COUNT_ONLY) @@ -3760,15 +3764,15 @@ END SUBROUTINE PACK_PARTICLE !> \param LC Counter of logical variables !> \param UNPACK_IT Logical indicating whether the data is to be packed or unpacked !> \param COUNT_ONLY Logical indicating whether the aim is simply to count variables +!> \param CHECK_BOUNDS Logical indicating whether to check the array bounds of the items being unpacked -SUBROUTINE PACK_WALL(NM,OS,WC,SURF_INDEX,RC,IC,LC,UNPACK_IT,COUNT_ONLY) +SUBROUTINE PACK_WALL(NM,OS,WC,SURF_INDEX,RC,IC,LC,UNPACK_IT,COUNT_ONLY,CHECK_BOUNDS) USE COMP_OPERATORS, ONLY: EQUATE INTEGER, INTENT(IN) :: NM,SURF_INDEX -LOGICAL, INTENT(IN) :: UNPACK_IT +LOGICAL, INTENT(IN) :: UNPACK_IT,COUNT_ONLY,CHECK_BOUNDS INTEGER, INTENT(INOUT) :: IC,RC,LC INTEGER :: BC_INDEX,OD_INDEX,B1_INDEX,B2_INDEX,BR_INDEX -LOGICAL, INTENT(IN) :: COUNT_ONLY TYPE(WALL_TYPE), POINTER :: WC TYPE(STORAGE_TYPE), POINTER :: OS TYPE(SURFACE_TYPE), POINTER :: SF @@ -3803,7 +3807,7 @@ SUBROUTINE PACK_WALL(NM,OS,WC,SURF_INDEX,RC,IC,LC,UNPACK_IT,COUNT_ONLY) ! Pack or unpack the appropriate derived type variables tied to this wall cell IF (SF%INCLUDE_BOUNDARY_COORD_TYPE) CALL PACK_BOUNDARY_COORD(NM,IC,RC,OS,BC_INDEX,UNPACK_IT,COUNT_ONLY) -IF (SF%INCLUDE_BOUNDARY_ONE_D_TYPE) CALL PACK_BOUNDARY_ONE_D(NM,IC,RC,LC,OS,OD_INDEX,UNPACK_IT,COUNT_ONLY) +IF (SF%INCLUDE_BOUNDARY_ONE_D_TYPE) CALL PACK_BOUNDARY_ONE_D(NM,IC,RC,LC,OS,OD_INDEX,UNPACK_IT,COUNT_ONLY,CHECK_BOUNDS) IF (SF%INCLUDE_BOUNDARY_PROP1_TYPE) CALL PACK_BOUNDARY_PROP1(NM,IC,RC,LC,OS,B1_INDEX,UNPACK_IT,COUNT_ONLY,SURF_INDEX) IF (SF%INCLUDE_BOUNDARY_PROP2_TYPE) CALL PACK_BOUNDARY_PROP2(NM,IC,RC,OS,B2_INDEX,UNPACK_IT,COUNT_ONLY) IF (SF%INCLUDE_BOUNDARY_RADIA_TYPE) CALL PACK_BOUNDARY_RADIA(NM,RC,OS,BR_INDEX,UNPACK_IT,COUNT_ONLY) @@ -3821,15 +3825,15 @@ END SUBROUTINE PACK_WALL !> \param LC Counter of logical variables !> \param UNPACK_IT Logical indicating whether the data is to be packed or unpacked !> \param COUNT_ONLY Logical indicating whether the aim is simply to count variables +!> \param CHECK_BOUNDS Logical indicating whether to check the array bounds of the items being unpacked -SUBROUTINE PACK_THIN_WALL(NM,OS,TW,SURF_INDEX,RC,IC,LC,UNPACK_IT,COUNT_ONLY) +SUBROUTINE PACK_THIN_WALL(NM,OS,TW,SURF_INDEX,RC,IC,LC,UNPACK_IT,COUNT_ONLY,CHECK_BOUNDS) USE COMP_OPERATORS, ONLY: EQUATE INTEGER, INTENT(IN) :: NM,SURF_INDEX -LOGICAL, INTENT(IN) :: UNPACK_IT +LOGICAL, INTENT(IN) :: UNPACK_IT,COUNT_ONLY,CHECK_BOUNDS INTEGER :: BC_INDEX,OD_INDEX INTEGER, INTENT(INOUT) :: RC,IC,LC -LOGICAL, INTENT(IN) :: COUNT_ONLY TYPE(THIN_WALL_TYPE), POINTER :: TW TYPE(STORAGE_TYPE), POINTER :: OS TYPE(SURFACE_TYPE), POINTER :: SF @@ -3858,7 +3862,7 @@ SUBROUTINE PACK_THIN_WALL(NM,OS,TW,SURF_INDEX,RC,IC,LC,UNPACK_IT,COUNT_ONLY) ! Pack or unpack the appropriate derived type variables tied to this wall cell IF (SF%INCLUDE_BOUNDARY_COORD_TYPE) CALL PACK_BOUNDARY_COORD(NM,IC,RC,OS,BC_INDEX,UNPACK_IT,COUNT_ONLY) -IF (SF%INCLUDE_BOUNDARY_ONE_D_TYPE) CALL PACK_BOUNDARY_ONE_D(NM,IC,RC,LC,OS,OD_INDEX,UNPACK_IT,COUNT_ONLY) +IF (SF%INCLUDE_BOUNDARY_ONE_D_TYPE) CALL PACK_BOUNDARY_ONE_D(NM,IC,RC,LC,OS,OD_INDEX,UNPACK_IT,COUNT_ONLY,CHECK_BOUNDS) END SUBROUTINE PACK_THIN_WALL @@ -3873,12 +3877,13 @@ END SUBROUTINE PACK_THIN_WALL !> \param LC Counter of logical variables !> \param UNPACK_IT Logical indicating whether the data is to be packed or unpacked !> \param COUNT_ONLY Logical indicating whether the aim is simply to count variables +!> \param CHECK_BOUNDS Logical indicating whether to check the array bounds of the items being unpacked -SUBROUTINE PACK_CFACE(NM,OS,CFA,SURF_INDEX,RC,IC,LC,UNPACK_IT,COUNT_ONLY) +SUBROUTINE PACK_CFACE(NM,OS,CFA,SURF_INDEX,RC,IC,LC,UNPACK_IT,COUNT_ONLY,CHECK_BOUNDS) USE COMP_OPERATORS, ONLY: EQUATE INTEGER, INTENT(IN) :: NM,SURF_INDEX -LOGICAL, INTENT(IN) :: UNPACK_IT,COUNT_ONLY +LOGICAL, INTENT(IN) :: UNPACK_IT,COUNT_ONLY,CHECK_BOUNDS INTEGER, INTENT(INOUT) :: RC,IC,LC INTEGER :: BC_INDEX,OD_INDEX,B1_INDEX,B2_INDEX,BR_INDEX TYPE(CFACE_TYPE), POINTER :: CFA @@ -3915,7 +3920,7 @@ SUBROUTINE PACK_CFACE(NM,OS,CFA,SURF_INDEX,RC,IC,LC,UNPACK_IT,COUNT_ONLY) ! Assign and initialize logicals IF (SF%INCLUDE_BOUNDARY_COORD_TYPE) CALL PACK_BOUNDARY_COORD(NM,IC,RC,OS,BC_INDEX,UNPACK_IT,COUNT_ONLY) -IF (SF%INCLUDE_BOUNDARY_ONE_D_TYPE) CALL PACK_BOUNDARY_ONE_D(NM,IC,RC,LC,OS,OD_INDEX,UNPACK_IT,COUNT_ONLY) +IF (SF%INCLUDE_BOUNDARY_ONE_D_TYPE) CALL PACK_BOUNDARY_ONE_D(NM,IC,RC,LC,OS,OD_INDEX,UNPACK_IT,COUNT_ONLY,CHECK_BOUNDS) IF (SF%INCLUDE_BOUNDARY_PROP1_TYPE) CALL PACK_BOUNDARY_PROP1(NM,IC,RC,LC,OS,B1_INDEX,UNPACK_IT,COUNT_ONLY,SURF_INDEX) IF (SF%INCLUDE_BOUNDARY_PROP2_TYPE) CALL PACK_BOUNDARY_PROP2(NM,IC,RC,OS,B2_INDEX,UNPACK_IT,COUNT_ONLY) IF (SF%INCLUDE_BOUNDARY_RADIA_TYPE) CALL PACK_BOUNDARY_RADIA(NM,RC,OS,BR_INDEX,UNPACK_IT,COUNT_ONLY) @@ -3976,14 +3981,14 @@ END SUBROUTINE PACK_BOUNDARY_COORD !> \param OD_INDEX Index of the BOUNDARY_ONE_D array !> \param UNPACK_IT Flag indicating whether the data is to be packed into the 1-D array or unpacked from it !> \param COUNT_ONLY Flag signifying that only a variable count is to be done; no packing +!> \param CHECK_BOUNDS Logical indicating whether to check the array bounds of the items being unpacked -SUBROUTINE PACK_BOUNDARY_ONE_D(NM,IC,RC,LC,OS,OD_INDEX,UNPACK_IT,COUNT_ONLY) +SUBROUTINE PACK_BOUNDARY_ONE_D(NM,IC,RC,LC,OS,OD_INDEX,UNPACK_IT,COUNT_ONLY,CHECK_BOUNDS) -USE GLOBAL_CONSTANTS, ONLY: CHECK_BOUNDARY_ONE_D_ARRAYS USE COMP_OPERATORS, ONLY: EQUATE INTEGER, INTENT(IN) :: NM,OD_INDEX INTEGER, INTENT(INOUT) :: IC,RC,LC -LOGICAL, INTENT(IN) :: UNPACK_IT,COUNT_ONLY +LOGICAL, INTENT(IN) :: UNPACK_IT,COUNT_ONLY,CHECK_BOUNDS INTEGER :: I1,NN,NL TYPE(BOUNDARY_ONE_D_TYPE), POINTER :: ONE_D TYPE(STORAGE_TYPE), POINTER :: OS @@ -4006,7 +4011,7 @@ SUBROUTINE PACK_BOUNDARY_ONE_D(NM,IC,RC,LC,OS,OD_INDEX,UNPACK_IT,COUNT_ONLY) ! Check if the array bounds are appropriate -IF (UNPACK_IT .AND. CHECK_BOUNDARY_ONE_D_ARRAYS) CALL REALLOCATE_BOUNDARY_ONE_D(ONE_D) +IF (UNPACK_IT .AND. CHECK_BOUNDS) CALL REALLOCATE_BOUNDARY_ONE_D(ONE_D) DO NL=1,ONE_D%N_LAYERS IC=IC+1 ; IF (.NOT.COUNT_ONLY) CALL EQUATE(OS%INTEGERS(IC) , ONE_D%N_LAYER_CELLS(NL) , UNPACK_IT) diff --git a/Source/init.f90 b/Source/init.f90 index abc2ab6324c..0bf68250c7b 100644 --- a/Source/init.f90 +++ b/Source/init.f90 @@ -1847,10 +1847,12 @@ SUBROUTINE REALLOCATE_ONE_D_ARRAYS(NM,WALL_CELL,THIN_WALL_CELL) IF (PRESENT(WALL_CELL)) THEN WC%N_REALS=0 ; WC%N_INTEGERS=0 ; WC%N_LOGICALS=0 - CALL PACK_WALL(NM,OS_DUMMY,WC,WC%SURF_INDEX,WC%N_REALS,WC%N_INTEGERS,WC%N_LOGICALS,UNPACK_IT=.FALSE.,COUNT_ONLY=.TRUE.) + CALL PACK_WALL(NM,OS_DUMMY,WC,WC%SURF_INDEX,WC%N_REALS,WC%N_INTEGERS,WC%N_LOGICALS,UNPACK_IT=.FALSE.,COUNT_ONLY=.TRUE.,& + CHECK_BOUNDS=.FALSE.) ELSEIF (PRESENT(THIN_WALL_CELL)) THEN TW%N_INTEGERS=0 ; TW%N_REALS=0 - CALL PACK_THIN_WALL(NM,OS_DUMMY,TW,TW%SURF_INDEX,TW%N_REALS,TW%N_INTEGERS,TW%N_LOGICALS,UNPACK_IT=.FALSE.,COUNT_ONLY=.TRUE.) + CALL PACK_THIN_WALL(NM,OS_DUMMY,TW,TW%SURF_INDEX,TW%N_REALS,TW%N_INTEGERS,TW%N_LOGICALS,UNPACK_IT=.FALSE.,COUNT_ONLY=.TRUE.,& + CHECK_BOUNDS=.FALSE.) ENDIF END SUBROUTINE REALLOCATE_ONE_D_ARRAYS diff --git a/Source/main.f90 b/Source/main.f90 index 61efe97566d..9ab2cc4f03d 100644 --- a/Source/main.f90 +++ b/Source/main.f90 @@ -2019,7 +2019,8 @@ SUBROUTINE INITIALIZE_MESH_EXCHANGE_1(NM) LP => M%LAGRANGIAN_PARTICLE(1) OS => LPC%PARTICLE_STORAGE LPC%N_REALS=0 ; LPC%N_INTEGERS=0 ; LPC%N_LOGICALS=0 - CALL PACK_PARTICLE(NM,OS,LP,ILC,LPC%N_REALS,LPC%N_INTEGERS,LPC%N_LOGICALS,UNPACK_IT=.FALSE.,COUNT_ONLY=.TRUE.) + CALL PACK_PARTICLE(NM,OS,LP,ILC,LPC%N_REALS,LPC%N_INTEGERS,LPC%N_LOGICALS,& + UNPACK_IT=.FALSE.,COUNT_ONLY=.TRUE.,CHECK_BOUNDS=.FALSE.) IF (.NOT.ALLOCATED(LPC%PARTICLE_STORAGE%REALS)) ALLOCATE(LPC%PARTICLE_STORAGE%REALS(LPC%N_REALS)) IF (.NOT.ALLOCATED(LPC%PARTICLE_STORAGE%INTEGERS)) ALLOCATE(LPC%PARTICLE_STORAGE%INTEGERS(LPC%N_INTEGERS)) IF (.NOT.ALLOCATED(LPC%PARTICLE_STORAGE%LOGICALS)) ALLOCATE(LPC%PARTICLE_STORAGE%LOGICALS(LPC%N_LOGICALS)) @@ -2257,9 +2258,7 @@ SUBROUTINE INITIALIZE_BACK_WALL_EXCHANGE ! Exchange WALL and THIN_WALL cells -CHECK_BOUNDARY_ONE_D_ARRAYS = .TRUE. CALL MESH_EXCHANGE(6) -CHECK_BOUNDARY_ONE_D_ARRAYS = .FALSE. ! Initialize 3-D solid interpolation arrays @@ -3125,7 +3124,7 @@ SUBROUTINE MESH_EXCHANGE(CODE) DO I=1,OS%N_ITEMS IW = OS%ITEM_INDEX(I) WC => M%WALL(IW) - CALL PACK_WALL(NM,OS,WC,OS%SURF_INDEX(I),RC,IC,LC,UNPACK_IT=.FALSE.,COUNT_ONLY=.FALSE.) + CALL PACK_WALL(NM,OS,WC,OS%SURF_INDEX(I),RC,IC,LC,UNPACK_IT=.FALSE.,COUNT_ONLY=.FALSE.,CHECK_BOUNDS=.FALSE.) ENDDO ENDIF @@ -3135,7 +3134,7 @@ SUBROUTINE MESH_EXCHANGE(CODE) DO I=1,OS%N_ITEMS IW = OS%ITEM_INDEX(I) TW => M%THIN_WALL(IW) - CALL PACK_THIN_WALL(NM,OS,TW,OS%SURF_INDEX(I),RC,IC,LC,UNPACK_IT=.FALSE.,COUNT_ONLY=.FALSE.) + CALL PACK_THIN_WALL(NM,OS,TW,OS%SURF_INDEX(I),RC,IC,LC,UNPACK_IT=.FALSE.,COUNT_ONLY=.FALSE.,CHECK_BOUNDS=.FALSE.) ENDDO ENDIF @@ -3444,7 +3443,8 @@ SUBROUTINE MESH_EXCHANGE(CODE) DO I=1,OS%N_ITEMS IW = OS%ITEM_INDEX(I) WC => MESHES(NOM)%WALL(IW) - CALL PACK_WALL(NOM,OS,WC,OS%SURF_INDEX(I),RC,IC,LC,UNPACK_IT=.TRUE.,COUNT_ONLY=.FALSE.) + CALL PACK_WALL(NOM,OS,WC,OS%SURF_INDEX(I),RC,IC,LC,UNPACK_IT=.TRUE.,COUNT_ONLY=.FALSE.,& + CHECK_BOUNDS=INITIALIZATION_PHASE) ENDDO ENDIF RECEIVE_BACK_WALL @@ -3454,7 +3454,8 @@ SUBROUTINE MESH_EXCHANGE(CODE) DO I=1,OS%N_ITEMS IW = OS%ITEM_INDEX(I) TW => MESHES(NOM)%THIN_WALL(IW) - CALL PACK_THIN_WALL(NOM,OS,TW,OS%SURF_INDEX(I),RC,IC,LC,UNPACK_IT=.TRUE.,COUNT_ONLY=.FALSE.) + CALL PACK_THIN_WALL(NOM,OS,TW,OS%SURF_INDEX(I),RC,IC,LC,UNPACK_IT=.TRUE.,COUNT_ONLY=.FALSE.,& + CHECK_BOUNDS=INITIALIZATION_PHASE) ENDDO ENDIF RECEIVE_BACK_THIN_WALL @@ -3483,7 +3484,7 @@ SUBROUTINE MESH_EXCHANGE(CODE) IPC = OS%INTEGERS(IC+2) CALL ALLOCATE_STORAGE(NM,LP_INDEX=IP,LPC_INDEX=IPC,SURF_INDEX=LAGRANGIAN_PARTICLE_CLASS(IPC)%SURF_INDEX) LP => M%LAGRANGIAN_PARTICLE(IP) - CALL PACK_PARTICLE(NM,OS,LP,IPC,RC,IC,LC,UNPACK_IT=.TRUE.,COUNT_ONLY=.FALSE.) + CALL PACK_PARTICLE(NM,OS,LP,IPC,RC,IC,LC,UNPACK_IT=.TRUE.,COUNT_ONLY=.FALSE.,CHECK_BOUNDS=.FALSE.) LP%WALL_INDEX = 0 ! If the droplet was stuck to a wall, unstick it when it arrives in the new mesh IF(LP%CFACE_INDEX/=EXTERNAL_CFACE) LP%CFACE_INDEX = 0 BC=>M%BOUNDARY_COORD(LP%BC_INDEX) diff --git a/Source/part.f90 b/Source/part.f90 index a4273cd71c1..bd885e75a73 100644 --- a/Source/part.f90 +++ b/Source/part.f90 @@ -4746,7 +4746,8 @@ SUBROUTINE ADD_TO_PARTICLE_SEND_BUFFER OS%N_ITEMS = OS%N_ITEMS + 1 - CALL PACK_PARTICLE(NM,OS,LP,LP%CLASS_INDEX,OS%N_REALS,OS%N_INTEGERS,OS%N_LOGICALS,UNPACK_IT=.FALSE.,COUNT_ONLY=.FALSE.) + CALL PACK_PARTICLE(NM,OS,LP,LP%CLASS_INDEX,OS%N_REALS,OS%N_INTEGERS,OS%N_LOGICALS,UNPACK_IT=.FALSE.,COUNT_ONLY=.FALSE.,& + CHECK_BOUNDS=.FALSE.) ENDIF