46 use element_mod , only :nixc,nixtg
47
48
49
50#include "implicit_f.inc"
51
52
53
54#include "com01_c.inc"
55#include "com04_c.inc"
56#include "param_c.inc"
57
58
59
60 INTEGER , NEL, IS, NELTG,NTY
61 INTEGER IRECT(4,*), IXC(NIXC,*), IXTG(NIXTG,*),
62 . KNOD2ELC(*) ,KNOD2ELTG(*) ,NOD2ELC(*) ,NOD2ELTG(*),
63 . IGEO(NPROPGI,*),IWORKSH(3,*)
64
66 . geo(npropg,*), pm(npropm,*),thk(*),pm_stack(20,*)
67
68
69
70 INTEGER N, J, II, K, IAD,IGTYP, IPGMAT,IGMAT,ISUBSTACK
71
73 . dxm, stm, dx, st
74
75 nel=0
76 neltg=0
77 dxm = zero
78 stm = zero
79 ipgmat = 700
80 IF(irect(3,is)==irect(4,is).AND.numeltg/=0)THEN
81 IF(irect(1,is)>numnod) RETURN
82 DO 230 iad=knod2eltg(irect(1,is))+1,knod2eltg(irect(1,is)+1)
83 n = nod2eltg(iad)
84 DO 220 j=1,3
85 ii=irect(j,is)
86 DO 210 k=1,3
87 IF(ixtg(k+1,n)==ii) GOTO 220
88 210 CONTINUE
89 GOTO 230
90 220 CONTINUE
91 igtyp = igeo(11,ixtg(5,n))
92 IF ( thk(numelc+n) /= zero .AND. iintthick == 0 .AND.
93 . (nty == 7 .OR. nty == 20.OR. nty == 22)) THEN
94 dx=thk(numelc+n)
95 ELSEIF(igtyp == 17 .OR. igtyp == 51 .OR.igtyp ==52) THEN
96 dx=thk(numelc+n)
97 ELSE
98 dx = geo(1,ixtg(5,n))
99 ENDIF
100 igmat = igeo(98,ixtg(5,n))
101 IF (ixtg(1,n)>0) THEN
102 IF(igtyp == 11 .AND. igmat > 0) THEN
103 st = geo(ipgmat + 2 ,ixtg(5,n))
104 ELSEIF(igtyp ==52 .OR.
105 . ((igtyp == 17 .OR. igtyp == 51) .AND. igmat > 0))THEN
106 isubstack = iworksh(3,numelc + n)
107 st = pm_stack(2 ,isubstack)
108 ELSE
109 st = pm(20,ixtg(1,n))
110 ENDIF
111 ELSE
112 st = 0.
113 ENDIF
114 IF (dx>dxm) THEN
115 dxm = dx
116 neltg = n
117 stm = st
118 ELSEIF(dx==dxm) THEN
119 IF ((st>=stm).OR.(stm==0.)) THEN
120 neltg = n
121 stm = st
122 ENDIF
123 ENDIF
124 230 CONTINUE
125 ENDIF
126
127 IF(numelc/=0) THEN
128 DO 430 iad=knod2elc(irect(1,is))+1,knod2elc(irect(1,is)+1)
129 n = nod2elc(iad)
130 DO 420 j=1,4
131 ii=irect(j,is)
132 DO 410 k=1,4
133 IF(ixc(k+1,n)==ii) GOTO 420
134 410 CONTINUE
135 GOTO 430
136 420 CONTINUE
137 igtyp = igeo(11,ixc(6,n))
138 IF ( thk(n) /= zero .AND. iintthick == 0 .AND.
139 . (nty == 7 .OR. nty == 20.OR. nty == 22)) THEN
140 dx=thk(n)
141 ELSEIF(igtyp == 17 .OR. igtyp ==51 .OR. igtyp ==52) THEN
142 dx=thk(n)
143 ELSE
144 dx = geo(1,ixc(6,n))
145 ENDIF
146 IF (ixc(1,n)>0) THEN
147 st = pm(20,ixc(1,n))
148 ELSE
149 st = zero
150 ENDIF
151 IF (dx>dxm) THEN
152 dxm = dx
153 nel = n
154 stm = st
155 ELSEIF(dx==dxm) THEN
156 IF ((st>stm).OR.(stm==zero)) THEN
157 nel = n
158 stm = st
159 ENDIF
160 ENDIF
161 430 CONTINUE
162 ENDIF
163 RETURN