OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
tgrhead.F File Reference
#include "implicit_f.inc"
#include "vect01_c.inc"
#include "com04_c.inc"
#include "param_c.inc"
#include "sms_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine tgrhead (ixt, pm, geo, inum, isel, itr1, eadd, index, itri, ipartt, nd, igrsurf, igrtruss, cep, xep, itruoff, tagprt_sms, itagprld_truss)

Function/Subroutine Documentation

◆ tgrhead()

subroutine tgrhead ( integer, dimension(5,*) ixt,
pm,
geo,
integer, dimension(7,*) inum,
integer, dimension(*) isel,
integer, dimension(*) itr1,
integer, dimension(*) eadd,
integer, dimension(*) index,
integer, dimension(5,*) itri,
integer, dimension(*) ipartt,
integer nd,
type (surf_), dimension(nsurf) igrsurf,
type (group_), dimension(ngrtrus) igrtruss,
integer, dimension(*) cep,
integer, dimension(*) xep,
integer, dimension(*) itruoff,
integer, dimension(*) tagprt_sms,
integer, dimension(numelt), intent(inout) itagprld_truss )

Definition at line 30 of file tgrhead.F.

36C-----------------------------------------------
37C M o d u l e s
38C-----------------------------------------------
39 USE groupdef_mod
40C-----------------------------------------------
41C A R G U M E N T S
42C-----------------------------------------------
43C IXT(5,NUMELT) TABLEAU CONECS+MID+PID+NOS TRUSSES E
44C GEO(NPROPG,NUMGEO)TABLEAU DES CARACS DES PID E
45C INUM(6,NUMELT) TABLEAU DE TRAVAIL E/S
46C ISEL(NSELT) TABLEAU DESPOUTRES CHOISIS POUR TH E/S
47C ITR1(NSELT) TABLEAU DE TRAVAIL E/S
48C EADD(NUMELT) TABLEAU DES ADRESSES DANS IDAM CHGT DAMIER S
49C INDEX(NUMELT) TABLEAU DE TRAVAIL E/S
50C ITRI(5,NUMELT) TABLEAU DE TRAVAIL E/S
51C IPARTT(NUMELT) TABLEAU PART E/S
52C CEP(NUMELT) TABLEAU PROC E/S
53C XEP(NUMELT) TABLEAU PROC E/S
54C-----------------------------------------------
55C I M P L I C I T T Y P E S
56C-----------------------------------------------
57#include "implicit_f.inc"
58C-----------------------------------------------
59C C O M M O N B L O C K S
60C-----------------------------------------------
61#include "vect01_c.inc"
62#include "com04_c.inc"
63#include "param_c.inc"
64#include "sms_c.inc"
65C-----------------------------------------------
66C D U M M Y A R G U M E N T S
67C-----------------------------------------------
68 INTEGER IXT(5,*),ISEL(*),INUM(7,*),IPARTT(*),
69 . EADD(*),ITR1(*),INDEX(*),ITRI(5,*),
70 . ND, CEP(*), XEP(*),
71 . ITRUOFF(*), TAGPRT_SMS(*)
72 INTEGER ,INTENT(INOUT), DIMENSION(NUMELT) ::ITAGPRLD_TRUSS
73 my_real :: pm(npropm,*), geo(npropg,*)
74C-----------------------------------------------
75 TYPE (GROUP_) , DIMENSION(NGRTRUS) :: IGRTRUSS
76 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
77C-----------------------------------------------
78C L O C A L V A R I A B L E S
79C-----------------------------------------------
80 INTEGER :: I,J,K,L,NG, ISSN, NN,N,MLN,MID,PID ,NGROU
81 INTEGER :: II,JJ,II2,JJ2,II3,JJ3,II4,JJ4,II5,JJ5
82 INTEGER :: MSKMLN,MSKISN,MSKPID, MSKMID, MODE
83 INTEGER :: WORK(70000),IPRLD
85 INTEGER MY_SHIFTL,MY_SHIFTR,MY_AND
86
87 DATA mskmln /o'07770000000'/
88 DATA mskisn /o'00000000700'/
89 DATA mskmid /o'07777777777'/
90 DATA mskpid /o'07777777777'/
91C---+----1----+----2----+----3----+----4----+----5----+----6----+----7--
92
93C----------------------------------------------------------
94C TRI GLOBAL SUR TOUS LES CRITERES POUR TOUS LES ELEMENTS
95C----------------------------------------------------------
96C
97 DO i=1,numelt
98 eadd(i)=1
99 index(i)=i
100 inum(1,i)=ipartt(i)
101 inum(2,i)=itruoff(i)
102 inum(3,i)=ixt(1,i)
103 inum(4,i)=ixt(2,i)
104 inum(5,i)=ixt(3,i)
105 inum(6,i)=ixt(4,i)
106 inum(7,i)=ixt(5,i)
107 ENDDO
108
109 DO i=1,numelt
110 xep(i)=cep(i)
111 ENDDO
112C
113C
114 DO i = 1, numelt
115 ii = i
116 mid= ixt(1,ii)
117 mln= pm(19,mid)
118 pid= ixt(4,ii)
119 issn = 0
120 IF(geo(5,pid)/=0.) issn=1
121 iprld = itagprld_truss(ii)
122 IF (iprld>0) mln = mln+iprld
123C
124 issn=my_shiftl(issn,6)
125 mln=my_shiftl(mln,21)
126C
127 itri(1,i)=mln+issn
128 itri(2,i)=itruoff(i)
129C
130 jsms = 0
131 IF(isms/=0)THEN
132 IF(idtgrs/=0)THEN
133 IF(tagprt_sms(ipartt(ii))/=0)jsms=1
134 ELSE
135 jsms=1
136 END IF
137 END IF
138C JSMS=MY_SHIFTL(JSMS,0)
139 itri(3,i) = jsms
140C NEXT=MY_SHIFTL(NEXT,1)
141c
142C key4
143 itri(4,i) = mid
144C key5
145 itri(5,i) = pid
146
147 ENDDO
148C
149 mode=0
150 CALL my_orders( mode, work, itri, index, numelt , 4)
151C
152 DO i=1,numelt
153 ipartt(i) =inum(1,index(i))
154 itruoff(i) =inum(2,index(i))
155 ENDDO
156 DO k=1,5
157 DO i=1,numelt
158 ixt(k,i)=inum(k+2,index(i))
159 ENDDO
160 ENDDO
161
162 DO i=1,numelt
163 cep(i)=xep(index(i))
164 ENDDO
165C
166C INVERSION DE INDEX (DANS ITR1)
167C
168 DO i=1,numelt
169 itr1(index(i))=i
170 ENDDO
171C
172C RENUMEROTATION POUR TH
173C
174C
175C RENUMEROTATION POUR SURFACES
176C
177 DO i=1,nsurf
178 nn=igrsurf(i)%NSEG
179 DO j=1,nn
180 IF(igrsurf(i)%ELTYP(j) == 4)
181 . igrsurf(i)%ELEM(j) = itr1(igrsurf(i)%ELEM(j))
182 ENDDO
183 ENDDO
184C
185C RENUMEROTATION POUR GROUPES DE TRUSSES
186C
187 DO i=1,ngrtrus
188 nn=igrtruss(i)%NENTITY
189 DO j=1,nn
190 igrtruss(i)%ENTITY(j) = itr1(igrtruss(i)%ENTITY(j))
191 ENDDO
192 ENDDO
193C REORDERING FOR ITAGPRLD_TRUSS
194 inum(2,1:numelt)=itagprld_truss(1:numelt)
195 DO i=1,numelt
196 itagprld_truss(i) =inum(2,index(i))
197 ENDDO
198C
199C--------------------------------------------------------------
200C DETERMINATION DES SUPER_GROUPES
201C--------------------------------------------------------------
202 nd=1
203 DO i=2,numelt
204 ii=itri(1,index(i))
205 jj=itri(1,index(i-1))
206 ii2=itri(2,index(i))
207 jj2=itri(2,index(i-1))
208 ii3=itri(3,index(i))
209 jj3=itri(3,index(i-1))
210 ii4=itri(4,index(i))
211 jj4=itri(4,index(i-1))
212 ii5=itri(5,index(i))
213 jj5=itri(5,index(i-1))
214
215 IF (ii/=jj .OR. ii2/=jj2 .OR. ii3/=jj3 .OR.
216 . ii4/=jj4 .OR. ii5/=jj5) THEN
217 nd=nd+1
218 eadd(nd)=i
219 ENDIF
220 ENDDO
221 eadd(nd+1) = numelt+1
222c-----------
223 RETURN
#define my_real
Definition cppsort.cpp:32
void my_orders(int *mode, int *iwork, int *data, int *index, int *n, int *irecl)
Definition my_orders.c:82
int my_shiftr(int *a, int *n)
Definition precision.c:45
int my_shiftl(int *a, int *n)
Definition precision.c:36
int my_and(int *a, int *b)
Definition precision.c:54