OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
ig3dgrhead.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!|| ig3dgrhead ../starter/source/elements/ige3d/ig3dgrhead.F
25!||--- called by ------------------------------------------------------
26!|| lectur ../starter/source/starter/lectur.F
27!||--- calls -----------------------------------------------------
28!||--- uses -----------------------------------------------------
29!|| message_mod ../starter/share/message_module/message_mod.F
30!||====================================================================
31 SUBROUTINE ig3dgrhead(
32 1 KXIG3D, GEO, INUM, ITR1,
33 2 EADD, INDEX, ITRI, IPARTIG3D,
34 3 ND, IGRSURF,
35 4 CEP, XEP,IGEO, IPM, PM, NIGE, KNOTLOCEL)
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
85 my_real
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
190 END
subroutine ig3dgrhead(kxig3d, geo, inum, itr1, eadd, index, itri, ipartig3d, nd, igrsurf, cep, xep, igeo, ipm, pm, nige, knotlocel)
Definition ig3dgrhead.F:36
#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