Skip to content

Commit 8a5de5f

Browse files
authored
Merge pull request #16406 from ericvmueller/master
FDS Source: bug fix to properly sum particle drag FVX/Y/Z_D values at…
2 parents 8f3c0f3 + f4b30ee commit 8a5de5f

3 files changed

Lines changed: 232 additions & 21 deletions

File tree

Source/main.f90

Lines changed: 68 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -737,7 +737,7 @@ PROGRAM FDS
737737

738738
COMPUTE_WALL_BC_LOOP_A: DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX
739739
CALL WALL_BC(T,DT,NM)
740-
IF (PARTICLE_DRAG) CALL PARTICLE_MOMENTUM_TRANSFER(DT,NM)
740+
IF (PARTICLE_DRAG) CALL PARTICLE_MOMENTUM_TRANSFER(NM)
741741
CALL DIVERGENCE_PART_1(T,DT,NM)
742742
ENDDO COMPUTE_WALL_BC_LOOP_A
743743

@@ -887,9 +887,15 @@ PROGRAM FDS
887887
COMPUTE_WALL_BC_2A: DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX
888888
CALL PARTICLE_MASS_ENERGY_TRANSFER(T,DT,NM)
889889
CALL MOVE_PARTICLES(T,DT,NM)
890-
IF (PARTICLE_DRAG) CALL PARTICLE_MOMENTUM_TRANSFER(DT,NM)
891890
ENDDO COMPUTE_WALL_BC_2A
892891

892+
IF (PARTICLE_DRAG) THEN
893+
IF (NMESHES>1) CALL MESH_EXCHANGE(20)
894+
DO NM=LOWER_MESH_INDEX,UPPER_MESH_INDEX
895+
CALL PARTICLE_MOMENTUM_TRANSFER(NM)
896+
ENDDO
897+
ENDIF
898+
893899
! Exchange the number of particles sent from mesh to mesh (7), and if non-zero, exchange particles (11)
894900

895901
IF (MPI_PARTICLE_EXCHANGE) THEN
@@ -2086,6 +2092,14 @@ SUBROUTINE INITIALIZE_MESH_EXCHANGE_1(NM)
20862092
OM%FVX = 0._EB
20872093
OM%FVY = 0._EB
20882094
OM%FVZ = 0._EB
2095+
IF (PARTICLE_DRAG) THEN
2096+
ALLOCATE(OM%FVX_D(IMIN:IMAX,JMIN:JMAX,KMIN:KMAX))
2097+
ALLOCATE(OM%FVY_D(IMIN:IMAX,JMIN:JMAX,KMIN:KMAX))
2098+
ALLOCATE(OM%FVZ_D(IMIN:IMAX,JMIN:JMAX,KMIN:KMAX))
2099+
OM%FVX_D = 0._EB
2100+
OM%FVY_D = 0._EB
2101+
OM%FVZ_D = 0._EB
2102+
ENDIF
20892103
ALLOCATE(OM%KRES(IMIN:IMAX,JMIN:JMAX,KMIN:KMAX))
20902104
OM%KRES = 0._EB
20912105
ALLOCATE(OM%Q(IMIN:IMAX,JMIN:JMAX,KMIN:KMAX))
@@ -2814,6 +2828,7 @@ SUBROUTINE POST_RECEIVES(CODE)
28142828
IJK_SIZE = (M3%I_MAX_R-M3%I_MIN_R+1)*(M3%J_MAX_R-M3%J_MIN_R+1)*(M3%K_MAX_R-M3%K_MIN_R+1)
28152829
ALLOCATE(M3%REAL_RECV_PKG1(M3%NIC_R*(6+2*N_TOTAL_SCALARS)))
28162830
ALLOCATE(M3%REAL_RECV_PKG3(IJK_SIZE*4))
2831+
ALLOCATE(M3%REAL_RECV_PKG4(M3%NIC_R))
28172832
ALLOCATE(M3%REAL_RECV_PKG7(M3%NIC_R*3))
28182833
ALLOCATE(M3%REAL_RECV_PKG8(M3%NIC_R*2))
28192834

