OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sjacidp.F
Go to the documentation of this file.
1Copyright> OpenRadioss
2Copyright> Copyright (C) 1986-2025 Altair Engineering Inc.
3Copyright>
4Copyright> This program is free software: you can redistribute it and/or modify
5Copyright> it under the terms of the GNU Affero General Public License as published by
6Copyright> the Free Software Foundation, either version 3 of the License, or
7Copyright> (at your option) any later version.
8Copyright>
9Copyright> This program is distributed in the hope that it will be useful,
10Copyright> but WITHOUT ANY WARRANTY; without even the implied warranty of
11Copyright> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12Copyright> GNU Affero General Public License for more details.
13Copyright>
14Copyright> You should have received a copy of the GNU Affero General Public License
15Copyright> along with this program. If not, see <https://www.gnu.org/licenses/>.
16Copyright>
17Copyright>
18Copyright> Commercial Alternative: Altair Radioss Software
19Copyright>
20Copyright> As an alternative to this open-source version, Altair also offers Altair Radioss
21Copyright> software under a commercial license. Contact Altair to discuss further if the
22Copyright> commercial version may interest you: https://www.altair.com/radioss/.
23!||====================================================================
24!|| sjacidp ../starter/source/elements/solid/solide/sjacidp.F
25!||--- called by ------------------------------------------------------
26!|| sinit3 ../starter/source/elements/solid/solide/sinit3.F
27!||--- uses -----------------------------------------------------
28!|| message_mod ../starter/share/message_module/message_mod.F
29!||====================================================================
30 SUBROUTINE sjacidp(
31 . XD1 ,XD2 ,XD3 ,XD4 ,XD5 ,XD6 ,XD7 ,XD8 ,
32 . YD1 ,YD2 ,YD3 ,YD4 ,YD5 ,YD6 ,YD7 ,YD8 ,
33 . ZD1 ,ZD2 ,ZD3 ,ZD4 ,ZD5 ,ZD6 ,ZD7 ,ZD8 ,
34 . JAC_I,NEL)
35C-----------------------------------------------
36C M o d u l e s
37C-----------------------------------------------
38 USE message_mod
39C-----------------------------------------------
40C I m p l i c i t T y p e s
41C-----------------------------------------------
42#include "implicit_f.inc"
43C-----------------------------------------------
44C G l o b a l P a r a m e t e r s
45C-----------------------------------------------
46#include "mvsiz_p.inc"
47C-----------------------------------------------
48C D u m m y A r g u m e n t s
49C-----------------------------------------------
50 INTEGER , INTENT(IN) :: NEL
51 my_real , DIMENSION(10,NEL),INTENT(OUT) :: JAC_I
52 DOUBLE PRECISION , DIMENSION(MVSIZ), INTENT(IN) ::
53 . XD1, XD2, XD3, XD4, XD5, XD6, XD7, XD8,
54 . yd1, yd2, yd3, yd4, yd5, yd6, yd7, yd8,
55 . zd1, zd2, zd3, zd4, zd5, zd6, zd7, zd8
56C-----------------------------------------------
57C L o c a l V a r i a b l e s
58C-----------------------------------------------
59 INTEGER :: I
60C
61 my_real
62 . JAC1(MVSIZ), JAC2(MVSIZ), JAC3(MVSIZ),
63 . jac4(mvsiz), jac5(mvsiz), jac6(mvsiz),
64 . jac7(mvsiz), jac8(mvsiz), jac9(mvsiz),
65 . jac_59_68(mvsiz), jac_67_49(mvsiz), jac_48_57(mvsiz)
66C
67 my_real
68 . det(mvsiz), dett(mvsiz),
69 . x17(mvsiz), x28(mvsiz), x35(mvsiz), x46(mvsiz),
70 . y17(mvsiz), y28(mvsiz), y35(mvsiz), y46(mvsiz),
71 . z17(mvsiz), z28(mvsiz), z35(mvsiz), z46(mvsiz)
72C=======================================================================
73 DO i=1,nel
74 x17(i)=xd7(i)-xd1(i)
75 x28(i)=xd8(i)-xd2(i)
76 x35(i)=xd5(i)-xd3(i)
77 x46(i)=xd6(i)-xd4(i)
78C
79 y17(i)=yd7(i)-yd1(i)
80 y28(i)=yd8(i)-yd2(i)
81 y35(i)=yd5(i)-yd3(i)
82 y46(i)=yd6(i)-yd4(i)
83C
84 z17(i)=zd7(i)-zd1(i)
85 z28(i)=zd8(i)-zd2(i)
86 z35(i)=zd5(i)-zd3(i)
87 z46(i)=zd6(i)-zd4(i)
88 ENDDO
89C
90C Jacobian Matrix
91 DO i=1,nel
92 jac1(i)=x17(i)+x28(i)-x35(i)-x46(i)
93 jac2(i)=y17(i)+y28(i)-y35(i)-y46(i)
94 jac3(i)=z17(i)+z28(i)-z35(i)-z46(i)
95C
96 jac4(i)=x17(i)+x46(i)+x28(i)+x35(i)
97 jac5(i)=y17(i)+y46(i)+y28(i)+y35(i)
98 jac6(i)=z17(i)+z46(i)+z28(i)+z35(i)
99C
100 jac7(i)=x17(i)+x46(i)-x28(i)-x35(i)
101 jac8(i)=y17(i)+y46(i)-y28(i)-y35(i)
102 jac9(i)=z17(i)+z46(i)-z28(i)-z35(i)
103 ENDDO
104C
105 DO i=1,nel
106 jac_59_68(i)=jac5(i)*jac9(i)-jac6(i)*jac8(i)
107 jac_67_49(i)=jac6(i)*jac7(i)-jac4(i)*jac9(i)
108 jac_48_57(i)=jac4(i)*jac8(i)-jac5(i)*jac7(i)
109 ENDDO
110C
111 DO i=1,nel
112 det(i) =one_over_64*(jac1(i)*jac_59_68(i)+jac2(i)*jac_67_49(i)+jac3(i)*jac_48_57(i))
113 dett(i)=one_over_64/max(det(i),em20)
114 ENDDO
115C
116C Jacobian matrix inverse
117 DO i=1,nel
118 jac_i(1,i)=dett(i)*jac_59_68(i)
119 jac_i(4,i)=dett(i)*jac_67_49(i)
120 jac_i(7,i)=dett(i)*jac_48_57(i)
121 jac_i(2,i)=dett(i)*(-jac2(i)*jac9(i)+jac3(i)*jac8(i))
122 jac_i(5,i)=dett(i)*( jac1(i)*jac9(i)-jac3(i)*jac7(i))
123 jac_i(8,i)=dett(i)*(-jac1(i)*jac8(i)+jac2(i)*jac7(i))
124 jac_i(3,i)=dett(i)*( jac2(i)*jac6(i)-jac3(i)*jac5(i))
125 jac_i(6,i)=dett(i)*(-jac1(i)*jac6(i)+jac3(i)*jac4(i))
126 jac_i(9,i)=dett(i)*( jac1(i)*jac5(i)-jac2(i)*jac4(i))
127 ENDDO
128C
129 DO i=1,nel
130 jac_i(10,i) = det(i)
131 ENDDO
132C
133 RETURN
134 END SUBROUTINE sjacidp
#define max(a, b)
Definition macros.h:21
subroutine sjacidp(xd1, xd2, xd3, xd4, xd5, xd6, xd7, xd8, yd1, yd2, yd3, yd4, yd5, yd6, yd7, yd8, zd1, zd2, zd3, zd4, zd5, zd6, zd7, zd8, jac_i, nel)
Definition sjacidp.F:35