OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
checkrby.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!|| checkrby ../starter/source/constraints/general/rbody/checkrby.F
25!||--- called by ------------------------------------------------------
26!|| lectur ../starter/source/starter/lectur.F
27!||--- calls -----------------------------------------------------
28!|| ancmsg ../starter/source/output/message/message.F
29!|| anodset ../starter/source/output/analyse/analyse_node.c
30!|| fretitl2 ../starter/source/starter/freform.F
31!|| kinset ../starter/source/constraints/general/kinset.F
32!||--- uses -----------------------------------------------------
33!|| message_mod ../starter/share/message_module/message_mod.F
34!||====================================================================
35 SUBROUTINE checkrby(RBY ,NPBY ,LPBY ,ITAB ,
36 2 IKINE ,IDDLEVEL,NOM_OPT ,NUMSL )
37C-------------------------------------
38C LECTURE STRUCTURE RIGIDES IFORM8=2
39C-----------------------------------------------
40C M o d u l e s
41C-----------------------------------------------
42 USE message_mod
44C-----------------------------------------------
45C I m p l i c i t T y p e s
46C-----------------------------------------------
47#include "implicit_f.inc"
48C-----------------------------------------------
49C A n a l y s e M o d u l e
50C-----------------------------------------------
51#include "analyse_name.inc"
52C-----------------------------------------------
53C C o m m o n B l o c k s
54C-----------------------------------------------
55#include "com04_c.inc"
56#include "scr17_c.inc"
57#include "scr03_c.inc"
58#include "param_c.inc"
59C-----------------------------------------------
60C D u m m y A r g u m e n t s
61C-----------------------------------------------
62 INTEGER NPBY(NNPBY,*), LPBY(*), ITAB(*)
63 INTEGER IKINE(*), IDDLEVEL, NUMSL
64 my_real rby(nrby,*)
65 INTEGER NOM_OPT(LNOPT1,*)
66C-----------------------------------------------
67C L o c a l V a r i a b l e s
68C-----------------------------------------------
69 INTEGER I,J,L,K,KK,M,N,NSL,NSKEW,IC,
70 . ispher,idir,p,ig,id,icdg,nsl_xtra,
71 . nrb,numsl_tmp
72 CHARACTER(LEN=NCHARTITLE)::TITR
73 INTEGER, DIMENSION(:,:), ALLOCATABLE :: TABSL
74 INTEGER, DIMENSION(:), ALLOCATABLE :: INDEX,IKINE1
75 INTEGER IWORK(70000),IOLD
76 INTEGER IFLAGI1,IFLAGDBL,IRB
77C-----------------------------------
78C NPBY( 1,N) = main NODE
79C NPBY( 2,N) = NUMBER OF SECND NODES
80C NPBY( 3,N) = ICDG
81C NPBY( 4,N) = ISENS gw117
82C NPBY( 5,N) = FLAG SPHERICAL INERTIA
83C NPBY( 6,N) = IDENTIFICATEUR
84C NPBY( 7,N) = 1 ON(1) OFF(0)
85C NPBY( 8,N) = ISU
86C NPBY( 9,N) = NSKEW
87C NPBY(10,N) = IEXPAMS (AMS - Hidden)
88C = 1 (default) : AMS expansion ; = 2 (Hidden) : No expansion
89C NPBY(11,N) = IAD => secnd nodes LPBY(IAD+1:IAD+NSN)
90C NPBY(12,N) = RBODY LEVEL
91C NPBY(13,N) = RBODY IFLAG
92C NPBY(14,N) = NUMBER OF XTRA_NODE with Iflag=1
93C NPBY(15,N) = NUMBER OF XTRA_NODE with Iflag=2
94C NPBY(16,N) = NUMBER OF XTRA_NODE with Iflag=3
95C=======================================================================
96 IF (numsl > 0) THEN
97 ALLOCATE(tabsl(2,numsl))
98 ALLOCATE(index(3*numsl))
99 tabsl=0
100 index=0
101 END IF
102 n=0
103 k=0
104 kk=0
105 nrb = 0
106C
107 ALLOCATE(ikine1(3*numnod))
108 DO i=1,3*numnod
109 ikine1(i) = 0
110 ENDDO
111C
112 DO n=1,nrbykin
113 nsl=npby(2,n)
114 nsl_xtra=npby(14,n)+npby(15,n)+npby(16,n)
115 ispher = npby(5,n)
116 icdg = npby(3,n)
117 id=nom_opt(1,n)
118c
119 DO j=1,nsl-nsl_xtra
120 CALL anodset(lpby(j+k), check_rb_s)
121 tabsl(1,j+kk)=itab(lpby(j+k))
122 tabsl(2,j+kk)=n
123 ENDDO
124C
125 IF(iddlevel==0)THEN
126 IF(ikrem == 0)THEN
127 DO j=1,nsl
128 DO idir=1,6
129 CALL kinset(8,itab(lpby(j+k)),ikine(lpby(j+k)),idir,0,
130 . ikine1(lpby(j+k)))
131 ENDDO
132 ENDDO
133 ELSE
134 DO j=1,nsl
135 DO idir=1,6
136 CALL kinset(128,itab(lpby(j+k)),ikine(lpby(j+k)),idir,0,
137 . ikine1(lpby(j+k)))
138 ENDDO
139 ENDDO
140 ENDIF
141 ENDIF
142C
143 k=k+nsl
144 kk=kk+nsl-nsl_xtra
145 ENDDO
146 numsl_tmp=kk
147C-------------------------------------
148C Bilan secnd nodes doubles (sans les XTRA_NODES qui sont teste avant)
149C-------------------------------------
150 IF (nrbykin > 1) THEN
151 iwork=0
152 iflagdbl=0
153 DO i=1,numsl_tmp
154 index(i)=i
155 END DO
156 CALL my_orders(0,iwork,tabsl,index,numsl_tmp,2)
157 IF (numsl_tmp > 0) THEN
158 iold=-1
159 DO i=1,numsl_tmp
160 IF (tabsl(1,index(i))==iold) THEN
161 IF (iflagdbl==0) THEN
162 iflagi1=i-1
163 END IF
164 iflagdbl=1
165 ELSE
166 IF (iflagdbl/=0) THEN
167 DO j=iflagi1,i-1
168 irb=tabsl(2,index(j))
169 id=nom_opt(1,irb)
170 CALL fretitl2(titr,nom_opt(lnopt1-ltitr+1,irb),ltitr)
171 CALL ancmsg(msgid=1026,
172 . msgtype=msgwarning,
173 . anmode=aninfo_blind_2,
174 . i1=id,
175 . c1=titr,
176 . prmod=msg_cumu)
177 END DO
178 CALL ancmsg(msgid=1026,
179 . msgtype=msgwarning,
180 . anmode=aninfo_blind_1,
181 . i1=tabsl(1,index(iflagi1)),
182 . prmod=msg_print)
183 iflagdbl=0
184 END IF
185 END IF
186 iold=tabsl(1,index(i))
187 END DO
188 END IF
189 END IF
190C
191C------------------------------------
192 IF(ALLOCATED(tabsl))DEALLOCATE(tabsl)
193 IF(ALLOCATED(index))DEALLOCATE(index)
194 IF(ALLOCATED(ikine1)) DEALLOCATE(ikine1)
195C------------------------------------
196 RETURN
197C
198 END SUBROUTINE checkrby
199C
void anodset(int *id, int *type)
subroutine checkrby(rby, npby, lpby, itab, ikine, iddlevel, nom_opt, numsl)
Definition checkrby.F:37
#define my_real
Definition cppsort.cpp:32
subroutine kinset(ik, node, ikine, idir, isk, ikine1)
Definition kinset.F:57
initmumps id
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
Definition my_orders.c:82
integer, parameter nchartitle
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