OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
sfor_visn10.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!|| sfor_visn10 ../engine/source/elements/solid/solide10/sfor_visn10.F
25!||--- called by ------------------------------------------------------
26!|| s10for_distor ../engine/source/elements/solid/solide10/s10for_distor.F
27!||====================================================================
28 SUBROUTINE sfor_visn10(VC , FLD, TOL_V, MU ,
29 . VX , VY, VZ, IFCTL,
30 . FOR_T1, FOR_T2, FOR_T3, FOR_T4,
31 . FOR_T5, FOR_T6, FOR_T7, FOR_T8,
32 . FOR_T9, FOR_T10, STIF , IFC1,
33 . NEL ,E_DISTOR, DT1)
34C-----------------------------------------------
35C I m p l i c i t T y p e s
36C-----------------------------------------------
37#include "implicit_f.inc"
38C-----------------------------------------------
39C G l o b a l P a r a m e t e r s
40C-----------------------------------------------
41#include "mvsiz_p.inc"
42C-----------------------------------------------
43C D u m m y A r g u m e n t s
44C-----------------------------------------------
45 INTEGER, INTENT (IN) :: NEL
46 INTEGER, INTENT (OUT) :: IFCTL
47 INTEGER, DIMENSION(MVSIZ),INTENT (INOUT) :: IFC1
48 my_real, DIMENSION(MVSIZ), INTENT (IN) :: FLD
49 my_real, DIMENSION(MVSIZ), INTENT (INOUT) :: STIF
50 my_real, DIMENSION(MVSIZ,10), INTENT (IN) ::
51 . vx, vy, vz
52 my_real, DIMENSION(MVSIZ,3), INTENT (IN) :: vc
53 my_real, DIMENSION(MVSIZ,3), INTENT (INOUT) ::
54 . for_t1, for_t2, for_t3, for_t4,
55 . for_t5, for_t6, for_t7, for_t8,
56 . for_t9, for_t10
57 my_real, INTENT (IN) :: tol_v,mu,dt1
58 my_real, DIMENSION(NEL), INTENT(INOUT) :: e_distor
59C-----------------------------------------------
60C C o m m o n B l o c k s
61C-----------------------------------------------
62C-----------------------------------------------
63C L o c a l V a r i a b l e s
64C-----------------------------------------------
65 INTEGER I,J
66C 12
67 my_real
68 . VRE(10),VXC,VYC,VZC,FX,FY,FZ,FAC,VNJ,VL,TOL_V2,
69 . VXM,VYM,VZM,V2MAX(MVSIZ),VC2
70C----------------------------
71 tol_v2 = tol_v*tol_v
72 ifctl = 0
73 v2max(1:nel) = zero
74 fac = one + two*mu
75 DO j =1,10
76 DO i=1,nel
77 IF (stif(i)==zero) cycle
78 vnj = vx(i,j)*vx(i,j) + vy(i,j)*vy(i,j) + vz(i,j)*vz(i,j)
79 v2max(i) = max(v2max(i),vnj)
80 ENDDO
81 END DO
82 DO i=1,nel
83 vc2 = vc(i,1)*vc(i,1)+vc(i,2)*vc(i,2)+vc(i,3)*vc(i,3)
84 IF (stif(i)==zero.OR.vc2 <em20) cycle
85 vl = tol_v2*vc2
86 IF (v2max(i) > vl) ifc1(i) = 1
87 IF (ifc1(i) > 0) ifctl=1
88 END DO
89C
90 IF (ifctl==1) THEN
91 DO i=1,nel
92 IF (ifc1(i)==0) cycle
93 for_t1(i,1) = for_t1(i,1) - fld(i)*(vx(i,1)-vc(i,1))
94 for_t1(i,2) = for_t1(i,2) - fld(i)*(vy(i,1)-vc(i,2))
95 for_t1(i,3) = for_t1(i,3) - fld(i)*(vz(i,1)-vc(i,3))
96 for_t2(i,1) = for_t2(i,1) - fld(i)*(vx(i,2)-vc(i,1))
97 for_t2(i,2) = for_t2(i,2) - fld(i)*(vy(i,2)-vc(i,2))
98 for_t2(i,3) = for_t2(i,3) - fld(i)*(vz(i,2)-vc(i,3))
99 for_t3(i,1) = for_t3(i,1) - fld(i)*(vx(i,3)-vc(i,1))
100 for_t3(i,2) = for_t3(i,2) - fld(i)*(vy(i,3)-vc(i,2))
101 for_t3(i,3) = for_t3(i,3) - fld(i)*(vz(i,3)-vc(i,3))
102 for_t4(i,1) = for_t4(i,1) - fld(i)*(vx(i,4)-vc(i,1))
103 for_t4(i,2) = for_t4(i,2) - fld(i)*(vy(i,4)-vc(i,2))
104 for_t4(i,3) = for_t4(i,3) - fld(i)*(vz(i,4)-vc(i,3))
105 for_t5(i,1) = for_t5(i,1) - fld(i)*(vx(i,5)-vc(i,1))
106 for_t5(i,2) = for_t5(i,2) - fld(i)*(vy(i,5)-vc(i,2))
107 for_t5(i,3) = for_t5(i,3) - fld(i)*(vz(i,5)-vc(i,3))
108 for_t6(i,1) = for_t6(i,1) - fld(i)*(vx(i,6)-vc(i,1))
109 for_t6(i,2) = for_t6(i,2) - fld(i)*(vy(i,6)-vc(i,2))
110 for_t6(i,3) = for_t6(i,3) - fld(i)*(vz(i,6)-vc(i,3))
111 for_t7(i,1) = for_t7(i,1) - fld(i)*(vx(i,7)-vc(i,1))
112 for_t7(i,2) = for_t7(i,2) - fld(i)*(vy(i,7)-vc(i,2))
113 for_t7(i,3) = for_t7(i,3) - fld(i)*(vz(i,7)-vc(i,3))
114 for_t8(i,1) = for_t8(i,1) - fld(i)*(vx(i,8)-vc(i,1))
115 for_t8(i,2) = for_t8(i,2) - fld(i)*(vy(i,8)-vc(i,2))
116 for_t8(i,3) = for_t8(i,3) - fld(i)*(vz(i,8)-vc(i,3))
117 for_t9(i,1) = for_t9(i,1) - fld(i)*(vx(i,9)-vc(i,1))
118 for_t9(i,2) = for_t9(i,2) - fld(i)*(vy(i,9)-vc(i,2))
119 for_t9(i,3) = for_t9(i,3) - fld(i)*(vz(i,9)-vc(i,3))
120 for_t10(i,1) = for_t10(i,1) - fld(i)*(vx(i,10)-vc(i,1))
121 for_t10(i,2) = for_t10(i,2) - fld(i)*(vy(i,10)-vc(i,2))
122 for_t10(i,3) = for_t10(i,3) - fld(i)*(vz(i,10)-vc(i,3))
123 stif(i) = fac*stif(i)
124 e_distor(i)=e_distor(i)- dt1*(for_t1(i,1)*(vx(i,1)-vc(i,1))+
125 . for_t1(i,2)*(vy(i,1)-vc(i,2))+
126 . for_t1(i,3)*(vz(i,1)-vc(i,3))+
127 . for_t2(i,1)*(vx(i,2)-vc(i,1))+
128 . for_t2(i,2)*(vy(i,2)-vc(i,2))+
129 . for_t2(i,3)*(vz(i,2)-vc(i,3))+
130 . for_t3(i,1)*(vx(i,3)-vc(i,1))+
131 . for_t3(i,2)*(vy(i,3)-vc(i,2))+
132 . for_t3(i,3)*(vz(i,3)-vc(i,3))+
133 . for_t4(i,1)*(vx(i,4)-vc(i,1))+
134 . for_t4(i,2)*(vy(i,4)-vc(i,2))+
135 . for_t4(i,3)*(vz(i,4)-vc(i,3))+
136 . for_t5(i,1)*(vx(i,5)-vc(i,1))+
137 . for_t5(i,2)*(vy(i,5)-vc(i,2))+
138 . for_t5(i,3)*(vz(i,5)-vc(i,3))+
139 . for_t6(i,1)*(vx(i,6)-vc(i,1))+
140 . for_t6(i,2)*(vy(i,6)-vc(i,2))+
141 . for_t6(i,3)*(vz(i,6)-vc(i,3))+
142 . for_t7(i,1)*(vx(i,7)-vc(i,1))+
143 . for_t7(i,2)*(vy(i,7)-vc(i,2))+
144 . for_t7(i,3)*(vz(i,7)-vc(i,3))+
145 . for_t8(i,1)*(vx(i,8)-vc(i,1))+
146 . for_t8(i,2)*(vy(i,8)-vc(i,2))+
147 . for_t8(i,3)*(vz(i,8)-vc(i,3))+
148 . for_t9(i,1)*(vx(i,9)-vc(i,1))+
149 . for_t9(i,2)*(vy(i,9)-vc(i,2))+
150 . for_t9(i,3)*(vz(i,9)-vc(i,3))+
151 . for_t10(i,1)*(vx(i,10)-vc(i,1))+
152 . for_t10(i,2)*(vy(i,10)-vc(i,2))+
153 . for_t10(i,3)*(vz(i,10)-vc(i,3)))
154 ENDDO
155 END IF
156C
157 RETURN
158 END
#define max(a, b)
Definition macros.h:21
subroutine sfor_visn10(vc, fld, tol_v, mu, vx, vy, vz, ifctl, for_t1, for_t2, for_t3, for_t4, for_t5, for_t6, for_t7, for_t8, for_t9, for_t10, stif, ifc1, nel, e_distor, dt1)
Definition sfor_visn10.F:34