51#include "implicit_f.inc"
60 INTEGER NBCSCYNN,NOM_OPT(LNOPT1,*)
64 TYPE (GROUP_) ,
TARGET,
DIMENSION(NGRNOD) :: IGRNOD
68 INTEGER I,IGR1,IGR2,IGRS1,IGRS2,NBCS_CY_N,ID,SUB_INDEX
69 CHARACTER(LEN=NCHARKEY) :: KEY
70 CHARACTER(LEN=NCHARTITLE) :: TITR
77 INTEGER,
DIMENSION(:),
POINTER :: INGR2USR
81 is_available = .false.
99 . submodel_index = sub_index,
101 IF (key(1:6) /=
'CYCLIC' ) cycle
103 CALL fretitl(titr,nom_opt(lnopt1-ltitr+1,i),ltitr)
105 CALL hm_get_intv(
'grnd_ID1',igr1,is_available,lsubmodel)
106 CALL hm_get_intv(
'grnd_ID2',igr2,is_available,lsubmodel)
107 ingr2usr => igrnod(1:ngrnod)%ID
108 igrs1=ngr2usr(igr1,ingr2usr,ngrnod)
109 igrs2=ngr2usr(igr2,ingr2usr,ngrnod)
111 CALL ancmsg(msgid=678,anmode=aninfo,msgtype=msgerror,
112 . i1=id,i2=igr1,c1=titr)
115 CALL ancmsg(msgid=678,anmode=aninfo,msgtype=msgerror,
116 . i1=id,i2=igr2,c1=titr)
118 IF (igrnod(igrs1)%NENTITY /= igrnod(igrs2)%NENTITY)
THEN
119 CALL ancmsg(msgid=1753,anmode=aninfo,msgtype=msgerror,
122 nbcs_cy_n = nbcs_cy_n + igrnod(igrs1)%NENTITY
124 nbcscynn = 2*nbcs_cy_n
138 SUBROUTINE ini_bcscyc(IBCSCYC,LBCSCYC,SKEW,X,ITAB,ICODE,IBFV,ITAGCYC)
146#include "implicit_f.inc"
150#include
"param_c.inc"
151#include "com04_c.inc"
155 INTEGER IBCSCYC(4,*),LBCSCYC(2,*),ITAB(*),ICODE(*),IBFV(NIFV,*),
158 . x(3,*),skew(lskew,*)
162 INTEGER I, J ,ISK,IAD,NN,N1,N2,ID,ITAGIMP(NUMNOD),NF1,NF2,ICOOR
169 CALL inibcs_cy(nn,lbcscyc(1,iad),isk,skew,x ,itab,id)
178 n1 = lbcscyc(1,iad+j)
179 n2 = lbcscyc(2,iad+j)
192 n1 = lbcscyc(1,iad+j)
193 n2 = lbcscyc(2,iad+j)
194 IF (icode(n1) >= 512 )
THEN
195 CALL ancmsg(msgid=1749,anmode=aninfo,msgtype=msgerror,
198 IF (icode(n2) >= 512 )
THEN
199 CALL ancmsg(msgid=1750,anmode=aninfo,msgtype=msgerror,
210 IF (itagimp(n1)==0)
THEN
217 IF (icoor==1 .AND. itagimp(n1) == isk)
THEN
230 n1 = lbcscyc(1,iad+j)
231 n2 = lbcscyc(2,iad+j)
236 IF (nf1==0.OR.nf1==isk)
THEN
238 CALL ancmsg(msgid=1751,anmode=aninfo,msgtype=msgerror,
239 . i1=id ,i2=itab(n1),i3=itab(n2))
242 CALL ancmsg(msgid=1752,anmode=aninfo,msgtype=msgerror,
243 . i1=id ,i2=itab(n1),i3=itab(n2))
268#include "implicit_f.inc"
272#include "param_c.inc"
276 INTEGER NBCY_N,IXCYCL(2,*),ITAB(*),ISK,ID
278 . x(3,*),skew(lskew,*)
282 INTEGER I, J ,N1(NBCY_N),N2(NBCY_N),INDEX(NBCY_N),IER1
285 . cy_x1(3,nbcy_n), cy_x2(3,nbcy_n),dis1(nbcy_n),dis2(nbcy_n),lmin,
286 . cy_tmp(3,nbcy_n),ri,zi,tol,err_th,ermax
296 . skew(1,isk),skew(10,isk),err_th,ier1)
299 CALL ancmsg(msgid=1761,anmode=aninfo,msgtype
302 CALL myqsort(nbcy_n, dis1, index, ier1)
303 cy_tmp(1:3,1:nbcy_n) = cy_x1(1:3,1:nbcy_n)
307 cy_x1(1:3,i)=cy_tmp(1:3,j)
311 ri = abs(cy_x1(1,i)-cy_x1(1,i-1))
312 zi = abs(cy_x1(3,i)-cy_x1(3,i-1))
313 lmin =
min(lmin,
max(ri,zi))
316 . skew(1,isk),skew(10,isk),err_th,ier1)
319 CALL ancmsg(msgid=1762,anmode=aninfo,msgtype=msgerror,i1=id)
322 CALL myqsort(nbcy_n, dis2, index, ier1)
323 cy_tmp(1:3,1:nbcy_n) = cy_x2(1:3,1:nbcy_n)
327 cy_x2(1:3,i)=cy_tmp(1:3,j)
330 ri = abs(cy_x2(1,i)-cy_x2(1,i-1))
331 zi = abs(cy_x2(3,i)-cy_x2(3,i-1))
332 lmin =
min(lmin,
max(ri,zi))
338 ri = abs(cy_x2(1,i)-cy_x1(1,i))
339 zi = abs(cy_x2(3,i)-cy_x1(3,i))
347 CALL ancmsg(msgid=1763,anmode=aninfo,msgtype=msgerror,
348 . i1=id,i2=itab(n1(j)),i3=itab(n2(j)))
362 SUBROUTINE car2cylin(NBCY_N,IX,X,CY_X,DIS,SKEW,XYZ0,TOL,IER)
366#include "implicit_f.inc"
370 INTEGER NBCY_N,IX(*),IER
372 . x(3,*),skew(9),xyz0(3),cy_x(3,*),dis(*),tol
377 my_real xx,yy,zz,xl,yl,zl,r2,th_mean,th_max,zl_min
383 xx = x(1,ix(i))-xyz0(1)
384 yy = x(2,ix(i))-xyz0(2)
385 zz = x(3,ix(i))-xyz0(3)
386 xl = xx*skew(1)+yy*skew(2)+zz*skew(3)
387 yl = xx*skew(4)+yy*skew(5)+zz*skew(6)
388 zl = xx*skew(7)+yy*skew(8)+zz*skew(9)
391 cy_x(2,i) = xl/cy_x(1,i)
394 th_mean = th_mean + cy_x(2,i)
395 zl_min =
min(zl_min,zl)
398 cy_x(3,i) = cy_x(3,i)-zl_min
399 dis(i) = dis(i) + cy_x(3,i)*cy_x(3,i)
401 th_mean =th_mean/nbcy_n
405 th_max =
max(th_max,abs(cy_x(2,i)-th_mean))
408 IF (th_max>tol*abs(th_mean)) ier = -1
410 IF (th_max<em6) ier = 0
434#include "implicit_f.inc"
438#include "param_c.inc"
439#include "com04_c.inc"
443 INTEGER IPARI(NPARI,NINTER),ITAGCYC(*),ITAB(*)
444 TYPE(intbuf_struct_),
DIMENSION(NINTER) :: INTBUF_TAB
453 INTEGER I,N,NTY,NSN,ISL,NOINT
463 IF (ilev >= 25 .AND. ilev <= 28) cycle
465 isl = intbuf_tab(n)%NSV(i)
466 IF (itagcyc(isl)/=0)
THEN
467 CALL ancmsg(msgid=1758,anmode=aninfo,msgtype=msgerror,
468 . i1=itagcyc(isl),i2=itab(isl),i3=noint)
subroutine hm_option_read_key(lsubmodel, option_id, unit_id, submodel_index, submodel_id, option_titr, keyword1, keyword2, keyword3, keyword4, opt_pos)
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)