@@ -2846,6 +2861,10 @@ SUBROUTINE POST_RECEIVES(CODE)
28462861
CALL MPI_RECV_INIT(M3%REAL_RECV_PKG3(1),SIZE(M3%REAL_RECV_PKG3),MPI_DOUBLE_PRECISION,SNODE,NOM,MPI_COMM_WORLD,&
28472862
REQ3(N_REQ3),IERR)
28482863

2864+
N_REQ4 = N_REQ4 + 1
2865+
CALL MPI_RECV_INIT(M3%REAL_RECV_PKG4(1),SIZE(M3%REAL_RECV_PKG4),MPI_DOUBLE_PRECISION,SNODE,NOM,MPI_COMM_WORLD,&
2866+
REQ4(N_REQ4),IERR)
2867+
28492868
N_REQ7 = N_REQ7 + 1
28502869
CALL MPI_RECV_INIT(M3%REAL_RECV_PKG7(1),SIZE(M3%REAL_RECV_PKG7),MPI_DOUBLE_PRECISION,SNODE,NOM,MPI_COMM_WORLD,&
28512870
REQ7(N_REQ7),IERR)
@@ -3001,6 +3020,7 @@ SUBROUTINE MESH_EXCHANGE(CODE)
30013020
IJK_SIZE = (M3%I_MAX_S-M3%I_MIN_S+1)*(M3%J_MAX_S-M3%J_MIN_S+1)*(M3%K_MAX_S-M3%K_MIN_S+1)
30023021
ALLOCATE(M3%REAL_SEND_PKG1(M3%NIC_S*(6+2*N_TOTAL_SCALARS)))
30033022
ALLOCATE(M3%REAL_SEND_PKG3(IJK_SIZE*4))
3023+
ALLOCATE(M3%REAL_SEND_PKG4(M3%NIC_S))
30043024
ALLOCATE(M3%REAL_SEND_PKG7(M3%NIC_S*3))
30053025

30063026
IF (LEVEL_SET_MODE>0 .OR. TERRAIN_CASE) ALLOCATE(M3%REAL_SEND_PKG14(5*M3%NIC_S))
@@ -3036,6 +3056,10 @@ SUBROUTINE MESH_EXCHANGE(CODE)
30363056
CALL MPI_SEND_INIT(M3%REAL_SEND_PKG3(1),SIZE(M3%REAL_SEND_PKG3),MPI_DOUBLE_PRECISION,RNODE,NM,MPI_COMM_WORLD,&
30373057
REQ3(N_REQ3),IERR)
30383058

3059+
N_REQ4 = N_REQ4 + 1
3060+
CALL MPI_SEND_INIT(M3%REAL_SEND_PKG4(1),SIZE(M3%REAL_SEND_PKG4),MPI_DOUBLE_PRECISION,RNODE,NM,MPI_COMM_WORLD,&
3061+
REQ4(N_REQ4),IERR)
3062+
30393063
N_REQ7 = N_REQ7 + 1
30403064
CALL MPI_SEND_INIT(M3%REAL_SEND_PKG7(1),SIZE(M3%REAL_SEND_PKG7),MPI_DOUBLE_PRECISION,RNODE,NM,MPI_COMM_WORLD,&
30413065
REQ7(N_REQ7),IERR)
@@ -3217,6 +3241,28 @@ SUBROUTINE MESH_EXCHANGE(CODE)
32173241
ENDIF
32183242
ENDIF
32193243

