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

Go to the source code of this file.

Functions/Subroutines

subroutine xgrhead (kxx, geo, inum, itr1, eadd, index, itri, ipartx, nd, igrsurf, cep, xep, ipm)

Function/Subroutine Documentation

◆ xgrhead()

subroutine xgrhead ( integer, dimension(5,*) kxx,
geo,
integer, dimension(6,*) inum,
integer, dimension(*) itr1,
integer, dimension(*) eadd,
integer, dimension(*) index,
integer, dimension(4,*) itri,
integer, dimension(*) ipartx,
integer nd,
type (surf_), dimension(nsurf) igrsurf,
integer, dimension(*) cep,
integer, dimension(*) xep,
integer, dimension(npropmi,*) ipm )

Definition at line 32 of file xgrhead.F.

37C-----------------------------------------------
38C M o d u l e s
39C-----------------------------------------------
40 USE message_mod
41 USE groupdef_mod
42C-----------------------------------------------
43C A R G U M E N T S
44C-----------------------------------------------
45C KXX(5,NUMELX) TABLEAU CONECS+PID+No ElEMENTS MULTIBRIN E
46C GEO(NPROPG,NUMGEO)TABLEAU DES CARACS DES PID E
47C INUM(6,NUMELX) TABLEAU DE TRAVAIL E/S
48C ITR1(NSELR) TABLEAU DE TRAVAIL E/S
49C EADD(NUMELX) TABLEAU DES ADRESSES DANS IDAM CHGT DAMIER S
50C INDEX(NUMELX) TABLEAU DE TRAVAIL E/S
51C ITRI(4,NUMELX) TABLEAU DE TRAVAIL E/S
52C IPARTX(NUMELX) TABLEAU PART E/S
53C CEP(NUMELX) TABLEAU PROC E/S
54C XEP(NUMEX) TABLEAU PROC E/S
55C-----------------------------------------------
56C I M P L I C I T T Y P E S
57C-----------------------------------------------
58#include "implicit_f.inc"
59C-----------------------------------------------
60C C O M M O N B L O C K S
61C-----------------------------------------------
62#include "vect01_c.inc"
63#include "com04_c.inc"
64#include "param_c.inc"
65C-----------------------------------------------
66C D U M M Y A R G U M E N T S
67C-----------------------------------------------
68 INTEGER KXX(5,*),INUM(6,*),IPARTX(*),
69 . EADD(*),ITR1(*),INDEX(*),ITRI(4,*),
70 . ND, CEP(*), XEP(*),
71 . IPM(NPROPMI,*)
72 my_real :: geo(npropg,*)
73C-----------------------------------------------
74C L O C A L V A R I A B L E S
75C-----------------------------------------------
76 INTEGER
77 . I, K, NG, ISSN, NPN, NN, N, MID, PID ,
78 . II, J, II2,JJ2,JJ, II3, JJ3, L,NGROU,
79 . MSKMTN,MSKISN,MSKPID, MODE, WORK(70000)
81 INTEGER MY_SHIFTL,MY_SHIFTR,MY_AND
82C
83 DATA mskmtn /o'07770000000'/
84 DATA mskisn /o'00000000700'/
85 DATA mskpid /o'07777777777'/
86C
87 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
88C---+----1----+----2----+----3----+----4----+----5----+----6----+----7--
89C----------------------------------------------------------
90C TRI GLOBAL SUR TOUS LES CRITERES POUR TOUS LES ELEMENTS
91C----------------------------------------------------------
92C
93 DO i=1,numelx
94 eadd(i)=1
95 itri(4,i)=i
96 index(i)=i
97 inum(1,i)=ipartx(i)
98 inum(2,i)=kxx(1,i)
99 inum(3,i)=kxx(2,i)
100 inum(4,i)=kxx(3,i)
101 inum(5,i)=kxx(4,i)
102 inum(6,i)=kxx(5,i)
103 ENDDO
104
105 DO i=1,numelx
106 xep(i)=cep(i)
107 ENDDO
108
109 DO i = 1, numelx
110 mid= kxx(1,i)
111 pid= kxx(2,i)
112 mtn= nint(geo(12,pid))
113 IF (mtn<28.OR.mtn>31) THEN
114 CALL ancmsg(msgid=413,
115 . msgtype=msgerror,
116 . anmode=aninfo_blind_1,
117 . i1=kxx(5,i),
118 . c1='MATERIAL',
119 . i2=ipm(1,mid),
120 . c2='MATERIAL',
121 . i3=mtn)
122 ENDIF
123
124 issn = 0
125 IF(geo(5,pid)/=zero) issn=1
126C
127 issn=my_shiftl(issn,6)
128 mtn=my_shiftl(mtn,21)
129C
130 itri(1,i)=mtn+issn
131 itri(2,i)=pid
132 itri(3,i)=kxx(3,i)
133 itri(4,i)=0
134 ENDDO
135C
136 mode=0
137 CALL my_orders( mode, work, itri, index, numelx , 4)
138C
139 DO i=1,numelx
140 ipartx(i) =inum(1,index(i))
141 ENDDO
142 DO i=1,numelx
143 cep(i)=xep(index(i))
144 ENDDO
145 DO k=1,5
146 DO i=1,numelx
147 kxx(k,i)=inum(k+1,index(i))
148 ENDDO
149 ENDDO
150C
151C INVERSION DE INDEX (DANS ITR1)
152C
153 DO i=1,numelx
154 itr1(index(i))=i
155 ENDDO
156
157
158C
159C RENUMEROTATION POUR SURFACES
160C ow a verifier IBUFSSG - ITYP == 100
161 DO i=1,nsurf
162 nn=igrsurf(i)%NSEG
163 DO j=1,nn
164 IF(igrsurf(i)%ELTYP(j) == 100)
165 . igrsurf(i)%ELEM(j) = itr1(igrsurf(i)%ELEM(j))
166 ENDDO
167 ENDDO
168C--------------------------------------------------------------
169C DETERMINATION DES SUPER_GROUPES
170C--------------------------------------------------------------
171 nd=1
172 DO i=2,numelx
173 ii=itri(1,index(i))
174 jj=itri(1,index(i-1))
175 ii2=itri(2,index(i))
176 jj2=itri(2,index(i-1))
177 ii3=itri(3,index(i))
178 jj3=itri(3,index(i-1))
179 IF(ii/=jj.OR.ii2/=jj2.OR.ii3/=jj3) THEN
180 nd=nd+1
181 eadd(nd)=i
182 ENDIF
183 ENDDO
184 eadd(nd+1) = numelx+1
185C
186 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
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