38 . IPM ,IGEO ,LSUBMODEL,IBEAM_VECTOR,RBEAM_VECTOR)
62 USE reader_old_mod ,
ONLY : line
63 USE user_id_mod ,
ONLY : id_limit
64 use element_mod ,
only : nixp
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,*)
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,IDS,J,STAT
100 CHARACTER MESS*40, MESS2*40
102 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SUB_BEAM
104 real*8,
DIMENSION(:),
ALLOCATABLE :: vx,vy,vz
109 DATA mess /
'3D BEAM ELEMENTS DEFINITION '/
110 DATA mess2/
'3D BEAM ELEMENTS SELECTION FOR TH PLOT '/
115 ALLOCATE (sub_beam(numelp),stat=stat)
116 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,msgtype=msgerror,c1=
'SUB_BEAM')
117 sub_beam(1:numelp) = 0
118 ALLOCATE (vx(numelp),stat=stat)
119 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,msgtype=msgerror,c1=
'VX')
121 ALLOCATE (vy(numelp),stat=stat)
122 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,msgtype=msgerror,c1=
'VY')
124 ALLOCATE (vz(numelp),stat=stat)
125 IF (stat /= 0)
CALL ancmsg(msgid=268,anmode=aninfo,msgtype=msgerror,c1=
'VZ')
131 CALL cpp_beam_read(ixp,nixp,ipartp,sub_beam,vx,vy,vz)
139 IF( ipart(4,index_part) /= ipartp(i) )
THEN
141 IF(ipart(4,j)== ipartp(i) ) index_part = j
144 IF(ipart(4,index_part) /= ipartp(i))
THEN
145 CALL ancmsg(msgid=402,msgtype=msgerror,anmode=aninfo_blind_1,c1=
"BEAM",i1=ipartp(i),i2=ipartp(i),prmod=msg_cumu)
147 ipartp(i) = index_part
149 mt=ipart(1,index_part)
150 ipid=ipart(2,index_part)
153 IF (ixp(6,i)>id_limit%GLOBAL)
THEN
154 CALL ancmsg(msgid=509,anmode=aninfo,msgtype=msgerror,i1=ixp(6,i),c1=line,c2=
'/BEAM')
157 norm = sqrt(vx(i)**2 + vy(i)**2 + vz(i)**2)
158 IF (
norm > em20)
THEN
160 rbeam_vector(1,i) = vx(i) /
norm
162 rbeam_vector(3,i) = vz(i) /
norm
166 rbeam_vector(1:3,i) = zero
169 IF ((ixp(4,i)==0 .OR. ixp(4,i)==ixp(2,i) .OR. ixp
170 . and.(ibeam_vector(i)==0))
THEN
171 CALL ancmsg(msgid=2093,msgtype=msginfo,anmode=aninfo_blind_1,i1=ipart(4,index_part),i2=ixp(6,i),prmod=msg_cumu)
175 ixp(j,i)=usr2sys(ixp(j,i),itabm1,mess,ixp(6,i))
179 CALL anodset(ixp(2,i), check_beam)
180 CALL anodset(ixp(3,i), check_beam)
181 CALL anodset(ixp(4,i), check_used)
183 IF(
ALLOCATED(sub_beam))
DEALLOCATE(sub_beam)
184 IF(
ALLOCATED(vx))
DEALLOCATE(vx)
185 IF(
ALLOCATED(vy))
DEALLOCATE(vy)
186 IF(
ALLOCATED(vz))
DEALLOCATE(vz)
188 CALL ancmsg(msgid=402,msgtype
190 CALL ancmsg(msgid=2093,msgtype=msginfo,anmode=aninfo_blind_1,prmod=msg_print)
197 CALL vdouble(ixp(nixp,1),nixp,numelp,mess,0,bid)
212 IF (ibeam_vector(i) == 0)
THEN
213 WRITE (iout,
'(7(I10,1X))')i,ixp(6,i),mid,pid,n2,n3,n4
215 WRITE (iout,
'(6(I10,1X),3(1PG20.13,1X))')i,ixp(6,i),mid,pid,n2,n3,rbeam_vector(1,i),rbeam_vector(2,i),rbeam_vector(3,i)
219 IF(i2==numelp)
GOTO 200
221 i2=min0(i2+50,numelp)
226 300
FORMAT(/
' BEAM ELEMENTS'/
228 +
' 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)