3244+
! Exchange particle drag at interpolated boundaries
3245+
3246+
IF (CODE==20 .AND. M3%NIC_S>0) THEN
3247+
IF (RNODE/=SNODE) THEN
3248+
PACK_REAL_SEND_PKG4: DO LL=1,M3%NIC_S
3249+
SELECT CASE(M3%IOR_S(LL))
3250+
CASE(-1) ; M3%REAL_SEND_PKG4(LL) = M%FVX_D(M3%IIO_S(LL)-1,M3%JJO_S(LL) ,M3%KKO_S(LL) )
3251+
CASE( 1) ; M3%REAL_SEND_PKG4(LL) = M%FVX_D(M3%IIO_S(LL) ,M3%JJO_S(LL) ,M3%KKO_S(LL) )
3252+
CASE(-2) ; M3%REAL_SEND_PKG4(LL) = M%FVY_D(M3%IIO_S(LL) ,M3%JJO_S(LL)-1,M3%KKO_S(LL) )
3253+
CASE( 2) ; M3%REAL_SEND_PKG4(LL) = M%FVY_D(M3%IIO_S(LL) ,M3%JJO_S(LL) ,M3%KKO_S(LL) )
3254+
CASE(-3) ; M3%REAL_SEND_PKG4(LL) = M%FVZ_D(M3%IIO_S(LL) ,M3%JJO_S(LL) ,M3%KKO_S(LL)-1)
3255+
CASE( 3) ; M3%REAL_SEND_PKG4(LL) = M%FVZ_D(M3%IIO_S(LL) ,M3%JJO_S(LL) ,M3%KKO_S(LL) )
3256+
END SELECT
3257+
ENDDO PACK_REAL_SEND_PKG4
3258+
ELSE
3259+
M2=>MESHES(NOM)%OMESH(NM)
3260+
M2%FVX_D(IMIN:IMAX,JMIN:JMAX,KMIN:KMAX) = M%FVX_D(IMIN:IMAX,JMIN:JMAX,KMIN:KMAX)
3261+
M2%FVY_D(IMIN:IMAX,JMIN:JMAX,KMIN:KMAX) = M%FVY_D(IMIN:IMAX,JMIN:JMAX,KMIN:KMAX)
3262+
M2%FVZ_D(IMIN:IMAX,JMIN:JMAX,KMIN:KMAX) = M%FVZ_D(IMIN:IMAX,JMIN:JMAX,KMIN:KMAX)
3263+
ENDIF
3264+
ENDIF
3265+
32203266
! Send pressure information at the end of the PREDICTOR (CODE=3) or CORRECTOR (CODE=6) stage of the time step
32213267

32223268
IF ((CODE==3.OR.CODE==6) .AND. M3%NIC_S>0) THEN
@@ -3445,6 +3491,11 @@ SUBROUTINE MESH_EXCHANGE(CODE)
34453491
CALL TIMEOUT('MPI exchange of pressure (CODE=5)',N_REQ7,REQ7(1:N_REQ7))
34463492
ENDIF
34473493

3494+
IF (N_MPI_PROCESSES>1 .AND. CODE==20 .AND. N_REQ4>0) THEN
3495+
CALL MPI_STARTALL(N_REQ4,REQ4(1:N_REQ4),IERR)
3496+
CALL TIMEOUT('MPI exchange of particle drag (CODE=20)',N_REQ4,REQ4(1:N_REQ4))
3497+
ENDIF
3498+
34483499
IF (N_MPI_PROCESSES>1 .AND. CODE==6 .AND. N_REQ6>0) THEN
34493500
CALL MPI_STARTALL(N_REQ6,REQ6(1:N_REQ6),IERR)
34503501
CALL TIMEOUT('MPI exchange of back wall info (CODE=6)',N_REQ6,REQ6(1:N_REQ6))
@@ -3547,6 +3598,21 @@ SUBROUTINE MESH_EXCHANGE(CODE)
35473598
ENDDO UNPACK_REAL_RECV_PKG7
35483599
ENDIF
35493600

