File: N:\mfix\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 sendrecvnode, only: INIT_DES_COLLECT_gDATA
34           use mpi_utility, only: GLOBAL_ALL_MIN
35     
36           use error_manager
37     
38           IMPLICIT NONE
39     
40           DOUBLE PRECISION :: DXYZ_MIN, DG_DXYZ_MIN
41     
42     
43     !......................................................................!
44     
45     ! Initialize the error manager.
46           CALL INIT_ERR_MSG("SET_FILTER_DES")
47     
48     ! Get the minimum fluid cell dimension
49           DXYZ_MIN = min(minval(DX(IMIN1:IMAX1)),minval(DY(JMIN1:JMAX1)))
50           IF(DO_K) DXYZ_MIN = min(DXYZ_MIN,minval(DZ(KMIN1:KMAX1)))
51     
52     ! Get the minimum DES grid cell dimension
53           DG_DXYZ_MIN = min(ONE/DG_DXinv, ONE/DG_DYinv)
54           IF(DO_K) DG_DXYZ_MIN = min(DG_DXYZ_MIN, ONE/DG_DZinv)
55           CALL GLOBAL_ALL_MIN(DG_DXYZ_MIN)
56     
57     ! Verify that the interpolation scheme doesn't exceed the grid.
58           IF(DES_INTERP_WIDTH /= UNDEFINED) THEN
59     
60              IF(0.5d0*DES_INTERP_WIDTH > DXYZ_MIN .OR.                     &
61                 0.5d0*DES_INTERP_WIDTH > DG_DXYZ_MIN) THEN
62     
63                 WRITE(ERR_MSG,2130) DXYZ_MIN, DG_DXYZ_MIN, DES_INTERP_WIDTH
64                 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
65     
66      2130 FORMAT('Error 2130: The specified DES_INTERP_WIDTH is too ',     &
67              'large. The',/'interpolation half-width should not exceed ',  &
68              'either the minimum fluid',/'cell dimension [DES_INTERP_',    &
69              'WIDTH/2.0 <= min(DX,DY,DZ)] nor should it',/'exceed the ',   &
70              'minimum DES grid cell.',2/3x,'Minimum fluid cell dimension:',&
71              5x,g12.4,/3x,'Minimum DES grid cell dimension:',2x,g12.4/3x,  &
72              'DES_INTERP_WIDTH:',17x,g12.4,2/,'By default, the DES grid ', &
73              'dimensions are calculated as three times the',/'maximum ',   &
74              'particle diameter. This can be altered by specifying',/'DES',&
75              'GRIDSEARCH_IMAX, DESGRIDSEARCH_JMAX, and DESGRIDSEARH_KMAX ',&
76              'in the',/'mfix.dat file.')
77     
78              ELSE
79                 FILTER_WIDTH_INTERP = 0.500d0*DES_INTERP_WIDTH
80              ENDIF
81     
82     
83           ENDIF
84     
85     
86     ! Calculate reused quanties
87           SELECT CASE(DES_INTERP_SCHEME_ENUM)
88     
89           CASE(DES_INTERP_GARG)
90     ! Compute the volume of nodes needed in drag_fgs_des0.f
91              CALL COMPUTE_VOLUME_OF_NODES
92     ! Setup MPI exchange arrys for nodes
93              CALL DES_SETNODEINDICES
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              CALL INIT_DES_COLLECT_gDATA
98           END SELECT
99     
100     
101           CALL FINL_ERR_MSG
102     
103           RETURN
104           END SUBROUTINE SET_FILTER_DES
105