Skip to content

Commit 1141776

Browse files
authored
Merge pull request #15908 from cxp484/FireX
FireX: Merge with firemodels/master
2 parents 3dc8e36 + 1c507d0 commit 1141776

File tree

19 files changed

+1090
-1056
lines changed

19 files changed

+1090
-1056
lines changed

Manuals/FDS_Validation_Guide/Velocity_Chapter.tex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -422,7 +422,7 @@ \section{NIST Pool Fires}
422422

423423
\section{PRISME DOOR Experiments}
424424

425-
Bi-directional probes were placed in the doorway separating the two compartments of the PRISME DOOR experiments. Shown on the plots below are the uppermost and lowest measurement points.
425+
Bi-directional probes were placed in the doorway separating the two compartments of the PRISME DOOR experiments. Figure~\ref{PRISME_Velocity} displays comparisons of the vertical velocity profiles.
426426

427427
\begin{figure}[!ht]
428428
\begin{tabular*}{\textwidth}{l@{\extracolsep{\fill}}r}

Source/ccib.f90

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15097,7 +15097,7 @@ SUBROUTINE CC_COMPUTE_VELOCITY_ERROR(DT,NM)
1509715097
IF (PREDICTOR) THEN
1509815098
UN_NEW = U(I,J,K) - DT*(FVX(I,J,K) + IDX*(H(I+1,J,K)-H(I,J,K)))
1509915099
ELSE
15100-
UN_NEW = 0.5_EB*(U(I,J,K)+US(I,J,K)) - DT*(FVX(I,J,K) + IDX*(HS(I+1,J,K)-HS(I,J,K)))
15100+
UN_NEW = 0.5_EB*( (U(I,J,K)+US(I,J,K)) - DT*(FVX(I,J,K) + IDX*(HS(I+1,J,K)-HS(I,J,K))) )
1510115101
ENDIF
1510215102
CASE(JAXIS)
1510315103
ICC_LO = CCVAR(I,J,K,CC_IDCC); ICC_HI = CCVAR(I,J+1,K,CC_IDCC)
@@ -15107,7 +15107,7 @@ SUBROUTINE CC_COMPUTE_VELOCITY_ERROR(DT,NM)
1510715107
IF (PREDICTOR) THEN
1510815108
UN_NEW = V(I,J,K) - DT*(FVY(I,J,K) + IDX*(H(I,J+1,K)-H(I,J,K)))
1510915109
ELSE
15110-
UN_NEW = 0.5_EB*(V(I,J,K)+VS(I,J,K)) - DT*(FVY(I,J,K) + IDX*(HS(I,J+1,K)-HS(I,J,K)))
15110+
UN_NEW = 0.5_EB*( (V(I,J,K)+VS(I,J,K)) - DT*(FVY(I,J,K) + IDX*(HS(I,J+1,K)-HS(I,J,K))) )
1511115111
ENDIF
1511215112
CASE(KAXIS)
1511315113
ICC_LO = CCVAR(I,J,K,CC_IDCC); ICC_HI = CCVAR(I,J,K+1,CC_IDCC)
@@ -15117,7 +15117,7 @@ SUBROUTINE CC_COMPUTE_VELOCITY_ERROR(DT,NM)
1511715117
IF (PREDICTOR) THEN
1511815118
UN_NEW = W(I,J,K) - DT*(FVZ(I,J,K) + IDX*(H(I,J,K+1)-H(I,J,K)))
1511915119
ELSE
15120-
UN_NEW = 0.5_EB*(W(I,J,K)+WS(I,J,K)) - DT*(FVZ(I,J,K) + IDX*(HS(I,J,K+1)-HS(I,J,K)))
15120+
UN_NEW = 0.5_EB*( (W(I,J,K)+WS(I,J,K)) - DT*(FVZ(I,J,K) + IDX*(HS(I,J,K+1)-HS(I,J,K))) )
1512115121
ENDIF
1512215122
END SELECT
1512315123
ENDIF

