OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
iqela1.F File Reference
#include "implicit_f.inc"
#include "com01_c.inc"
#include "com04_c.inc"
#include "com06_c.inc"
#include "com08_c.inc"
#include "scr07_c.inc"
#include "scr08_a_c.inc"
#include "scr14_c.inc"
#include "scr16_c.inc"
#include "param_c.inc"
#include "comlock.inc"
#include "tabsiz_c.inc"
#include "lockon.inc"
#include "lockoff.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine iqela1 (a, e, msm, irect, crst, msr, nsv, iloc, irtl, ms, nor, lcode, iskew, fsav, fcont, fncont, h3d_data, nsn, nmn)

Function/Subroutine Documentation

◆ iqela1()

subroutine iqela1 ( dimension(sa), intent(inout) a,
dimension(*), intent(inout) e,
dimension(*), intent(inout) msm,
integer, dimension(4,*), intent(inout) irect,
dimension(2,*), intent(inout) crst,
integer, dimension(*), intent(inout) msr,
integer, dimension(*), intent(inout) nsv,
integer, dimension(*), intent(inout) iloc,
integer, dimension(*), intent(inout) irtl,
dimension(*), intent(inout) ms,
dimension(3,*), intent(inout) nor,
integer, dimension(*), intent(inout) lcode,
integer, dimension(*), intent(inout) iskew,
dimension(*), intent(inout) fsav,
dimension(3,*), intent(inout) fcont,
dimension(3,*), intent(inout) fncont,
type(h3d_database) h3d_data,
integer, intent(in) nsn,
integer, intent(in) nmn )

Definition at line 33 of file iqela1.F.

