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

Go to the source code of this file.

Functions/Subroutines

subroutine new_seatbelt (ixr, itab, knod2el1d, nod2el1d, nod_start, elem_cur, tag_res, tag_nod, id, flag, nnod, ipm, nb_elem_1d, nb_branch, branch_tab, branch_cpt)

Function/Subroutine Documentation

◆ new_seatbelt()

subroutine new_seatbelt ( integer, dimension(nixr,*) ixr,
integer, dimension(*) itab,
integer, dimension(*) knod2el1d,
integer, dimension(*) nod2el1d,
integer nod_start,
integer elem_cur,
integer, dimension(*) tag_res,
integer, dimension(*) tag_nod,
integer id,
integer flag,
integer nnod,
integer, dimension(npropmi,*) ipm,
integer, intent(in) nb_elem_1d,
integer, intent(inout) nb_branch,
integer, dimension(2*nb_elem_1d), intent(inout) branch_tab,
integer, intent(inout) branch_cpt )

Definition at line 34 of file new_seatbelt.F.

38C-----------------------------------------------
39C M o d u l e s
40C-----------------------------------------------
41 USE message_mod
42 USE seatbelt_mod
43 USE submodel_mod , ONLY : nsubmod
44C-----------------------------------------------
45C I m p l i c i t T y p e s
46C-----------------------------------------------
47#include "implicit_f.inc"
48C-----------------------------------------------
49C C o m m o n B l o c k s
50C-----------------------------------------------
51#include "param_c.inc"
52#include "com04_c.inc"
53C-----------------------------------------------
54C D u m m y A r g u m e n t s
55C-----------------------------------------------
56 INTEGER IXR(NIXR,*),ITAB(*),KNOD2EL1D(*),NOD2EL1D(*),NOD_START,TAG_RES(*),TAG_NOD(*),
57 . ELEM_CUR,ID,FLAG,NNOD,IPM(NPROPMI,*)
58 INTEGER, INTENT(IN) :: NB_ELEM_1D
59 INTEGER, INTENT(INOUT) :: NB_BRANCH,BRANCH_TAB(2*NB_ELEM_1D),BRANCH_CPT
60C-----------------------------------------------
61C L o c a l V a r i a b l e s
62C-----------------------------------------------
63 INTEGER K,NODE_CUR,NRES_FOUND,ELEM_NEWT,NODE_NEXT,ELEM_NEXT,ID_PREV,MTYP,MID,ELEM_TEST
64C-----------------------------------------------
65C S o u r c e L i n e s
66C-----------------------------------------------
67C
68C-- Loop to find elements of the seatbelt
69C
70 node_cur = nod_start
71 elem_next = 0
72 IF (flag == 0) tag_res(elem_cur) = id
73 tag_nod(ixr(2,elem_cur)) = id
74 tag_nod(ixr(3,elem_cur)) = id
75 nnod = nnod + 1
76 nres_found = 1
77C
78 DO WHILE (nres_found > 0)
79 nres_found = 0
80C
81 IF (ixr(2,elem_cur) == node_cur) THEN
82 node_next = ixr(3,elem_cur)
83 ELSE
84 node_next = ixr(2,elem_cur)
85 ENDIF
86C
87 DO k=knod2el1d(node_next)+1,knod2el1d(node_next+1)
88 IF ((nod2el1d(k) > numelt+numelp).AND.(nod2el1d(k) /= elem_cur+numelt+numelp)) THEN
89 elem_test = nod2el1d(k)-numelt-numelp
90 mid = ixr(5,elem_test)
91 IF (mid > 0) THEN
92 mtyp = ipm(2,mid)
93 IF ((mtyp == 114).AND.(tag_res(elem_test) == 0)) THEN
94 nres_found = nres_found + 1
95 IF(nres_found > 1) THEN
96 IF (flag > 0) THEN
97C-- loop inisde retractor : bifurcation is not allowded inside retractor or at entry
98 CALL ancmsg(msgid=2005,
99 . msgtype=msgerror,
100 . anmode=aninfo,
101 . i1=itab(node_next))
102 nres_found = 0
103 ELSE
104C-- start of the secondary branch is saved
105 nb_branch = nb_branch + 1
106 branch_cpt = branch_cpt + 1
107 CALL ancmsg(msgid=2098,
108 . msgtype=msgwarning,
109 . anmode=aninfo,
110 . i1=itab(node_next))
111 branch_tab(2*(branch_cpt-1)+1) = node_next
112 branch_tab(2*(branch_cpt-1)+2) = elem_test
113 ENDIF
114 ELSE
115 elem_next = elem_test
116 ENDIF
117 ENDIF
118 ENDIF
119 ENDIF
120 ENDDO
121C Exit loop if node is a connection between 1D and 2D seatblet
122 IF (nres_found > 0) THEN
123 DO k=1,n_comn_1d2d
124 IF (node_next == comn_1d2d(k)) nres_found=0
125 ENDDO
126 ENDIF
127C
128 IF (nres_found > 0) THEN
129 IF (flag == 0) THEN
130 tag_res(elem_next) = id
131 tag_nod(ixr(2,elem_next)) = id
132 tag_nod(ixr(3,elem_next)) = id
133 nnod = nnod + 1
134 ELSE
135 IF (tag_res(elem_next) > 0) THEN
136 id_prev = retractor(tag_res(elem_next))%ID
137 IF ((id_prev > 0).AND.(nres_found > 0)) CALL ancmsg(msgid=2010,
138 . msgtype=msgerror,
139 . anmode=aninfo,
140 . i1=id_prev,i2=ixr(nixr,elem_next),i3=retractor(id)%ID)
141 ENDIF
142 tag_res(elem_next) = id
143 tag_nod(ixr(2,elem_next)) = id
144 tag_nod(ixr(3,elem_next)) = id
145 ENDIF
146 ENDIF
147C
148 elem_cur = elem_next
149 node_cur = node_next
150 ENDDO
151C
initmumps id
integer n_comn_1d2d
type(retractor_struct), dimension(:), allocatable retractor
integer, dimension(:), allocatable comn_1d2d
integer nsubmod
subroutine ancmsg(msgid, msgtype, anmode, i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, r1, r2, r3, r4, r5, r6, r7, r8, r9, c1, c2, c3, c4, c5, c6, c7, c8, c9, prmode)
Definition message.F:889