38
39
40
41 USE elbufdef_mod
43
44
45
46#include "implicit_f.inc"
47
48
49
50#include "param_c.inc"
51
52
53
54 INTEGER NEL
55 TYPE(ELBUF_STRUCT_), TARGET :: ELBUF_STR
57 . varnl(nel,*),bufmat(*),time
58 TARGET :: bufmat
59 INTEGER IPM(NPROPMI,*)
60 LOGICAL :: FAILURE
61
62
63
64 INTEGER I,K,IR,IS,IT,IADBUF,NPTT,NPTR,NPTS,
65 . IJ(5),IJ1,IJ2,IJ3,IJ4,IJ5,IPG,
66 . ILAW,IMAT,NUVAR,NUPARAM
67 TYPE(BUF_LAY_), POINTER :: BUFLY
68 TYPE(L_BUFEL_), POINTER :: LBUF
69 TYPE(BUF_MAT_), POINTER :: MBUF
70 TYPE(G_BUFEL_), POINTER :: GBUF
72 . DIMENSION(:), POINTER :: uparam,uvar,thkn
73
74
75 bufly => elbuf_str%BUFLY(1)
76
77 gbuf => elbuf_str%GBUF
78
79 thkn => gbuf%THK(1:nel)
80
81
82 nptr = elbuf_str%NPTR
83 npts = elbuf_str%NPTS
84 nptt = bufly%NPTT
85 ilaw = bufly%ILAW
86 imat = bufly%IMAT
87 nuvar = bufly%NVAR_MAT
88
89
90 iadbuf =
max(1,ipm(7,imat))
91 nuparam = ipm(9,imat)
92 uparam => bufmat(iadbuf:iadbuf+nuparam)
93
94 DO k=1,5
95 ij(k) = nel*(k-1)
96 ENDDO
97 ij1 = ij(1) + 1
98 ij2 = ij(2) + 1
99 ij3 = ij(3) + 1
100 ij4 = ij(4) + 1
101 ij5 = ij(5) + 1
102
103
104 DO ir = 1,nptr
105 DO is = 1,npts
106
107 ipg = (is-1)*elbuf_str%NPTR + ir
108
109 DO it = 1,nptt
110
111 lbuf => bufly%LBUF(ir,is,it)
112
113 uvar => bufly%MAT(ir,is,it)%VAR
114
115 IF (gbuf%G_PLANL > 0) THEN
116 DO i = 1,nel
117 varnl(i,it) =
max(varnl(i,it),zero)
118 lbuf%PLANL(i) = lbuf%PLANL(i) + varnl(i,it)
119 ENDDO
120 ENDIF
121
122 SELECT CASE (ilaw)
123 CASE(104)
125 . uvar ,lbuf%PLA ,lbuf%OFF ,lbuf%THK ,gbuf%OFF ,lbuf%SIG(ij1),
126 . lbuf%SIG(ij2),lbuf%SIG(ij3) ,lbuf%SIG(ij4) ,lbuf%SIG(ij5),
127 . thkn ,lbuf%DMG ,nptr ,npts ,nptt ,bufly ,
128 . time ,varnl(1,it),failure)
129 END SELECT
130
131 IF (gbuf%G_PLANL > 0) THEN
132 DO i = 1,nel
133 varnl(i,it) = lbuf%PLA(i)
134 ENDDO
135 ENDIF
136 ENDDO
137 ENDDO
138 ENDDO
139
subroutine cnloc_mat104_ini(nel, ipg, ipt, nuparam, nuvar, uparam, uvar, pla, off, thkly, offg, sigoxx, sigoyy, sigoxy, sigoyz, sigozx, thk, dmg, nptr, npts, nptt, bufly, time, varnl, failure)