36 1 INTBUF_TAB ,IPARI ,DT2T ,NELTST ,NSENSOR ,
37 2 ITYPTST,XSLV ,XMSR ,VSLV ,VMSR ,
38 3 INTSTAMP,X21MSR,V21MSR ,SENSOR_TAB,NBINTC21,
49#include "implicit_f.inc"
58#include "intstamp_c.inc"
66 INTEGER ,
INTENT(IN) :: NSENSOR
67 INTEGER IPARI(NPARI,*),
68 . NELTST, ITYPTST,NBINTC21,
73 . xslv(18,*), xmsr(12,*), vslv(6,*), vmsr(6,*),
74 . x21msr(3,*), v21msr(3,*)
76 TYPE(INTBUF_STRUCT_) INTBUF_TAB(*)
77 TYPE (SENSOR_STR_) ,
DIMENSION(NSENSOR) :: SENSOR_TAB
82 . N,ITY,IMESS, ISENS,INTERACT
84 . XX,XY,XZ,DIST0(NINTSTAMP),
85 . vx(nintstamp),vy(nintstamp),vz(nintstamp),dti,
87 . vv(nintstamp),criterl(nintstamp
99 i = intstamp(kk)%NOINTER
110 ts = sensor_tab(isens)%TSTART
111 IF (tt>=ts) interact = 1
113 startt = intbuf_tab(i)%VARIABLES(3)
114 stopt = intbuf_tab(i)%VARIABLES(11)
115 IF (startt<=tt.AND.tt<=stopt) interact = 1
120 xx =
max(xslv(1,i)-xmsr(4,i),
122 xy =
max(xslv(2,i)-xmsr(5,i),
124 xz =
max(xslv(3,i)-xmsr(6,i),
125 . xmsr(3,i)-xslv(6,i),zero)
127 dist0(kk) = intbuf_tab(i)%VARIABLES(5)
129 - - sqrt(x21msr(1,kk)**2+x21msr(2,kk)**2+x21msr(3,kk)**2)
130 IF(dist0(kk)<=zero)
THEN
131 intbuf_tab(i)%VARIABLES(5) = -one
132 IF(debug(3)>=1.AND.ncycle/=0)
THEN
133 WRITE(istdo,
'(A,I10,A,I10,I10)')
134 .
'** NEW SORT FOR INTERFACE NUMBER ',
135 . ipari(15,i),
' AT CYCLE ',ncycle,ispmd+1
136 WRITE(iout,
'(A,I10,A,I10,I10)')
137 .
'** NEW SORT FOR INTERFACE NUMBER ',
138 . ipari(15,i),
' AT CYCLE ',ncycle,ispmd+1
144 vx(kk) =
max(vslv(1,i)-vmsr(4,i),
145 . vmsr(1,i)-vslv(4,i),zero)
146 vy(kk) =
max(vslv(2,i)-vmsr(5,i),
147 . vmsr(2,i)-vslv(5,i),zero)
148 vz(kk) =
max(vslv(3,i)-vmsr(6,i),
149 . vmsr(3,i)-vslv(6,i),zero)
150 criterl(kk) =intbuf_tab(i)%VARIABLES(6)
162 kk = intstamp(j)%NOINTER
163 IF(dist0(j)<=zero)
THEN
164 intbuf_tab(kk)%VARIABLES(5) = -one
165 IF(debug(3)>=1.AND.ncycle/=0)
THEN
166 WRITE(istdo,
'(A,I10,A,I10,I10)')
167 .
'** NEW SORT FOR INTERFACE NUMBER ',
168 . ipari(15,i),
' AT CYCLE ',ncycle,ispmd+1
169 WRITE(iout,
'(A,I10,A,I10,I10)')
170 .
'** NEW SORT FOR INTERFACE NUMBER ',
171 . ipari(15,i),
' AT CYCLE ',ncycle,ispmd+1
178 i = intstamp(kk)%NOINTER
181 vv(kk) = sqrt(vx(kk)**2+vy(kk)**2+vz(kk)**2)
182 . +sqrt(v21msr(1,kk)**2+v21msr(2,kk)**2+v21msr(3,kk)**2)
184 IF(vv(kk)/=zero)
THEN
185 dti = zep9*criterl(kk)/vv(kk)
191 IF(dti <= dtmin1(10) .AND. idtmin(10)==1)
THEN
192 WRITE(iout,
'(A,E12.4,A,I10)')
193 .
' **WARNING MINIMUM TIME STEP ',dti,
194 .
' IN INTERFACE ID=',ipari(15,i)
195 IF (istamping == 1) imess=1
204 IF(imess/=0.AND.ispmd==0)
THEN
206 .
'The run encountered a problem in an interface Type 21:'
207 WRITE(istdo,
'(A)')
'You may need to check if there is enou'//
208 .
'gh clearance between the tools.'
210 .
'The run encountered a problem in an interface Type 21:'
211 WRITE(iout,
'(A)')
'You may need to check if there is enou'//
212 .
'gh clearance between the tools.'
subroutine i21_icrit(intbuf_tab, ipari, dt2t, neltst, nsensor, ityptst, xslv, xmsr, vslv, vmsr, intstamp, x21msr, v21msr, sensor_tab, nbintc21, intlist21)