3601+
! Unpack particle drag at interpolated boundaries
3602+
3603+
IF (CODE==20 .AND. M2%NIC_R>0 .AND. RNODE/=SNODE) THEN
3604+
UNPACK_REAL_RECV_PKG4: DO LL=1,M2%NIC_R
3605+
SELECT CASE(M2%IOR_R(LL))
3606+
CASE(-1) ; M2%FVX_D(M2%IIO_R(LL)-1,M2%JJO_R(LL) ,M2%KKO_R(LL) ) = M2%REAL_RECV_PKG4(LL)
3607+
CASE( 1) ; M2%FVX_D(M2%IIO_R(LL) ,M2%JJO_R(LL) ,M2%KKO_R(LL) ) = M2%REAL_RECV_PKG4(LL)
3608+
CASE(-2) ; M2%FVY_D(M2%IIO_R(LL) ,M2%JJO_R(LL)-1,M2%KKO_R(LL) ) = M2%REAL_RECV_PKG4(LL)
3609+
CASE( 2) ; M2%FVY_D(M2%IIO_R(LL) ,M2%JJO_R(LL) ,M2%KKO_R(LL) ) = M2%REAL_RECV_PKG4(LL)
3610+
CASE(-3) ; M2%FVZ_D(M2%IIO_R(LL) ,M2%JJO_R(LL) ,M2%KKO_R(LL)-1) = M2%REAL_RECV_PKG4(LL)
3611+
CASE( 3) ; M2%FVZ_D(M2%IIO_R(LL) ,M2%JJO_R(LL) ,M2%KKO_R(LL) ) = M2%REAL_RECV_PKG4(LL)
3612+
END SELECT
3613+
ENDDO UNPACK_REAL_RECV_PKG4
3614+
ENDIF
3615+
35503616
! Unpack pressure following PREDICTOR stage of time step
35513617

35523618
IF ((CODE==3.OR.CODE==6) .AND. M2%NIC_R>0 .AND. RNODE/=SNODE) THEN

Source/part.f90

Lines changed: 162 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1855,10 +1855,6 @@ SUBROUTINE MOVE_PARTICLES(T,DT,NM)
18551855

18561856
PART_UVWMAX = 0._EB
18571857

1858-
IF (MESHES(NM)%NLP==0) RETURN
1859-
1860-
! Set the CPU timer and point to the current mesh variables
1861-
18621858
TNOW=CURRENT_TIME()
18631859
CALL POINT_TO_MESH(NM)
18641860

@@ -1868,6 +1864,8 @@ SUBROUTINE MOVE_PARTICLES(T,DT,NM)
18681864
FVZ_D = 0._EB
18691865
ENDIF
18701866

1867+
IF (MESHES(NM)%NLP==0) RETURN
1868+
18711869
IF (CC_IBM) CALL CUTFACE_VELOCITIES(NM,U,V,W,CUTFACES=.TRUE.)
18721870

18731871
! Loop through all Lagrangian particles and move them one time step
@@ -2564,6 +2562,8 @@ SUBROUTINE MOVE_PARTICLES(T,DT,NM)
25642562

25652563
IF (CC_IBM) CALL CUTFACE_VELOCITIES(NM,U,V,W,CUTFACES=.FALSE.)
25662564

2565+
IF (PARTICLE_DRAG) CALL CLIP_PARTICLE_DRAG(DT,NM)
2566+
25672567
! Remove out-of-bounds particles
25682568

25692569
CALL REMOVE_PARTICLES(T,NM)
@@ -4570,21 +4570,18 @@ END SUBROUTINE PARTICLE_RUNNING_AVERAGES
45704570
END SUBROUTINE PARTICLE_MASS_ENERGY_TRANSFER
45714571

45724572

4573-
!> \brief Add PARTICLE momentum as a force term in momentum equation
4574-
!> \param DT Current time step (s)
4573+
!> \brief Clip particle drag fluxes to plus/minus abs(u)/dt
4574+
!> \param DT Time step size (s)
45754575
!> \param NM Current mesh number
45764576

4577-
SUBROUTINE PARTICLE_MOMENTUM_TRANSFER(DT,NM)
4577+
SUBROUTINE CLIP_PARTICLE_DRAG(DT,NM)
45784578

4579-
USE CC_SCALARS, ONLY: CUTFACE_VELOCITIES
45804579
INTEGER, INTENT(IN) :: NM
45814580
REAL(EB), INTENT(IN) :: DT
45824581
REAL(EB), POINTER, DIMENSION(:,:,:) :: UU,VV,WW
45834582
REAL(EB) :: RDT,UODT,VODT,WODT
45844583
INTEGER :: I,J,K
45854584

