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