OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
rini45_rb.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!|| rini45_rb ../starter/source/elements/joint/rjoint/rini45_rb.F
25!||--- called by ------------------------------------------------------
26!|| initia ../starter/source/elements/initia/initia.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../starter/source/output/message/message.F
29!|| find_rby ../starter/source/elements/joint/rjoint/rini33_rb.F
30!|| fretitl2 ../starter/source/starter/freform.F
31!|| get_u_geo ../starter/source/user_interface/uaccess.F
32!|| get_u_skew ../starter/source/user_interface/uaccess.F
33!|| reset_u_geo ../starter/source/user_interface/uaccess.F
34!||--- uses -----------------------------------------------------
35!|| message_mod ../starter/share/message_module/message_mod.F
36!||====================================================================
37 SUBROUTINE rini45_rb(NEL,NUVAR,IPROP,IXR,NPBY,
38 1 LPBY,RBY,STIFR,UVAR,ITAB,
39 1 IGEO,IXR_KJ,GMASS,MS,IN)
40C-----------------------------------------------
41C M o d u l e s
42C-----------------------------------------------
43 USE message_mod
45C-------------------------------------------------------------------------
46C I m p l i c i t T y p e s
47C-----------------------------------------------
48#include "implicit_f.inc"
49C-----------------------------------------------
50C G l o b a l P a r a m e t e r s
51C-----------------------------------------------
52#include "param_c.inc"
53C-----------------------------------------------
54C C o m m o n B l o c k s
55C-----------------------------------------------
56#include "vect01_c.inc"
57#include "com04_c.inc"
58#include "scr17_c.inc"
59#include "units_c.inc"
60C----------------------------------------------------------
61C D u m m y A r g u m e n t s a n d F u n c t i o n
62C----------------------------------------------------------
63 INTEGER NEL,NUVAR,IPROP,IXR(NIXR,*),NPBY(NNPBY,NRBODY),LPBY(*),
64 . ITAB(*),IXR_KJ(5,*),IGEO(NPROPGI)
66 . rby(nrby,nrbody),stifr(*),uvar(nuvar,*),gmass(*),ms(*),in(*)
67C-----------------------------------------------
68C L o c a l V a r i a b l e s
69C-----------------------------------------------
70 INTEGER I,II,IEL,J,K,N,L,S,NN,NSL,IERROR,NODES,USR,
71 . IDSK(2),ISK,NSK,ISK2,JTYP,M(2),NOD(2),NODF(3),
72 . reset_u_geo,get_u_skew,srb(6),no(3),idskrb(2),
73 . idrb(2),err_flg,n1,n2,n3,n4,id_kj,numel_kj,ielusr,
74 . rb1,rb2,ipid,idsk2
75C
77 . mass,iner,rm,ri,knn,kr,l2,u(lskew),q(lskew),get_u_geo,v(lskew),
78 . xsk1,xsk2,len
79C
80 INTEGER ID
81 CHARACTER(LEN=NCHARTITLE) :: TITR
82C-----------------------------------------------
83 INTEGER FIND_RBY
84 EXTERNAL GET_U_GEO,RESET_U_GEO,GET_U_SKEW
85 DATA nodes/2/
86C=======================================================================
87
88 id=igeo(1)
89 CALL fretitl2(titr,igeo(npropgi-ltitr+1),ltitr)
90C
91 DO iel=1,nel
92 l2 = 0.
93 rm = 1.e30
94 ri = 1.e30
95 idrb(1)=0
96 idrb(2)=0
97C-->
98 DO i=1,nodes
99 m(i) = 0
100 k = 0
101 nod(i)=ixr(1+i,nft+iel)
102C--> Search of connected rbody ---
103 DO n=1,nrbody
104 nsl=npby(2,n)
105 IF (npby(1,n)==nod(i)) THEN
106C-- Tag for error message - Can't be attached to main node of rbody-
107 idrb(i)=-n
108 uvar(37+i,iel)= n
109 EXIT
110 ENDIF
111C
112 DO j=1,nsl
113 nn = lpby(j+k)
114 IF(nn==nod(i)) THEN
115 idrb(i)=n
116 m(i) = npby(1,n)
117 mass = rby(14,n)
118 iner = (rby(10,n)+rby(11,n)+rby(12,n))/3.0
119C L2 = INER/MASS
120 uvar(33+i,iel)= mass
121 uvar(35+i,iel)= iner
122 uvar(37+i,iel)= n
123C-->
124 GOTO 100
125 ENDIF
126 ENDDO
127100 k = k+nsl
128 ENDDO
129C
130C--> Stockage d'une masse elementaire (masse hormonique) pour calcul d'energie specifique
131 gmass(iel) = (uvar(34,iel)*uvar(35,iel))/max(em20,uvar(34,iel)+uvar(35,iel))
132C-->
133 IF (idrb(i)==0) THEN
134C--> no rbodies found - kjoint connected to structural node ---
135 uvar(33+i,iel)= ms(nod(i))
136 uvar(35+i,iel)= in(nod(i))
137 uvar(37+i,iel)= 0
138 IF (ms(nod(i)) <= em20) THEN
139 CALL ancmsg(msgid=1773,
140 . msgtype=msgerror,
141 . anmode=aninfo_blind_2,
142 . i1=id,
143 . c1=titr,
144 . i2=ixr(nixr,nft+iel),
145 . i3=itab(nod(i)))
146 ELSEIF (in(nod(i)) <= em20) THEN
147 CALL ancmsg(msgid=1774,
148 . msgtype=msgwarning,
149 . anmode=aninfo_blind_2,
150 . i1=id,
151 . c1=titr,
152 . i2=ixr(nixr,nft+iel),
153 . i3=itab(nod(i)))
154 ENDIF
155 ELSEIF (idrb(i) < 0) THEN
156C--> kjoint connected to main node of rbody - error --
157 CALL ancmsg(msgid=1768,
158 . msgtype=msgerror,
159 . anmode=aninfo_blind_2,
160 . i1=id,
161 . c1=titr,
162 . i2=ixr(nixr,nft+iel),
163 . i3=itab(nod(i)))
164 ENDIF
165C
166 ENDDO
167C-->
168 ENDDO
169
170C---> Print de l'output pour kjoint2--------------------
171 DO iel=1,nel
172 ielusr = ixr(nixr,nft+iel)
173 rb1 = 0
174 rb2 = 0
175 IF (uvar(38,iel) > 0) rb1 = npby(6,nint(uvar(38,iel)))
176 IF (uvar(39,iel) > 0) rb2 = npby(6,nint(uvar(39,iel)))
177 n1 = itab(ixr(2,nft+iel))
178 n2 = itab(ixr(3,nft+iel))
179 n3 = 0
180 n4 = 0
181 IF (ixr(4,nft+iel)/=0) n3 = itab(ixr(4,nft+iel))
182 len=sqrt(uvar(1,iel)**2+uvar(2,iel)**2+uvar(3,iel)**2)
183 numel_kj = ixr_kj(1,numelr+1)
184 DO j=1,numel_kj
185 IF (ixr_kj(4,j)==ielusr) id_kj = j
186 END DO
187 IF (id_kj>0) THEN
188 IF (ixr_kj(1,id_kj)/=0) n4 = itab(ixr_kj(1,id_kj))
189 ENDIF
190 idsk2 = nint(get_u_geo(54,iprop))
191 IF (idsk2==0) THEN
192 WRITE(iout,2000)
193 WRITE(iout,'(1X,5I10,4X,2I10,2X,F16.7,2X,3F16.7)') ielusr,n1,
194 . n2,n3,n4,rb1,rb2,len,(uvar(21+k,iel),k=1,3)
195 WRITE(iout,'(2(95X,3F16.7/))') (uvar(21+k,iel),k=4,9)
196 ELSE
197 WRITE(iout,2100)
198 WRITE(iout,'(1X,5I10,4X,2I10,2X,F16.7,2X,F16.7,2X,3F16.7)') ielusr,n1,
199 . n2,n3,n4,rb1,rb2,len,uvar(7,iel),(uvar(21+k,iel),k=1,3)
200 WRITE(iout,'(2(95X,F16.7,2X,3F16.7))' ) uvar(8,iel) ,(uvar(21+k,iel),k=4,6)
201 WRITE(iout,'(2(95X,F16.7,2X,3F16.7/))') uvar(9,iel) ,(uvar(21+k,iel),k=7,9)
202 ENDIF
203 ENDDO
204
205C-------------------------------------------------------
206
207 RETURN
208 2000 FORMAT(5x,'NUMBER',8x,'N1',8x,'N2',8x,'N3',8x,'N4',
209 . 8x,'RBODY1',4x,'RBODY2',12x,'LENGTH',13x,
210 . 'LOCAL SKEW (VECTORS)')
211
212 2100 FORMAT(5x,'NUMBER',8x,'N1',8x,'N2',8x,'N3',8x,'N4',
213 . 8x,'RBODY1',4x,'RBODY2',12x,'LENGTH',4x,'INITIAL ANGLES (RAD)',13x,
214 . 'LOCAL SKEW (VECTORS)')
215
216 RETURN
217 END
218C
#define my_real
Definition cppsort.cpp:32
#define max(a, b)
Definition macros.h:21
integer, parameter nchartitle
subroutine rini45_rb(nel, nuvar, iprop, ixr, npby, lpby, rby, stifr, uvar, itab, igeo, ixr_kj, gmass, ms, in)
Definition rini45_rb.F:40
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:889
subroutine fretitl2(titr, iasc, l)
Definition freform.F:804
integer function get_u_skew(idskw, n1, n2, n3, v)
Definition uaccess.F:1128
integer function reset_u_geo(ivar, ip, a)
Definition uaccess.F:396