36 . SHIFT_INTERFACE,INTBUF_TAB,NEWFRONT,IPARI,GEO,
37 . IXS,IXC,IXT,IXP,IXR,IXTG,IXS10,
38 . ADDCNEL,CNEL,TAG_NODE,TAG_ELEM,SHOOT_STRUCT )
49 use element_mod ,
only : nixs,nixc,nixt,nixp,nixr,nixtg
53#include "implicit_f.inc"
64 INTEGER,
INTENT(in) :: ITASK
65 INTEGER,
INTENT(in) :: M_EDGE_NB,S_EDGE_NB
66 INTEGER,
DIMENSION(M_EDGE_NB),
INTENT(in) :: M_EDGE_ID
67 INTEGER,
DIMENSION(S_EDGE_NB),
INTENT(in) :: S_EDGE_ID
68 INTEGER,
DIMENSION(NINTER),
INTENT(inout) :: NEWFRONT
69 INTEGER,
DIMENSION(NINTER+1,2),
INTENT(in) :: SHIFT_INTERFACE
70 TYPE(intbuf_struct_),
DIMENSION(NINTER),
INTENT(inout) :: INTBUF_TAB
71 INTEGER,
DIMENSION(NPARI,NINTER),
INTENT(in) :: IPARI
73 INTEGER,
DIMENSION(NIXS,NUMELS),
INTENT(in) :: IXS
74 INTEGER,
DIMENSION(NIXC,NUMELC),
INTENT(in) :: IXC
75 INTEGER,
DIMENSION(NIXT,NUMELT),
INTENT(in) :: ! truss array
76 INTEGER,
DIMENSION(NIXP,NUMELP),
INTENT(in) :: IXP
77 INTEGER,
DIMENSION(NIXR,NUMELR),
INTENT(in) :: IXR
78 INTEGER,
DIMENSION(NIXTG,NUMELTG),
INTENT(in) :: IXTG
79 INTEGER,
DIMENSION(6,NUMELS10),
INTENT(in) :: IXS10
80 INTEGER,
DIMENSION(0:NUMNOD+1),
INTENT(in) :: ADDCNEL
81 my_real,
DIMENSION(NPROPG,NUMGEO),
INTENT(in) :: geo
82 INTEGER,
DIMENSION(0:LCNEL),
INTENT(in) :: CNEL
83 INTEGER,
DIMENSION(NUMNOD),
INTENT(inout) :: TAG_NODE
84 INTEGER,
DIMENSION(NUMELS+NUMELQ+NUMELC+NUMELT+NUMELP+NUMELR+NUMELTG),
INTENT(inout) :: TAG_ELEM
85 TYPE(shooting_node_type),
INTENT(inout) :: SHOOT_STRUCT
89 LOGICAL :: DEACTIVATION
90 INTEGER :: I,K,FIRST,LAST
91 INTEGER :: NIN,ID_INTER,NUMBER_INTER
93 INTEGER :: N1,N2,N3,N4
94 INTEGER :: NUMBER_NODE
95 INTEGER :: DICHOTOMIC_SEARCH_I_ASC
101 first = 1 + itask * (m_edge_nb / nthread)
102 last = (itask + 1) * (m_edge_nb / nthread)
103 IF((itask+1)==nthread) last = m_edge_nb
105 number_inter = shift_interface(ninter+1,2)
110 id_inter = dichotomic_search_i_asc(k, shift_interface(1,1), number_inter+1)
111 nin = shift_interface(id_inter,2)
112 k = k - shift_interface(id_inter,1) + 1
118 IF(ity==11.AND.idel==1)
THEN
119 shoot_struct%INTER(nin)%REMOTE_ELM_M(k) = shoot_struct%INTER(nin)%REMOTE_ELM_M(k) - 1
124 IF(intbuf_tab(nin)%STFM(k)/=zero)
THEN
126 IF(ity==11.AND.idel==1)
THEN
127 n1 = intbuf_tab(nin)%IRECTM((k-1)*2+1)
128 n2 = intbuf_tab(nin)%IRECTM((k-1)*2+2)
132 IF(shoot_struct%INTER(nin)%REMOTE_ELM_M(k)<1)
THEN
134 . deactivation,geo,ixs,ixc,
135 . ixt,ixp,ixr,ixtg,ixs10,addcnel,cnel,
136 . tag_node,tag_elem )
138 deactivation = .false.
143 IF(deactivation) intbuf_tab(nin)%STFM(k) = zero
152 first = 1 + itask * (s_edge_nb / nthread)
153 last = (itask + 1) * (s_edge_nb / nthread)
154 IF((itask+1)==nthread) last = s_edge_nb
160 id_inter = dichotomic_search_i_asc(k, shift_interface(1,1), number_inter+1)
161 nin = shift_interface(id_inter,2)
162 k = k - shift_interface(id_inter,1) + 1
168 IF(ity==11.AND.idel==1)
THEN
169 shoot_struct%INTER(nin)%REMOTE_ELM_S(k) = shoot_struct%INTER(nin)%REMOTE_ELM_S(k) - 1
174 IF(intbuf_tab(nin)%STFS(k)/=zero)
THEN
175 IF(ity==11.AND.idel==1)
THEN
176 n1 = intbuf_tab(nin)%IRECTS((k-1)*2+1)
177 n2 = intbuf_tab(nin)%IRECTS((k-1
181 IF(shoot_struct%INTER(nin)%REMOTE_ELM_S(k)<1)
THEN
183 . deactivation,geo,ixs,ixc,
184 . ixt,ixp,ixr,ixtg,ixs10,addcnel,cnel,
185 . tag_node,tag_elem )
187 deactivation = .false.
193 IF(deactivation)
THEN
194 intbuf_tab(nin)%STFS(k) = -abs(intbuf_tab(nin)%STFS(k))
subroutine check_active_elem_edge(number_node, n1, n2, n3, n4, deactivation, geo, ixs, ixc, ixt, ixp, ixr, ixtg, ixs10, addcnel, cnel, tag_node, tag_elem)
subroutine check_edge_state(itask, m_edge_nb, s_edge_nb, m_edge_id, s_edge_id, shift_interface, intbuf_tab, newfront, ipari, geo, ixs, ixc, ixt, ixp, ixr, ixtg, ixs10, addcnel, cnel, tag_node, tag_elem, shoot_struct)