35
36
37
38 USE rbe3_mod
39 use nodal_arrays_mod
40
41
42
43#include "implicit_f.inc"
44
45
46
47#include "com01_c.inc"
48#include "com04_c.inc"
49#include "param_c.inc"
50#include "tabsiz_c.inc"
51
52
53
54
56 TYPE(RBE3_),INTENT(INOUT) :: RBE3
57 TYPE(NODAL_ARRAYS_), INTENT(INOUT) :: NODES
58
59
60
61 INTEGER I, J, N, M, NS ,NML, IAD,JJ,IROT,,MAX_M,IROTG,
62 . JT(3,),JR(3,NRBE3),NM,NN,,IPEN
63
65 . vs(3),vrs(3),as(3),ars(3)
67 . DIMENSION(:,:,:),ALLOCATABLE :: fdstnb ,mdstnb
68
69
70 iads = slrbe3/2
71 CALL prerbe3(rbe3%IRBE3 ,max_m , irotg,jt ,jr )
72 ALLOCATE(fdstnb(3,6,max_m))
73 IF (irotg>0) ALLOCATE(mdstnb(3,6,max_m))
74 DO n= nrbe3,1,-1
75 iad = rbe3%IRBE3(1,n)
76 ns = rbe3%IRBE3(3,n)
77 nml = rbe3%IRBE3(5,n)
78 ipen= rbe3%IRBE3(9,n)
79 IF (ns==0.OR.ipen>0) cycle
80 irot =
min(rbe3%IRBE3(6,n),iroddl)
81 CALL rbe3cl(rbe3%LRBE3(iad+1),rbe3%LRBE3(iads+iad+1),ns ,nodes%X ,
82 . rbe3%FRBE3(6*iad+1),skew ,nml ,irot ,fdstnb ,
83 . mdstnb ,rbe3%IRBE3(2,n))
84 DO j = 1,3
85 vs(j) = zero
86 vrs(j) = zero
87 as(j) = zero
88 ars(j) = zero
89 ENDDO
90 DO i=1,nml
91 m = rbe3%LRBE3(iad+i)
92 DO j = 1,3
93 DO k = 1,3
94 vs(j) = vs(j)+fdstnb(k,j,i)*nodes%V(k,m)
95 as(j) = as(j)+fdstnb(k,j,i)*nodes%A(k,m)
96 vrs(j) = vrs(j)+fdstnb(k,j+3,i)*nodes%V(k,m)
97 ars(j) = ars(j)+fdstnb(k,j+3,i)*nodes%A(k,m)
98 ENDDO
99 ENDDO
100 ENDDO
101 IF (irot>0) THEN
102 DO i=1,nml
103 m = rbe3%LRBE3(iad+i)
104 DO j = 1,3
105 DO k = 1,3
106 vs(j) = vs(j)+mdstnb(k,j,i)*nodes%VR(k,m)
107 as(j) = as(j)+mdstnb(k,j,i)*nodes%AR(k,m)
108 vrs(j) = vrs(j)+mdstnb(k,j+3,i)*nodes%VR(k,m)
109 ars(j) = ars(j)+mdstnb(k,j+3,i)*nodes%AR(k,m)
110 ENDDO
111 ENDDO
112 ENDDO
113 ENDIF
114 DO j = 1,3
115 nodes%V(j,ns) = vs(j) *jt(j,n)
116 nodes%A(j,ns) = as(j) *jt(j,n)
117 ENDDO
118 IF ((jr(1,n)+jr(2,n)+jr(3,n))>0) THEN
119 DO j = 1,3
120 nodes%VR(j,ns) = vrs(j) *jr(j,n)
121 nodes%AR(j,ns) = ars(j) *jr(j,n)
122 ENDDO
123 ENDIF
124 ENDDO
125
126 DEALLOCATE(fdstnb)
127 IF (irotg>0) DEALLOCATE(mdstnb)
128
129 RETURN