File: /nfs/home/0/users/jenkins/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 cutcell, only: CARTESIAN_GRID
13
14 use discretelement, only: DES_CONTINUUM_COUPLED
15
16 use geometry, only: DX, IMIN1, IMAX1
17 use geometry, only: DY, JMIN1, JMAX1
18 use geometry, only: DZ, KMIN1, KMAX1, DO_K
19
20 use particle_filter, only: DES_INTERP_SCHEME_ENUM
21 use particle_filter, only: DES_INTERP_NONE
22 use particle_filter, only: DES_INTERP_GARG
23 use particle_filter, only: DES_INTERP_DPVM
24 use particle_filter, only: DES_INTERP_GAUSS
25 use particle_filter, only: DES_INTERP_SCHEME
26
27 use particle_filter, only: DES_INTERP_WIDTH
28 use particle_filter, only: FILTER_WIDTH_INTERP
29 use particle_filter, only: DES_INTERP_MEAN_FIELDS
30 use particle_filter, only: DES_INTERP_ON
31
32 use particle_filter, only: OoFILTER_VOL
33 use particle_filter, only: FILTER_WIDTH_INTERPx3
34
35 use desgrid, only: DG_DXinv, DG_DYinv, DG_DZinv
36
37 use param1, only: ONE, UNDEFINED, UNDEFINED_C
38
39 use sendrecvnode, only: DES_SETNODEINDICES
40 use mpi_utility, only: GLOBAL_ALL_MIN
41
42 use error_manager
43
44 IMPLICIT NONE
45
46 DOUBLE PRECISION :: DXYZ_MIN, DG_DXYZ_MIN
47
48
49
50
51
52 CALL INIT_ERR_MSG("SET_FILTER_DES")
53
54
55 = min(minval(DX(IMIN1:IMAX1)),minval(DY(JMIN1:JMAX1)))
56 IF(DO_K) DXYZ_MIN = min(DXYZ_MIN,minval(DZ(KMIN1:KMAX1)))
57
58
59 = min(ONE/DG_DXinv, ONE/DG_DYinv)
60 IF(DO_K) DG_DXYZ_MIN = min(DG_DXYZ_MIN, ONE/DG_DZinv)
61 CALL GLOBAL_ALL_MIN(DG_DXYZ_MIN)
62
63
64 IF(DES_INTERP_WIDTH /= UNDEFINED) THEN
65
66 IF(0.5d0*DES_INTERP_WIDTH > DXYZ_MIN .OR. &
67 0.5d0*DES_INTERP_WIDTH > DG_DXYZ_MIN) THEN
68
69 WRITE(ERR_MSG,2130) DXYZ_MIN, DG_DXYZ_MIN, DES_INTERP_WIDTH
70 CALL FLUSH_ERR_MSG(ABORT=.TRUE.)
71
72 2130 FORMAT('Error 2130: The specified DES_INTERP_WIDTH is too ', &
73 'large. The',/'interpolation half-width should not exceed ', &
74 'either the minimum fluid',/'cell dimension [DES_INTERP_', &
75 'WIDTH/2.0 <= min(DX,DY,DZ)] nor should it',/'exceed the ', &
76 'minimum DES grid cell.',2/3x,'Minimum fluid cell dimension:',&
77 5x,g12.4,/3x,'Minimum DES grid cell dimension:',2x,g12.4/3x, &
78 'DES_INTERP_WIDTH:',17x,g12.4,2/,'By default, the DES grid ', &
79 'dimensions are calculated as three times the',/'maximum ', &
80 'particle diameter. This can be altered by specifying',/'DES',&
81 'GRIDSEARCH_IMAX, DESGRIDSEARCH_JMAX, and DESGRIDSEARH_KMAX ',&
82 'in the',/'mfix.dat file.')
83
84
85
86 ELSEIF(0.5d0*DES_INTERP_WIDTH == DXYZ_MIN .OR. &
87 0.5d0*DES_INTERP_WIDTH == DG_DXYZ_MIN) THEN
88
89 FILTER_WIDTH_INTERP = 0.499d0*DXYZ_MIN
90 ELSE
91 FILTER_WIDTH_INTERP = 0.500d0*DES_INTERP_WIDTH
92 ENDIF
93
94
95 ENDIF
96
97
98
99 SELECT CASE(DES_INTERP_SCHEME_ENUM)
100
101 CASE(DES_INTERP_GARG)
102
103 CALL COMPUTE_VOLUME_OF_NODES
104
105 CALL DES_SETNODEINDICES
106
107 CASE(DES_INTERP_DPVM, DES_INTERP_GAUSS)
108 OoFILTER_VOL = 0.25d0/(FILTER_WIDTH_INTERP**3)
109 FILTER_WIDTH_INTERPx3 = FILTER_WIDTH_INTERP*3
110 END SELECT
111
112 CALL FINL_ERR_MSG
113
114 RETURN
115 END SUBROUTINE SET_FILTER_DES
116