MFIX  2016-1
usr_dqmom.f
Go to the documentation of this file.
1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv!
2 ! !
3 ! Module name: USR_DQMOM !
4 ! Author: rong fan Date: dd-mmm-yy !
5 ! !
6 ! Purpose: This routine is called from the time loop and is !
7 ! user-definable tosolve teh population equation !
8 ! !
9 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^!
10  SUBROUTINE usr_dqmom
11 
12  USE run, only: call_dqmom, time, dt
13  USE scalars, only: nscalar
14  USE scalars, only: ijk_index, ystart
15  USE fldvar, only: rop_s, ro_s, scalar
16  use param, only: dim_scalar2
17 
18  USE geometry
19  USE indices
20  USE compar
21  USE usr
22  USE functions
23 
24  IMPLICIT NONE
25 
26 
27  INTEGER :: IJK
28 ! phase index
29  double precision t1,t2
30 ! beginning time and stop time
31  double precision eps
32 ! error
33  double precision h1,hmin
34  integer nok, nbad,I,K
35  double precision max1, min1
36 
37  IF(.NOT.call_dqmom) RETURN
38 
39 ! Insert user-defined code here
40  IF(time<= 1e-15) THEN
41  t1 =time
42  t2= time
43  ELSE
44  t1= time-dt
45  t2= time
46  ENDIF
47 
48 
49  eps=1.0e-3
50  h1=1.0e-4
51  hmin=0
52  nok=0
53  nbad=0
54 ! n=2*Nscalar
55 
56 
57 
58  DO ijk = ijkstart3, ijkend3
59 
60  IF(.NOT.fluid_at(ijk)) cycle
61 
62  DO i=1,nscalar
63  ystart(i)=rop_s(ijk,i)/ro_s(ijk,i)
64  ENDDO
65 
66  DO i=nscalar+1,2*nscalar
67  ystart(i)=scalar(ijk,i-nscalar)
68  ENDDO
69 
70  ijk_index=ijk
71  max1=ystart(1)
72 
73  DO k=2,nscalar
74  max1=max(max1,ystart(k))
75  ENDDO
76 
77  min1=ystart(1)
78 
79  DO k=2,nscalar
80  min1=min(min1,ystart(k))
81  ENDDO
82 
83 
84  IF(max1>1.0e-3) THEN
85  call odeint(ystart,dim_scalar2,t1,t2,eps,h1, hmin,nok,nbad)
86  ENDIF
87 
88  DO i=1,nscalar
89  rop_s(ijk,i) = ystart(i)*ro_s(ijk,i)
90  scalar(ijk,i) = ystart(i+nscalar)
91  ENDDO
92 
93  ENDDO
94 
95  RETURN
96  END SUBROUTINE usr_dqmom
integer ijk_index
Definition: scalars_mod.f:31
integer ijkend3
Definition: compar_mod.f:80
subroutine odeint(ystart1, nvar, x1, x2, eps, h1, hmin, nok, nbad)
Definition: odeint.f:3
double precision, dimension(:,:), allocatable scalar
Definition: fldvar_mod.f:155
double precision dt
Definition: run_mod.f:51
logical call_dqmom
Definition: run_mod.f:127
Definition: run_mod.f:13
integer dim_scalar2
Definition: param_mod.f:24
Definition: param_mod.f:2
double precision, dimension(:,:), allocatable ro_s
Definition: fldvar_mod.f:45
Definition: usr_mod.f:1
integer ijkstart3
Definition: compar_mod.f:80
integer nscalar
Definition: scalars_mod.f:7
double precision, dimension(:,:), allocatable rop_s
Definition: fldvar_mod.f:51
double precision, dimension(:), allocatable ystart
Definition: scalars_mod.f:28
double precision time
Definition: run_mod.f:45
subroutine usr_dqmom
Definition: usr_dqmom.f:11