OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
init_i25_edge.F File Reference
#include "implicit_f.inc"
#include "i25edge_c.inc"

Go to the source code of this file.

Functions/Subroutines

subroutine init_i25_edge (nledge, ninter, npari, ipari, intbuf_tab)

Function/Subroutine Documentation

◆ init_i25_edge()

subroutine init_i25_edge ( integer, intent(in) nledge,
integer, intent(in) ninter,
integer, intent(in) npari,
integer, dimension(npari,ninter), intent(in) ipari,
type(intbuf_struct_), dimension(ninter), intent(inout) intbuf_tab )
Parameters
[in]nledgedim of ledge array
[in]ninternumber of interface
[in]nparidim of IPARI array
[in]ipariinterface data
[in,out]intbuf_tabinterface data

Definition at line 30 of file init_i25_edge.F.

31!$COMMENT
32! INIT_I25_EDGE description :
33! for interface type 25, find the solid edge & non-main edge
34!
35! INIT_I25_EDGE organization :
36! loop over the interface
37! * if NiN is an interface type 25 with edge to edge --> find the solid edge
38!$ENDCOMMENT
39C-----------------------------------------------
40C M o d u l e s
41C-----------------------------------------------
42 USE intbufdef_mod
43C-----------------------------------------------
44C I m p l i c i t T y p e s
45C-----------------------------------------------
46#include "implicit_f.inc"
47C-----------------------------------------------
48C C o m m o n B l o c k s
49C-----------------------------------------------
50#include "i25edge_c.inc"
51C-----------------------------------------------
52C D u m m y A r g u m e n t s
53C-----------------------------------------------
54 INTEGER, INTENT(in) :: NLEDGE !< dim of ledge array
55 INTEGER, INTENT(in) :: NINTER !< number of interface
56 INTEGER, INTENT(in) :: NPARI !< dim of IPARI array
57 INTEGER, DIMENSION(NPARI,NINTER), INTENT(in) :: IPARI !< interface data
58 TYPE(INTBUF_STRUCT_), DIMENSION(NINTER), INTENT(inout) :: INTBUF_TAB !< interface data
59C-----------------------------------------------
60C L o c a l V a r i a b l e s
61C-----------------------------------------------
62 INTEGER :: I,J
63 INTEGER :: INTERFACE_TYPE
64 INTEGER :: SOL_EDGE,SH_EDGE,IEDGE,NEDGE
65 INTEGER, DIMENSION(:), ALLOCATABLE :: TMP_ARRAY
66C-----------------------------------------------
67
68 ! ------------------------
69 ! loop over the interface
70 DO i=1,ninter
71 intbuf_tab(i)%NUMBER_EDGE_TYPE1 = 0
72 intbuf_tab(i)%NUMBER_EDGE_TYPE1_0 = 0
73 interface_type = ipari(7,i)
74 iedge = ipari(58,i)
75 ! -----------------
76 ! check if the interface is a type 25 with edge to edge
77 IF(interface_type==25.AND.iedge/=0) THEN
78 nedge = ipari(68,i)
79 ALLOCATE (tmp_array(nedge) )
80 ! ----------
81 ! loop over the edge to find the edge solid
82 DO j=1,nedge
83 IF(intbuf_tab(i)%LEDGE((j-1)*nledge+ledge_type)==1) THEN
84 intbuf_tab(i)%NUMBER_EDGE_TYPE1 = intbuf_tab(i)%NUMBER_EDGE_TYPE1 + 1
85 tmp_array(intbuf_tab(i)%NUMBER_EDGE_TYPE1) = j
86 ENDIF
87 ENDDO
88 ALLOCATE( intbuf_tab(i)%EDGE_TYPE1(intbuf_tab(i)%NUMBER_EDGE_TYPE1) )
89 intbuf_tab(i)%EDGE_TYPE1(1:intbuf_tab(i)%NUMBER_EDGE_TYPE1) = tmp_array(1:intbuf_tab(i)%NUMBER_EDGE_TYPE1)
90 ! ----------
91
92 ! ----------
93 ! loop over the edge to find the edge solid & the edge S
94 sol_edge = iedge/10 ! solids
95 sh_edge = iedge-10*sol_edge ! shells
96 DO j=1,nedge
97 IF(intbuf_tab(i)%LEDGE((j-1)*nledge+ledge_type)>=0.AND.
98 . (intbuf_tab(i)%LEDGE((j-1)*nledge+ledge_type)==1.OR.sh_edge==0) ) THEN
99 intbuf_tab(i)%NUMBER_EDGE_TYPE1_0 = intbuf_tab(i)%NUMBER_EDGE_TYPE1_0 + 1
100 tmp_array(intbuf_tab(i)%NUMBER_EDGE_TYPE1_0) = j
101 ENDIF
102 ENDDO
103 ALLOCATE( intbuf_tab(i)%EDGE_TYPE1_0(intbuf_tab(i)%NUMBER_EDGE_TYPE1_0) )
104 intbuf_tab(i)%EDGE_TYPE1_0(1:intbuf_tab(i)%NUMBER_EDGE_TYPE1_0) = tmp_array(1:intbuf_tab(i)%NUMBER_EDGE_TYPE1_0)
105 ! ----------
106
107 DEALLOCATE( tmp_array )
108 ELSE
109 ALLOCATE( intbuf_tab(i)%EDGE_TYPE1(intbuf_tab(i)%NUMBER_EDGE_TYPE1) )
110 ALLOCATE( intbuf_tab(i)%EDGE_TYPE1_0(intbuf_tab(i)%NUMBER_EDGE_TYPE1_0) )
111 ENDIF
112 ! -----------------
113 ENDDO
114 ! ------------------------
115
116 RETURN