File: RELATIVE:/../../../mfix.git/model/des/set_filter_des.f

1     !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
2     !                                                                      !
3     !  Subroutine: SET_FILTER_DES                                          !
4     !  Author: J.Musser                                   Date: 25-Nov-14  !
5     !                                                                      !
6     !  Purpose:                                                            !
7     !                                                                      !
8     !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
9           SUBROUTINE SET_FILTER_DES
10     
11     ! Runtime Flag: Invoke gas/solids coupled simulation.
12           use geometry, only: DX, IMIN1, IMAX1
13           use geometry, only: DY, JMIN1, JMAX1
14           use geometry, only: DZ, KMIN1, KMAX1, DO_K
15     
16           use particle_filter, only: DES_INTERP_SCHEME_ENUM
17           use particle_filter, only: DES_INTERP_NONE
18           use particle_filter, only: DES_INTERP_GARG
19           use particle_filter, only: DES_INTERP_DPVM
20           use particle_filter, only: DES_INTERP_GAUSS
21     
22           use particle_filter, only: DES_INTERP_WIDTH
23           use particle_filter, only: FILTER_WIDTH_INTERP
24     
25           use particle_filter, only: OoFILTER_VOL
26           use particle_filter, only: FILTER_WIDTH_INTERPx3
27     
28           use desgrid, only: DG_DXinv, DG_DYinv, DG_DZinv
29     
30           use param1, only: ONE, UNDEFINED
31     
32           use sendrecvnode, only: DES_SETNODEINDICES
33           use mpi_utility, only: GLOBAL_ALL_MIN
34     
35           use error_manager
36     
37           IMPLICIT NONE
38     
39           DOUBLE PRECISION :: DXYZ_MIN, DG_DXYZ_MIN
40     
41     
42     !......................................................................!
43     
44     ! Initialize the error manager.
45           CALL INIT_ERR_MSG("SET_FILTER_DES")
46     
47     ! Get the minimum fluid cell dimension
48           DXYZ_MIN = min(minval(DX(IMIN1:IMAX1)),minval(DY(JMIN1:JMAX1)))
49           IF(DO_K) DXYZ_MIN = min(DXYZ_MIN,minval(DZ(KMIN1:KMAX1)))
50     
51     ! Get the minimum DES grid cell dimension
52           DG_DXYZ_MIN = min(ONE/DG_DXinv, ONE/DG_DYinv)
53           IF(DO_K) DG_DXYZ_MIN = min(DG_DXYZ_MIN, ONE/DG_DZinv)
54           CALL GLOBAL_ALL_MIN(DG_DXYZ_MIN)
55     
56     ! Verify that the interpolation scheme doesn't exceed the grid.
57           IF(DES_INTERP_WIDTH /= UNDEFINED) THEN
58     
59              IF(0.5d0*DES_INTERP_WIDTH > DXYZ_MIN .OR.                     &
60                 0.5d0*DES_INTERP_WIDTH > DG_DXYZ_MIN) THEN
61     
62                 WRITE(ERR_MSG,2130) DXYZ_MIN, DG_DXYZ_MIN, DES_INTERP_WIDTH
63                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
64     
65      2130 FORMAT('Error 2130: The specified DES_INTERP_WIDTH is too ',     &
66              'large. The',/'interpolation half-width should not exceed ',  &
67              'either the minimum fluid',/'cell dimension [DES_INTERP_',    &
68              'WIDTH/2.0 <= min(DX,DY,DZ)] nor should it',/'exceed the ',   &
69              'minimum DES grid cell.',2/3x,'Minimum fluid cell dimension:',&
70              5x,g12.4,/3x,'Minimum DES grid cell dimension:',2x,g12.4/3x,  &
71              'DES_INTERP_WIDTH:',17x,g12.4,2/,'By default, the DES grid ', &
72              'dimensions are calculated as three times the',/'maximum ',   &
73              'particle diameter. This can be altered by specifying',/'DES',&
74              'GRIDSEARCH_IMAX, DESGRIDSEARCH_JMAX, and DESGRIDSEARH_KMAX ',&
75              'in the',/'mfix.dat file.')
76     
77              ELSE
78                 FILTER_WIDTH_INTERP = 0.500d0*DES_INTERP_WIDTH
79              ENDIF
80     
81     
82           ENDIF
83     
84     
85     ! Calculate reused quanties
86           SELECT CASE(DES_INTERP_SCHEME_ENUM)
87     
88           CASE(DES_INTERP_GARG)
89     ! Compute the volume of nodes needed in drag_fgs_des0.f
90              CALL COMPUTE_VOLUME_OF_NODES
91     ! Setup MPI exchange arrys for nodes
92              CALL DES_SETNODEINDICES
93     
94           CASE(DES_INTERP_DPVM, DES_INTERP_GAUSS)
95              OoFILTER_VOL = 0.25d0/(FILTER_WIDTH_INTERP**3)
96              FILTER_WIDTH_INTERPx3 = FILTER_WIDTH_INTERP*3
97           END SELECT
98     
99           CALL FINL_ERR_MSG
100     
101           RETURN
102           END SUBROUTINE SET_FILTER_DES
103