44
45
46
47
48
49
50#include "implicit_f.inc"
51
52
53
54#include "mvsiz_p.inc"
55
56
57
58
59
60 INTEGER, INTENT(IN) :: NEL
61 INTEGER, DIMENSION(MVSIZ), INTENT(IN) :: ISTAB
62 my_real,
INTENT(IN) :: mu,fqmax,dt1
63 my_real,
DIMENSION(MVSIZ),
INTENT(IN) :: fld,
64 . x1,x2,x3,x4,
65 . y1,y2,y3,y4,
66 . z1,z2,z3,z4,
67 . vx1,vx2,vx3,vx4,
68 . vy1,vy2,vy3,vy4,
69 . vz1,vz2,vz3,vz4,ll,sti_c
70 my_real,
DIMENSION(MVSIZ),
INTENT(INOUT) ::
71 . f11,f21,f31,f12,f22,f32,
72 . f13,f23,f33,f14,f24,f34,sti
73 my_real,
DIMENSION(NEL),
INTENT(INOUT) :: e_distor
74
75
76
78 . xc(mvsiz),yc(mvsiz),zc(mvsiz),stif(mvsiz),
79 . vc(mvsiz,3),forc_n(mvsiz,3),for_t1(mvsiz,3),
80 . for_t2(mvsiz,3),for_t3(mvsiz,3),for_t4(mvsiz,3),
81 . fcx,fcy,fcz,fac,gap_max,gap_min,tol_t,tol_c,tol_v,
82 . penmin(mvsiz),penref(mvsiz),marge(mvsiz)
83 INTEGER I,J,NCTL,IFCTL,IFC1(MVSIZ)
84
85
86
87 tol_c= zep2
88 tol_v = eight
89
90 DO i=1,nel
91 vc(i,1) = fourth*(vx1(i)+vx2(i)+vx3(i)+vx4(i))
92 vc(i,2) = fourth*(vy1(i)+vy2(i)+vy3(i)+vy4(i))
93 vc(i,3) = fourth*(vz1(i)+vz2(i)+vz3(i)+vz4(i))
94 stif(i) = sti_c(i)
95 ifc1(i) = istab(i)
96 ENDDO
97
98 nctl = 0
99 forc_n = zero
100 for_t1 = zero
101 for_t2 = zero
102 for_t3 = zero
103 for_t4 = zero
105 . vx1, vx2, vx3, vx4,
106 . vy1, vy2, vy3, vy4,
107 . vz1, vz2, vz3, vz4,
108 . for_t1, for_t2, for_t3, for_t4,
109 . ifctl, stif , mu , nel ,
110 . e_distor,dt1 )
111 nctl = nctl + ifctl
112
113 DO i=1,nel
114 xc(i) = fourth*(x1(i)+x2(i)+x3(i)+x4(i))
115 yc(i) = fourth*(y1(i)+y2(i)+y3(i)+y4(i))
116 zc(i) = fourth*(z1(i)+z2(i)+z3(i)+z4(i))
117 ENDDO
118
119 gap_min = tol_c*em02
120 gap_max = five
121 penmin(1:nel) = gap_min*ll(1:nel)
122 penref(1:nel) = gap_max*ll(1:nel)
123
124
126 . x1, x2, x3,
127 . y1, y2, y3,
128 . z1, z2, z3,
129 . vc(1,1), vc(1,2),vc(1,3),
130 . vx1, vx2, vx3,
131 . vy1, vy2, vy3,
132 . vz1, vz2, vz3,
133 . for_t1, for_t2, for_t3,
134 . forc_n, sti_c, stif,
135 . fqmax , penmin, penref,
136 . ll , ifctl, nel ,
137 . e_distor, dt1 )
138 nctl = nctl + ifctl
139
141 . x1, x4, x2,
142 . y1, y4, y2,
143 . z1, z4, z2,
144 . vc(1,1), vc(1,2),vc(1,3),
145 . vx1, vx4, vx2,
146 . vy1, vy4, vy2,
147 . vz1, vz4, vz2,
148 . for_t1, for_t4, for_t2,
149 . forc_n, sti_c, stif,
150 . fqmax , penmin, penref,
151 . ll , ifctl, nel ,
152 . e_distor, dt1 )
153 nctl = nctl + ifctl
154
156 . x2, x4, x3,
157 . y2, y4, y3,
158 . z2, z4, z3,
159 . vc(1,1),vc(1,2),vc(1,3),
160 . vx2, vx4, vx3,
161 . vy2, vy4, vy3,
162 . vz2, vz4, vz3,
163 . for_t2, for_t4, for_t3,
164 . forc_n, sti_c, stif,
165 . fqmax , penmin, penref,
166 . ll , ifctl, nel ,
167 . e_distor, dt1 )
168 nctl = nctl + ifctl
169
171 . x1, x3, x4,
172 . y1, y3, y4,
173 . z1, z3, z4,
174 . vc(1,1), vc(1,2),vc(1,3),
175 . vx1, vx3, vx4,
176 . vy1, vy3, vy4,
177 . vz1, vz3, vz4,
178 . for_t1, for_t3, for_t4,
179 . forc_n, sti_c, stif,
180 . fqmax , penmin, penref,
181 . ll , ifctl, nel ,
182 . e_distor, dt1 )
183 nctl = nctl + ifctl
184
185
186 DO i=1,nel
187 IF (sti_c(i)==zero) cycle
188 fcx = fourth*forc_n(i,1)
189 fcy = fourth*forc_n(i,2)
190 fcz = fourth*forc_n(i,3)
191 f11(i)=f11(i) + for_t1(i,1) + fcx
192 f21(i)=f21(i) + for_t1(i,2) + fcy
193 f31(i)=f31(i) + for_t1(i,3) + fcz
194 f12(i)=f12(i) + for_t2(i,1) + fcx
195 f22(i)=f22(i) + for_t2(i,2) + fcy
196 f32(i)=f32(i) + for_t2(i,3) + fcz
197 f13(i)=f13(i) + for_t3(i,1) + fcx
198 f23(i)=f23(i) + for_t3(i,2) + fcy
199 f33(i)=f33(i) + for_t3(i,3) + fcz
200 f14(i)=f14(i) + for_t4(i,1) + fcx
201 f24(i)=f24(i) + for_t4(i,2) + fcy
202 f34(i)=f34(i) + for_t4(i,3) + fcz
203
204 IF (stif(i)>sti_c(i)) sti(i) =
max(sti(i),stif(i))
205 END DO
206! END IF
207
208
209
210
211 RETURN
subroutine sfor_n2stria(xc, yc, zc, x1, x2, x3, y1, y2, y3, z1, z2, z3, vcx, vcy, vcz, vx1, vx2, vx3, vy1, vy2, vy3, vz1, vz2, vz3, for_t1, for_t2, for_t3, forc_n, stif0, stif, fqmax, penmin, penref, ll, ifctl, nel, e_distor, dt1)
subroutine sfor_visn4(vc, fld, tol_v, ifc1, vx1, vx2, vx3, vx4, vy1, vy2, vy3, vy4, vz1, vz2, vz3, vz4, for_t1, for_t2, for_t3, for_t4, ifctl, stif, mu, nel, e_distor, dt1)