39 . IPM ,IGEO ,LSUBMODEL,IBEAM_VECTOR,RBEAM_VECTOR)
63 USE reader_old_mod ,
ONLY : line
64 USE user_id_mod ,
ONLY : id_limit
68#include "implicit_f.inc"
72#include "analyse_name.inc"
84 INTEGER,
INTENT(IN)::ITAB(*)
85 INTEGER,
INTENT(IN)::ITABM1(*)
86 INTEGER,
INTENT(IN)::IPART(LIPART1,*)
87 INTEGER,
INTENT(IN)::IGEO(NPROPGI,*)
88 INTEGER,
INTENT(IN)::IPM(NPROPMI,*)
89 TYPE(),
INTENT(IN)::LSUBMODEL(NSUBMOD)
91 INTEGER,
INTENT(OUT)::IXP(NIXP,*)
92 INTEGER,
INTENT(OUT)::IPARTP(*)
93 INTEGER,
INTENT(OUT)::IBEAM_VECTOR(NUMELP)
94 my_real,
INTENT(OUT)::rbeam_vector(3,numelp)
98 INTEGER I, I1, I2, MID, PID,MT,IPID,ID,IDS,J,N,JC,STAT
99 INTEGER CPT,INDEX_PART
100 CHARACTER MESS*40, MESS2*40
102 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SUB_BEAM
104 real*8,
DIMENSION(:),
ALLOCATABLE :: vx,vy,vz
110 DATA mess /
'3D BEAM ELEMENTS DEFINITION '/
111 DATA mess2/
'3D BEAM ELEMENTS SELECTION FOR TH PLOT '/
116 ALLOCATE (sub_beam(numelp),stat=stat)
117 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,msgtype=msgerror,c1=
'SUB_BEAM')
118 sub_beam(1:numelp) = 0
119 ALLOCATE (vx(numelp),stat=stat)
120 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,msgtype=msgerror,c1=
'VX')
122 ALLOCATE (vy(numelp),stat=stat)
123 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,msgtype=msgerror,c1=
'VY')
125 ALLOCATE (vz(numelp),stat=stat)
126 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,msgtype=msgerror,c1=
'VZ')
132 CALL cpp_beam_read(ixp,nixp,ipartp,sub_beam,vx,vy,vz)
140 IF( ipart(4,index_part) /= ipartp(i) )
THEN
142 IF(ipart(4,j)== ipartp(i) ) index_part = j
145 IF(ipart(4,index_part) /= ipartp(i))
THEN
146 CALL ancmsg(msgid=402,msgtype=msgerror,anmode=aninfo_blind_1,c1=
"BEAM",i1=ipartp(i),i2=ipartp(i),prmod=msg_cumu)
148 ipartp(i) = index_part
150 mt=ipart(1,index_part)
151 ipid=ipart(2,index_part)
154 IF (ixp(6,i)>id_limit%GLOBAL)
THEN
155 CALL ancmsg(msgid=509,anmode=aninfo,msgtype=msgerror,i1=ixp(6,i),c1=line,c2=
'/BEAM')
158 norm = sqrt(vx(i)**2 + vy(i)**2 + vz(i)**2)
159 IF (
norm > zero)
THEN
161 rbeam_vector(1,i) = vx(i) /
norm
162 rbeam_vector(2,i) = vy(i) /
norm
163 rbeam_vector(3,i) = vz(i) /
norm
167 rbeam_vector(1:3,i) = zero
170 IF ((ixp(4,i)==0 .OR. ixp(4,i)==ixp(2,i) .OR. ixp(4,i)==ixp(3,i)).
171 . and.(ibeam_vector(i)==0))
THEN
172 CALL ancmsg(msgid=2093,msgtype=msginfo,anmode=aninfo_blind_1,i1=ipart(4,index_part),i2=ixp(6,i),prmod=msg_cumu)
176 ixp(j,i)=usr2sys(ixp(j,i),itabm1,mess,ixp(6,i))
180 CALL anodset(ixp(2,i), check_beam)
181 CALL anodset(ixp(3,i), check_beam)
182 CALL anodset(ixp(4,i), check_used)
184 IF(
ALLOCATED(sub_beam))
DEALLOCATE(sub_beam)
185 IF(
ALLOCATED(vx))
DEALLOCATE(vx)
186 IF(
ALLOCATED(vy))
DEALLOCATE(vy)
187 IF(
ALLOCATED(vz))
DEALLOCATE(vz)
189 CALL ancmsg(msgid=402,msgtype=msgerror,anmode=aninfo_blind_1, prmod=msg_print)
191 CALL ancmsg(msgid=2093,msgtype=msginfo,anmode=aninfo_blind_1,prmod=msg_print)
198 CALL vdouble(ixp(nixp,1),nixp,numelp,mess,0,bid)
213 IF (ibeam_vector(i) == 0)
THEN
214 WRITE (iout,
'(7(I10,1X))')i,ixp(6,i),mid,pid,n2,n3,n4
216 WRITE (iout,
'(6(I10,1X),3(1PG20.13,1X))'
220 IF(i2==numelp)
GOTO 200
222 i2=min0(i2+50,numelp)
227 300
FORMAT(/
' BEAM ELEMENTS'/
229 +
' LOC-EL GLO-EL MATER GEOM NODE1 NODE2 NODE3/VECTOR')
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)