36
37
38
39
40
41
42
43
44
45
46
47
48
49
51
52
53
54#include "implicit_f.inc"
55#include "comlock.inc"
56
57
58
59#include "task_c.inc"
60
61
62
63 INTEGER, intent(in) :: NBRIC, IXS(NIXS,*), ITAB(*)
65 . x(3,*),
66 . bminma_flu_l(6), bminma_lag_r(6)
68 . bminma_and(6)
70 . xmaxs(nbric), ymaxs(nbric), zmaxs(nbric),
71 . xmins(nbric), ymins(nbric), zmins(nbric)
72
73
74
75 INTEGER LOC_PROC,IB,NE,I,
76 . NBX,NBY,NBZ,NEDG,M1,M2,M3,M4,M5,M6,M7,M8,
77 . IX1,IY1,IZ1,IX2,IY2,IZ2,IX,IY,IZ,
78 . BUFBRIC(NBRIC),NBF,NBL,ITASK
80 . xmaxb,ymaxb,zmaxb,xminb,yminb,zminb,
81 . xmine,ymine,zmine,xmaxe,ymaxe,zmaxe,
82 . xx1,xx2,xx3,xx4,xx5, xx6, xx7, xx8,
83 . yy1,yy2,yy3,yy4,yy5, yy6, yy7, yy8,
84 . zz1,zz2,zz3,zz4,zz5, zz6, zz7, zz8,
85 . dx,dy,dz
86 LOGICAL :: IS_CONTACT
87
88
89
90
91
92
93
94
95
96 loc_proc = ispmd + 1
97
101
102
103
104
105 xmaxb =
min( bminma_flu_l(1), bminma_lag_r(1) )
106 ymaxb =
min( bminma_flu_l(2), bminma_lag_r(2) )
107 zmaxb =
min( bminma_flu_l(3), bminma_lag_r(3) )
108 xminb =
max( bminma_flu_l(4), bminma_lag_r(4) )
109 yminb =
max( bminma_flu_l(5), bminma_lag_r(5) )
110 zminb =
max( bminma_flu_l(6), bminma_lag_r(6) )
111
112 dx = xmaxb-xminb
113 dy = ymaxb-yminb
114 dz = zmaxb-zminb
115
116
117 IF ( (dx<=zero).OR.(dy<=zero).OR.(dz<=zero) ) THEN
118 is_contact = .false.
119 RETURN
120 ELSE
121 is_contact = .true.
122 END IF
123
124 bminma_and(1)=xmaxb
125 bminma_and(2)=ymaxb
126 bminma_and(3)=zmaxb
127 bminma_and(4)=xminb
128 bminma_and(5)=yminb
129 bminma_and(6)=zminb
130
131 nbf = 1+itask*nbric/nthread
132 nbl = (itask+1)*nbric/nthread
133
134 DO ib=nbf,nbl
135
136
137
138
139 ix1=int(nbx*(xmins(ib)-xminb)/dx)
140 iy1=int(nby*(ymins(ib)-yminb)/dy)
141 iz1=int(nbz*(zmins(ib)-zminb)/dz)
145
146 ix2=int(nbx*(xmaxs(ib)-xminb)/dx)
147 iy2=int(nby*(ymaxs(ib)-yminb)/dy)
148 iz2=int(nbz*(zmaxs(ib)-zminb)/dz)
152
153
154
155#include "lockon.inc"
156 DO iz = iz1, iz2
157 DO iy = iy1, iy2
158 DO ix = ix1, ix2
160 END DO
161 END DO
162 END DO
163#include "lockoff.inc"
164 ENDDO
165
166
167 RETURN
integer, dimension(0:lrvoxel, 0:lrvoxel) crvoxel