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

Go to the source code of this file.

Functions/Subroutines

subroutine hm_bigsbox (numel, ix, nix, nix1, nix2, ieltyp, x, nseg, flag, skew, iskn, isurf0, itabm1, ibox, id, ibufbox, isurflin, iadb, key, sbufbox, titr, mess, tagshellbox, nn, lsubmodel)

Function/Subroutine Documentation

◆ hm_bigsbox()

subroutine hm_bigsbox ( integer numel,
integer, dimension(nix,*) ix,
integer nix,
integer nix1,
integer nix2,
integer ieltyp,
x,
integer nseg,
integer flag,
skew,
integer, dimension(liskn,*) iskn,
integer isurf0,
integer, dimension(*) itabm1,
type (box_), dimension(nbbox) ibox,
integer id,
integer, dimension(*) ibufbox,
type (surf_) isurflin,
integer iadb,
character key,
integer sbufbox,
character(len=nchartitle) titr,
character mess,
integer, dimension(*) tagshellbox,
integer nn,
type(submodel_data), dimension(nsubmod) lsubmodel )

Definition at line 38 of file hm_bigsbox.F.

44C-----------------------------------------------
45C M o d u l e s
46C-----------------------------------------------
47 USE message_mod
48 USE groupdef_mod
51 USE submodel_mod
53C-----------------------------------------------
54C I m p l i c i t T y p e s
55C-----------------------------------------------
56#include "implicit_f.inc"
57C-----------------------------------------------
58C C o m m o n B l o c k s
59C-----------------------------------------------
60#include "com04_c.inc"
61#include "param_c.inc"
62C-----------------------------------------------
63C D u m m y A r g u m e n t s
64C-----------------------------------------------
65 INTEGER NIX,IX(NIX,*),NIX1,NIX2,NUMEL,IELTYP,
66 . NSEG,FLAG,ISKN(LISKN,*),ISURF0,
67 . ITABM1(*),IBUFBOX(*),
68 . IADB,SBUFBOX,TAGSHELLBOX(*),NN
70 . x(3,*),skew(lskew,*)
71 CHARACTER KEY*4,MESS*40
72 CHARACTER(LEN=NCHARTITLE) :: TITR
73C-----------------------------------------------
74 TYPE (SURF_) :: ISURFLIN
75 TYPE (BOX_) , DIMENSION(NBBOX) :: IBOX
76 TYPE(SUBMODEL_DATA) LSUBMODEL(NSUBMOD)
77C-----------------------------------------------
78C L o c a l V a r i a b l e s
79C-----------------------------------------------
80 INTEGER I,JJ,K,K1,J,JREC,ISK,BOXTYPE,ISU,TAGN(NUMEL),
81 . ITYPE,IADBOX,IDB,NBOX,ID,IDBX,BOXSEG,IADISU,
82 . ICOUNT,ITER,FLAGG,NIXEL
84 . diam,xp1,yp1,zp1,xp2,yp2,zp2,nodinb(3)
85 CHARACTER BOX*3
86 LOGICAL BOOL,IS_AVAILABLE, IS_ENCRYPTED
87C=======================================================================
88 DO i=1,nbbox
89 ibox(i)%NBLEVELS = 0
90 ibox(i)%LEVEL = 1
91 ibox(i)%ACTIBOX = 0
92 IF(ibox(i)%NBOXBOX > 0)THEN
93 ibox(i)%NBLEVELS = -1
94 ibox(i)%LEVEL = 0
95 END IF
96 ibox(i)%BOXIAD = 0
97 END DO
98C-------
99 CALL hm_get_int_array_index('ids',idb,1,is_available,lsubmodel)
100 IF(key == 'box')THEN
101 BOXTYPE = 1
102 ELSE IF(KEY == 'box2')THEN
103 BOXTYPE = 2
104 END IF
105C-------
106C get box of box IDs in LINE:
107C-------
108 ISU = 0
109 DO I=1,NBBOX
110 IF(IDB == IBOX(I)%ID) ISU=I
111 END DO
112C---
113 IF(ISU > 0)THEN
114 NBOX = IBOX(ISU)%NBOXBOX
115 !super box enabled:
116 IBOX(ISU)%ACTIBOX = 1
117 ELSE
118 IF(FLAG == 0)THEN
119 IF(ISURF0 == 0)THEN
120 CALL ANCMSG(MSGID=799, MSGTYPE=MSGERROR, ANMODE=ANINFO,I1=ID, C1=TITR,I2=IDB)
121 ELSE IF(ISURF0 == 1)THEN
122 CALL ANCMSG(MSGID=800,MSGTYPE=MSGERROR,ANMODE=ANINFO,I1=ID,C1=TITR,I2=IDB)
123 END IF
124 END IF
125 END IF
126C---
127C simple box in /LINE:
128C---
129 BOOL=.FALSE.
130 IF(ISU>0)THEN
131.AND. IF(IBOX(ISU)%NBLEVELS == 0 IBOX(ISU)%LEVEL == 1) THEN
132 IF(NBOX == 0)THEN
133 CALL BOX_SURF_SH(X ,IBUFBOX,SKEW ,IADB ,BOXTYPE,
134 . IBOX ,ISU ,NUMEL ,NIX ,IX ,
135 . NIX1 ,NIX2 ,ISURF0,IELTYP ,FLAG ,
136 . TAGSHELLBOX,0 )
137 BOOL=.TRUE.
138 END IF
139 END IF
140 ENDIF
141C---
142C READ LEVELS OF BOXES ==> "SUBLEVEL DONE"
143C---
144.NOT. IF(BOOL)THEN
145 ICOUNT = 1
146 ITER = 0
147 DO WHILE (ICOUNT == 1)
148 ITER = ITER + 1
149 FLAGG = 0
150C--- count next level
151 CALL BOXBOXS(IBOX ,SKEW ,FLAGG ,ICOUNT ,ITER ,
152 . BOXTYPE ,IBUFBOX ,X ,IADB ,IX ,
153 . NIX ,NIX1 ,NIX2 ,NUMEL ,ISURF0 ,
154 . IELTYP ,ID ,TITR ,MESS ,FLAG ,
155 . TAGSHELLBOX,0 )
156.OR. IF (IADB>SBUFBOX IADB<0)
157 . CALL ANCMSG(MSGID=1007, MSGTYPE=MSGERROR,ANMODE=ANSTOP)
158C--- fill next level
159 FLAGG = 1
160 CALL BOXBOXS(IBOX ,SKEW ,FLAGG ,ICOUNT ,ITER ,
161 . BOXTYPE ,IBUFBOX ,X ,IADB ,IX ,
162 . NIX ,NIX1 ,NIX2 ,NUMEL ,ISURF0 ,
163 . IELTYP ,ID ,TITR ,MESS ,FLAG ,
164 . TAGSHELLBOX,0 )
165C---
166 ENDDO
167 ENDIF
168C---
169C Tag Lines (or surfaces) in Main-Box:
170C---
171C---count lines within BOX
172 IF(ISU > 0)THEN
173C
174 IF(FLAG == 0)THEN
175 BOXSEG = IBOX(ISU)%NENTITY ! segments of main box
176 NSEG = NSEG + BOXSEG
177 ELSE IF(FLAG == 1)THEN
178 BOXSEG = IBOX(ISU)%NENTITY ! segments of main box
179 IADISU = IBOX(ISU)%BOXIAD ! addresses of segments in main box
180 NSEG = NSEG + BOXSEG
181 DO I=1,BOXSEG
182 NN = NN + 1
183 IF(ISURF0 == 1)THEN ! surfaces
184 DO K=NIX1,NIX2
185 J=IBUFBOX(IADISU+K-2)
186 ISURFLIN%NODES(NN,K-1) = J
187 ENDDO
188 IADISU = IADISU + NIX2 - 1
189 ELSE ! lines
190C--------------------
191 J=IBUFBOX(IADISU)
192 ISURFLIN%NODES(NN,1) = J
193 IADISU = IADISU + 1
194C--------------------
195 J=IBUFBOX(IADISU)
196 ISURFLIN%NODES(NN,2) = J
197 IADISU = IADISU + 1
198 END IF
199C--------------------
200 IF(IELTYP == 7)THEN
201 J=IBUFBOX(IADISU)
202 ISURFLIN%NODES(NN,4) =
203 . ISURFLIN%NODES(NN,3)
204 IADISU = IADISU + 1
205 END IF
206C--------------------
207 J=IBUFBOX(IADISU)
208 ISURFLIN%ELTYP(NN)= J
209 IADISU = IADISU + 1
210C--------------------
211 J=IBUFBOX(IADISU)
212 ISURFLIN%ELEM(NN) = J
213 IADISU = IADISU + 1
214C--------------------
215 END DO
216 END IF ! IF(FLAG == 0)
217 END IF ! IF(ISU > 0)
218C-----------
219 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine hm_get_int_array_index(name, ival, index, is_available, lsubmodel)
integer, parameter nchartitle