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 , NSN, NOINT, INACTI, NIN, NSNR, NSNROLD, NMN, ITASK
66 INTEGER IRECT(4,*), NSV(*), NUM_IMP, IRECTG(4,*)
67 INTEGER (*),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
78 . x(3,*), stfn(*), stf(*), gap_s(*), gap_m(*),
84 parameter(i_add_max = 1001)
86 INTEGER I, I_ADD, IP0, IP1, MAXSIZ,
87 . add(2,i_add_max), isznsnr
90 . xyzm(6,i_add_max-1), marge, aaa
99 INTEGER (KIND=8) :: NBX8,NBY8,NBZ8,RES8,LVOXEL8
117 maxsiz = 3*(nrtm+100)
120 ip1 = ip0 + nsn + nsnrold + 3
136 xyzm(1,i_add) = bminma(4)
137 xyzm(2,i_add) = bminma(5)
138 xyzm(3,i_add) = bminma(6)
139 xyzm(4,i_add) = bminma(1)
140 xyzm(5,i_add) = bminma(2)
141 xyzm(6,i_add) = bminma(3)
150 marge = tzinf - sqrt(three)*gap
164 . ((bminma(1)-bminma(4))*(bminma(2)-bminma(5))
165 . +(bminma(2)-bminma(5))*(bminma(3)-bminma(6))
166 . +(bminma(3)-bminma(6))*(bminma(1)-bminma(4))))
170 nbx = nint(aaa*(bminma(1)-bminma(4)))
171 nby = nint(aaa*(bminma(2)-bminma(5)))
172 nbz = nint(aaa*(bminma(3)-bminma(6)))
180 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
183 IF(res8 > lvoxel8)
THEN
185 aaa = aaa/((nbx8+2)*(nby8+2)*(nbz8+2))
187 nbx = int((nbx+2)*aaa)-2
188 nby = int((nby+2)*aaa)-2
189 nbz = int((nbz+2)*aaa)-2
198 res8=(nbx8+2)*(nby8+2)*(nbz8+2)
200 IF(res8 > lvoxel8)
THEN
201 nbx =
min(100,
max(nbx8,1))
202 nby =
min(100,
max(nby8,1))
203 nbz =
min(100,
max(nbz8,1))
208 DO i=
inivoxel,(nbx+2)*(nby+2)*(nbz+2)
214 1 nsn ,renum ,nsnr ,isznsnr ,i_mem ,
215 2 irect ,x ,stf ,stfn ,xyzm ,
216 3 nsv ,ii_stok ,cand_n ,eshift ,cand_e ,
217 4 ncontact,noint ,tzinf ,msr ,
219 6 inacti ,mwag(ip0),cand_p ,ifpen ,
220 7 nrtm ,nsnrold ,igap ,gap ,gap_s ,
221 8 gap_m ,gapmin ,gapmax ,marge ,curv_max,
222 9 nin ,itask ,bgapsmx ,intheat,idt_therm,nodadt_therm)
228 IF (i_mem ==2)
RETURN
231 IF ( nb_n_b > nsn)
THEN
232 IF (istamping == 1)
THEN
233 CALL ancmsg(msgid=101,anmode=aninfo,
236 CALL ancmsg(msgid=85,anmode=aninfo,
242 ELSEIF(i_mem==2)
THEN
246 WRITE(istdo,*)
' **WARNING INTERFACE/MEMORY'
247 WRITE(iout,*)
' **WARNING INTERFACE NB:'
248 WRITE(iout,*)
' TOO MANY POSSIBLE IMPACTS'
249 WRITE(iout,*)
' SIZE OF INFLUENCE ZONE IS'
250 WRITE(iout,*)
' MULTIPLIED BY 0.75'
251#include "lockoff.inc"
254 tzinf = three_over_4*tzinf
258 IF( tzinf<=gap )
THEN
259 CALL ancmsg(msgid=98,anmode=aninfo,
260 . i1=noint,c1=
'(I23BUCE)')
266 IF ( nb_n_b > ncont)
THEN
267 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)