Rocstar  1.0
Rocstar multiphysics simulation application
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
v3d10_B_Bar.f90
Go to the documentation of this file.
1 !*********************************************************************
2 !* Illinois Open Source License *
3 !* *
4 !* University of Illinois/NCSA *
5 !* Open Source License *
6 !* *
7 !* Copyright@2008, University of Illinois. All rights reserved. *
8 !* *
9 !* Developed by: *
10 !* *
11 !* Center for Simulation of Advanced Rockets *
12 !* *
13 !* University of Illinois *
14 !* *
15 !* www.csar.uiuc.edu *
16 !* *
17 !* Permission is hereby granted, free of charge, to any person *
18 !* obtaining a copy of this software and associated documentation *
19 !* files (the "Software"), to deal with the Software without *
20 !* restriction, including without limitation the rights to use, *
21 !* copy, modify, merge, publish, distribute, sublicense, and/or *
22 !* sell copies of the Software, and to permit persons to whom the *
23 !* Software is furnished to do so, subject to the following *
24 !* conditions: *
25 !* *
26 !* *
27 !* @ Redistributions of source code must retain the above copyright *
28 !* notice, this list of conditions and the following disclaimers. *
29 !* *
30 !* @ Redistributions in binary form must reproduce the above *
31 !* copyright notice, this list of conditions and the following *
32 !* disclaimers in the documentation and/or other materials *
33 !* provided with the distribution. *
34 !* *
35 !* @ Neither the names of the Center for Simulation of Advanced *
36 !* Rockets, the University of Illinois, nor the names of its *
37 !* contributors may be used to endorse or promote products derived *
38 !* from this Software without specific prior written permission. *
39 !* *
40 !* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, *
41 !* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES *
42 !* OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND *
43 !* NONINFRINGEMENT. IN NO EVENT SHALL THE CONTRIBUTORS OR *
44 !* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER *
45 !* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, *
46 !* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE *
47 !* USE OR OTHER DEALINGS WITH THE SOFTWARE. *
48 !*********************************************************************
49 !* Please acknowledge The University of Illinois Center for *
50 !* Simulation of Advanced Rockets in works and publications *
51 !* resulting from this software or its derivatives. *
52 !*********************************************************************
53 SUBROUTINE v3d10_b_bar(coor,matcstet,lmcstet,R_in,d,ci, &
54  s11l,s22l,s33l,s12l,s23l,s13l,&
55  numnp,nstart,nend,numcstet,numat_vol)
56 !-----Performs displacement based computations for 3D, 10-node
57 !-----Quadratic Linear Elastic Tetrahedron with quadratic interpolation
58 !-----functions. (linear strain tetrahedra)
59 
60 !----- 4 Guass points
61  IMPLICIT NONE
62 !-----Global variables
63  INTEGER :: numnp ! number of nodes
64  INTEGER :: numat_vol ! number of volumetric materials
65  INTEGER :: numcstet ! number of LSTets
66 !-- coordinate array
67  REAL*8, DIMENSION(1:3,1:numnp) :: coor
68 !-- elastic stiffness consts
69  REAL*8, DIMENSION(1:9,1:numat_vol) :: ci
70 !-- mat number for CSTet element
71  INTEGER, DIMENSION(1:numcstet) :: matcstet
72 !-- internal force
73  REAL*8, DIMENSION(1:3*numnp) :: r_in
74 !-- displacement vector
75  REAL*8, DIMENSION(1:3*numnp) :: d
76 !-- CSTet stress
77  REAL*8, DIMENSION(1:4,1:numcstet) :: s11l, s22l, s33l, s12l, s23l, s13l
78 !-- connectivity table for CSTet
79  INTEGER, DIMENSION(1:10,1:numcstet) :: lmcstet
80 !---- Local variables
81 !-- node numbers
82  INTEGER :: n1,n2,n3,n4,n5,n6,n7,n8,n9,n10
83 !-- x, y, and z displacements of nodes
84  REAL*8 :: u1,u2,u3,u4,u5,u6,u7,u8,u9,u10
85  REAL*8 :: v1,v2,v3,v4,v5,v6,v7,v8,v9,v10
86  REAL*8 :: w1,w2,w3,w4,w5,w6,w7,w8,w9,w10
87 !-- 6*volume and inverse of 6*volume
88  REAL*8 :: vx6, vx6inv
89 !-- spacial derivatives
90  REAL*8 :: b1,b2,b3,b4,b5,b6,b7,b8,b9,b10
91  REAL*8 :: b11,b12,b13,b14,b15,b16,b17,b18,b19,b20
92  REAL*8 :: b21,b22,b23,b24,b25,b26,b27,b28,b29,b30
93  REAL*8 :: b4n1, b5n1, b6n1, b7n1, b8n1, b9n1
94  REAL*8 :: b4n2, b5n2, b6n2, b7n2, b8n2, b9n2
95  REAL*8 :: b4n3, b5n3, b6n3, b7n3, b8n3, b9n3
96  REAL*8 :: b4n4, b5n4, b6n4, b7n4, b8n4, b9n4
97  REAL*8 :: b4n5, b5n5, b6n5, b7n5, b8n5, b9n5
98  REAL*8 :: b4n6, b5n6, b6n6, b7n6, b8n6, b9n6
99  REAL*8 :: b4n7, b5n7, b6n7, b7n7, b8n7, b9n7
100  REAL*8 :: b4n8, b5n8, b6n8, b7n8, b8n8, b9n8
101  REAL*8 :: b4n9, b5n9, b6n9, b7n9, b8n9, b9n9
102  REAL*8 :: b4n10, b5n10, b6n10, b7n10, b8n10, b9n10
103 !-- strains
104  REAL*8 :: e11,e22,e33,e12,e23,e13
105 !-- coordinate holding variable
106  REAL*8 :: x1,x2,x3,x4,x5,x6,x7,x8,x9,x10
107  REAL*8 :: y1,y2,y3,y4,y5,y6,y7,y8,y9,y10
108  REAL*8 :: z1,z2,z3,z4,z5,z6,z7,z8,z9,z10
109 !-- dummy and counters
110  INTEGER :: i,j,nstart,nend,k
111  REAL*8 :: aux1,aux2,aux3,aux4,aux5,aux6,aux7,aux8,aux9,aux10,aux11,aux12
112 !-- partial internal force
113  REAL*8 :: r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18
114  REAL*8 :: r19,r20,r21,r22,r23,r24,r25,r26,r27,r28,r29,r30
115  REAL*8 :: g1, g2, g3, g4
116  REAL*8 :: xn1, xn2, xn3, xn4
117 !-- Coordinate subtractions
118  REAL*8 :: x14, x24, x34, y14, y24, y34, z14, z24, z34
119 !-- Coordinate subtractions: These are to speed up B calculation
120  REAL*8 :: x12, x13, y12, y13, z12, z13
121 !--
122  REAL*8 :: c11, c21, c31
123  INTEGER :: k1n1,k1n2,k1n3,k1n4,k1n5,k1n6,k1n7,k1n8,k1n9,k1n10
124  INTEGER :: k2n1,k2n2,k2n3,k2n4,k2n5,k2n6,k2n7,k2n8,k2n9,k2n10
125  INTEGER :: k3n1,k3n2,k3n3,k3n4,k3n5,k3n6,k3n7,k3n8,k3n9,k3n10
126 
127  REAL*8 :: onethird = 1./3.
128 
129  REAL*8,DIMENSION(1:4,1:4) :: gaussintpt = reshape( &
130  (/0.58541020d0,0.13819660d0,0.13819660d0,0.13819660d0, &
131  0.13819660d0,0.58541020d0,0.13819660d0,0.13819660d0, &
132  0.13819660d0,0.13819660d0,0.58541020d0,0.13819660d0, &
133  0.13819660d0,0.13819660d0,0.13819660d0,0.58541020d0/),(/4,4/) )
134 
135  integer :: igpt
136 
137  REAL*8, DIMENSION(1:10) :: bbarx, bbary, bbarz
138  REAL*8, DIMENSION(1:3,1:3) :: jac
139  REAL*8, DIMENSION(1:3) :: dx,dy,dz
140  REAL*8 :: jacinv
141 
142 ! Derivatives of the shape functions evaluated at the center of the tet, 1/4,1/4,1/4
143 
144  REAL*8, DIMENSION(1:10) :: n_ksi = (/0.,0.,0.,0.,0.,1.,-1.,-1.,1.,0./)
145  REAL*8, DIMENSION(1:10) :: n_eta = (/0.,0.,0.,0.,-1.,1.,0.,-1.,0.,1./)
146  REAL*8, DIMENSION(1:10) :: n_zet = (/0.,0.,0.,0.,-1.,0.,-1.,0.,1.,1./)
147 
148 
149  DO i = nstart, nend
150  j = matcstet(i)
151 
152  n1 = lmcstet(1,i)
153  n2 = lmcstet(2,i)
154  n3 = lmcstet(3,i)
155  n4 = lmcstet(4,i)
156  n5 = lmcstet(5,i)
157  n6 = lmcstet(6,i)
158  n7 = lmcstet(7,i)
159  n8 = lmcstet(8,i)
160  n9 = lmcstet(9,i)
161  n10 = lmcstet(10,i)
162 
163  k3n1 = 3*n1
164  k3n2 = 3*n2
165  k3n3 = 3*n3
166  k3n4 = 3*n4
167  k3n5 = 3*n5
168  k3n6 = 3*n6
169  k3n7 = 3*n7
170  k3n8 = 3*n8
171  k3n9 = 3*n9
172  k3n10 = 3*n10
173 
174  k2n1 = k3n1 - 1
175  k2n2 = k3n2 - 1
176  k2n3 = k3n3 - 1
177  k2n4 = k3n4 - 1
178  k2n5 = k3n5 - 1
179  k2n6 = k3n6 - 1
180  k2n7 = k3n7 - 1
181  k2n8 = k3n8 - 1
182  k2n9 = k3n9 - 1
183  k2n10 = k3n10 - 1
184 
185  k1n1 = k3n1 - 2
186  k1n2 = k3n2 - 2
187  k1n3 = k3n3 - 2
188  k1n4 = k3n4 - 2
189  k1n5 = k3n5 - 2
190  k1n6 = k3n6 - 2
191  k1n7 = k3n7 - 2
192  k1n8 = k3n8 - 2
193  k1n9 = k3n9 - 2
194  k1n10 = k3n10 - 2
195  ! k#n# dummy variables replaces:
196  u1 = d(k1n1) ! (3*n1 -2)
197  u2 = d(k1n2) ! (3*n2 -2)
198  u3 = d(k1n3) ! (3*n3 -2)
199  u4 = d(k1n4) ! (3*n4 -2)
200  u5 = d(k1n5) ! (3*n5 -2)
201  u6 = d(k1n6) ! (3*n6 -2)
202  u7 = d(k1n7) ! (3*n7 -2)
203  u8 = d(k1n8) ! (3*n8 -2)
204  u9 = d(k1n9) ! (3*n9 -2)
205  u10 = d(k1n10) ! (3*n10-2)
206  v1 = d(k2n1) ! (3*n1 -1)
207  v2 = d(k2n2) ! (3*n2 -1)
208  v3 = d(k2n3) ! (3*n3 -1)
209  v4 = d(k2n4) ! (3*n4 -1)
210  v5 = d(k2n5) ! (3*n5 -1)
211  v6 = d(k2n6) ! (3*n6 -1)
212  v7 = d(k2n7) ! (3*n7 -1)
213  v8 = d(k2n8) ! (3*n8 -1)
214  v9 = d(k2n9) ! (3*n9 -1)
215  v10 = d(k2n10) ! (3*n10-1)
216  w1 = d(k3n1) ! (3*n1)
217  w2 = d(k3n2) ! (3*n2)
218  w3 = d(k3n3) ! (3*n3)
219  w4 = d(k3n4) ! (3*n4)
220  w5 = d(k3n5) ! (3*n5)
221  w6 = d(k3n6) ! (3*n6)
222  w7 = d(k3n7) ! (3*n7)
223  w8 = d(k3n8) ! (3*n8)
224  w9 = d(k3n9) ! (3*n9)
225  w10 = d(k3n10) ! (3*n10)
226 
227  x1 = coor(1,n1)
228  x2 = coor(1,n2)
229  x3 = coor(1,n3)
230  x4 = coor(1,n4)
231  x5 = coor(1,n5)
232  x6 = coor(1,n6)
233  x7 = coor(1,n7)
234  x8 = coor(1,n8)
235  x9 = coor(1,n9)
236  x10 = coor(1,n10)
237 
238  y1 = coor(2,n1)
239  y2 = coor(2,n2)
240  y3 = coor(2,n3)
241  y4 = coor(2,n4)
242  y5 = coor(2,n5)
243  y6 = coor(2,n6)
244  y7 = coor(2,n7)
245  y8 = coor(2,n8)
246  y9 = coor(2,n9)
247  y10 = coor(2,n10)
248 
249  z1 = coor(3,n1)
250  z2 = coor(3,n2)
251  z3 = coor(3,n3)
252  z4 = coor(3,n4)
253  z5 = coor(3,n5)
254  z6 = coor(3,n6)
255  z7 = coor(3,n7)
256  z8 = coor(3,n8)
257  z9 = coor(3,n9)
258  z10 = coor(3,n10)
259 
260  x14 = x1 - x4
261  x24 = x2 - x4
262  x34 = x3 - x4
263  y14 = y1 - y4
264  y24 = y2 - y4
265  y34 = y3 - y4
266  z14 = z1 - z4
267  z24 = z2 - z4
268  z34 = z3 - z4
269 
270  x12 = x1 - x2 ! not used in vol. calc
271  x13 = x1 - x3 ! not used in vol. calc
272  y12 = y1 - y2 ! not used in vol. calc
273  y13 = y1 - y3 ! not used in vol. calc
274  z12 = z1 - z2 ! not used in vol. calc
275  z13 = z1 - z3 ! not used in vol. calc
276 
277  c11 = y24*z34 - z24*y34
278  c21 = -( x24*z34 - z24*x34 )
279  c31 = x24*y34 - y24*x34
280 
281  vx6 = -( x14*c11 + y14*c21 + z14*c31 )
282 
283 ! Vx6 = x2*y3*z4 - x2*y4*z3 - y2*x3*z4 + y2*x4*z3 + z2*x3*y4
284 ! $ - z2*x4*y3 - x1*y3*z4 + x1*y4*z3 + x1*y2*z4 - x1*y2*z3
285 ! $ - x1*z2*y4 + x1*z2*y3 + y1*x3*z4 - y1*x4*z3 - y1*x2*z4
286 ! $ + y1*x2*z3 + y1*z2*x4 - y1*z2*x3 - z1*x3*y4 + z1*x4*y3
287 ! $ + z1*x2*y4 - z1*x2*y3 - z1*y2*x4 + z1*y2*x3
288 
289  vx6inv = 1.d0 / vx6
290 
291  aux1 = -(y3*z4 - y4*z3 - y2*z4 + y2*z3 + z2*y4 - z2*y3)
292  aux2 = (x3*z4 - x4*z3 - x2*z4 + x2*z3 + z2*x4 - z2*x3)
293  aux3 = -(x3*y4 - x4*y3 - x2*y4 + x2*y3 + y2*x4 - y2*x3)
294  aux4 = (y3*z4 - y4*z3 - y1*z4 + y1*z3 + z1*y4 - z1*y3)
295  aux5 = -(x3*z4 - x4*z3 - x1*z4 + x1*z3 + z1*x4 - z1*x3)
296  aux6 = (x3*y4 - x4*y3 - x1*y4 + x1*y3 + y1*x4 - y1*x3)
297  aux7 = -(y2*z4 - z2*y4 - y1*z4 + y1*z2 + z1*y4 - z1*y2)
298  aux8 = (x2*z4 - z2*x4 - x1*z4 + x1*z2 + z1*x4 - z1*x2)
299  aux9 = -(x2*y4 - y2*x4 - x1*y4 + x1*y2 + y1*x4 - y1*x2)
300  aux10 = (y2*z3 - z2*y3 - y1*z3 + y1*z2 + z1*y3 - z1*y2)
301  aux11 =-(x2*z3 - z2*x3 - x1*z3 + x1*z2 + z1*x3 - z1*x2)
302  aux12 = (x2*y3 - y2*x3 - x1*y3 + x1*y2 + y1*x3 - y1*x2)
303 
304 
305 !!$ dx(1) = x6 - x7 - x8 + x9 ! dx(1) + N_ksi(i)*x(i)
306 !!$ dx(2) = -x5 + x6 - x8 + x10 ! N_eta(i)*x(i)
307 !!$ dx(3) = -x5 - x7 + x9 + x10 ! N_zet(i)*x(i)
308 !!$ dy(1) = y6 - y7 - y8 + y9 ! N_ksi(i)*y(i)
309 !!$ dy(2) = -y5 + y6 - y8 + y10 ! N_eta(i)*y(i)
310 !!$ dy(3) = -y5 - y7 + y9 + y10 ! N_zet(i)*y(i)
311 !!$ dz(1) = z6 - z7 - z8 + z9 ! N_ksi(i)*z(i)
312 !!$ dz(2) = -z5 + z6 - z8 + z10 ! N_eta(i)*z(i)
313 !!$ dz(3) = -z5 - z7 + z9 + z10 ! N_zet(i)*z(i)
314 !!$
315 !!$ Jac(1,1) = dy(2)*dz(3) - dz(2)*dy(3)
316 !!$ Jac(1,2) = dz(1)*dy(3) - dy(1)*dz(3)
317 !!$ Jac(1,3) = dy(1)*dz(2) - dz(1)*dy(2)
318 !!$ Jac(2,1) = dz(2)*dx(3) - dx(2)*dz(3)
319 !!$ Jac(2,2) = dx(1)*dz(3) - dz(1)*dx(3)
320 !!$ Jac(2,3) = dz(1)*dx(2) - dx(1)*dz(2)
321 !!$ Jac(3,1) = dx(2)*dy(3) - dy(2)*dx(3)
322 !!$ Jac(3,2) = dy(1)*dx(3) - dx(1)*dy(3)
323 !!$ Jac(3,3) = dx(1)*dy(2) - dy(1)*dx(2)
324 
325 !!$ JacInv = 1./( (dx(1)*dy(2)*dz(3)) + (dy(1)*dz(2)*dx(3)) + (dz(1)*dx(2)*dy(3)) &
326 !!$ - (dz(1)*dy(2)*dx(3)) - (dx(1)*dz(2)*dy(3)) - (dy(1)*dx(2)*dz(3)))
327 !!$
328 !!$ PRINT*,JacInv,Vx6inv
329 
330 !!$ JacInv = 1.0
331 !!$
332 !!$
333 !!$ DO k = 1, 10
334 !!$ BBarX(k) = JacInv*(Jac(1,1)*N_ksi(k) + Jac(1,2)*N_eta(k) + Jac(1,3)*N_zet(k))
335 !!$ BBarY(k) = JacInv*(Jac(2,1)*N_ksi(k) + Jac(2,2)*N_eta(k) + Jac(2,3)*N_zet(k))
336 !!$ BBarZ(k) = JacInv*(Jac(3,1)*N_ksi(k) + Jac(3,2)*N_eta(k) + Jac(3,3)*N_zet(k))
337 !!$ ENDDO
338 
339  bbarx(1) = 0. ! aux1*N_ksi(1)
340  bbary(1) = 0. !aux2*N_eta(1)
341  bbarz(1) = 0. !aux3*N_zet(1)
342  bbarx(2) = 0. !aux4*N_ksi(2)
343  bbary(2) = 0. !aux5*N_eta(2)
344  bbarz(2) = 0. !aux6*N_zet(2)
345  bbarx(3) = 0. !aux4*N_ksi(3)
346  bbary(3) = 0. !aux5*N_eta(3)
347  bbarz(3) = 0. !aux6*N_zet(3)
348  bbarx(4) = 0. !aux7*N_ksi(4)
349  bbary(4) = 0. !aux8*N_eta(4)
350  bbarz(4) = 0. !aux9*N_zet(4)
351 
352  bbarx(5) = aux1 + aux4
353  bbary(5) = aux2 + aux5
354  bbarz(5) = aux3 + aux6
355 
356  bbarx(6) = aux4 + aux7
357  bbary(6) = aux5 + aux8
358  bbarz(6) = aux6 + aux9
359 
360  bbarx(7) = aux7 + aux1
361  bbary(7) = aux8 + aux2
362  bbarz(7) = aux9 + aux3
363 
364  bbarx(8) = aux1 + aux10
365  bbary(8) = aux2 + aux11
366  bbarz(8) = aux3 + aux12
367 
368  bbarx(9) = aux4 + aux10
369  bbary(9) = aux5 + aux11
370  bbarz(9) = aux6 + aux12
371 
372  bbarx(10) = aux7 + aux10
373  bbary(10) = aux8 + aux11
374  bbarz(10) = aux9 + aux12
375 
376  r1 = 0.
377  r2 = 0.
378  r3 = 0.
379  r4 = 0.
380  r5 = 0.
381  r6 = 0.
382  r7 = 0.
383  r8 = 0.
384  r9 = 0.
385  r10 = 0.
386  r11 = 0.
387  r12 = 0.
388  r13 = 0.
389  r14 = 0.
390  r15 = 0.
391  r16 = 0.
392  r17 = 0.
393  r18 = 0.
394  r19 = 0.
395  r20 = 0.
396  r21 = 0.
397  r22 = 0.
398  r23 = 0.
399  r24 = 0.
400  r25 = 0.
401  r26 = 0.
402  r27 = 0.
403  r28 = 0.
404  r29 = 0.
405  r30 = 0.
406 
407 
408  DO igpt = 1, 4
409 
410  g1 = gaussintpt(igpt,1)
411  g2 = gaussintpt(igpt,2)
412  g3 = gaussintpt(igpt,3)
413  g4 = gaussintpt(igpt,4)
414 
415 
416  xn1 = (4.d0*g1-1.d0) ! derivative of shape function
417  xn2 = (4.d0*g2-1.d0) ! dN_i/dzeta_i
418  xn3 = (4.d0*g3-1.d0)
419  xn4 = (4.d0*g4-1.d0)
420 ! xN5 = 4.d0*g1*g2
421 ! xN6 = 4.d0*g2*g3
422 ! xN7 = 4.d0*g3*g1
423 ! xN8 = 4.d0*g1*g4
424 ! xN9 = 4.d0*g2*g4
425 ! xN10= 4.d0*g3*g4
426 
427  b1 = aux1*xn1
428  b2 = aux2*xn1
429  b3 = aux3*xn1
430  b4 = aux4*xn2
431  b5 = aux5*xn2
432  b6 = aux6*xn2
433  b7 = aux7*xn3
434  b8 = aux8*xn3
435  b9 = aux9*xn3
436  b10 = aux10*xn4
437  b11 = aux11*xn4
438  b12 = aux12*xn4
439 
440  b13 = 4.d0*(g2*aux1 + g1*aux4)
441  b14 = 4.d0*(g2*aux2 + g1*aux5)
442  b15 = 4.d0*(g2*aux3 + g1*aux6)
443 
444  b16 = 4.d0*(g3*aux4 + g2*aux7)
445  b17 = 4.d0*(g3*aux5 + g2*aux8)
446  b18 = 4.d0*(g3*aux6 + g2*aux9)
447 
448  b19 = 4.d0*(g1*aux7 + g3*aux1)
449  b20 = 4.d0*(g1*aux8 + g3*aux2)
450  b21 = 4.d0*(g1*aux9 + g3*aux3)
451 
452  b22 = 4.d0*(g4*aux1 + g1*aux10)
453  b23 = 4.d0*(g4*aux2 + g1*aux11)
454  b24 = 4.d0*(g4*aux3 + g1*aux12)
455 
456  b25 = 4.d0*(g4*aux4 + g2*aux10)
457  b26 = 4.d0*(g4*aux5 + g2*aux11)
458  b27 = 4.d0*(g4*aux6 + g2*aux12)
459 
460  b28 = 4.d0*(g4*aux7 + g3*aux10)
461  b29 = 4.d0*(g4*aux8 + g3*aux11)
462  b30 = 4.d0*(g4*aux9 + g3*aux12)
463 
464 !!$ BBarX(1) = B1
465 !!$ BBarY(1) = B2
466 !!$ BBarZ(1) = B3
467 !!$ BBarX(2) = B4
468 !!$ BBarY(2) = B5
469 !!$ BBarZ(2) = B6
470 !!$ BBarX(3) = B7
471 !!$ BBarY(3) = B8
472 !!$ BBarZ(3) = B9
473 !!$ BBarX(4) = B10
474 !!$ BBarY(4) = B11
475 !!$ BBarZ(4) = B12
476 !!$ BBarX(5) = B13
477 !!$ BBarY(5) = B14
478 !!$ BBarZ(5) = B15
479 !!$ BBarX(6) = B16
480 !!$ BBarY(6) = B17
481 !!$ BBarZ(6) = B18
482 !!$ BBarX(7) = B19
483 !!$ BBarY(7) = B20
484 !!$ BBarZ(7) = B21
485 !!$ BBarX(8) = B22
486 !!$ BBarY(8) = B23
487 !!$ BBarZ(8) = B24
488 !!$ BBarX(9) = B25
489 !!$ BBarY(9) = B26
490 !!$ BBarZ(9) = B27
491 !!$ BBarX(10) = B28
492 !!$ BBarY(10) = B29
493 !!$ BBarZ(10) = B30
494 
495  b4n1 = ( bbarx(1) - b1 )*onethird
496  b5n1 = b1 + b4n1
497  b6n1 = ( bbary(1) - b2 )*onethird
498  b7n1 = b2 + b6n1
499  b8n1 = ( bbarz(1) - b3 )*onethird
500  b9n1 = b3 + b8n1
501 
502  b4n2 = ( bbarx(2) - b4 )*onethird
503  b5n2 = b4 + b4n2
504  b6n2 = ( bbary(2) - b5 )*onethird
505  b7n2 = b5 + b6n2
506  b8n2 = ( bbarz(2) - b6 )*onethird
507  b9n2 = b6 + b8n2
508 
509  b4n3 = ( bbarx(3) - b7 )*onethird
510  b5n3 = b7 + b4n3
511  b6n3 = ( bbary(3) - b8 )*onethird
512  b7n3 = b8 + b6n3
513  b8n3 = ( bbarz(3) - b9 )*onethird
514  b9n3 = b9 + b8n3
515 
516  b4n4 = ( bbarx(4) - b10 )*onethird
517  b5n4 = b10 + b4n4
518  b6n4 = ( bbary(4) - b11 )*onethird
519  b7n4 = b11 + b6n4
520  b8n4 = ( bbarz(4) - b12 )*onethird
521  b9n4 = b12 + b8n4
522 
523  b4n5 = ( bbarx(5) - b13 )*onethird
524  b5n5 = b13 + b4n5
525  b6n5 = ( bbary(5) - b14 )*onethird
526  b7n5 = b14 + b6n5
527  b8n5 = ( bbarz(5) - b15 )*onethird
528  b9n5 = b15 + b8n5
529 
530  b4n6 = ( bbarx(6) - b16 )*onethird
531  b5n6 = b16 + b4n6
532  b6n6 = ( bbary(6) - b17 )*onethird
533  b7n6 = b17 + b6n6
534  b8n6 = ( bbarz(6) - b18 )*onethird
535  b9n6 = b18 + b8n6
536 
537  b4n7 = ( bbarx(7) - b19 )*onethird
538  b5n7 = b19 + b4n7
539  b6n7 = ( bbary(7) - b20 )*onethird
540  b7n7 = b20 + b6n7
541  b8n7 = ( bbarz(7) - b21 )*onethird
542  b9n7 = b21 + b8n7
543 
544  b4n8 = ( bbarx(8) - b22 )*onethird
545  b5n8 = b22 + b4n8
546  b6n8 = ( bbary(8) - b23 )*onethird
547  b7n8 = b23 + b6n8
548  b8n8 = ( bbarz(8) - b24 )*onethird
549  b9n8 = b24 + b8n8
550 
551  b4n9 = ( bbarx(9) - b25 )*onethird
552  b5n9 = b25 + b4n9
553  b6n9 = ( bbary(9) - b26 )*onethird
554  b7n9 = b26 + b6n9
555  b8n9 = ( bbarz(9) - b27 )*onethird
556  b9n9 = b27 + b8n9
557 
558  b4n10 = ( bbarx(10) - b28 )*onethird
559  b5n10 = b28 + b4n10
560  b6n10 = ( bbary(10) - b29 )*onethird
561  b7n10 = b29 + b6n10
562  b8n10 = ( bbarz(10) - b30 )*onethird
563  b9n10 = b30 + b8n10
564 
565  e11 = (b5n1*u1 + b6n1*v1 + b8n1*w1 + b5n2*u2 + b6n2*v2 + b8n2*w2 + &
566  b5n3*u3 + b6n3*v3 + b8n3*w3 + b5n4*u4 + b6n4*v4 + b8n4*w4 + &
567  b5n5*u5 + b6n5*v5 + b8n5*w5 + b5n6*u6 + b6n6*v6 + b8n6*w6 + &
568  b5n7*u7 + b6n7*v7 + b8n7*w7 + b5n8*u8 + b6n8*v8 + b8n8*w8 + &
569  b5n9*u9 + b6n9*v9 + b8n9*w9 + b5n10*u10 + b6n10*v10 + b8n10*w10) * vx6inv
570 
571  e22 = (b4n1*u1 + b7n1*v1 + b8n1*w1 + b4n2*u2 + b7n2*v2 + b8n2*w2 + &
572  b4n3*u3 + b7n3*v3 + b8n3*w3 + b4n4*u4 + b7n4*v4 + b8n4*w4 + &
573  b4n5*u5 + b7n5*v5 + b8n5*w5 + b4n6*u6 + b7n6*v6 + b8n6*w6 + &
574  b4n7*u7 + b7n7*v7 + b8n7*w7 + b4n8*u8 + b7n8*v8 + b8n8*w8 + &
575  b4n9*u9 + b7n9*v9 + b8n9*w9 + b4n10*u10 + b7n10*v10 + b8n10*w10) * vx6inv
576 
577  e33 = (b4n1*u1 + b6n1*v1 + b9n1*w1 + b4n2*u2 + b6n2*v2 + b9n2*w2 + &
578  b4n3*u3 + b6n3*v3 + b9n3*w3 + b4n4*u4 + b6n4*v4 + b9n4*w4 + &
579  b4n5*u5 + b6n5*v5 + b9n5*w5 + b4n6*u6 + b6n6*v6 + b9n6*w6 + &
580  b4n7*u7 + b6n7*v7 + b9n7*w7 + b4n8*u8 + b6n8*v8 + b9n8*w8 + &
581  b4n9*u9 + b6n9*v9 + b9n9*w9 + b4n10*u10 + b6n10*v10 + b9n10*w10) * vx6inv
582 
583  e12 = (b2*u1 + b1*v1 + b5*u2 + b4*v2 &
584  + b8*u3 + b7*v3 + b11*u4 + b10*v4 &
585  + b14*u5 + b13*v5 + b17*u6 + b16*v6 &
586  + b20*u7 + b19*v7 + b23*u8 + b22*v8 &
587  + b26*u9 + b25*v9 + b29*u10 + b28*v10) * vx6inv
588  e23 = (b3*v1 + b2*w1 + b6*v2 + b5*w2 &
589  + b9*v3 + b8*w3 + b12*v4 + b11*w4 &
590  + b15*v5 + b14*w5 + b18*v6 + b17*w6 &
591  + b21*v7 + b20*w7 + b24*v8 + b23*w8 &
592  + b27*v9 + b26*w9 + b30*v10 + b29*w10) * vx6inv
593  e13 = (b3*u1 + b1*w1 + b6*u2 + b4*w2 &
594  + b9*u3 + b7*w3 + b12*u4 + b10*w4 &
595  + b15*u5 + b13*w5 + b18*u6 + b16*w6 &
596  + b21*u7 + b19*w7 + b24*u8 + b22*w8 &
597  + b27*u9 + b25*w9 + b30*u10 + b28*w10) * vx6inv
598 
599  s11l(igpt,i) = e11*ci(1,j) + e22*ci(2,j) + e33*ci(4,j)
600  s22l(igpt,i) = e11*ci(2,j) + e22*ci(3,j) + e33*ci(5,j)
601  s33l(igpt,i) = e11*ci(4,j) + e22*ci(5,j) + e33*ci(6,j)
602  s12l(igpt,i) = e12*ci(7,j)
603  s23l(igpt,i) = e23*ci(8,j)
604  s13l(igpt,i) = e13*ci(9,j)
605 
606  r1 = r1 + s11l(igpt,i)*b5n1 + s22l(igpt,i)*b4n1 + s33l(igpt,i)*b4n1 + s12l(igpt,i)*b2 + s13l(igpt,i)*b3
607  r2 = r2 +s11l(igpt,i)*b6n1 + s22l(igpt,i)*b7n1 + s33l(igpt,i)*b6n1 + s12l(igpt,i)*b1 + s23l(igpt,i)*b3
608  r3 = r3 +s11l(igpt,i)*b8n1 + s22l(igpt,i)*b8n1 + s33l(igpt,i)*b9n1 + s23l(igpt,i)*b2 + s13l(igpt,i)*b1
609 
610  r4 = r4 +s11l(igpt,i)*b5n2 + s22l(igpt,i)*b4n2 + s33l(igpt,i)*b4n2 + s12l(igpt,i)*b5 + s13l(igpt,i)*b6
611  r5 = r5 +s11l(igpt,i)*b6n2 + s22l(igpt,i)*b7n2 + s33l(igpt,i)*b6n2 + s12l(igpt,i)*b4 + s23l(igpt,i)*b6
612  r6 = r6 +s11l(igpt,i)*b8n2 + s22l(igpt,i)*b8n2 + s33l(igpt,i)*b9n2 + s23l(igpt,i)*b5 + s13l(igpt,i)*b4
613 
614  r7 = r7 +s11l(igpt,i)*b5n3 + s22l(igpt,i)*b4n3 + s33l(igpt,i)*b4n3 + s12l(igpt,i)*b8 + s13l(igpt,i)*b9
615  r8 = r8 +s11l(igpt,i)*b6n3 + s22l(igpt,i)*b7n3 + s33l(igpt,i)*b6n3 + s12l(igpt,i)*b7 + s23l(igpt,i)*b9
616  r9 = r9 +s11l(igpt,i)*b8n3 + s22l(igpt,i)*b8n3 + s33l(igpt,i)*b9n3 + s23l(igpt,i)*b8 + s13l(igpt,i)*b7
617 
618  r10 = r10 +s11l(igpt,i)*b5n4 + s22l(igpt,i)*b4n4 + s33l(igpt,i)*b4n4 + s12l(igpt,i)*b11 + s13l(igpt,i)*b12
619  r11 = r11 +s11l(igpt,i)*b6n4 + s22l(igpt,i)*b7n4 + s33l(igpt,i)*b6n4 + s12l(igpt,i)*b10 + s23l(igpt,i)*b12
620  r12 = r12 +s11l(igpt,i)*b8n4 + s22l(igpt,i)*b8n4 + s33l(igpt,i)*b9n4 + s23l(igpt,i)*b11 + s13l(igpt,i)*b10
621 
622  r13 = r13 +s11l(igpt,i)*b5n5 + s22l(igpt,i)*b4n5 + s33l(igpt,i)*b4n5 + s12l(igpt,i)*b14 + s13l(igpt,i)*b15
623  r14 = r14 +s11l(igpt,i)*b6n5 + s22l(igpt,i)*b7n5 + s33l(igpt,i)*b6n5 + s12l(igpt,i)*b13 + s23l(igpt,i)*b15
624  r15 = r15 +s11l(igpt,i)*b8n5 + s22l(igpt,i)*b8n5 + s33l(igpt,i)*b9n5 + s23l(igpt,i)*b14 + s13l(igpt,i)*b13
625 
626  r16 = r16 +s11l(igpt,i)*b5n6 + s22l(igpt,i)*b4n6 + s33l(igpt,i)*b4n6 + s12l(igpt,i)*b17 + s13l(igpt,i)*b18
627  r17 = r17 +s11l(igpt,i)*b6n6 + s22l(igpt,i)*b7n6 + s33l(igpt,i)*b6n6 + s12l(igpt,i)*b16 + s23l(igpt,i)*b18
628  r18 = r18 +s11l(igpt,i)*b8n6 + s22l(igpt,i)*b8n6 + s33l(igpt,i)*b9n6 + s23l(igpt,i)*b17 + s13l(igpt,i)*b16
629 
630  r19 = r19 +s11l(igpt,i)*b5n7 + s22l(igpt,i)*b4n7 + s33l(igpt,i)*b4n7 + s12l(igpt,i)*b20 + s13l(igpt,i)*b21
631  r20 = r20 +s11l(igpt,i)*b6n7 + s22l(igpt,i)*b7n7 + s33l(igpt,i)*b6n7 + s12l(igpt,i)*b19 + s23l(igpt,i)*b21
632  r21 = r21 +s11l(igpt,i)*b8n7 + s22l(igpt,i)*b8n7 + s33l(igpt,i)*b9n7 + s23l(igpt,i)*b20 + s13l(igpt,i)*b19
633 
634  r22 = r22 +s11l(igpt,i)*b5n8 + s22l(igpt,i)*b4n8 + s33l(igpt,i)*b4n8 + s12l(igpt,i)*b23 + s13l(igpt,i)*b24
635  r23 = r23 +s11l(igpt,i)*b6n8 + s22l(igpt,i)*b7n8 + s33l(igpt,i)*b6n8 + s12l(igpt,i)*b22 + s23l(igpt,i)*b24
636  r24 = r24 +s11l(igpt,i)*b8n8 + s22l(igpt,i)*b8n8 + s33l(igpt,i)*b9n8 + s23l(igpt,i)*b23 + s13l(igpt,i)*b22
637 
638  r25 = r25 +s11l(igpt,i)*b5n9 + s22l(igpt,i)*b4n9 + s33l(igpt,i)*b4n9 + s12l(igpt,i)*b26 + s13l(igpt,i)*b27
639  r26 = r26 +s11l(igpt,i)*b6n9 + s22l(igpt,i)*b7n9 + s33l(igpt,i)*b6n9 + s12l(igpt,i)*b25 + s23l(igpt,i)*b27
640  r27 = r27 +s11l(igpt,i)*b8n9 + s22l(igpt,i)*b8n9 + s33l(igpt,i)*b9n9 + s23l(igpt,i)*b26 + s13l(igpt,i)*b25
641 
642  r28 = r28 +s11l(igpt,i)*b5n10 + s22l(igpt,i)*b4n10 + s33l(igpt,i)*b4n10 + s12l(igpt,i)*b29 + s13l(igpt,i)*b30
643  r29 = r29 +s11l(igpt,i)*b6n10 + s22l(igpt,i)*b7n10 + s33l(igpt,i)*b6n10 + s12l(igpt,i)*b28 + s23l(igpt,i)*b30
644  r30 = r30 +s11l(igpt,i)*b8n10 + s22l(igpt,i)*b8n10 + s33l(igpt,i)*b9n10 + s23l(igpt,i)*b29 + s13l(igpt,i)*b28
645 
646  ENDDO
647 
648 ! Wi (i.e. weight) for 4 guass integration is 1/4
649 
650 ! Wi * 1/6 because the volume of a reference tetrahedra in
651 ! volume coordinates is 1/6
652 
653 ! ASSEMBLE THE INTERNAL FORCE VECTOR
654 !
655 ! local node 1
656  r_in(k1n1) = r_in(k1n1) - r1*0.04166666666666667d0
657  r_in(k2n1) = r_in(k2n1) - r2*0.04166666666666667d0
658  r_in(k3n1) = r_in(k3n1) - r3*0.04166666666666667d0
659 ! local node 2
660  r_in(k1n2) = r_in(k1n2) - r4*0.04166666666666667d0
661  r_in(k2n2) = r_in(k2n2) - r5*0.04166666666666667d0
662  r_in(k3n2) = r_in(k3n2) - r6*0.04166666666666667d0
663 ! local node 3
664  r_in(k1n3) = r_in(k1n3) - r7*0.04166666666666667d0
665  r_in(k2n3) = r_in(k2n3) - r8*0.04166666666666667d0
666  r_in(k3n3) = r_in(k3n3) - r9*0.04166666666666667d0
667 ! local node 4
668  r_in(k1n4) = r_in(k1n4) - r10*0.04166666666666667d0
669  r_in(k2n4) = r_in(k2n4) - r11*0.04166666666666667d0
670  r_in(k3n4) = r_in(k3n4) - r12*0.04166666666666667d0
671 ! local node 5
672  r_in(k1n5) = r_in(k1n5) - r13*0.04166666666666667d0
673  r_in(k2n5) = r_in(k2n5) - r14*0.04166666666666667d0
674  r_in(k3n5) = r_in(k3n5) - r15*0.04166666666666667d0
675 ! local node 6
676  r_in(k1n6) = r_in(k1n6) - r16*0.04166666666666667d0
677  r_in(k2n6) = r_in(k2n6) - r17*0.04166666666666667d0
678  r_in(k3n6) = r_in(k3n6) - r18*0.04166666666666667d0
679 ! local node 7
680  r_in(k1n7) = r_in(k1n7) - r19*0.04166666666666667d0
681  r_in(k2n7) = r_in(k2n7) - r20*0.04166666666666667d0
682  r_in(k3n7) = r_in(k3n7) - r21*0.04166666666666667d0
683 ! local node 8
684  r_in(k1n8) = r_in(k1n8) - r22*0.04166666666666667d0
685  r_in(k2n8) = r_in(k2n8) - r23*0.04166666666666667d0
686  r_in(k3n8) = r_in(k3n8) - r24*0.04166666666666667d0
687 ! local node 9
688  r_in(k1n9) = r_in(k1n9) - r25*0.04166666666666667d0
689  r_in(k2n9) = r_in(k2n9) - r26*0.04166666666666667d0
690  r_in(k3n9) = r_in(k3n9) - r27*0.04166666666666667d0
691 ! local node 10
692  r_in(k1n10) = r_in(k1n10) - r28*0.04166666666666667d0
693  r_in(k2n10) = r_in(k2n10) - r29*0.04166666666666667d0
694  r_in(k3n10) = r_in(k3n10) - r30*0.04166666666666667d0
695  ENDDO
696 
697  RETURN
698 END SUBROUTINE v3d10_b_bar
699 
700 
701 
702 
subroutine v3d10_b_bar(coor, matcstet, lmcstet, R_in, d, ci, S11l, S22l, S33l, S12l, S23l, S13l, numnp, nstart, nend, numcstet, numat_vol)
Definition: v3d10_B_Bar.f90:53
const NT & d
j indices k indices k
Definition: Indexing.h:6
NT dx
blockLoc i
Definition: read.cpp:79
RT dz() const
Definition: Direction_3.h:133
j indices j
Definition: Indexing.h:6
NT dy