Source/dump.f90

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5860,7 +5860,8 @@ END SUBROUTINE GET_GEOMINFO
58605860

58615861
SUBROUTINE GET_GEOMVALS(CC_INTERP2FACES,CC_CELL_CENTERED,SLICETYPE,&
58625862
I1,I2,J1,J2,K1,K2,NFACES,NFACES_CUTCELLS,VALS,&
5863-
IND,IND2,Y_INDEX,Z_INDEX,PART_INDEX,VELO_INDEX,PIPE_INDEX,PROP_INDEX,REAC_INDEX,MATL_INDEX,T,DT,NM)
5863+
IND,IND2,Y_INDEX,Z_INDEX,PART_INDEX,VELO_INDEX,&
5864+
PIPE_INDEX,PROP_INDEX,REAC_INDEX,MATL_INDEX,T,DT,NM,OPT_BNDF_INDEX)
58645865

58655866
USE PHYSICAL_FUNCTIONS, ONLY: GET_MASS_FRACTION
58665867

@@ -5869,6 +5870,7 @@ SUBROUTINE GET_GEOMVALS(CC_INTERP2FACES,CC_CELL_CENTERED,SLICETYPE,&
58695870
REAL(EB), INTENT(IN) :: T,DT
58705871
INTEGER, INTENT(IN) :: I1,I2,J1,J2,K1,K2,NFACES,NFACES_CUTCELLS,&
58715872
IND,IND2,Y_INDEX,Z_INDEX,PART_INDEX,VELO_INDEX,PIPE_INDEX,PROP_INDEX,REAC_INDEX,MATL_INDEX,NM
5873+
INTEGER, OPTIONAL,INTENT(IN) :: OPT_BNDF_INDEX
58725874
CHARACTER(*), INTENT(IN) :: SLICETYPE
58735875
LOGICAL, INTENT(IN) :: CC_INTERP2FACES,CC_CELL_CENTERED
58745876
REAL(FB), INTENT(OUT), DIMENSION(NFACES) :: VALS
@@ -6098,7 +6100,7 @@ SUBROUTINE GET_GEOMVALS(CC_INTERP2FACES,CC_CELL_CENTERED,SLICETYPE,&
60986100
IF (CCVAR(I,J,K,CC_IDCF) > 0) THEN
60996101
ICF = CCVAR(I,J,K,CC_IDCF)
61006102
DO IFACECF=1,CUT_FACE(ICF)%NFACE
6101-
VAL_CF = SOLID_PHASE_OUTPUT(ABS(IND),Y_INDEX,Z_INDEX,PART_INDEX, &
6103+
VAL_CF = SOLID_PHASE_OUTPUT(ABS(IND),Y_INDEX,Z_INDEX,PART_INDEX,OPT_BNDF_INDEX=OPT_BNDF_INDEX, &
61026104
OPT_CFACE_INDEX=CUT_FACE(ICF)%CFACE_INDEX(IFACECF))
61036105
NVF=CUT_FACE(ICF)%CFELEM(1,IFACECF)
61046106
DO IVCF = 1, NVF-2 ! face is convex
@@ -6301,11 +6303,12 @@ END SUBROUTINE DUMP_CFACES_GEOM
63016303
SUBROUTINE DUMP_SLICE_GEOM_DATA(FUNIT_DATA,CC_INTERP2FACES,CC_CELL_CENTERED,SLICETYPE, &
63026304
HEADER,STIME,I1,I2,J1,J2,K1,K2,DEBUG,&
63036305
IND,IND2,Y_INDEX,Z_INDEX,PART_INDEX,VELO_INDEX,PIPE_INDEX,PROP_INDEX,REAC_INDEX,MATL_INDEX,T, &
6304-
DT,NM,SLICE_MIN, SLICE_MAX)
6306+
DT,NM,SLICE_MIN, SLICE_MAX, OPT_BNDF_INDEX)
63056307
REAL(EB), INTENT(IN) :: T,DT
63066308
CHARACTER(*), INTENT(IN) :: SLICETYPE
63076309
INTEGER, INTENT(IN) :: FUNIT_DATA,HEADER,I1,I2,J1,J2,K1,K2,DEBUG, &
63086310
IND,IND2,Y_INDEX,Z_INDEX,PART_INDEX,VELO_INDEX,PIPE_INDEX,PROP_INDEX,REAC_INDEX,MATL_INDEX,NM
6311+
INTEGER, OPTIONAL,INTENT(IN) :: OPT_BNDF_INDEX
63096312
REAL(FB), INTENT(IN):: STIME
63106313
LOGICAL, INTENT(IN) :: CC_INTERP2FACES,CC_CELL_CENTERED
63116314
REAL(FB), INTENT(OUT) :: SLICE_MIN, SLICE_MAX
@@ -6327,7 +6330,8 @@ SUBROUTINE DUMP_SLICE_GEOM_DATA(FUNIT_DATA,CC_INTERP2FACES,CC_CELL_CENTERED,SLIC
63276330
! get values at geometry faces
63286331
CALL GET_GEOMVALS(CC_INTERP2FACES,CC_CELL_CENTERED,SLICETYPE,&
63296332
I1,I2,J1,J2,K1,K2,NFACES,NFACES_CUTCELLS,VALS,&
6330-
IND,IND2,Y_INDEX,Z_INDEX,PART_INDEX,VELO_INDEX,PIPE_INDEX,PROP_INDEX,REAC_INDEX,MATL_INDEX,T,DT,NM)
6333+
IND,IND2,Y_INDEX,Z_INDEX,PART_INDEX,VELO_INDEX,&
6334+
PIPE_INDEX,PROP_INDEX,REAC_INDEX,MATL_INDEX,T,DT,NM,OPT_BNDF_INDEX)
63316335
ELSE
63326336
NVALS = NVERTS
63336337
ALLOCATE(VALS(MAX(NVERTS,NFACES)))
@@ -6341,7 +6345,8 @@ SUBROUTINE DUMP_SLICE_GEOM_DATA(FUNIT_DATA,CC_INTERP2FACES,CC_CELL_CENTERED,SLIC
63416345

63426346
CALL GET_GEOMVALS(CC_INTERP2FACES,CC_CELL_CENTERED,SLICETYPE,&
63436347
I1,I2,J1,J2,K1,K2,NFACES,NFACES_CUTCELLS,VALS,&
6344-
IND,IND2,Y_INDEX,Z_INDEX,PART_INDEX,VELO_INDEX,PIPE_INDEX,PROP_INDEX,REAC_INDEX,MATL_INDEX,T,DT,NM)
6348+
IND,IND2,Y_INDEX,Z_INDEX,PART_INDEX,VELO_INDEX,&
6349+
PIPE_INDEX,PROP_INDEX,REAC_INDEX,MATL_INDEX,T,DT,NM,OPT_BNDF_INDEX)
63456350

63466351
! these two routines need to be moved and called only once
63476352
CALL GET_GEOMINFO(SLICETYPE,I1,I2,J1,J2,K1,K2,NVERTS,NVERTS_CUTCELLS,NFACES,NFACES_CUTCELLS,VERTS,FACES,LOCATIONS)
@@ -9089,6 +9094,7 @@ REAL(EB) RECURSIVE FUNCTION GAS_PHASE_OUTPUT(T,DT,NM,II,JJ,KK,IND,IND2,Y_INDEX,Z
90899094
ELSE
90909095
PROBE_DELTA_P = (VEL*FAC)**2*RHO(II,JJ,KK)*0.5_EB
90919096
! LJ AIR viscosity fit 100 K to 5000 K
9097+
PROBE_TMP = MIN(5000._EB,MAX(100._EB,PROBE_TMP))
90929098
MU_G = 1.5205E-22_EB*PROBE_TMP**5 - 2.1417E-18_EB*PROBE_TMP**4 + 1.1402E-14_EB*PROBE_TMP**3 - &
90939099
2.9846E-11_EB*PROBE_TMP**2 + 5.9898E-8_EB*PROBE_TMP + 0.000002352_EB
90949100
JJJ = 1
@@ -9986,6 +9992,7 @@ REAL(EB) FUNCTION SOLID_PHASE_OUTPUT(INDX,Y_INDEX,Z_INDEX,PART_INDEX,OPT_WALL_IN
99869992

99879993
ENDIF
99889994

9995+
MATL_INDEX = 0
99899996
IF (PRESENT(OPT_DEVC_INDEX)) MATL_INDEX = DEVICE(OPT_DEVC_INDEX)%MATL_INDEX
99909997
IF (PRESENT(OPT_BNDF_INDEX)) MATL_INDEX = BOUNDARY_FILE(OPT_BNDF_INDEX)%MATL_INDEX
99919998
IF (PRESENT(OPT_PROF_INDEX)) MATL_INDEX = PROFILE(OPT_PROF_INDEX)%MATL_INDEX
@@ -11903,7 +11910,7 @@ SUBROUTINE DUMP_BNDF(T,DT,NM)
1190311910
CALL DUMP_SLICE_GEOM_DATA(LU_BNDG(NF,NM), &
1190411911
.FALSE.,.TRUE.,"INBOUND_FACES",1,STIME,I1,I2,J1,J2,K1,K2,BF%DEBUG, &
1190511912
IND,0,BF%Y_INDEX,BF%Z_INDEX,BF%PART_INDEX,0,0,BF%PROP_INDEX,0,0,T,DT,NM, &
11906-
BOUND_MIN, BOUND_MAX)
11913+
BOUND_MIN, BOUND_MAX, OPT_BNDF_INDEX=NF)
1190711914
BNDF_VAL_MIN = BOUND_MIN
1190811915
BNDF_VAL_MAX = BOUND_MAX
1190911916
CHANGE_BOUND = 1
@@ -11913,7 +11920,7 @@ SUBROUTINE DUMP_BNDF(T,DT,NM)
1191311920
CALL DUMP_SLICE_GEOM_DATA(LU_BNDG(NF,NM), &
1191411921
.FALSE.,.TRUE.,"INBOUND_FACES",0,STIME,I1,I2,J1,J2,K1,K2,BF%DEBUG, &
1191511922
IND,0,BF%Y_INDEX,BF%Z_INDEX,BF%PART_INDEX,0,0,BF%PROP_INDEX,0,0,T,DT,NM, &
11916-
BOUND_MIN, BOUND_MAX)
11923+
BOUND_MIN, BOUND_MAX, OPT_BNDF_INDEX=NF)
1191711924
OPEN(LU_BNDG(NF+N_BNDF,NM),FILE=FN_BNDG(NF+N_BNDF,NM), ACTION='READ')
1191811925
READ(LU_BNDG(NF+N_BNDF,NM),FMT=*,IOSTAT=IERROR)BNDF_TIME, BNDF_VAL_MIN, BNDF_VAL_MAX
1191911926
CLOSE(LU_BNDG(NF+N_BNDF,NM))

Source/hvac.f90

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -491,8 +491,8 @@ SUBROUTINE READ_HVAC
491491
IF (DN%N_DUCTS >=2) THEN
492492
DN%LOSS_ARRAY = LOSS(1:DN%N_DUCTS,1:DN%N_DUCTS)
493493
ELSE
494-
DN%LOSS_ARRAY(1,2) = LOSS(1,1)
495-
DN%LOSS_ARRAY(2,1) = LOSS(2,1)
494+
DN%LOSS_ARRAY(1,2) = LOSS(2,1)
495+
DN%LOSS_ARRAY(2,1) = LOSS(1,1)
496496
ENDIF
497497

498498
IF (NETWORK_ID=='null') THEN

Source/main.f90

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ PROGRAM FDS
204204
CALL INITIALIZE_ATMOSPHERE(NM)
205205
IF (.NOT.SETUP_ONLY .OR. CHECK_MESH_ALIGNMENT) CALL INITIALIZE_WALL_ARRAY(NM)
206206
ENDDO
207+
CALL STOP_CHECK(1)
207208
IF (MY_RANK==0 .AND. VERBOSE) CALL VERBOSE_PRINTOUT('Completed INITIALIZE_WALL_ARRAY')
208209

209210
CALL PROC_HVAC

Source/prec.f90

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ MODULE PRECISION_PARAMETERS
4040
REAL(EB), PARAMETER :: ONE_M_EPS=1._EB-100._EB*EPSILON(1._EB) !< Number that is slightly less than 1
4141
REAL(EB), PARAMETER :: ONE_P_EPS=1._EB+100._EB*EPSILON(1._EB) !< Number that is slightly greater than 1
4242
REAL(EB), PARAMETER :: MICRON=1.E-6_EB !< A relatively small length (m)
43-
REAL(QB), PARAMETER :: TWO_EPSILON_QB=2._QB*EPSILON(1._QB) !< A very small number 16 byte accuracy
44-
REAL(EB), PARAMETER :: TWO_EPSILON_EB=2._EB*EPSILON(1._EB) !< A very small number 8 byte accuracy
45-
REAL(FB), PARAMETER :: TWO_EPSILON_FB=2._EB*EPSILON(1._FB) !< A very small number 4 byte accuracy
43+
REAL(QB), PARAMETER :: TWO_EPSILON_QB=20._QB*EPSILON(1._QB) !< A very small number 16 byte accuracy
44+
REAL(EB), PARAMETER :: TWO_EPSILON_EB=20._EB*EPSILON(1._EB) !< A very small number 8 byte accuracy
45+
REAL(FB), PARAMETER :: TWO_EPSILON_FB=20._EB*EPSILON(1._FB) !< A very small number 4 byte accuracy
4646
REAL(EB), PARAMETER :: TINY_EB=TINY(1._EB) !< The smallest resolvable 8 byte real number
4747
REAL(EB), PARAMETER :: HUGE_EB=HUGE(1._EB) !< The largest resolvable 8 btye real number
4848
REAL(EB), PARAMETER :: HUGE_FB=HUGE(1._FB) !< A large number but not too large for various operations

Source/read.f90

Lines changed: 37 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -10710,7 +10710,7 @@ SUBROUTINE READ_OBST(QUICK_READ)
1071010710
TYPE(OBSTRUCTION_TYPE), POINTER :: OB2,OBT
1071110711
TYPE(MULTIPLIER_TYPE), POINTER :: MR
1071210712
TYPE(OBSTRUCTION_TYPE), DIMENSION(:), ALLOCATABLE, TARGET :: TEMP_OBSTRUCTION
10713-
INTEGER :: I,NM,NOM,NOM2,N_OBST_O,IC,N,NN,NNN,NNNN,N_NEW_OBST,RGB(3),N_OBST_DIM,II,JJ,KK,MULT_INDEX,SHAPE_TYPE,IIO,JJO,KKO,IOR,&
10713+
INTEGER :: I,NM,NOM,N_OBST_O,IC,N,NN,NNN,NNNN,N_NEW_OBST,RGB(3),N_OBST_DIM,II,JJ,KK,MULT_INDEX,SHAPE_TYPE,IIO,JJO,KKO,IOR,&
1071410714
N_LAYER_CELLS_MAX
1071510715
CHARACTER(LABEL_LENGTH) :: ID,DEVC_ID,SHAPE,SURF_ID,SURF_ID_INTERIOR,SURF_IDS(3),SURF_ID6(6),CTRL_ID,MULT_ID,&
1071610716
MATL_ID(MAX_MATERIALS),RAMP_IHS
@@ -10998,90 +10998,83 @@ SUBROUTINE READ_OBST(QUICK_READ)
1099810998
IF (XB3+XB4<2._EB*YS .OR. XB3+XB4>2._EB*YF) THICKEN_DIR(2) = .FALSE.
1099910999
IF (XB5+XB6<2._EB*ZS .OR. XB5+XB6>2._EB*ZF) THICKEN_DIR(3) = .FALSE.
1100011000

11001-
IF (XB2>=XS-0.5_EB*DX(0) .AND. XB2<XS) THEN
11002-
DX_GHOST = DX(0)
11001+
IF (XB2<XS .AND. XB4>YS .AND. XB3<YF .AND. XB6>ZS .AND. XB5<ZF) THEN
1100311002
CALL SEARCH_OTHER_MESHES(XS-0.01_EB*DX(0),0.5_EB*(MAX(YS,XB3)+MIN(YF,XB4)),0.5_EB*(MAX(ZS,XB5)+MIN(ZF,XB6)),&
1100411003
NOM,IIO,JJO,KKO,XXI,YYJ,ZZK)
11005-
CALL SEARCH_OTHER_MESHES(XS-0.51_EB*DX(0),0.5_EB*(MAX(YS,XB3)+MIN(YF,XB4)),0.5_EB*(MAX(ZS,XB5)+MIN(ZF,XB6)),&
11006-
NOM2,IIO,JJO,KKO,XXI,YYJ,ZZK)
11007-
IF (NOM==0 .AND. NOM2>0) REJECT_OBST = .TRUE.
11008-
IF (NOM>0) THEN
11009-
IF (ALLOCATED(MESHES(NOM)%DX)) DX_GHOST = MESHES(NOM)%DX(IIO)
11004+
IF (NOM>0 .AND. PROCESS(NM)==MY_RANK) THEN
11005+
DX_GHOST = MESHES(NOM)%DX(IIO)
11006+
ELSE
11007+
DX_GHOST = DX(0)
1101011008
ENDIF
1101111009
IF (XB2>=XS-0.5_EB*DX_GHOST) THEN
1101211010
XB1 = XS
1101311011
XB2 = XS
1101411012
ENDIF
1101511013
ENDIF
11016-
IF (XB1<XF+0.5_EB*DX(IBP1) .AND. XB1>XF) THEN
11017-
DX_GHOST = DX(IBP1)
11014+
11015+
IF (XB1>XF .AND. XB4>YS .AND. XB3<YF .AND. XB6>ZS .AND. XB5<ZF) THEN
1101811016
CALL SEARCH_OTHER_MESHES(XF+0.01_EB*DX(IBP1),0.5_EB*(MAX(YS,XB3)+MIN(YF,XB4)),0.5_EB*(MAX(ZS,XB5)+MIN(ZF,XB6)),&
1101911017
NOM,IIO,JJO,KKO,XXI,YYJ,ZZK)
11020-
CALL SEARCH_OTHER_MESHES(XF+0.51_EB*DX(IBP1),0.5_EB*(MAX(YS,XB3)+MIN(YF,XB4)),0.5_EB*(MAX(ZS,XB5)+MIN(ZF,XB6)),&
11021-
NOM2,IIO,JJO,KKO,XXI,YYJ,ZZK)
11022-
IF (NOM==0 .AND. NOM2>0) REJECT_OBST = .TRUE.
11023-
IF (NOM>0) THEN
11024-
IF (ALLOCATED(MESHES(NOM)%DX)) DX_GHOST = MESHES(NOM)%DX(IIO)
11018+
IF (NOM>0 .AND. PROCESS(NM)==MY_RANK) THEN
11019+
DX_GHOST = MESHES(NOM)%DX(IIO)
11020+
ELSE
11021+
DX_GHOST = DX(IBP1)
1102511022
ENDIF
1102611023
IF (XB1<XF+0.5_EB*DX_GHOST) THEN
1102711024
XB1 = XF
1102811025
XB2 = XF
1102911026
ENDIF
1103011027
ENDIF
11031-
IF (XB4>=YS-0.5_EB*DY(0) .AND. XB4<YS) THEN
11032-
DY_GHOST = DY(0)
11028+
11029+
IF (XB4<YS .AND. XB2>XS .AND. XB1<XF .AND. XB6>ZS .AND. XB5<ZF) THEN
1103311030
CALL SEARCH_OTHER_MESHES(0.5_EB*(MAX(XS,XB1)+MIN(XF,XB2)),YS-0.01_EB*DY(0),0.5_EB*(MAX(ZS,XB5)+MIN(ZF,XB6)),&
1103411031
NOM,IIO,JJO,KKO,XXI,YYJ,ZZK)
11035-
CALL SEARCH_OTHER_MESHES(0.5_EB*(MAX(XS,XB1)+MIN(XF,XB2)),YS-0.51_EB*DY(0),0.5_EB*(MAX(ZS,XB5)+MIN(ZF,XB6)),&
11036-
NOM2,IIO,JJO,KKO,XXI,YYJ,ZZK)
11037-
IF (NOM==0 .AND. NOM2>0) REJECT_OBST = .TRUE.
11038-
IF (NOM>0) THEN
11039-
IF (ALLOCATED(MESHES(NOM)%DY)) DY_GHOST = MESHES(NOM)%DY(JJO)
11032+
IF (NOM>0 .AND. PROCESS(NM)==MY_RANK) THEN
11033+
DY_GHOST = MESHES(NOM)%DY(JJO)
11034+
ELSE
11035+
DY_GHOST = DY(0)
1104011036
ENDIF
1104111037
IF (XB4>=YS-0.5_EB*DY_GHOST) THEN
1104211038
XB3 = YS
1104311039
XB4 = YS
1104411040
ENDIF
1104511041
ENDIF
11046-
IF (XB3<YF+0.5_EB*DY(JBP1) .AND. XB3>YF) THEN
11047-
DY_GHOST = DY(JBP1)
11042+
11043+
IF (XB3>YF .AND. XB2>XS .AND. XB1<XF .AND. XB6>ZS .AND. XB5<ZF) THEN
1104811044
CALL SEARCH_OTHER_MESHES(0.5_EB*(MAX(XS,XB1)+MIN(XF,XB2)),YF+0.01_EB*DY(JBP1),0.5_EB*(MAX(ZS,XB5)+MIN(ZF,XB6)),&
1104911045
NOM,IIO,JJO,KKO,XXI,YYJ,ZZK)
11050-
CALL SEARCH_OTHER_MESHES(0.5_EB*(MAX(XS,XB1)+MIN(XF,XB2)),YF+0.51_EB*DY(JBP1),0.5_EB*(MAX(ZS,XB5)+MIN(ZF,XB6)),&
11051-
NOM2,IIO,JJO,KKO,XXI,YYJ,ZZK)
11052-
IF (NOM==0 .AND. NOM2>0) REJECT_OBST = .TRUE.
11053-
IF (NOM>0) THEN
11054-
IF (ALLOCATED(MESHES(NOM)%DY)) DY_GHOST = MESHES(NOM)%DY(JJO)
11046+
IF (NOM>0 .AND. PROCESS(NM)==MY_RANK) THEN
11047+
DY_GHOST = MESHES(NOM)%DY(JJO)
11048+
ELSE
11049+
DY_GHOST = DY(JBP1)
1105511050
ENDIF
11056-
IF (XB3<YS+0.5_EB*DY_GHOST) THEN
11051+
IF (XB3<YF+0.5_EB*DY_GHOST) THEN
1105711052
XB3 = YF
1105811053
XB4 = YF
1105911054
ENDIF
1106011055
ENDIF
11061-
IF (XB6>=ZS-0.5_EB*DZ(0) .AND. XB6<ZS) THEN
11062-
DZ_GHOST = DZ(0)
11056+
11057+
IF (XB6<ZS .AND. XB2>XS .AND. XB1<XF .AND. XB4>YS .AND. XB3<YF) THEN
1106311058
CALL SEARCH_OTHER_MESHES(0.5_EB*(MAX(XS,XB1)+MIN(XF,XB2)),0.5_EB*(MAX(YS,XB3)+MIN(YF,XB4)),ZS-0.01_EB*DZ(0),&
1106411059
NOM,IIO,JJO,KKO,XXI,YYJ,ZZK)
11065-
CALL SEARCH_OTHER_MESHES(0.5_EB*(MAX(XS,XB1)+MIN(XF,XB2)),0.5_EB*(MAX(YS,XB3)+MIN(YF,XB4)),ZS-0.51_EB*DZ(0),&
11066-
NOM2,IIO,JJO,KKO,XXI,YYJ,ZZK)
11067-
IF (NOM==0 .AND. NOM2>0) REJECT_OBST = .TRUE.
11068-
IF (NOM>0) THEN
11069-
IF (ALLOCATED(MESHES(NOM)%DZ)) DZ_GHOST = MESHES(NOM)%DZ(KKO)
11060+
IF (NOM>0 .AND. PROCESS(NM)==MY_RANK) THEN
11061+
DZ_GHOST = MESHES(NOM)%DZ(KKO)
11062+
ELSE
11063+
DZ_GHOST = DZ(0)
1107011064
ENDIF
1107111065
IF (XB6>=ZS-0.5_EB*DZ_GHOST) THEN
1107211066
XB5 = ZS
1107311067
XB6 = ZS
1107411068
ENDIF
1107511069
ENDIF
11076-
IF (XB5<ZF+0.5_EB*DZ(KBP1) .AND. XB5>ZF) THEN
11077-
DZ_GHOST = DZ(KBP1)
11070+
11071+
IF (XB5>ZF .AND. XB2>XS .AND. XB1<XF .AND. XB4>YS .AND. XB3<YF) THEN
1107811072
CALL SEARCH_OTHER_MESHES(0.5_EB*(MAX(XS,XB1)+MIN(XF,XB2)),0.5_EB*(MAX(YS,XB3)+MIN(YF,XB4)),ZF+0.01_EB*DZ(KBP1),&
1107911073
NOM,IIO,JJO,KKO,XXI,YYJ,ZZK)
11080-
CALL SEARCH_OTHER_MESHES(0.5_EB*(MAX(XS,XB1)+MIN(XF,XB2)),0.5_EB*(MAX(YS,XB3)+MIN(YF,XB4)),ZF+0.51_EB*DZ(KBP1),&
11081-
NOM2,IIO,JJO,KKO,XXI,YYJ,ZZK)
11082-
IF (NOM==0 .AND. NOM2>0) REJECT_OBST = .TRUE.
11083-
IF (NOM>0) THEN
11084-
IF (ALLOCATED(MESHES(NOM)%DZ)) DZ_GHOST = MESHES(NOM)%DZ(KKO)
11074+
IF (NOM>0 .AND. PROCESS(NM)==MY_RANK) THEN
11075+
DZ_GHOST = MESHES(NOM)%DZ(KKO)
11076+
ELSE
11077+
DZ_GHOST = DZ(KBP1)
1108511078
ENDIF
1108611079
IF (XB5<ZF+0.5_EB*DZ_GHOST) THEN
1108711080
XB5 = ZF

0 commit comments

Comments
 (0)