36C-----------------------------------------------
37C M o d u l e s
38C-----------------------------------------------
39 USE h3d_mod
40 USE anim_mod
41C-----------------------------------------------
42C D e s c r i p t i o n
43C-----------------------------------------------
44C This subroutine is related to option /INTER/TYPE1
45C and computes forces. See E(1:3)=FSN.N(1:3)
46C-----------------------------------------------
47C I m p l i c i t T y p e s
48C-----------------------------------------------
49#include "implicit_f.inc"
50C-----------------------------------------------
51C C o m m o n B l o c k s
52C-----------------------------------------------
53#include "com01_c.inc"
54#include "com04_c.inc"
55#include "com06_c.inc"
56#include "com08_c.inc"
57#include "scr07_c.inc"
58#include "scr08_a_c.inc"
59#include "scr14_c.inc"
60#include "scr16_c.inc"
61#include "param_c.inc"
62#include "comlock.inc"
63#include "tabsiz_c.inc"
64C-----------------------------------------------
65C D u m m y A r g u m e n t s
66C-----------------------------------------------
67 INTEGER,INTENT(INOUT) :: IRECT(4,*), MSR(*), NSV(*), ILOC(*), IRTL(*),LCODE(*), ISKEW(*)
68 my_real,INTENT(INOUT) :: a(sa), e(*), msm(*), crst(2,*), ms(*),nor(3,*),fsav(*)
69 my_real,INTENT(INOUT) :: fcont(3,*),fncont(3,*)
70 INTEGER, INTENT(IN) :: NSN,NMN
71 TYPE(H3D_DATABASE) :: H3D_DATA
72C-----------------------------------------------
73C L o c a l V a r i a b l e s
74C-----------------------------------------------
75 INTEGER NIR, I, J, I3, J3, I2, J2, I1, J1, II, L, JJ, NN, JJ3, JJ2, JJ1, ISK, LCOD
76 my_real h(4), n1, n2, n3, aa(3), sss, ttt, xmss, fxi, fyi, fzi, fsn
77 my_real :: fsn_sav, fxi_sav, fyi_sav, fzi_sav,impx,impy,impz
78 LOGICAL ICONT, IPCONT, IANIM
79C-----------------------------------------------
80C S o u r c e L i n e s
81C-----------------------------------------------
82 icont = .false.
83 ipcont = .false.
84 ianim = .false.
85 icont = (anim_v(4)+outp_v(4) > 0+h3d_data%N_VECT_CONT)
86 IF(anim_v(12)+outp_v(12)+h3d_data%N_VECT_PCONT > 0)THEN
87 IF( (tt>=tanim .AND. tt<=tanim_stop) .OR.tt >= toutp.OR.tt >= h3d_data%TH3D.OR.
88 . (manim >= 4.AND.manim <= 15).OR. h3d_data%MH3D /= 0)THEN
89 ipcont = .true.
90 ENDIF
91 ENDIF
92 IF(icont .OR. ipcont)ianim=.true.
93
94 fsn_sav = zero
95 fxi_sav = zero
96 fyi_sav = zero
97 fzi_sav = zero
98
99 nir=2
100 IF(n2d == 0)nir=4
101 !main nodes
102 DO i=1,nmn
103 j=msr(i)
104 i3=3*i
105 i2=i3-1
106 i1=i2-1
107 msm(i)=ms(j)
108 e(i1)=zero
109 e(i2)=zero
110 e(i3)=zero
111 ENDDO
112
113 !secnd nodes
114 DO ii=1,nsn
115 i=nsv(ii)
116 j=iloc(ii)
117 IF(j >= 1) THEN
118 l=irtl(ii)
119 DO jj=1,nir
120 nn=irect(jj,l)
121 iy(jj)=nn
122 ENDDO
123 !parametric coordinates on main face
124 sss=crst(1,ii)
125 ttt=crst(2,ii)
126 !normal
127 n1=nor(1,ii)
128 n2=nor(2,ii)
129 n3=nor(3,ii)
130 !A(1:3,I) <-> A(3*I - 1:3)
131 i3=3*i
132 i2=i3-1
133 i1=i2-1
134 CALL shapeh(h,sss,ttt)
135 DO jj=1,nir
136 j3=3*iy(jj)
137 j2=j3-1
138 j1=j2-1
139 jj3=3*msr(iy(jj))
140 jj2=jj3-1
141 jj1=jj2-1
142 aa(1)=a(i1) !Accel for itab(I), where I=NSV(II)
143 aa(2)=a(i2)
144 aa(3)=a(i3)
145 isk=iskew(iy(jj))
146 lcod=lcode(iy(jj))
147 xmss=ms(i)*h(jj)
148 fxi=aa(1)-a(jj1)
149 fyi=aa(2)-a(jj2)
150 fzi=aa(3)-a(jj3)
151 fsn=(fxi*n1+fyi*n2+fzi*n3)*xmss
152 fsn_sav = fsn_sav + fsn
153 fxi_sav = fxi_sav + fxi*xmss
154 fyi_sav = fyi_sav + fyi*xmss
155 fzi_sav = fzi_sav + fzi*xmss
156 e(j1)=e(j1)+fsn*n1
157 e(j2)=e(j2)+fsn*n2
158 e(j3)=e(j3)+fsn*n3
159 msm(iy(jj))=msm(iy(jj))+xmss
160 enddo!next JJ
161 ENDIF
162 enddo!next II
163
164 !SUM(E(1:3,*)) is NF(1:3) on main segment
165
166 !---------------------------------
167 ! /TH/INTER
168 ! NORMAL IMPULSE BACKUP
169 !---------------------------------
170 impx = fxi_sav*dt12
171 impy = fyi_sav*dt12
172 impz = fzi_sav*dt12
173 fsn_sav = fsn_sav*dt12
174#include "lockon.inc"
175 fsav(1)=fsav(1) + impx
176 fsav(2)=fsav(2) + impy
177 fsav(3)=fsav(3) + impz
178 fsav(8)=fsav(8) + abs(impx)
179 fsav(9)=fsav(9) + abs(impy)
180 fsav(10)=fsav(10)+ abs(impz)
181 fsav(11)=fsav(11)+ fsn_sav
182#include "lockoff.inc"
183 !---------------------------------
184
185
186 IF(ianim)THEN
187 !---------------------------------
188 ! /ANIM/VECT/CONT
189 !---------------------------------
190 IF(icont)THEN
191#include "lockon.inc"
192 DO i=1,nmn
193 j = msr(i)
194 i3 = 3*i
195 i2 = i3-1
196 i1 = i2-1
197 fcont(1,j) = fcont(1,j)+e(i1)
198 fcont(2,j) = fcont(2,j)+e(i2)
199 fcont(3,j) = fcont(3,j)+e(i3)
200 ENDDO
201#include "lockoff.inc"
202 ENDIF
203 !---------------------------------
204 ! /ANIM/VECT/PCONT
205 !---------------------------------
206 IF(ipcont)THEN
207#include "lockon.inc"
208 DO i=1,nmn
209 j = msr(i)
210 i3 = 3*i
211 i2 = i3-1
212 i1 = i2-1
213 fncont(1,j) = fncont(1,j)+e(i1)
214 fncont(2,j) = fncont(2,j)+e(i2)
215 fncont(3,j) = fncont(3,j)+e(i3)
216 ENDDO
217#include "lockoff.inc"
218 ENDIF
219 ENDIF
220
221
222
223C-----------------------------------------------------
224
225 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine shapeh(h, s, t)
Definition shapeh.F:34