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

Go to the source code of this file.

Functions/Subroutines

subroutine ig3dgrhead (kxig3d, geo, inum, itr1, eadd, index, itri, ipartig3d, nd, igrsurf, cep, xep, igeo, ipm, pm, nige, knotlocel)

Function/Subroutine Documentation

◆ ig3dgrhead()

subroutine ig3dgrhead ( integer, dimension(nixig3d,*) kxig3d,
geo,
integer, dimension(nixig3d+1,*) inum,
integer, dimension(*) itr1,
integer, dimension(*) eadd,
integer, dimension(*) index,
integer, dimension(4,*) itri,
integer, dimension(*) ipartig3d,
integer nd,
type (surf_), dimension(nsurf) igrsurf,
integer, dimension(*) cep,
integer, dimension(*) xep,
integer, dimension(npropgi,numgeo), intent(in) igeo,
integer, dimension(npropmi,nummat) ipm,
pm,
integer, dimension(*) nige,
knotlocel )

Definition at line 31 of file ig3dgrhead.F.

36C-----------------------------------------------
37C M o d u l e s
38C-----------------------------------------------
39 USE message_mod
40 USE groupdef_mod
41C-----------------------------------------------
42C A R G U M E N T S
43C-----------------------------------------------
44C KXIG3D(NIXIG3D,NUMELIG3D) TABLEAU CONECS+PID+No ElEMENTS E
45C GEO(NPROPG,NUMGEO)TABLEAU DES CARACS DES PID E
46C INUM(8,NUMELIG3D) TABLEAU DE TRAVAIL E/S
47C ITR1(NSELR) TABLEAU DE TRAVAIL E/S
48C EADD(NUMELIG3D) TABLEAU DES ADRESSES DANS IDAM CHGT DAMIER S
49C INDEX(NUMELIG3D) TABLEAU DE TRAVAIL E/S
50C ITRI(4,NUMELIG3D) TABLEAU DE TRAVAIL E/S
51C IPARTIG3D(NUMELIG3D) TABLEAU PART E/S
52C CEP(NUMELIG3D) TABLEAU PROC E/S
53C XEP(NUMEX) 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 "tabsiz_c.inc"
65C-----------------------------------------------
66C D U M M Y A R G U M E N T S
67C-----------------------------------------------
68 INTEGER KXIG3D(NIXIG3D,*),INUM(NIXIG3D+1,*),IPARTIG3D(*),
69 . EADD(*),ITR1(*),INDEX(*),ITRI(4,*),
70 . ND, CEP(*), XEP(*),
71 . IPM(NPROPMI,NUMMAT),NIGE(*)
72 INTEGER,INTENT(IN) :: IGEO(NPROPGI,NUMGEO)
73 my_real geo(npropg,numgeo),pm(npropm,nummat),knotlocel(*)
74C
75 TYPE (SURF_) , DIMENSION(NSURF) :: IGRSURF
76C-----------------------------------------------
77C L O C A L V A R I A B L E S
78C-----------------------------------------------
79 INTEGER
80 . I, K, NG, ISSN, NPN, NN, N, MID, PID ,
81 . II, J, II2,JJ2,JJ, II3, JJ3, L,NGROU,
82 . MODE, WORK(70000),NCTRL,MLN,JALE_FROM_MAT,JALE_FROM_PROP
84 INTEGER MY_SHIFTL,MY_SHIFTR,MY_AND
86 . knotlocelindx(sknotlocel)
87C
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,numelig3d
94 eadd(i)=1
95 itri(4,i)=i
96 index(i)=i
97 inum(1,i)=ipartig3d(i)
98 DO j=1,nixig3d
99 inum(j+1,i)=kxig3d(j,i)
100 ENDDO
101 DO j=1,6
102 knotlocelindx((i-1)*6+j)=knotlocel((i-1)*6+j)
103 ENDDO
104 ENDDO
105
106 DO i = 1, numelig3d
107 mid= kxig3d(1,i)
108 mln = nint(pm(19,abs(mid)))
109 pid= kxig3d(2,i)
110 nctrl= kxig3d(3,i)
111C
112 jale_from_mat = nint(pm(72,mid))
113 jale_from_prop = igeo(62,pid)
114 jale = max(jale_from_mat, jale_from_prop) !if inconsistent, error message was displayed in PART reader
115
116 jlag=0
117 IF(jale==0.AND.mln/=18)jlag=1
118 jeul=0
119 IF(jale==2)THEN
120 jale=0
121 jeul=1
122 ELSEIF(jale == 3) THEN
123 jlag = 1
124 jale = 1
125 ENDIF
126 IF(mln/=50)jtur=nint(pm(70,mid))
127 jthe=nint(pm(71,mid))
128C
129 itri(1,i)=nctrl
130 itri(2,i)=mid
131 itri(3,i)=pid
132 itri(4,i)=0
133 ENDDO
134C
135 mode=0
136 CALL my_orders( mode, work, itri, index, numelig3d , 4)
137C
138 DO i=1,numelig3d
139 ipartig3d(i) =inum(1,index(i))
140 DO j=1,6
141 knotlocel((i-1)*6+j)=knotlocelindx((index(i)-1)*6+j)
142 ENDDO
143 ENDDO
144
145 DO k=1,nixig3d
146 DO i=1,numelig3d
147 kxig3d(k,i)=inum(k+1,index(i))
148 ENDDO
149 ENDDO
150C
151C INVERSION DE INDEX (DANS ITR1)
152C
153 DO i=1,numelig3d
154 itr1(index(i))=i
155 ENDDO
156C
157C RENUMEROTATION POUR SURFACES
158C
159 DO i=1,nsurf
160 nn=igrsurf(i)%NSEG_IGE
161 DO j=1,nn
162 IF(igrsurf(i)%ELTYP_IGE(j) == 101)
163 . igrsurf(i)%ELEM_IGE(j) = itr1(igrsurf(i)%ELEM_IGE(j))
164 ENDDO
165 ENDDO
166C
167 DO i=1,numfakenodigeo
168 nige(i)=itr1(nige(i))
169 ENDDO
170C
171C--------------------------------------------------------------
172C DETERMINATION DES SUPER_GROUPES
173C--------------------------------------------------------------
174 nd=1
175 DO i=2,numelig3d
176 ii=itri(1,index(i))
177 jj=itri(1,index(i-1))
178 ii2=itri(2,index(i))
179 jj2=itri(2,index(i-1))
180 ii3=itri(3,index(i))
181 jj3=itri(3,index(i-1))
182 IF(ii/=jj.OR.ii2/=jj2.OR.ii3/=jj3) THEN
183 nd=nd+1
184 eadd(nd)=i
185 ENDIF
186 ENDDO
187 eadd(nd+1) = numelig3d+1
188C
189 RETURN
#define my_real
Definition cppsort.cpp:32
#define max(a, b)
Definition macros.h:21
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