41 use python_funct_mod
42
43
44
45#include "implicit_f.inc"
46#include "comlock.inc"
47
48
49
50#include "mvsiz_p.inc"
51
52
53
54#include "units_c.inc"
55#include "scr17_c.inc"
56#include "scr14_c.inc"
57#include "param_c.inc"
58#include "com08_c.inc"
59
60
61
62 type(python_), intent(inout) :: python
63 INTEGER, INTENT(IN) :: NFT
64 INTEGER, INTENT(INOUT) :: IAD
65 INTEGER, INTENT(IN) :: NEL
66 INTEGER NPF(*),IGEO(NPROPGI,*),NGL(*),MGN(*)
67
69 . geo(npropg,*), f(*), al0(*), e(*), dl(*), tf(*), off(*),
70 . dv0(*), dpl2(*), fep(*),anim(*),ipos(*),fr_wave(*),v(3,*),
71 . al0_err(*),ex(mvsiz), ey(mvsiz), ez(mvsiz),xk(mvsiz),
72 . xm(mvsiz),xc(mvsiz),ak(mvsiz)
73 DOUBLE PRECISION (3,*),X2DP(3,*)
74 my_real,
DIMENSION(NEL),
INTENT(INOUT) ::
75 . crit
76
77
78
79 INTEGER I, J, ILENG,NINDX, PID
80 INTEGER NC1(MVSIZ), NC2(MVSIZ),INDX(MVSIZ)
81
83 . dlold(mvsiz),dmn(mvsiz),dmx(mvsiz),xl0(mvsiz),
84 . dv(mvsiz),
alpha(mvsiz)
86 . dt11, bid, sum
87 DOUBLE PRECISION EXDP(MVSIZ),EYDP(MVSIZ),EZDP(MVSIZ),ALDP(MVSIZ),
88 . AL0DP(MVSIZ)
89
90 dt11 = dt1
91 IF (dt11 == zero) dt11 = ep30
92
93 DO i=1,nel
94 pid = mgn(i)
95 xm(i) =geo(1,pid)
96 xk(i) =geo(2,pid)
97 xc(i) =zero
99 dmn(i) =geo(15,pid)
100 dmx(i) =geo(16,pid)
101 ak(i) = one
102 ENDDO
103
104 DO i=1,nel
105 exdp(i)=x2dp(1,i)-x1dp(1,i)
106 eydp(i)=x2dp(2,i)-x1dp(2,i)
107 ezdp(i)=x2dp(3,i)-x1dp(3,i)
108 dlold(i)=dl(i)
109 aldp(i)=sqrt(exdp(i)*exdp(i)+eydp(i)*eydp(i)+ezdp(i)*ezdp(i))
110 ENDDO
111
112 IF (tt == zero) THEN
113 DO i=1,nel
114 al0(i)=aldp(i)
115 al0_err(i)=aldp(i)-al0(i)
116 ENDDO
117 ENDIF
118
119 DO i=1,nel
120 al0dp(i) = al0(i)
121 al0dp(i) = al0dp(i) + al0_err(i)
122 ENDDO
123
124 DO i=1,nel
125 sum =
max(aldp(i),em15)
126 exdp(i)= exdp(i)/sum
127 eydp(i)= eydp(i)/sum
128 ezdp(i)= ezdp(i)/sum
129 ex(i)=exdp(i)
130 ey(i)=eydp(i)
131 ez(i)=ezdp(i)
132 ENDDO
133
134 DO i=1,nel
135 dl(i) = aldp(i) - al0dp(i)
136 ENDDO
137
138 DO i=1,nel
139 ileng = nint(geo(93,mgn(i)))
140 IF (ileng /= 0) THEN
141 xl0(i)= al0dp(i)
142 ELSE
143 xl0(i)=one
144 ENDIF
145 ENDDO
146
147
149 1 f, xk, dl, dlold,
150 2 e, off, xl0, tf,
151 3 npf, anim, anim_fe(11),fr_wave,
152 4 dmn, dmx, igeo, geo,
153 5 mgn, dv0,
alpha, nel,
154 6 nft, iad)
155
156 nindx = 0
157 DO i=1,nel
158 IF (off(i) == one) THEN
159 crit(i) =
max(dl(i)/(dmx(i)*xl0(i)),dl(i)/(dmn(i)*xl0(i)))
160 crit(i) =
min(crit(i),one)
161 crit(i) =
max(crit(i),zero)
162 IF (dl(i) > dmx(i)*xl0(i) .OR. dl(i) < dmn(i)*xl0(i)) THEN
163 crit(i) = one
164 off(i)=zero
165 nindx = nindx + 1
166 indx(nindx) = i
167 idel7nok = 1
168 ENDIF
169 ENDIF
170 ENDDO
171 DO j=1,nindx
172 i = indx(j)
173#include "lockon.inc"
174 WRITE(iout, 1000) ngl(i)
175 WRITE(istdo,1100) ngl(i),tt
176#include "lockoff.inc"
177 ENDDO
178 DO i=1,nel
179 xm(i)=xm(i)*xl0(i)
180 xk(i)=xk(i)/xl0(i)
181 xc(i)=xc(i)/xl0(i)
182 ENDDO
183
184 1000 FORMAT(1x,'-- RUPTURE OF SPRING ELEMENT NUMBER ',i10)
185 1100 FORMAT(1x,'-- RUPTURE OF SPRING ELEMENT :',i10,' AT TIME :',g11.4)
186
187 RETURN
subroutine r26sig(python, fx, xk, dx, dxold, e, off, xl0, tf, npf, anim, iani, fr_wave, dmn, dmx, igeo, geo, pid, dv0, alpha, nel, nft, iad)