@@ -1789,7 +1789,7 @@ SUBROUTINE INITIALIZE_HT3D_WALL_CELLS(NM)
17891789USE GEOMETRY_FUNCTIONS, ONLY: SEARCH_OTHER_MESHES
17901790INTEGER , INTENT (IN ) :: NM
17911791INTEGER :: I,IW,IW2,ITW,ITW2,NWP,NWP2,I2,IWA,DM,IOR,NOM,II,JJ,KK,NN,IC,NL
1792- LOGICAL :: IOR_AVOID(- 3 :3 )
1792+ LOGICAL :: IOR_AVOID(- 3 :3 ),FOUND
17931793REAL (EB) :: X1,X2,Y1,Y2,Z1,Z2,XX1,XX2,YY1,YY2,ZZ1,ZZ2,PRIMARY_VOLUME,OVERLAP_VOLUME,DXX,DYY,DZZ,WEIGHT_FACTOR,&
17941794 SUM_WGT(3 ),XX,YY,ZZ,WEIGHT,TARGET_WEIGHT
17951795TYPE (WALL_TYPE), POINTER :: WC
@@ -1799,6 +1799,7 @@ SUBROUTINE INITIALIZE_HT3D_WALL_CELLS(NM)
17991799TYPE (BOUNDARY_THR_D_TYPE), POINTER :: THR_D
18001800TYPE (BOUNDARY_COORD_TYPE), POINTER :: BC,BC2
18011801TYPE (MESH_TYPE), POINTER :: M
1802+ TYPE (STORAGE_TYPE), POINTER :: OS
18021803INTEGER , ALLOCATABLE , DIMENSION (:) :: INTEGER_DUMMY
18031804REAL (EB), ALLOCATABLE , DIMENSION (:) :: REAL_DUMMY
18041805REAL (EB), PARAMETER :: TOL= 0.0001_EB
@@ -1894,13 +1895,17 @@ SUBROUTINE INITIALIZE_HT3D_WALL_CELLS(NM)
18941895
18951896 OTHER_MESH_LOOP: DO NOM= 1 ,NMESHES
18961897 IF (NM== NOM) CYCLE
1897- ALTERNATE_WALL_LOOP_2: DO NN= 1 ,M% OMESH(NOM)% WALL_RECV_BUFFER% N_ITEMS
1898- IW2 = M% OMESH(NOM)% WALL_RECV_BUFFER% ITEM_INDEX(NN)
1898+ OS = > M% OMESH(NOM)% WALL_RECV_BUFFER
1899+ ALTERNATE_WALL_LOOP_2: DO NN= 1 ,OS% N_ITEMS
1900+ IW2 = OS% ITEM_INDEX(NN)
18991901 CALL SEARCH_FOR_ALTERNATE_WALL_CELLS(NOM,WALL_INDEX= IW2)
1902+ IF (FOUND) OS% SAVE_FLAG(NN) = .TRUE.
19001903 ENDDO ALTERNATE_WALL_LOOP_2
1901- ALTERNATE_WALL_LOOP_2D: DO NN= 1 ,M% OMESH(NOM)% THIN_WALL_RECV_BUFFER% N_ITEMS ! THIN_WALL cells, neighboring meshes
1902- ITW2 = M% OMESH(NOM)% THIN_WALL_RECV_BUFFER% ITEM_INDEX(NN)
1904+ OS = > M% OMESH(NOM)% THIN_WALL_RECV_BUFFER
1905+ ALTERNATE_WALL_LOOP_2D: DO NN= 1 ,OS% N_ITEMS ! THIN_WALL cells, neighboring meshes
1906+ ITW2 = OS% ITEM_INDEX(NN)
19031907 CALL SEARCH_FOR_ALTERNATE_WALL_CELLS(NOM,THIN_WALL_INDEX= ITW2)
1908+ IF (FOUND) OS% SAVE_FLAG(NN) = .TRUE.
19041909 ENDDO ALTERNATE_WALL_LOOP_2D
19051910 ENDDO OTHER_MESH_LOOP
19061911
@@ -1999,13 +2004,17 @@ SUBROUTINE INITIALIZE_HT3D_WALL_CELLS(NM)
19992004
20002005 OTHER_MESH_LOOP_B: DO NOM= 1 ,NMESHES
20012006 IF (NM== NOM) CYCLE
2002- ALTERNATE_WALL_LOOP_2B: DO NN= 1 ,M% OMESH(NOM)% WALL_RECV_BUFFER% N_ITEMS ! WALL cells, neighboring meshes
2003- IW2 = M% OMESH(NOM)% WALL_RECV_BUFFER% ITEM_INDEX(NN)
2007+ OS = > M% OMESH(NOM)% WALL_RECV_BUFFER
2008+ ALTERNATE_WALL_LOOP_2B: DO NN= 1 ,OS% N_ITEMS ! WALL cells, neighboring meshes
2009+ IW2 = OS% ITEM_INDEX(NN)
20042010 CALL SEARCH_FOR_ALTERNATE_WALL_CELLS(NOM,WALL_INDEX= IW2)
2011+ IF (FOUND) OS% SAVE_FLAG(NN) = .TRUE.
20052012 ENDDO ALTERNATE_WALL_LOOP_2B
2006- ALTERNATE_WALL_LOOP_2C: DO NN= 1 ,M% OMESH(NOM)% THIN_WALL_RECV_BUFFER% N_ITEMS ! THIN_WALL cells, neighboring meshes
2007- ITW2 = M% OMESH(NOM)% THIN_WALL_RECV_BUFFER% ITEM_INDEX(NN)
2013+ OS = > M% OMESH(NOM)% THIN_WALL_RECV_BUFFER
2014+ ALTERNATE_WALL_LOOP_2C: DO NN= 1 ,OS% N_ITEMS ! THIN_WALL cells, neighboring meshes
2015+ ITW2 = OS% ITEM_INDEX(NN)
20082016 CALL SEARCH_FOR_ALTERNATE_WALL_CELLS(NOM,THIN_WALL_INDEX= ITW2)
2017+ IF (FOUND) OS% SAVE_FLAG(NN) = .TRUE.
20092018 ENDDO ALTERNATE_WALL_LOOP_2C
20102019 ENDDO OTHER_MESH_LOOP_B
20112020
@@ -2069,6 +2078,7 @@ SUBROUTINE SEARCH_FOR_ALTERNATE_WALL_CELLS(NOM,WALL_INDEX,THIN_WALL_INDEX)
20692078TYPE (THIN_WALL_TYPE), POINTER :: TW2
20702079
20712080M2 = > MESHES(NOM)
2081+ FOUND = .FALSE.
20722082
20732083IF (PRESENT (WALL_INDEX)) THEN
20742084 CELL = WALL_INDEX
@@ -2116,6 +2126,7 @@ SUBROUTINE SEARCH_FOR_ALTERNATE_WALL_CELLS(NOM,WALL_INDEX,THIN_WALL_INDEX)
21162126 OVERLAP_VOLUME = DXX* DYY* DZZ
21172127 WEIGHT_FACTOR = OVERLAP_VOLUME/ PRIMARY_VOLUME
21182128 IF (WEIGHT_FACTOR< TOL) CYCLE ALTERNATE_NODE_LOOP
2129+ FOUND = .TRUE. ! Save the index of the alternate wall
21192130 DM = SIZE (THR_D% NODE(I)% ALTERNATE_WALL_INDEX)
21202131 IF (THR_D% NODE(I)% ALTERNATE_WALL_COUNT+1 > DM) CALL REALLOCATE_ALTERNATE
21212132 THR_D% NODE(I)% ALTERNATE_WALL_COUNT = THR_D% NODE(I)% ALTERNATE_WALL_COUNT + 1
@@ -3713,7 +3724,7 @@ END SUBROUTINE SET_DENSITY_AND_MASS_FRACTIONS_AT_WALL
37133724
37143725SUBROUTINE FIND_WALL_BACK_INDICES (NM )
37153726
3716- USE MEMORY_FUNCTIONS, ONLY: REALLOCATE_INTEGER_ARRAY
3727+ USE MEMORY_FUNCTIONS, ONLY: REALLOCATE_INTEGER_ARRAY,REALLOCATE_LOGICAL_ARRAY
37173728INTEGER , INTENT (IN ) :: NM
37183729INTEGER :: IW,ITW,N,NOM,IC,IOR,IEC
37193730TYPE (MESH_TYPE), POINTER :: M,M4
@@ -3745,16 +3756,19 @@ SUBROUTINE FIND_WALL_BACK_INDICES(NM)
37453756 OS% N_ITEMS_DIM = 50
37463757 ALLOCATE (OS% ITEM_INDEX(1 :OS% N_ITEMS_DIM))
37473758 ALLOCATE (OS% SURF_INDEX(1 :OS% N_ITEMS_DIM))
3759+ ALLOCATE (OS% SAVE_FLAG(1 :OS% N_ITEMS_DIM))
37483760 ENDIF
37493761 IF (COUNT (OS% ITEM_INDEX(1 :OS% N_ITEMS)==M4% CELL(IC)% WALL_INDEX(IOR))>0 ) CYCLE
37503762 IF (OS% N_ITEMS>= OS% N_ITEMS_DIM) THEN
37513763 CALL REALLOCATE_INTEGER_ARRAY(OS% ITEM_INDEX,1 ,OS% N_ITEMS_DIM,OS% N_ITEMS_DIM+50 )
37523764 CALL REALLOCATE_INTEGER_ARRAY(OS% SURF_INDEX,1 ,OS% N_ITEMS_DIM,OS% N_ITEMS_DIM+50 )
3765+ CALL REALLOCATE_LOGICAL_ARRAY(OS% SAVE_FLAG ,1 ,OS% N_ITEMS_DIM,OS% N_ITEMS_DIM+50 )
37533766 OS% N_ITEMS_DIM = OS% N_ITEMS_DIM + 50
37543767 ENDIF
37553768 OS% N_ITEMS = OS% N_ITEMS + 1
37563769 OS% ITEM_INDEX(OS% N_ITEMS) = M4% CELL(IC)% WALL_INDEX(IOR)
37573770 OS% SURF_INDEX(OS% N_ITEMS) = M4% CELL(IC)% SURF_INDEX(IOR)
3771+ OS% SAVE_FLAG(OS% N_ITEMS) = .FALSE.
37583772 ENDDO
37593773 ENDDO
37603774ENDDO
@@ -3783,11 +3797,13 @@ SUBROUTINE FIND_WALL_BACK_INDICES(NM)
37833797 IF (OS% N_ITEMS>= OS% N_ITEMS_DIM) THEN
37843798 CALL REALLOCATE_INTEGER_ARRAY(OS% ITEM_INDEX,1 ,OS% N_ITEMS_DIM,OS% N_ITEMS_DIM+50 )
37853799 CALL REALLOCATE_INTEGER_ARRAY(OS% SURF_INDEX,1 ,OS% N_ITEMS_DIM,OS% N_ITEMS_DIM+50 )
3800+ CALL REALLOCATE_LOGICAL_ARRAY(OS% SAVE_FLAG ,1 ,OS% N_ITEMS_DIM,OS% N_ITEMS_DIM+50 )
37863801 OS% N_ITEMS_DIM = OS% N_ITEMS_DIM + 50
37873802 ENDIF
37883803 OS% N_ITEMS = OS% N_ITEMS + 1
37893804 OS% ITEM_INDEX(OS% N_ITEMS) = M4% CELL(IC)% THIN_WALL_INDEX(IOR,IEC)
37903805 OS% SURF_INDEX(OS% N_ITEMS) = M4% CELL(IC)% THIN_SURF_INDEX(IOR,IEC)
3806+ OS% SAVE_FLAG(OS% N_ITEMS) = .FALSE.
37913807 ENDIF
37923808 ENDDO
37933809 ENDDO
@@ -3805,7 +3821,7 @@ END SUBROUTINE FIND_WALL_BACK_INDICES
38053821SUBROUTINE FIND_WALL_BACK_INDEX (NM ,IW )
38063822
38073823USE GEOMETRY_FUNCTIONS, ONLY: SEARCH_OTHER_MESHES
3808- USE MEMORY_FUNCTIONS, ONLY: REALLOCATE_INTEGER_ARRAY
3824+ USE MEMORY_FUNCTIONS, ONLY: REALLOCATE_INTEGER_ARRAY,REALLOCATE_LOGICAL_ARRAY
38093825USE MISC_FUNCTIONS, ONLY: PROCESS_MESH_NEIGHBORHOOD
38103826USE COMP_FUNCTIONS, ONLY: SHUTDOWN
38113827INTEGER , INTENT (IN ) :: NM,IW
@@ -4027,16 +4043,19 @@ SUBROUTINE FIND_WALL_BACK_INDEX(NM,IW)
40274043 OS% N_ITEMS_DIM = 50
40284044 ALLOCATE (OS% ITEM_INDEX(1 :OS% N_ITEMS_DIM))
40294045 ALLOCATE (OS% SURF_INDEX(1 :OS% N_ITEMS_DIM))
4046+ ALLOCATE (OS% SAVE_FLAG(1 :OS% N_ITEMS_DIM))
40304047 ENDIF
40314048 IF (COUNT (OS% ITEM_INDEX(1 :OS% N_ITEMS)==ONE_D% BACK_INDEX)==0 ) THEN
40324049 IF (OS% N_ITEMS>= OS% N_ITEMS_DIM) THEN
40334050 CALL REALLOCATE_INTEGER_ARRAY(OS% ITEM_INDEX,1 ,OS% N_ITEMS_DIM,OS% N_ITEMS_DIM+50 )
40344051 CALL REALLOCATE_INTEGER_ARRAY(OS% SURF_INDEX,1 ,OS% N_ITEMS_DIM,OS% N_ITEMS_DIM+50 )
4052+ CALL REALLOCATE_LOGICAL_ARRAY(OS% SAVE_FLAG ,1 ,OS% N_ITEMS_DIM,OS% N_ITEMS_DIM+50 )
40354053 OS% N_ITEMS_DIM = OS% N_ITEMS_DIM + 50
40364054 ENDIF
40374055 OS% N_ITEMS = OS% N_ITEMS + 1
40384056 OS% ITEM_INDEX(OS% N_ITEMS) = ONE_D% BACK_INDEX
40394057 OS% SURF_INDEX(OS% N_ITEMS) = ONE_D% BACK_SURF
4058+ OS% SAVE_FLAG(OS% N_ITEMS) = .TRUE.
40404059 ENDIF
40414060 ENDIF
40424061 EXIT FIND_BACK_WALL_CELL
@@ -4215,7 +4234,7 @@ END SUBROUTINE FIND_WALL_BACK_INDEX
42154234SUBROUTINE FIND_THIN_WALL_BACK_INDEX (NM ,ITW )
42164235
42174236USE GEOMETRY_FUNCTIONS, ONLY: SEARCH_OTHER_MESHES
4218- USE MEMORY_FUNCTIONS, ONLY: REALLOCATE_INTEGER_ARRAY
4237+ USE MEMORY_FUNCTIONS, ONLY: REALLOCATE_INTEGER_ARRAY,REALLOCATE_LOGICAL_ARRAY
42194238INTEGER , INTENT (IN ) :: NM,ITW
42204239INTEGER :: II,JJ,KK,IC,IOR,IEC,ITW2,NOM,NN,NNN,NL,N_MATLS,IIGM,IIGP,JJGM,JJGP,KKGM,KKGP,ICM,ICP
42214240INTEGER , DIMENSION (MAX_MATERIALS) :: MATL_INDEX
@@ -4334,16 +4353,19 @@ SUBROUTINE FIND_THIN_WALL_BACK_INDEX(NM,ITW)
43344353 OS% N_ITEMS_DIM = 50
43354354 ALLOCATE (OS% ITEM_INDEX(1 :OS% N_ITEMS_DIM))
43364355 ALLOCATE (OS% SURF_INDEX(1 :OS% N_ITEMS_DIM))
4356+ ALLOCATE (OS% SAVE_FLAG(1 :OS% N_ITEMS_DIM))
43374357 ENDIF
43384358 IF (COUNT (OS% ITEM_INDEX(1 :OS% N_ITEMS)==ONE_D% BACK_INDEX)==0 ) THEN
43394359 IF (OS% N_ITEMS>= OS% N_ITEMS_DIM) THEN
43404360 CALL REALLOCATE_INTEGER_ARRAY(OS% ITEM_INDEX,1 ,OS% N_ITEMS_DIM,OS% N_ITEMS_DIM+50 )
43414361 CALL REALLOCATE_INTEGER_ARRAY(OS% SURF_INDEX,1 ,OS% N_ITEMS_DIM,OS% N_ITEMS_DIM+50 )
4362+ CALL REALLOCATE_LOGICAL_ARRAY(OS% SAVE_FLAG ,1 ,OS% N_ITEMS_DIM,OS% N_ITEMS_DIM+50 )
43424363 OS% N_ITEMS_DIM = OS% N_ITEMS_DIM + 50
43434364 ENDIF
43444365 OS% N_ITEMS = OS% N_ITEMS + 1
43454366 OS% ITEM_INDEX(OS% N_ITEMS) = ONE_D% BACK_INDEX
43464367 OS% SURF_INDEX(OS% N_ITEMS) = ONE_D% BACK_SURF
4368+ OS% SAVE_FLAG(OS% N_ITEMS) = .TRUE.
43474369 ENDIF
43484370 SELECT CASE (ABS (IOR))
43494371 CASE (1 ) ; ONE_D% LAYER_THICKNESS(1 ) = OB% UNDIVIDED_INPUT_LENGTH(1 )
0 commit comments