4586-
IF (MESHES(NM)%NLP==0) RETURN
4587-
45884585
CALL POINT_TO_MESH(NM)
45894586

45904587
RDT = 1._EB/DT
@@ -4599,25 +4596,172 @@ SUBROUTINE PARTICLE_MOMENTUM_TRANSFER(DT,NM)
45994596
WW => WS
46004597
ENDIF
46014598

4602-
IF (CC_IBM) CALL CUTFACE_VELOCITIES(NM,UU,VV,WW,CUTFACES=.TRUE.)
4603-
4604-
! Add summed particle accelerations to the momentum equation. Limit the value to plus/minus abs(u)/dt to prevent a sudden
4605-
! change in gas direction.
4599+
! Limit drag flux to plus/minus abs(u)/dt to prevent a sudden change in gas direction.
46064600

46074601
DO K=0,KBAR
46084602
DO J=0,JBAR
46094603
DO I=0,IBAR
46104604
UODT = ABS(UU(I,J,K)*RDT)
46114605
VODT = ABS(VV(I,J,K)*RDT)
46124606
WODT = ABS(WW(I,J,K)*RDT)
4613-
FVX(I,J,K) = FVX(I,J,K) + MIN(UODT,MAX(-UODT,FVX_D(I,J,K)))
4614-
FVY(I,J,K) = FVY(I,J,K) + MIN(VODT,MAX(-VODT,FVY_D(I,J,K)))
4615-
FVZ(I,J,K) = FVZ(I,J,K) + MIN(WODT,MAX(-WODT,FVZ_D(I,J,K)))
4607+
FVX_D(I,J,K) = MIN(UODT,MAX(-UODT,FVX_D(I,J,K)))
4608+
FVY_D(I,J,K) = MIN(VODT,MAX(-VODT,FVY_D(I,J,K)))
4609+
FVZ_D(I,J,K) = MIN(WODT,MAX(-WODT,FVZ_D(I,J,K)))
46164610
ENDDO
46174611
ENDDO
46184612
ENDDO
46194613

