37 . IXS,IXC,IXT,IXP,IXR,IXTG,IXS10,
38 . ADDCNEL,CNEL,TAG_NODE,TAG_ELEM )
51 use element_mod ,
only : nixs,nixc,nixt,nixp,nixr,nixtg
55#include "implicit_f.inc"
65 INTEGER,
INTENT(in) :: NB_SURFACE
66 INTEGER,
DIMENSION(4*NB_SURFACE),
INTENT(in) :: LIST_NODE
67 TYPE(nodal_arrays_),
INTENT(INOUT) :: NODES
68 TYPE(shooting_node_type),
INTENT(inout) :: SHOOT_STRUCT
69 TYPE(intbuf_struct_),
DIMENSION(NINTER),
INTENT(inout) :: INTBUF_TAB
71 INTEGER,
DIMENSION(NIXS,NUMELS),
INTENT(in) :: IXS
72 INTEGER,
DIMENSION(NIXC,NUMELC),
INTENT(in) :: IXC
73 INTEGER,
DIMENSION(NIXT,NUMELT),
INTENT(in) :: IXT
74 INTEGER,
DIMENSION(NIXP,NUMELP),
INTENT(in) :: IXP
75 INTEGER,
DIMENSION(NIXR,NUMELR)INTENT(in) :: IXR
76 INTEGER,
DIMENSION(NIXTG,NUMELTG),
INTENT(in) :: IXTG
77 INTEGER,
DIMENSION(6,NUMELS10),
INTENT(in) :: IXS10
78 INTEGER,
DIMENSION(0:NUMNOD+1),
INTENT(in) :: ADDCNEL
79 INTEGER,
DIMENSION(NPARI,NINTER),
INTENT(in) :: IPARI
80 my_real,
DIMENSION(NPROPG,NUMGEO),
INTENT(in) :: geo
81 INTEGER,
DIMENSION(0:LCNEL),
INTENT(in) :: CNEL
82 INTEGER,
DIMENSION(NUMNOD),
INTENT(inout) :: TAG_NODE
83 INTEGER,
DIMENSION(NUMELS+NUMELQ+NUMELC+NUMELT+NUMELP+NUMELR+NUMELTG),
INTENT(inout) :: TAG_ELEM
87 INTEGER :: I,J,NODE_ID
88 INTEGER :: NB_SURFACE_R_PROC
89 INTEGER,
DIMENSION(4) :: LOCAL_NODE,GLOBAL_NODE
90 INTEGER,
DIMENSION(:),
ALLOCATABLE :: LIST_SURFACE_R_PROC
93 INTEGER :: NODE_SURF_NB
94 INTEGER :: NB_RESULT_INTERSECT,NB_SURFACE_1,NB_SURFACE_2
95 INTEGER,
DIMENSION(:),
ALLOCATABLE :: RESULT_INTERSECT,INTERSECT_1,INTERSECT_2
96 INTEGER,
DIMENSION(:),
ALLOCATABLE :: TMP_ARRAY
101 ALLOCATE( list_surface_r_proc(4*nb_surface) )
102 nb_surface_r_proc = 0
106 ALLOCATE( result_intersect( shoot_struct%MAX_SURF_NB ) )
107 ALLOCATE( intersect_1( shoot_struct%MAX_SURF_NB ) )
108 ALLOCATE( intersect_2( shoot_struct%MAX_SURF_NB ) )
112 global_node(1:4) = list_node( (i-1)*4+1:(i-1)*4+4)
114 local_node(j) = get_local_node_id(nodes,global_node(j))
116 node_id = local_node(1)
118 nb_result_intersect = shoot_struct%SHIFT_M_NODE_SURF(node_id+1) - shoot_struct%SHIFT_M_NODE_SURF(node_id)
119 shift = shoot_struct%SHIFT_M_NODE_SURF(node_id)
120 result_intersect(1:nb_result_intersect) = shoot_struct%M_NODE_SURF( shift+1:shift+nb_result_intersect )
123 IF(local_node(3)==local_node(4)) node_surf_nb = 3
126 nb_surface_1 = nb_result_intersect
127 intersect_1(1:nb_surface_1) = result_intersect(1:nb_result_intersect)
128 node_id = local_node(j)
131 nb_surface_2 = shoot_struct%SHIFT_M_NODE_SURF(node_id+1) - shoot_struct%SHIFT_M_NODE_SURF(node_id)
132 shift = shoot_struct%SHIFT_M_NODE_SURF(node_id)
133 intersect_2(1:nb_surface_2) = shoot_struct%M_NODE_SURF( shift+1:shift+nb_surface_2 )
134 IF(nb_surface_1>0.AND.nb_surface_2>0)
THEN
135 CALL intersect_2_sorted_sets( intersect_1,nb_surface_1,
136 . intersect_2,nb_surface_2,
137 . result_intersect,nb_result_intersect )
139 nb_result_intersect = 0
144 IF(nb_surface_r_proc + nb_result_intersect >
SIZE(list_surface_r_proc) )
THEN
145 ALLOCATE( tmp_array(nb_surface_r_proc) )
146 tmp_array(1:nb_surface_r_proc) = list_surface_r_proc(1:nb_surface_r_proc)
147 DEALLOCATE( list_surface_r_proc )
148 ALLOCATE( list_surface_r_proc( (nb_surface_r_proc+nb_result_intersect) * 2 ) )
149 list_surface_r_proc(1:nb_surface_r_proc) = tmp_array(1:nb_surface_r_proc)
150 DEALLOCATE( tmp_array )
153 list_surface_r_proc(1+nb_surface_r_proc:nb_surface_r_proc+nb_result_intersect) =
154 . result_intersect(1:nb_result_intersect)
155 nb_surface_r_proc = nb_surface_r_proc + nb_result_intersect
158 CALL check_surface_state( -1,nb_surface_r_proc,list_surface_r_proc,shoot_struct%SHIFT_INTERFACE,intbuf_tab,
160 . ixs,ixc,ixt,ixp,ixr,ixtg,ixs10,
161 . addcnel,cnel,tag_node,tag_elem,shoot_struct )
163 DEALLOCATE( list_surface_r_proc )
164 DEALLOCATE( result_intersect )
165 DEALLOCATE( intersect_1 )
166 DEALLOCATE( intersect_2 )
subroutine check_surface_state(itask, surfarce_nb, surface_id, shift_interface, intbuf_tab, ipari, geo, ixs, ixc, ixt, ixp, ixr, ixtg, ixs10, addcnel, cnel, tag_node, tag_elem, shoot_struct)
subroutine find_surface_from_remote_proc(shoot_struct, nb_surface, list_node, intbuf_tab, nodes, ipari, geo, ixs, ixc, ixt, ixp, ixr, ixtg, ixs10, addcnel, cnel, tag_node, tag_elem)