File: RELATIVE:/../../../mfix.git/model/des/set_filter_des.f
1
2
3
4
5
6
7
8
9 SUBROUTINE SET_FILTER_DES
10
11
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
45 CALL INIT_ERR_MSG("SET_FILTER_DES")
46
47
48 = min(minval(DX(IMIN1:IMAX1)),minval(DY(JMIN1:JMAX1)))
49 IF(DO_K) DXYZ_MIN = min(DXYZ_MIN,minval(DZ(KMIN1:KMAX1)))
50
51
52 = 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
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
86 SELECT CASE(DES_INTERP_SCHEME_ENUM)
87
88 CASE(DES_INTERP_GARG)
89
90 CALL COMPUTE_VOLUME_OF_NODES
91
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