37
38
39
41 USE elbufdef_mod
42 use element_mod , only : nixs
43
44
45
46#include "implicit_f.inc"
47
48
49
50#include "com01_c.inc"
51#include "com04_c.inc"
52#include "param_c.inc"
53
54
55
56 INTEGER II, IGROU, IELN , IERR, IX(4), IXS(NIXS),IPARG(NPARG,NGROUP)
58 .
area, tstif, t, vol, x(3,numnod), pm(npropm,nummat)
59 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP) :: ELBUF_TAB
60
61
62
63 INTEGER I, N1, N2, N3, N4, NG,MAT
65 . x1, x2, x3, x4, y1, y2, y3, y4, z1, z2, z3, z4,
66 . nx, ny, nz, dx, dy, dz,
norm, dist, cond
67 INTEGER :: LLT ,NFT ,MTN ,IAD ,ITY ,NPT ,JALE ,ISMSTR ,JEUL ,JTUR ,JTHE ,JLAG ,JMULT ,JHBE
68 INTEGER :: JIVF, NVAUX, JPOR, JCVT, JCLOSE, JPLASOL, IREP, IINT, IGTYP
69 INTEGER :: , ISORTHG, ISRAT, , ICSEN, IFAILURE, JSMS
70
71
72 ierr = 0
73
74
75
76 DO 200 ng=ii/nvsiz+1,ngroup
78 2 mtn ,llt ,nft ,iad ,ity ,
79 3 npt ,jale ,ismstr ,jeul ,jtur ,
80 4 jthe ,jlag ,jmult ,jhbe ,jivf ,
81 5 nvaux ,jpor ,jcvt ,jclose ,jplasol ,
82 6 irep ,iint ,igtyp ,israt ,isrot ,
83 7 icsen ,isorth ,isorthg ,ifailure,jsms )
84 IF(ity/=1) GO TO 200
85 IF(ii>nft+llt) GO TO 200
86 IF(iparg(8,ng)==1.OR.jthe/=1)THEN
87 ierr = 1
88 RETURN
89 ENDIF
90 i = ii - nft
91 GOTO 250
92 200 CONTINUE
93 ierr = 1
94 RETURN
95 250 CONTINUE
96
97 igrou = ng
98 ieln = i
99 vol = elbuf_tab(ng)%GBUF%VOL(i)
100
101
102
103 n1=ix(1)
104 n2=ix(2)
105 n3=ix(3)
106 n4=ix(4)
107
108 x1=x(1,n1)
109 y1=x(2,n1)
110 z1=x(3,n1)
111
112 x2=x(1,n2)
113 y2=x(2,n2)
114 z2=x(3,n2)
115
116 x3=x(1,n3)
117 y3=x(2,n3)
118 z3=x(3,n3)
119
120 x4=x(1,n4)
121 y4=x(2,n4)
122 z4=x(3,n4)
123
124
125
126 nx=(y1-y3)*(z2-z4) - (z1-z3)*(y2-y4)
127 ny=(z1-z3)*(x2-x4) - (x1-x3)*(z2-z4)
128 nz=(x1-x3)*(y2-y4) - (y1-y3)*(x2-x4)
129 norm = sqrt(nx**2 + ny**2 + nz**2)
130
131
132
133 dx = two*(x1 + x2 + x3 + x4)
134 . -x(1,ixs(2))-x(1,ixs(3))
135 . -x(1,ixs(4))-x(1,ixs(5))
136 . -x(1,ixs(6))-x(1,ixs(7))
137 . -x(1,ixs(8))-x(1,ixs(9))
138
139 dy = two*(y1 + y2 + y3 + y4)
140 . -x(2,ixs(2))-x(2,ixs(3))
141 . -x(2,ixs(4))-x(2,ixs(5))
142 . -x(2,ixs(6))-x(2,ixs(7))
143 . -x(2,ixs(8))-x(2,ixs(9))
144
145 dz = two*(z1 + z2 + z3 + z4)
146 . -x(3,ixs(2))-x(3,ixs(3))
147 . -x(3,ixs(4))-x(3,ixs(5))
148 . -x(3,ixs(6))-x(3,ixs(7))
149 . -x(3,ixs(8))-x(3,ixs(9))
150
151
152
153
154 dist = one_over_8*(dx*nx+dy*ny+dz*nz) /
max(em15,
norm)
156
157
158
159 t = elbuf_tab(ng)%GBUF%TEMP(i)
160 mat =ixs(1)
161 IF(t<=pm(80,mat))THEN
162 cond=pm(75,mat)+pm(76,mat)*t
163 ELSE
164 cond=pm(77,mat)+pm(78,mat)*t
165 ENDIF
166 tstif = dist / cond
167
168
169 RETURN
norm(diag(diag(diag(inv(mat))) -id.SOL), 2) % destroy mumps instance id.JOB
subroutine area(d1, x, x2, y, y2, eint, stif0)
subroutine initbuf(iparg, ng, mtn, llt, nft, iad, ity, npt, jale, ismstr, jeul, jtur, jthe, jlag, jmult, jhbe, jivf, mid, jpor, jcvt, jclose, jpla, irep, iint, igtyp, israt, isrot, icsen, isorth, isorthg, ifailure, jsms)