File: /nfs/home/0/users/jenkins/mfix.git/model/dqmom/usr_dqmom.f

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     
17           USE geometry
18           USE indices
19           USE compar
20           USE usr
21           USE functions
22     
23           IMPLICIT NONE
24     
25     
26           INTEGER :: IJK
27     ! phase index
28           double precision t1,t2
29     ! beginning time and stop time
30           double precision eps
31     ! error
32           double precision h1,hmin
33           integer nok, nbad,I,J,K
34           double precision YY,XX
35           double precision max1, min1, max_min
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
97