File: N:\mfix\model\cal_d.f

1     
2     !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
3     !SUBROUTINE CAL_D calculates shear velocity
4     !
5     
6           SUBROUTINE CAL_D(V_sh)
7     
8           USE param
9           USE param1
10           USE parallel
11           USE scales
12           USE constant
13           USE physprop
14           USE fldvar
15           USE visc_s
16           USE rxns
17           USE toleranc
18           USE geometry
19           USE indices
20           USE is
21           USE tau_s
22           USE bc
23           USE vshear
24           USE compar
25           USE fun_avg
26           USE functions
27     
28           DOUBLE PRECISION V_sh,dis
29     !     DOUBLE PRECISION xdist(IMAX2,JMAX2)
30     !     DOUBLE PRECISION xdist3(IMAX2,JMAX2,KMAX2),cnter3(IMAX2,JMAX2,KMAX2)
31     
32     !//SP Note the rational behind using global direction in I direction. This is to ensure
33     !     correctness in the way distances are calculated in the serial version and also
34     !     to give the capability to perform calculations over additional ghost layers in
35     !     to avoid if checks and communication
36           DOUBLE PRECISION xdist(IMIN3:IMAX3,JSTART3:JEND3)
37           DOUBLE PRECISION xdist3(IMIN3:IMAX3,JSTART3:JEND3,KSTART3:KEND3)
38     
39           INTEGER IJK,I1,J1,K1,I,J,K
40     
41           IF (NO_K) THEN
42     
43     !calculate distances
44           DO  J1= JSTART3, JEND3
45             xdist(1,J1)=1d0/(ODX(1))
46             if(imin3.ne.imin2) xdist(IMIN3,J1)=-1d0/(ODX(IMIN3))
47             DO  I1 = 2, IMAX3
48             xdist(I1,J1)=1d0/(ODX(I1))+xdist((I1-1),J1)
49             END DO
50           END DO
51     
52           DO  IJK= ijkstart3, ijkend3
53               I = I_OF(IJK)
54               J = J_OF(IJK)
55     
56             dis=xdist(I,J)
57     
58     !shear velocity alligned u momentum cells
59     
60             VSHE(IJK)=V_sh-2d0*(1d0-(dis-(1d0/ODX(I))/xlength))*V_sh
61     
62     !shear velocity alligned with scalar, v, w momentum cells
63     
64             VSH(IJK)=V_sh-2d0*(1d0-(dis-(1d0/ODX(I))/xlength))*V_sh&
65             -2d0*(1d0/(2d0*ODX(I)*xlength))*V_sh
66     
67           END DO
68     
69     
70           ELSE
71     
72     !calculate distances
73           DO K1=KSTART3,KEND3
74             DO J1= JSTART3, JEND3
75               IF (DEAD_CELL_AT(1,J1,K1)) CYCLE  ! skip dead cells
76               xdist3(1,J1,K1)=1d0/(ODX(1))
77               if(imin3.ne.imin2) xdist(IMIN3,J1)=-1d0/(ODX(IMIN3))
78               DO  I1 = 2, IMAX3
79                IF (DEAD_CELL_AT(I1,J1,K1)) CYCLE  ! skip dead cells
80                xdist3(I1,J1,K1)=1d0/(ODX(I1))+xdist3((I1-1),J1,K1)
81               END DO
82             END DO
83           END DO
84     
85     
86           DO  IJK= ijkstart3, ijkend3
87               I = I_OF(IJK)
88               J = J_OF(IJK)
89               K = K_OF(IJK)
90     
91               dis=xdist3(I,J,K)
92     
93     !shear velocity alligned u momentum cells
94     
95             VSHE(IJK)=V_sh-2d0*(1d0-(dis-(1d0/ODX(I))/xlength))*V_sh
96     
97     !shear velocity alligned with scalar, v, w momentum cells
98     
99             VSH(IJK)=V_sh-2d0*(1d0-(dis-(1d0/ODX(I))/xlength))*V_sh&
100             -2d0*(1d0/(2d0*ODX(I)*xlength))*V_sh
101     
102           END DO
103     
104           END IF
105           RETURN
106           END SUBROUTINE CAL_D
107     
108     !// Comments on the modifications for DMP version implementation
109     !// 001 Include header file and common declarations for parallelization
110     !// 350 Changed do loop limits: 1,ijkmax2-> ijkstart3, ijkend3
111     !// 350 1206 change do loop limits: 1,kmax2->kstart3,kend3
112     
113