OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
hm_read_box.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_read_box (ibox, unitab, itabm1, iskn, skew, x, rtrans, lsubmodel)

Function/Subroutine Documentation

◆ hm_read_box()

subroutine hm_read_box ( type (box_), dimension(nbbox) ibox,
type (unit_type_), intent(in) unitab,
integer, dimension(numnod), intent(in) itabm1,
integer, dimension(liskn,*), intent(in) iskn,
intent(in) skew,
intent(in) x,
intent(in) rtrans,
type(submodel_data), dimension(*), intent(in) lsubmodel )

Definition at line 40 of file hm_read_box.F.

42C-----------------------------------------------
43C M o d u l e s
44C-----------------------------------------------
45 USE my_alloc_mod
46 USE unitab_mod
47 USE submodel_mod
48 USE message_mod
52C-----------------------------------------------
53C I m p l i c i t T y p e s
54C-----------------------------------------------
55#include "implicit_f.inc"
56C-----------------------------------------------
57C C o m m o n B l o c k s
58C-----------------------------------------------
59#include "com04_c.inc"
60#include "param_c.inc"
61C-----------------------------------------------
62C D u m m y A r g u m e n t s
63C-----------------------------------------------
64 INTEGER ,DIMENSION(LISKN,*) ,INTENT(IN) :: ISKN
65 INTEGER ,DIMENSION(NUMNOD) ,INTENT(IN) :: ITABM1
66 my_real ,DIMENSION(3,NUMNOD) ,INTENT(IN) :: x
67 my_real ,DIMENSION(LSKEW,*) ,INTENT(IN) :: skew
68 my_real ,DIMENSION(NTRANSF,*) ,INTENT(IN) :: rtrans
69 TYPE (UNIT_TYPE_) ,INTENT(IN) :: UNITAB
70 TYPE(SUBMODEL_DATA),DIMENSION(*) ,INTENT(IN) :: LSUBMODEL
71 TYPE (BOX_) ,DIMENSION(NBBOX) :: IBOX
72C-----------------------------------------------
73C L o c a l V a r i a b l e s
74C-----------------------------------------------
75 INTEGER I,II,J,UID,LEN,BOXID,IUNIT,FLAGUNIT,
76 . IAD,NBOX,NBOX_RECT,NBOX_CYL,NBOX_SPHER,NBOX_BOX,NLIST
77 my_real :: bid
78 INTEGER :: IWORK(70000)
79 INTEGER INDEX(NBBOX*3),IX1(NBBOX),IX2(NBBOX)
80 INTEGER, DIMENSION(:) ,ALLOCATABLE :: BUFTMP,IBOXTMP
81 CHARACTER(LEN=NCHARKEY) :: KEY,KEY2
82 CHARACTER(nchartitle) :: TITR,MESS
83 LOGICAL :: IS_AVAILABLE
84c
85 DATA mess/'BOX DEFINITION '/
86C-----------------------------------------------
87C E x t e r n a l F u n c t i o n s
88C-----------------------------------------------
89 INTEGER LISTCNT,NBOXLST
90C-----------------------------------------------
91C IBOX(I)%ID : BOX IDENTIFIER
92C IBOX(I)%TITLE : BOX title
93C IBOX(I)%NBOXBOX : NUMBER OF SUB BOXES (BOXES OF BOXES)
94C IBOX(I)%ISKBOX : BOX SKEW_ID (/BOX/RECTA)
95C IBOX(I)%NOD1 : FIRST NODE for box limit definition - N1
96C IBOX(I)%NOD2 : SECOND NODE for box limit definition - N2
97C IBOX(I)%TYPE : BOX TYPE (0='BOX',1='RECTA',2='CYLIN' ,3='SPHER')
98C IBOX(I)%NBLEVELS : TEMPORARY LEVEL NB OF BOXES
99C IBOX(I)%LEVEL : FLAG "SUBLEVEL DONE" FOR BOX OF BOXES
100C IBOX(I)%ACTIBOX : FLAG FOR ACTIVATED BOX FOR (GRNOD,GRSHEL,LINE,SURF...)
101C IBOX(I)%NENTITY : NUMBER OF BOX ENTITIES (NODES,ELEMS,LINES,SURF)
102C WITHIN ACTIVATED BOX
103C IBOX(I)%SURFIAD :temporary address for solid external surface (in box)
104C IBOX(I)%BOXIAD : temporary address
105C IBOX(I)%DIAM : BOX diameter (CYLIN + SPHER)
106C IBOX(I)%X1 : coord.X for N1
107C IBOX(I)%Y1 : coord.Y for N1
108C IBOX(I)%Z1 : coord.Z for N1
109C IBOX(I)%X2 : coord.X for N2
110C IBOX(I)%Y2 : coord.Y for N2
111C IBOX(I)%Z2 : coord.Z for N2
112C IBOX(I)%IBOXBOX(NBOXBOX) : LIST OF BOXES (in /box/box)
113C IBOX(I)%ENTITY(NENTITY) : LIST OF ENTITIES (NODES,ELEMS,LINES,SURF)
114C=======================================================================
115c
116 CALL hm_option_count('/BOX/RECTA' ,nbox_rect )
117 CALL hm_option_count('/BOX/CYLIN' ,nbox_cyl )
118 CALL hm_option_count('/BOX/SPHER' ,nbox_spher )
119 CALL hm_option_count('/BOX/BOX' ,nbox_box )
120c
121 nbox = nbox_rect + nbox_cyl + nbox_spher + nbox_box
122c-----------------------------------------------
123 iad = 0
124 len = 5*nbbox
125 CALL my_alloc(buftmp ,len)
126c--------------------------------------------------
127c
128 CALL read_box_spher(
129 . ibox ,iad ,nbox_spher,itabm1 ,x ,
130 . rtrans ,unitab ,lsubmodel )
131c
132 CALL read_box_cyl(
133 . ibox ,iad ,nbox_cyl ,itabm1 ,x ,
134 . rtrans ,unitab ,lsubmodel )
135c
136 CALL read_box_rect(
137 . ibox ,iad ,nbox_rect ,iskn ,skew ,
138 . itabm1 ,x ,rtrans ,unitab ,lsubmodel)
139c
140 CALL read_box_box(ibox ,iad ,nbox_box ,lsubmodel)
141c
142c--------------------------------------------------
143c Recherche des ID doubles
144c
145 CALL my_alloc (iboxtmp ,nbox )
146 iboxtmp(1:nbox) = ibox(1:nbox)%ID
147 CALL udouble_igr(iboxtmp,nbox,mess,0,zero)
148c
149c--------------------------------------------------
150c check /box/box
151c--------------------------------------------------
152 IF (nbox_box > 0) THEN
153 ii = 0
154 DO i = 1,nbbox
155 IF (ibox(i)%TYPE == 0) THEN
156 nlist = ibox(i)%NBOXBOX
157 boxid = ibox(i)%ID
158 titr = ibox(i)%TITLE
159 IF (nlist > 0) THEN
160 nlist = nboxlst(ibox(i)%IBOXBOX,nlist ,iboxtmp ,nbbox,
161 . buftmp ,buftmp(1+nbbox),buftmp(1+2*nbbox),
162 . ii,boxid,titr)
163 ii = 1
164 ibox(i)%NBOXBOX = nlist
165 ELSE
166 ibox(iad)%NBOXBOX = 0
167 ENDIF
168 ENDIF
169 ENDDO
170 ENDIF
171C-----------------------------
172 IF (ALLOCATED(iboxtmp)) DEALLOCATE (iboxtmp)
173 IF (ALLOCATED(buftmp) ) DEALLOCATE (buftmp )
174c-----------
175 RETURN
#define my_real
Definition cppsort.cpp:32
subroutine hm_option_count(entity_type, hm_option_number)
integer, parameter ncharkey
integer function nboxlst(list, nlist, iboxtmp, nbbox, ix1, ix2, index, kk, id, titr)
Definition nboxlist.F:34
subroutine read_box_box(ibox, iad, nbox, lsubmodel)
subroutine read_box_cyl(ibox, iad, nbox, itabm1, x, rtrans, unitab, lsubmodel)
subroutine read_box_rect(ibox, iad, nbox, iskn, skew, itabm1, x, rtrans, unitab, lsubmodel)
subroutine read_box_spher(ibox, iad, nbox, itabm1, x, rtrans, unitab, lsubmodel)
subroutine udouble_igr(list, nlist, mess, ir, rlist)
Definition sysfus.F:1220