36
37
38
39 USE elbufdef_mod
40
41
42
43
44
45#include "implicit_f.inc"
46
47
48
49#include "com01_c.inc"
50
51
52
53 INTEGER JFT,JLT,NUMEL,NIX,NFT,NPT,ISTRAIN,IR,IS,NLAY,NSIGSH,
54 . NEL,NUMSH,ILAW
55 INTEGER IX(NIX,*),PTSH(*)
57 . sigsh(nsigsh,*)
58 TYPE(ELBUF_STRUCT_), TARGET :: ELBUF_STR
59
60
61
62 INTEGER I,J,II,JJ,KK,N,NPTI,NU,NIP,NUVAR,NVARS,NPG,IPT,
63 . IPT_ALL,IT,ILAY,NPTT,L_SIGB
64 TYPE(L_BUFEL_) ,POINTER :: LBUF
65 TYPE(BUF_LAY_) ,POINTER :: BUFLY
66 my_real,
DIMENSION(:),
POINTER :: uvar,siga,sigb,sigc
67
68 DO i=jft,jlt
69 IF (abs(isigi) /=3 .AND. abs(isigi)/=4 .AND. abs(isigi)/=5)THEN
70 ii = i+nft
71 n = nint(sigsh(1,ii))
72 IF(n == ix(nix,ii))THEN
73 jj = ii
74 ELSE
75 jj = ii
76 DO j = 1,numel
77 ii= j
78 n = nint(sigsh(1,ii))
79 IF(n == 0) GOTO 200
80 IF(n == ix(nix,jj))GOTO 70
81 ENDDO
82 GOTO 200
83 70 CONTINUE
84 ENDIF
85 ELSE
86 jj=nft+i
87 n =ix(nix,jj)
88 ii=ptsh(jj)
89 IF(ii == 0)GOTO 200
90 END IF
91 nip = nint(sigsh(nvshell + 2,ii))
92 npg = nint(sigsh(nvshell + 3,ii))
93 nvars= nint(sigsh(nvshell + 4,ii))
94 nuvar = elbuf_str%BUFLY(1)%NVAR_MAT
95
96 IF (elbuf_str%BUFLY(1)%ILAW == 36) THEN
97 l_sigb = elbuf_str%BUFLY(1)%L_SIGB
98 IF (nvars > 3 .and. nip > 0 .and. l_sigb > 0) THEN
99 ipt_all = 0
100 DO ilay=1,nlay
101 bufly => elbuf_str%BUFLY(ilay)
102 nptt = bufly%NPTT
103 nuvar = bufly%NVAR_MAT
104 DO it=1,nptt
105 sigb => bufly%LBUF(ir,is,it)%SIGB
106 ipt = ipt_all + it
107 DO j =
108 jj = (j-1)*nel + i
109 sigb(jj) = sigsh(nvshell + 4 + (ipt -1)*nvars + j ,ii)
110 ENDDO
111 ENDDO
112 ipt_all = ipt_all + nptt
113 ENDDO
114 ENDIF
115
116 ELSE IF (elbuf_str%BUFLY(1)%ILAW == 78) THEN
117 l_sigb = elbuf_str%BUFLY(1)%L_SIGB
118 nuvar = elbuf_str%BUFLY(1)%NVAR_MAT
119 ipt_all = 0
120 DO ilay=1,nlay
121 bufly => elbuf_str%BUFLY(ilay)
122 nptt = bufly%NPTT
123 DO it=1,nptt
124 ipt = ipt_all + it
125 uvar => bufly%MAT(ir,is,it)%VAR
126 siga => bufly%LBUF(ir,is,it)%SIGA
127 sigb => bufly%LBUF(ir,is,it)%SIGB
128 sigc => bufly%LBUF(ir,is,it)%SIGC
129 kk = nvshell + 4 + (ipt-1)*nvars
130 DO nu = 1,nuvar
131 jj = (nu-1)*nel + i
132 uvar(jj) = sigsh(kk + nu,ii)
133 ENDDO
134 kk = kk + nuvar
135 DO j = 1,l_sigb
136 jj = (j-1)*nel + i
137 siga(jj) = sigsh(kk + j ,ii)
138 ENDDO
139 DO j = 1,l_sigb
140 jj = (j-1)*nel + i
141 sigb(jj) = sigsh(kk + l_sigb + j ,ii)
142 ENDDO
143 DO j = 1,l_sigb
144 jj = (j-1)*nel + i
145 sigc(jj) = sigsh(kk + l_sigb*2 + j ,ii)
146 ENDDO
147 ENDDO
148 ipt_all = ipt_all + nptt
149 ENDDO
150
151 ELSE IF (elbuf_str%BUFLY(1)%ILAW == 87) THEN
152 l_sigb = elbuf_str%BUFLY(1)%L_SIGB
153 nuvar = elbuf_str%BUFLY(1)%NVAR_MAT
154 ipt_all = 0
155 DO ilay=1,nlay
156 bufly => elbuf_str%BUFLY(ilay)
157 nptt = bufly%NPTT
158 DO it=1,nptt
159 ipt = ipt_all + it
160 uvar => bufly%MAT(ir,is,it)%VAR
161 sigb => bufly%LBUF(ir,is,it)%SIGB
162 kk = nvshell + 4 + (ipt-1)*nvars
163
164 DO nu = 1,nuvar
165 jj = (nu-1)*nel + i
166 uvar(jj) = sigsh(kk + nu,ii)
167 ENDDO
168 kk = kk + nuvar
169 DO j = 1,l_sigb
170 jj = (j-1)*nel + i
171 sigb(jj) = sigsh(kk + j ,ii)
172 ENDDO
173 ENDDO
174 ipt_all = ipt_all + nptt
175 ENDDO
176
177 ELSE IF (elbuf_str%BUFLY(1)%ILAW == 112) THEN
178 ipt_all = 0
179 DO ilay=1,nlay
180 nptt = elbuf_str%BUFLY(ilay)%NPTT
181 DO it=1,nptt
182 ipt = ipt_all + it
183 kk = nvshell + 4 + (ipt-1)*nvars
184 DO j = 1,3
185 jj = i + j*nel
186 elbuf_str%BUFLY(ilay)%LBUF(ir,is,it)%PLA(jj) = sigsh(kk + j,ii)
187 ENDDO
188 ENDDO
189 ipt_all = ipt_all + nptt
190 ENDDO
191
192 ELSE IF (npg <= 1) THEN
193 IF (nip == 0) THEN
194 uvar => elbuf_str%BUFLY(1)%MAT(ir,is,1)%VAR
195 DO nu = 1,
min(nvars,nuvar)
196 uvar((nu -1)*nel + i) = sigsh(nvshell + 4 + nu, ii)
197 ENDDO
198 ELSE
199 ipt_all = 0
200 DO ilay=1,nlay
201 nptt = elbuf_str%BUFLY(ilay)%NPTT
202 nuvar = elbuf_str%BUFLY(ilay)%NVAR_MAT
203 DO it=1,nptt
204 ipt = ipt_all + it
205 uvar => elbuf_str%BUFLY(ilay)%MAT(ir,is,it)%VAR
206 DO nu = 1,
min(nvars,nuvar)
207 uvar((nu -1)*nel + i) =
208 . sigsh(nvshell + 4 + nu + (ipt -1)*nvars , ii)
209 ENDDO
210 ENDDO
211 ipt_all = ipt_all + nptt
212 ENDDO
213
214 ENDIF
215 ENDIF
216 200 CONTINUE
217 ENDDO
218
219 RETURN