36 1 X ,IRECT ,NSV ,INACTI ,
37 2 NRTM ,NSN ,CAND_E ,CAND_N ,GAP ,
38 3 NOINT ,II_STOK ,TZINF , MAXBOX ,MINBOX ,
39 4 NCONTACT,NB_N_B ,ESHIFT ,CAND_P ,NCONT ,
40 6 ILD ,WEIGHT ,STFN ,NIN ,
41 7 STF ,IGAP ,GAP_S ,GAPMIN ,GAPMAX ,
42 8 ICURV ,NUM_IMP ,ITASK ,
43 9 I_MEM ,MSR ,GAP_M ,NSNR ,CURV_MAX,
44 A RENUM ,NSNROLD ,IFPEN ,MWAG ,BMINMA ,
45 B NMN ,IRECTG ,BGAPSMX ,INTHEAT,IDT_THERM,NODADT_THERM)
54#include "implicit_f.inc"
65 INTEGER NRTM, NSN, NOINT,IDT,INACTI,NIN,NSNR,NSNROLD,NMN,ITASK
66 INTEGER IRECT(4,*), NSV(*), NUM_IMP, (4,*)
67 INTEGER CAND_E(*),CAND_N(*),MSR(*),MWAG(*),RENUM(*),IFPEN(*)
68 INTEGER NCONTACT,ESHIFT,ILD,NB_N_B, I_MEM,IGAP,ICURV,NCONT,
70 INTEGER,
INTENT(IN) :: INTHEAT
71 INTEGER,
INTENT(IN) :: IDT_THERM
72 INTEGER,
INTENT(IN) :: NODADT_THERM
75 . gap,tzinf,maxbox,minbox,
76 . gapmin, gapmax, bminma(6),curv_max(nrtm), bgapsmx,
79 . x(3,*), stfn(*), stf(*), gap_s(*), gap_m(*),
85 PARAMETER (I_ADD_MAX = 1001)
87 INTEGER I, J, I_ADD, IP0, IP1, MAXSIZ,
88 . add(2,i_add_max), loc_proc, n, isznsnr,
92 . xyzm(6,i_add_max-1), marge, aaa
101 INTEGER (KIND=8) :: NBX8,,NBZ8,RES8,LVOXEL8
119 maxsiz = 3*(nrtm+100)
122 ip1 = ip0 + nsn + nsnrold + 3
138 xyzm(1,i_add) = bminma(4)
139 xyzm(2,i_add) = bminma(5)
140 xyzm(3,i_add) = bminma(6)
141 xyzm(4,i_add) = bminma(1)
142 xyzm(5,i_add) = bminma(2)
143 xyzm(6,i_add) = bminma(3)
152 marge = tzinf - sqrt(three)*gap
166 . ((bminma(1)-bminma(4))*(bminma(2)-bminma(5))
167 . +(bminma(2)-bminma(5))*(bminma(3)-bminma(6))
168 . +(bminma(3)-bminma(6))*(bminma(1)-bminma(4))))
172 nbx = nint(aaa*(bminma(1)-bminma(4)))
173 nby = nint(aaa*(bminma(2)-bminma(5)))
174 nbz = nint(aaa*(bminma(3)-bminma(6)))
182 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
185 IF(res8 > lvoxel8)
THEN
187 aaa = aaa/((nbx8+2)*(nby8+2)*(nbz8+2))
189 nbx = int((nbx+2)*aaa)-2
190 nby = int((nby+2)*aaa)-2
191 nbz = int((nbz+2)*aaa)-2
200 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
202 IF(res8 > lvoxel8)
THEN
203 nbx =
min(100,
max(nbx8,1))
204 nby =
min(100,
max(nby8,1))
205 nbz =
min(100,
max(nbz8,1))
210 DO i=
inivoxel,(nbx+2)*(nby+2)*(nbz+2)
216 1 nsn ,renum ,nsnr ,isznsnr ,i_mem ,
217 2 irect ,x ,stf ,stfn ,xyzm ,
218 3 nsv ,ii_stok ,cand_n ,eshift ,cand_e ,
219 4 ncontact,noint ,tzinf ,msr ,
221 6 inacti ,mwag(ip0),cand_p ,ifpen ,
222 7 nrtm ,nsnrold ,igap ,gap ,gap_s ,
223 8 gap_m ,gapmin ,gapmax ,marge ,curv_max,
224 9 nin ,itask ,bgapsmx ,intheat,idt_therm,nodadt_therm)
231 IF (i_mem ==2)
RETURN
234 IF ( nb_n_b > nsn)
THEN
235 IF (istamping == 1)
THEN
236 CALL ancmsg(msgid=101,anmode=aninfo,
239 CALL ancmsg(msgid=85,anmode=aninfo,
245 ELSEIF(i_mem==2)
THEN
249 WRITE(istdo,*)
' **WARNING INTERFACE/MEMORY'
250 WRITE(iout,*)
' **WARNING INTERFACE NB:',noint
251 WRITE(iout,*)
' TOO MANY POSSIBLE IMPACTS'
252 WRITE(iout,*)
' SIZE OF INFLUENCE ZONE IS'
253 WRITE(iout,*)
' MULTIPLIED BY 0.75'
254#include "lockoff.inc"
257 tzinf = three_over_4*tzinf
261 IF( tzinf<=gap )
THEN
262 CALL ancmsg(msgid=98,anmode=aninfo,
263 . i1=noint,c1=
'(I23BUCE)')
269 IF ( nb_n_b > ncont)
THEN
270 CALL ancmsg(msgid=100,anmode=aninfo,
subroutine i23buce(x, irect, nsv, inacti, nrtm, nsn, cand_e, cand_n, gap, noint, ii_stok, tzinf, maxbox, minbox, ncontact, nb_n_b, eshift, cand_p, ncont, ild, weight, stfn, nin, stf, igap, gap_s, gapmin, gapmax, icurv, num_imp, itask, i_mem, msr, gap_m, nsnr, curv_max, renum, nsnrold, ifpen, mwag, bminma, nmn, irectg, bgapsmx, intheat, idt_therm, nodadt_therm)
subroutine i23trivox(nsn, renum, nsnr, isznsnr, i_mem, irect, x, stf, stfn, xyzm, nsv, ii_stok, cand_n, eshift, cand_e, mulnsn, noint, tzinf, msr, voxel, nbx, nby, nbz, inacti, cand_a, cand_p, ifpen, nrtm, nsnrold, igap, gap, gap_s, gap_m, gapmin, gapmax, marge, curv_max, nin, itask, bgapsmx, intheat, idt_therm, nodadt_therm)
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)