4620-
IF (CC_IBM) CALL CUTFACE_VELOCITIES(NM,UU,VV,WW,CUTFACES=.FALSE.)
4614+
END SUBROUTINE CLIP_PARTICLE_DRAG
4615+
4616+
4617+
!> \brief Add PARTICLE momentum as a force term in momentum equation
4618+
!> \param DT Current time step (s)
4619+
!> \param NM Current mesh number
4620+
4621+
SUBROUTINE PARTICLE_MOMENTUM_TRANSFER(NM)
4622+
4623+
INTEGER, INTENT(IN) :: NM
4624+
INTEGER :: NOM,II,JJ,KK,IOR,IW,IIO,JJO,KKO
4625+
REAL(EB) :: DA_OTHER,FVX_OTHER,FVY_OTHER,FVZ_OTHER
4626+
TYPE (OMESH_TYPE), POINTER :: OM
4627+
TYPE (MESH_TYPE), POINTER :: M2
4628+
TYPE(WALL_TYPE), POINTER :: WC
4629+
TYPE(EXTERNAL_WALL_TYPE), POINTER :: EWC
4630+
TYPE(BOUNDARY_COORD_TYPE), POINTER :: BC
4631+
4632+
CALL POINT_TO_MESH(NM)
4633+
4634+
! Add area-weighted particle drag from neighboring meshes at interpolated boundaries.
4635+
4636+
IF (NMESHES>1 .AND. CORRECTOR) THEN
4637+
4638+
EXTERNAL_WALL_LOOP: DO IW=1,N_EXTERNAL_WALL_CELLS
4639+
4640+
WC=>WALL(IW)
4641+
EWC=>EXTERNAL_WALL(IW)
4642+
IF (WC%BOUNDARY_TYPE/=INTERPOLATED_BOUNDARY) CYCLE EXTERNAL_WALL_LOOP
4643+
4644+
BC => BOUNDARY_COORD(WC%BC_INDEX)
4645+
II = BC%II
4646+
JJ = BC%JJ
4647+
KK = BC%KK
4648+
IOR = BC%IOR
4649+
NOM = EWC%NOM
4650+
OM => OMESH(NOM)
4651+
M2 => MESHES(NOM)
4652+
4653+
DA_OTHER = 0._EB
4654+
4655+
SELECT CASE(ABS(IOR))
4656+
CASE(1)
4657+
DO KKO=EWC%KKO_MIN,EWC%KKO_MAX
4658+
DO JJO=EWC%JJO_MIN,EWC%JJO_MAX
4659+
DO IIO=EWC%IIO_MIN,EWC%IIO_MAX
4660+
DA_OTHER = DA_OTHER + M2%DY(JJO)*M2%DZ(KKO)
4661+
ENDDO
4662+
ENDDO
4663+
ENDDO
4664+
CASE(2)
4665+
DO KKO=EWC%KKO_MIN,EWC%KKO_MAX
4666+
DO JJO=EWC%JJO_MIN,EWC%JJO_MAX
4667+
DO IIO=EWC%IIO_MIN,EWC%IIO_MAX
4668+
DA_OTHER = DA_OTHER + M2%DX(IIO)*M2%DZ(KKO)
4669+
ENDDO
4670+
ENDDO
4671+
ENDDO
4672+
CASE(3)
4673+
DO KKO=EWC%KKO_MIN,EWC%KKO_MAX
4674+
DO JJO=EWC%JJO_MIN,EWC%JJO_MAX
4675+
DO IIO=EWC%IIO_MIN,EWC%IIO_MAX
4676+
DA_OTHER = DA_OTHER + M2%DX(IIO)*M2%DY(JJO)
4677+
ENDDO
4678+
ENDDO
4679+
ENDDO
4680+
END SELECT
4681+
4682+
SELECT CASE(IOR)
4683+
4684+
CASE( 1)
4685+
4686+
FVX_OTHER = 0._EB
4687+
DO KKO=EWC%KKO_MIN,EWC%KKO_MAX
4688+
DO JJO=EWC%JJO_MIN,EWC%JJO_MAX
4689+
DO IIO=EWC%IIO_MIN,EWC%IIO_MAX
4690+
FVX_OTHER = FVX_OTHER + OM%FVX_D(IIO,JJO,KKO)*M2%DY(JJO)*M2%DZ(KKO)/DA_OTHER
4691+
ENDDO
4692+
ENDDO
4693+
ENDDO
4694+
FVX_D(0,JJ,KK) = FVX_D(0,JJ,KK) + FVX_OTHER
4695+
4696+
CASE(-1)
4697+
4698+
FVX_OTHER = 0._EB
4699+
DO KKO=EWC%KKO_MIN,EWC%KKO_MAX
4700+
DO JJO=EWC%JJO_MIN,EWC%JJO_MAX
4701+
DO IIO=EWC%IIO_MIN,EWC%IIO_MAX
4702+
FVX_OTHER = FVX_OTHER + OM%FVX_D(IIO-1,JJO,KKO)*M2%DY(JJO)*M2%DZ(KKO)/DA_OTHER
4703+
ENDDO
4704+
ENDDO
4705+
ENDDO
4706+
FVX_D(IBAR,JJ,KK) = FVX_D(IBAR,JJ,KK) + FVX_OTHER
4707+
4708+
CASE( 2)
4709+
4710+
FVY_OTHER = 0._EB
4711+
DO KKO=EWC%KKO_MIN,EWC%KKO_MAX
4712+
DO JJO=EWC%JJO_MIN,EWC%JJO_MAX
4713+
DO IIO=EWC%IIO_MIN,EWC%IIO_MAX
4714+
FVY_OTHER = FVY_OTHER + OM%FVY_D(IIO,JJO,KKO)*M2%DX(IIO)*M2%DZ(KKO)/DA_OTHER
4715+
ENDDO
4716+
ENDDO
4717+
ENDDO
4718+
FVY_D(II,0,KK) = FVY_D(II,0,KK) + FVY_OTHER
4719+
4720+
CASE(-2)
4721+
4722+
FVY_OTHER = 0._EB
4723+
DO KKO=EWC%KKO_MIN,EWC%KKO_MAX
4724+
DO JJO=EWC%JJO_MIN,EWC%JJO_MAX
4725+
DO IIO=EWC%IIO_MIN,EWC%IIO_MAX
4726+
FVY_OTHER = FVY_OTHER + OM%FVY_D(IIO,JJO-1,KKO)*M2%DX(IIO)*M2%DZ(KKO)/DA_OTHER
4727+
ENDDO
4728+
ENDDO
4729+
ENDDO
4730+
FVY_D(II,JBAR,KK) = FVY_D(II,JBAR,KK) + FVY_OTHER
4731+
4732+
CASE( 3)
4733+
4734+
FVZ_OTHER = 0._EB
4735+
DO KKO=EWC%KKO_MIN,EWC%KKO_MAX
4736+
DO JJO=EWC%JJO_MIN,EWC%JJO_MAX
4737+
DO IIO=EWC%IIO_MIN,EWC%IIO_MAX
4738+
FVZ_OTHER = FVZ_OTHER + OM%FVZ_D(IIO,JJO,KKO)*M2%DX(IIO)*M2%DY(JJO)/DA_OTHER
4739+
ENDDO
4740+
ENDDO
4741+
ENDDO
4742+
FVZ_D(II,JJ,0) = FVZ_D(II,JJ,0) + FVZ_OTHER
4743+
4744+
CASE(-3)
4745+
4746+
FVZ_OTHER = 0._EB
4747+
DO KKO=EWC%KKO_MIN,EWC%KKO_MAX
4748+
DO JJO=EWC%JJO_MIN,EWC%JJO_MAX
4749+
DO IIO=EWC%IIO_MIN,EWC%IIO_MAX
4750+
FVZ_OTHER = FVZ_OTHER + OM%FVZ_D(IIO,JJO,KKO-1)*M2%DX(IIO)*M2%DY(JJO)/DA_OTHER
4751+
ENDDO
4752+
ENDDO
4753+
ENDDO
4754+
FVZ_D(II,JJ,KBAR) = FVZ_D(II,JJ,KBAR) + FVZ_OTHER
4755+
4756+
END SELECT
4757+
4758+
ENDDO EXTERNAL_WALL_LOOP
4759+
4760+
ENDIF
4761+
4762+
FVX = FVX + FVX_D
4763+
FVY = FVY + FVY_D
4764+
FVZ = FVZ + FVZ_D
46214765

