OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sortho3.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!|| sortho3 ../engine/source/elements/solid/solide/sortho3.f
25!||--- called by ------------------------------------------------------
26!|| pre_heph ../engine/source/output/anim/generate/tensor6.F
27!|| sr8coor3 ../engine/source/elements/solid/solide8/sr8coor3.F
28!|| srcoor3 ../engine/source/elements/solid/solide/srcoor3.f
29!|| srcoork ../engine/source/elements/solid/solide8z/srcoork.F
30!|| srep2glo ../engine/source/elements/sph/srep2glo.F
31!||====================================================================
32 SUBROUTINE sortho3(
33 1 RX, RY, RZ, SX,
34 2 SY, SZ, TX, TY,
35 3 TZ, E1X, E2X, E3X,
36 4 E1Y, E2Y, E3Y, E1Z,
37 5 E2Z, E3Z, NEL)
38C-----------------------------------------------
39C I m p l i c i t T y p e s
40C-----------------------------------------------
41#include "implicit_f.inc"
42C-----------------------------------------------
43C G l o b a l P a r a m e t e r s
44C-----------------------------------------------
45#include "mvsiz_p.inc"
46C-----------------------------------------------
47C D u m m y A r g u m e n t s
48C-----------------------------------------------
49 INTEGER, INTENT(IN) :: NEL
50C REAL
51 my_real, DIMENSION(MVSIZ), INTENT(IN) ::
52 . RX, RY, RZ, SX, SY, SZ, TX, TY, TZ
53 my_real, DIMENSION(MVSIZ), INTENT(OUT) ::
54 . e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z
55C-----------------------------------------------
56C C o m m o n B l o c k s
57C-----------------------------------------------
58C-----------------------------------------------
59C L o c a l V a r i a b l e s
60C-----------------------------------------------
61 INTEGER I,N,NITER
62C REAL
63 my_real
64 . aa,bb
65 my_real, DIMENSION(MVSIZ) ::
66 . ux, uy, uz, vx, vy, vz, wx, wy, wz
67 DATA niter/3/
68C=======================================================================
69c norme r s t
70c~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
71 DO 50 i=1,nel
72 aa = sqrt(rx(i)*rx(i) + ry(i)*ry(i) + rz(i)*rz(i))
73 if ( aa/=zero) aa = one / aa
74 ux(i) = rx(i) * aa
75 uy(i) = ry(i) * aa
76 uz(i) = rz(i) * aa
77 aa = sqrt(sx(i)*sx(i) + sy(i)*sy(i) + sz(i)*sz(i))
78 if ( aa/=zero) aa = one / aa
79 vx(i) = sx(i) * aa
80 vy(i) = sy(i) * aa
81 vz(i) = sz(i) * aa
82 aa = sqrt(tx(i)*tx(i) + ty(i)*ty(i) + tz(i)*tz(i))
83 if ( aa/=zero) aa = one / aa
84 wx(i) = tx(i) * aa
85 wy(i) = ty(i) * aa
86 wz(i) = tz(i) * aa
87 50 CONTINUE
88c~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
89c iterations
90c~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
91 n=0
92111 CONTINUE
93 n=n+1
94c~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
95 DO 100 i=1,nel
96 e1x(i) = vy(i) * wz(i) - vz(i) * wy(i) + ux(i)
97 e1y(i) = vz(i) * wx(i) - vx(i) * wz(i) + uy(i)
98 e1z(i) = vx(i) * wy(i) - vy(i) * wx(i) + uz(i)
99c
100 e2x(i) = wy(i) * uz(i) - wz(i) * uy(i) + vx(i)
101 e2y(i) = wz(i) * ux(i) - wx(i) * uz(i) + vy(i)
102 e2z(i) = wx(i) * uy(i) - wy(i) * ux(i) + vz(i)
103c
104 e3x(i) = uy(i) * vz(i) - uz(i) * vy(i) + wx(i)
105 e3y(i) = uz(i) * vx(i) - ux(i) * vz(i) + wy(i)
106 e3z(i) = ux(i) * vy(i) - uy(i) * vx(i) + wz(i)
107c
108 bb = sqrt(e1x(i)*e1x(i) + e1y(i)*e1y(i) + e1z(i)*e1z(i))
109 if ( bb/=zero) bb = one / bb
110 ux(i) = e1x(i) * bb
111 uy(i) = e1y(i) * bb
112 uz(i) = e1z(i) * bb
113c
114 bb = sqrt(e2x(i)*e2x(i) + e2y(i)*e2y(i) + e2z(i)*e2z(i))
115 if ( bb/=zero) bb = one / bb
116 vx(i) = e2x(i) * bb
117 vy(i) = e2y(i) * bb
118 vz(i) = e2z(i) * bb
119c
120 bb = sqrt(e3x(i)*e3x(i) + e3y(i)*e3y(i) + e3z(i)*e3z(i))
121 if ( bb/=zero) bb = one / bb
122 wx(i) = e3x(i) * bb
123 wy(i) = e3y(i) * bb
124 wz(i) = e3z(i) * bb
125c
126 100 CONTINUE
127 IF (n < niter) GOTO 111
128c norme et orthogonalisation
129c~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
130 DO 200 i=1,nel
131 e1x(i) = ux(i)
132 e1y(i) = uy(i)
133 e1z(i) = uz(i)
134c
135 e3x(i) = e1y(i) * vz(i) - e1z(i) * vy(i)
136 e3y(i) = e1z(i) * vx(i) - e1x(i) * vz(i)
137 e3z(i) = e1x(i) * vy(i) - e1y(i) * vx(i)
138c
139 aa = sqrt(e3x(i)*e3x(i) + e3y(i)*e3y(i) + e3z(i)*e3z(i))
140 if ( aa/=zero) aa = one / aa
141 e3x(i) = e3x(i) * aa
142 e3y(i) = e3y(i) * aa
143 e3z(i) = e3z(i) * aa
144c
145 e2x(i) = e3y(i) * e1z(i) - e3z(i) * e1y(i)
146 e2y(i) = e3z(i) * e1x(i) - e3x(i) * e1z(i)
147 e2z(i) = e3x(i) * e1y(i) - e3y(i) * e1x(i)
148 200 CONTINUE
149c~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
150 RETURN
151 END
subroutine sortho3(rx, ry, rz, sx, sy, sz, tx, ty, tz, e1x, e2x, e3x, e1y, e2y, e3y, e1z, e2z, e3z, nel)
Definition sortho3.F:38
subroutine srcoor3(x, xrefs, ixs, geo, mxt, ngeo, ngl, jhbe, ix1, ix2, ix3, ix4, ix5, ix6, ix7, ix8, x1, x2, x3, x4, x5, x6, x7, x8, y1, y2, y3, y4, y5, y6, y7, y8, z1, z2, z3, z4, z5, z6, z7, z8, rx, ry, rz, sx, sy, sz, tx, ty, tz, e1x, e1y, e1z, e2x, e2y, e2z, e3x, e3y, e3z, f1x, f1y, f1z, f2x, f2y, f2z, temp0, temp, nintemp, xd1, xd2, xd3, xd4, xd5, xd6, xd7, xd8, yd1, yd2, yd3, yd4, yd5, yd6, yd7, yd8, zd1, zd2, zd3, zd4, zd5, zd6, zd7, zd8)
Definition srcoor3.F:52