OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
q4deri2.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!|| q4deri2 ../engine/source/elements/solid_2d/quad4/q4deri2.F
25!||--- called by ------------------------------------------------------
26!|| q4forc2 ../engine/source/elements/solid_2d/quad4/q4forc2.F
27!|| q4ke2 ../engine/source/elements/solid_2d/quad4/q4ke2.F
28!||====================================================================
29 SUBROUTINE q4deri2(
30 1 OFFG, OFF, KSI, ETA,
31 2 WI, YAVG, Y12, Y34,
32 3 Y13, Y24, Y14, Y23,
33 4 Z12, Z34, Z13, Z24,
34 5 Z14, Z23, PY1, PY2,
35 6 PY3, PY4, PZ1, PZ2,
36 7 PZ3, PZ4, PYC1, PYC2,
37 8 PZC1, PZC2, BYZ1, BYZ2,
38 9 BYZ3, BYZ4, BZY1, BZY2,
39 A BZY3, BZY4, AIRN, VOLN,
40 B NU, NEL, JHBE)
41C-----------------------------------------------
42C I m p l i c i t T y p e s
43C-----------------------------------------------
44#include "implicit_f.inc"
45C-----------------------------------------------
46C G l o b a l P a r a m e t e r s
47C-----------------------------------------------
48#include "mvsiz_p.inc"
49C-----------------------------------------------
50C C o m m o n B l o c k s
51C-----------------------------------------------
52#include "com01_c.inc"
53C-----------------------------------------------
54C D u m m y A r g u m e n t s
55C-----------------------------------------------
56 INTEGER, INTENT(IN) :: NEL
57 INTEGER, INTENT(IN) :: JHBE
58C REAL
59 my_real
60 . OFFG(*),OFF(*),KSI,ETA,WI,YAVG(*),
61 . Y12(*),Y34(*),Y13(*),Y24(*),Y14(*),Y23(*),
62 . Z12(*),Z34(*),Z13(*),Z24(*),Z14(*),Z23(*),
63 . PY1(*),PY2(*),PY3(*),PY4(*),
64 . PZ1(*),PZ2(*),PZ3(*),PZ4(*),
65 . PZC1(*),PZC2(*),PYC1(*),PYC2(*),
66 . BYZ1(*),BYZ2(*),BYZ3(*),BYZ4(*),
67 . bzy1(*),bzy2(*),bzy3(*),bzy4(*),
68 . airn(*),voln(*),nu(*)
69C-----------------------------------------------
70c FUNCTION:
71c ARGUMENTS: (I: input, O: output, IO: input & output, W: workspace)
72c TYPE NAME FUNCTION
73c I OFFG - ELEMENT D/A FLAG, OVERALL
74c IO OFF - ELEMENT D/A FLAG, OF POINT
75c I KSI,ETA,WI - NATURAL COORDINATES, WEIGHT
76c O YAVG(*) - SUMMERY OF "Y" OF THE FOUR NODES
77c I Y12(*)~Z23(*) - DIFFERENCE: Yi-Yj, Zi-Zj
78c O PY1(*)~PZ4(*) - SHAPE DERIVATIVES (dNi/dY, dNi/dZ)
79c O AIRN(*) - W*|J|
80c O VOLN(*) - W*|J| FOR PLAIN CASE; r'*W*|J| FOR AXISYMMETRIC CASE
81c O RX(*)~TZ(*) - JACOBIAN MATRIX [J]
82C-----------------------------------------------
83C L o c a l V a r i a b l e s
84C-----------------------------------------------
85 INTEGER I
86C REAL
87 my_real
88 . DNDK1,DNDK2,DNDK3,DNDK4,
89 . DNDE1,DNDE2,DNDE3,DNDE4,
90 . DYDK(MVSIZ),DYDE(MVSIZ),DZDK(MVSIZ),DZDE(MVSIZ),
91 . DET(MVSIZ),YH(MVSIZ),ZH(MVSIZ)
92 my_real
93 . QN1,QN2,QN3,QN4,YD,DETI,NU1
94C-----------------------------------------------
95C S o u r c e L i n e s
96C-----------------------------------------------
97C 4.*(dNi/dK, dNi/dE)
98 dndk1 = eta - one
99 dndk3 = eta + one
100 dndk2 = - dndk1
101 dndk4 = - dndk3
102 dnde1 = ksi - one
103 dnde3 = ksi + one
104 dnde2 = - dnde3
105 dnde4 = - dnde1
106C
107 DO i=1,nel
108C 4.*(dY/dK, dY/dE, dZ/dK, dZ/dE)
109 dydk(i) = (y14(i)-y23(i))*eta-y13(i)+y24(i)
110 dyde(i) = (y12(i)+y34(i))*ksi-y13(i)-y24(i)
111 dzdk(i) = (z14(i)-z23(i))*eta-z13(i)+z24(i)
112 dzde(i) = (z12(i)+z34(i))*eta-z13(i)-z24(i)
113C 8.*|J|
114 det(i) = (y34(i)*z12(i)-y12(i)*z34(i))*ksi +
115 . (y23(i)*z14(i)-y14(i)*z23(i))*eta +
116 . y13(i)*z24(i)-y24(i)*z13(i)
117C W*|J|
118 voln(i) = one_over_8*det(i)*wi
119 airn(i) = voln(i)
120C dNi/dY, dNi/dZ
121C------add something later for DET=~ zero-----
122 deti=half/det(i)
123 py1(i) = deti*(dzde(i)*dndk1-dzdk(i)*dnde1)
124 py2(i) = deti*(dzde(i)*dndk2-dzdk(i)*dnde2)
125 py3(i) = deti*(dzde(i)*dndk3-dzdk(i)*dnde3)
126 py4(i) = deti*(dzde(i)*dndk4-dzdk(i)*dnde4)
127 pz1(i) = deti*(dydk(i)*dnde1-dyde(i)*dndk1)
128 pz2(i) = deti*(dydk(i)*dnde2-dyde(i)*dndk2)
129 pz3(i) = deti*(dydk(i)*dnde3-dyde(i)*dndk3)
130 pz4(i) = deti*(dydk(i)*dnde4-dyde(i)*dndk4)
131 ENDDO
132C
133 IF(n2d==1) THEN
134 IF(jhbe==17) THEN
135 DO i=1,nel
136 voln(i) = fourth*yavg(i)*voln(i)
137 ENDDO
138 ENDIF
139 ENDIF
140C
141 DO i=1,nel
142 off(i) = offg(i)
143 IF(voln(i)<=zero .AND. off(i)/=zero) THEN
144 voln(i) = em20
145 off(i) =zero
146 ENDIF
147 ENDDO
148C----Assumed strain
149 DO i=1,nel
150 byz1(i) = -nu(i)*(pz1(i) - pzc1(i))
151 byz2(i) = -nu(i)*(pz2(i) - pzc2(i))
152 byz3(i) = -nu(i)*(pz3(i) + pzc1(i))
153 byz4(i) = -nu(i)*(pz4(i) + pzc2(i))
154 bzy1(i) = -nu(i)*(py1(i) - pyc1(i))
155 bzy2(i) = -nu(i)*(py2(i) - pyc2(i))
156 bzy3(i) = -nu(i)*(py3(i) + pyc1(i))
157 bzy4(i) = -nu(i)*(py4(i) + pyc2(i))
158 ENDDO
159 DO i=1,nel
160 nu1 = one-nu(i)
161 py1(i) = pyc1(i) + nu1*(py1(i) - pyc1(i))
162 py2(i) = pyc2(i) + nu1*(py2(i) - pyc2(i))
163 py3(i) =-pyc1(i) + nu1*(py3(i) + pyc1(i))
164 py4(i) =-pyc2(i) + nu1*(py4(i) + pyc2(i))
165 pz1(i) = pzc1(i) + nu1*(pz1(i) - pzc1(i))
166 pz2(i) = pzc2(i) + nu1*(pz2(i) - pzc2(i))
167 pz3(i) =-pzc1(i) + nu1*(pz3(i) + pzc1(i))
168 pz4(i) =-pzc2(i) + nu1*(pz4(i) + pzc2(i))
169 ENDDO
170C
171 RETURN
172 END
173
subroutine q4deri2(offg, off, ksi, eta, wi, yavg, y12, y34, y13, y24, y14, y23, z12, z34, z13, z24, z14, z23, py1, py2, py3, py4, pz1, pz2, pz3, pz4, pyc1, pyc2, pzc1, pzc2, byz1, byz2, byz3, byz4, bzy1, bzy2, bzy3, bzy4, airn, voln, nu, nel, jhbe)
Definition q4deri2.F:41