46224766
END SUBROUTINE PARTICLE_MOMENTUM_TRANSFER
46234767

Source/type.f90

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1025,7 +1025,8 @@ MODULE TYPES
10251025
TYPE (SURFACE_TYPE), DIMENSION(:), ALLOCATABLE, TARGET :: SURFACE
10261026

10271027
TYPE OMESH_TYPE
1028-
REAL(EB), ALLOCATABLE, DIMENSION(:,:,:) :: MU,RHO,RHOS,TMP,U,V,W,US,VS,WS,H,HS,FVX,FVY,FVZ,D,DS,KRES,IL_S,IL_R,IL_R_OLD,Q
1028+
REAL(EB), ALLOCATABLE, DIMENSION(:,:,:) ::&
1029+
MU,RHO,RHOS,TMP,U,V,W,US,VS,WS,H,HS,FVX,FVY,FVZ,FVX_D,FVY_D,FVZ_D,D,DS,KRES,IL_S,IL_R,IL_R_OLD,Q
10291030
REAL(EB), ALLOCATABLE, DIMENSION(:,:,:,:) :: ZZ,ZZS
10301031
INTEGER, ALLOCATABLE, DIMENSION(:) :: IIO_R,JJO_R,KKO_R,IOR_R,IIO_S,JJO_S,KKO_S,IOR_S
10311032
INTEGER :: I_MIN_R=-10,I_MAX_R=-10,J_MIN_R=-10,J_MAX_R=-10,K_MIN_R=-10,K_MAX_R=-10,NIC_R=0, &

0 commit comments

Comments
 (0)