37
38
39
40#include "implicit_f.inc"
41
42
43
44#include "mvsiz_p.inc"
45
46
47
48#include "param_c.inc"
49#include "com04_c.inc"
50#include "impl1_c.inc"
51
52
53
54 INTEGER JFT, JLT,MTN,ITHK,NPT,ISMSTR,ISUBSTACK
55 INTEGER MAT(MVSIZ), PID(MVSIZ), IGEO(NPROPGI,NUMGEO)
56 INTEGER , INTENT(IN) :: NEL
57
59 . geo(npropg,numgeo), pm(npropm,*), off(*),
area(*),
60 . sti(*),stir(*),shf(*),thk0(*),thk02(*),thk(*),
61 . nu(*),g(*),ym(*),a11(*),a12(*),
62 . vol0(*),vol00(*),ssp(*),rho(*),gs(*),
63 . a11r(*),pm_stack(20,*)
64 my_real ,
DIMENSION(NEL),
INTENT(OUT) :: zoffset
65
66
67
68 INTEGER I,ISH,MX,IPID,J,IGTYP,IGMAT,IPGMAT,IPOS
69
71 . fac1,fsh,viscdef,z0
72
73 IF (ithk>0.AND.ismstr/=3.AND.ismdisp == 0) THEN
74 DO i=jft,jlt
75 thk0(i)=thk(i)
76 ENDDO
77 ENDIF
78
79 DO i=jft,jlt
80 thk02(i) = thk0(i)*thk0(i)
81 vol0(i) = thk0(i)*
area(i)
82
83 vol00(i) = thk0(i)*
area(i)
84 ENDDO
85
86 IF (mtn == 19) THEN
87 viscdef=fourth
88 ELSEIF (mtn == 25.OR.mtn == 27) THEN
89 viscdef=fiveem2
90 ELSE
91 viscdef=zero
92 ENDIF
93
94 igtyp = igeo(11,pid(1))
95 igmat = igeo(98,pid(1))
96 ipgmat = 700
97 IF(igtyp == 11 .AND. igmat > 0) THEN
98 DO i=jft,jlt
99 mx = pid(i)
100 rho(i) = geo(ipgmat +1 ,mx)
101 ym(i) = geo(ipgmat +2 ,mx)
102 nu(i) = geo(ipgmat +3 ,mx)
103 g(i) = geo(ipgmat +4 ,mx)
104 a11(i) = geo(ipgmat +5 ,mx)
105 a12(i) = geo(ipgmat +6 ,mx)
106 a11r(i)= geo(ipgmat +7 ,mx)
107 ssp(i) = geo(ipgmat +9 ,mx)
108 ENDDO
109 ELSEIF(igtyp == 52 .OR.
110 . ((igtyp == 17 .OR. igtyp == 51) .AND. igmat > 0)) THEN
111 DO i=jft,jlt
112 rho(i) = pm_stack(1 ,isubstack)
113 ym(i) = pm_stack(2 ,isubstack)
114 nu(i) = pm_stack(3 ,isubstack)
115 g(i) = pm_stack(4 ,isubstack)
116 a11(i) = pm_stack(5 ,isubstack)
117 a12(i) = pm_stack(6 ,isubstack)
118 a11r(i)= pm_stack(7 ,isubstack)
119 ssp(i) = pm_stack(9 ,isubstack)
120 ENDDO
121 ELSE
122 mx =mat(jft)
123 DO i=jft,jlt
124 rho(i)=pm(1,mx)
125 ym(i) =pm(20,mx)
126 nu(i) =pm(21,mx)
127 g(i) =pm(22,mx)
128 a11(i)=pm(24,mx)
129 a12(i)=pm(25,mx)
130 ssp(i)=pm(27,mx)
131 ENDDO
132 ENDIF
133
134 IF (npt == 1) THEN
135 DO i=jft,jlt
136 shf(i) = zero
137 ENDDO
138 ELSE
139 DO i=jft,jlt
140 fac1 = two*(one+nu(i))*thk02(i)
141 ish = nint(geo(37,pid(i)))
142 fsh = geo(38,pid(i))
143 shf(i)=fsh*(one - ish + ish*fac1 / (fsh*
area(i)+fac1) )
144 ENDDO
145 ENDIF
146 DO i=jft,jlt
147 gs(i)=g(i)*shf(i)
148 ENDDO
149 z0 = geo(199,pid(1))
150 zoffset(jft:jlt) = zero
151 SELECT CASE(igtyp)
152 CASE (1,9,10,11,16)
153 DO i=jft,jlt
154 zoffset(i) = z0
155 ENDDO
156 CASE (17,51,52)
157 ipos = igeo(99,pid(1))
158 IF(ipos == 2) THEN
159 DO i=jft,jlt
160 zoffset(i) = z0 - half*thk0(i)
161 ENDDO
162 ELSEIF (ipos== 3 .OR. ipos == 4) THEN
163 DO i=jft,jlt
164 z0= half*thk0(i)
165 zoffset(i) = z0
166 ENDDO
167 ENDIF
168 CASE DEFAULT
169 zoffset(jft:jlt) = zero
170 END SELECT
171
172 RETURN
subroutine area(d1, x, x2, y, y2, eint, stif0)