38
39
40
41#include "implicit_f.inc"
42
43
44
45#include "param_c.inc"
46#include "vect01_c.inc"
47#include "com01_c.inc"
48
49
50
51 INTEGER IPM(NPROPMI,*)
52 INTEGER NIX, N, JPS,IUSER,NSIGS,IDEF,JHBE,IGTYP,L_SIGB,IMAT
53 INTEGER IX(NIX,*), NSIGI, NUVAR,NEL,STRAGLOB(*),PT(*)
54 INTEGER, INTENT(IN) :: L_PLA
55
57 . sigsp(nsigi,*),sigi(nsigs,nel),uvar(nel),
58 . eps(nel,6),x(3,*),bufgama(*),sigb(nel*l_sigb),bufmat(*)
59 my_real,
INTENT(INOUT),
DIMENSION(NEL*L_PLA) :: pla
60
61
62
63 INTEGER I,J,IIP,JPT, II, JJ, IPT, IPP,IUS,IPSU,IPS,
64 . IFLAGINI,NVAR_TMP,IADB,NRATE
66 . gama(6),tens(6)
67
68
69
70 INTEGER MA
71
72 DO i=lft,llt
73 IF (straglob(i) == 1 )THEN
74 IF(jcvt==2)THEN
75 gama(1)=bufgama(i )
76 gama(2)=bufgama(i + nel)
77 gama(3)=bufgama(i + 2*nel)
78 gama(4)=bufgama(i + 3*nel)
79 gama(5)=bufgama(i + 4*nel)
80 gama(6)=bufgama(i + 5*nel)
81 ELSE
82 gama(1)=one
83 gama(2)=zero
84 gama(3)=zero
85 gama(4)=zero
86 gama(5)=one
87 gama(6)=zero
88 END IF
89 ENDIF
90
91 ii=nft+i
92 jj=pt(ii)
93 iflagini = 1
94 IF (jj == 0) iflagini = 0
95
96 IF (iuser /= 0 .AND. iflagini == 1) THEN
97 IF (mtn == 36 .and. l_sigb == 6) THEN
98 iadb = ipm(7,imat)
99 nrate = nint(bufmat(iadb))
100 nvar_tmp = sigsp(nvsolid1 + nvsolid2 + 3, jj)
101 ipsu = nvsolid1 + nvsolid2 + 4
102 IF (nvar_tmp > 6) THEN
103 DO ius = 1,6
104 ipp = i + (ius - 1)*nel
105 ips = ipsu + nrate + 5
106 sigb(ipp) = sigsp(ips + ius, jj)
107 ENDDO
108 ENDIF
109 ELSEIF (mtn == 112) THEN
110 nvar_tmp = sigsp(nvsolid1 + nvsolid2 + 3, jj)
111 ipsu = nvsolid1 + nvsolid2 + 4
112 DO ius = 1, nvar_tmp
113 ipp = i + ius*nel
114 pla(ipp) = sigsp(ipsu + ius, jj)
115 ENDDO
116 ELSE IF (mtn >= 28) THEN
117 nvar_tmp = sigsp(nvsolid1 + nvsolid2 + 3, jj)
118 ipsu = nvsolid1 + nvsolid2 + 4
119 DO ius = 1, nvar_tmp
120 ipp = i + (ius -1)*nel
121 uvar(ipp) = sigsp(ipsu + ius, jj)
122 ENDDO
123 DO ius = nvar_tmp+1, nuvar
124 ipp = i + (ius -1)*nel
125 uvar(ipp) = zero
126 ENDDO
127 ENDIF
128 ENDIF
129 IF(idef /= 0 .AND. nvsolid2 /= 0 .AND. iflagini == 1) THEN
130 eps(i,1)=sigsp(nvsolid1 + 1 ,jj)
131 eps(i,2)=sigsp(nvsolid1 + 2 ,jj)
132 eps(i,3)=sigsp(nvsolid1 + 3 ,jj)
133 eps(i,4)=sigsp(nvsolid1 + 4 ,jj)
134 eps(i,5)=sigsp(nvsolid1 + 5 ,jj)
135 eps(i,6)=sigsp(nvsolid1 + 6 ,jj)
136 IF (straglob(i) == 1) THEN
137 tens(1)=eps(i,1)
138 tens(2)=eps(i,2)
139 tens(3)=eps(i,3)
140 tens(4)=eps(i,4)
141 tens(5)=eps(i,5)
142 tens(6)=eps(i,6)
143 CALL srota6_m1(x,ix(1,ii),jcvt,tens,gama,jhbe,igtyp)
144 eps(i,1)=tens(1)
145 eps(i,2)=tens(2)
146 eps(i,3)=tens(3)
147 eps(i,4)=tens(4)
148 eps(i,5)=tens(5)
149 eps(i,6)=tens(6)
150 ENDIF
151 ENDIF
152 ENDDO
153
154 RETURN
subroutine srota6_m1(x, ixs, kcvt, tens, gama, khbe, ityp)