35 SUBROUTINE split_ebcs( PROC_ID,LOCAL_NEBCS,LIST_OTHER_EBCS,NUMEL,
36 1 CEP,IGRSURF,LOCAL_ELEMENT_ID,
37 2 EBCS_TAB,EBCS_TAB_LOC_2)
67#include "implicit_f.inc"
75 INTEGER,
INTENT(IN) :: LOCAL_NEBCS
76 INTEGER,
INTENT(IN) :: NUMEL
77 INTEGER,
INTENT(IN) :: PROC_ID
78 INTEGER,
DIMENSION(LOCAL_NEBCS),
INTENT(IN) :: LIST_OTHER_EBCS
79 INTEGER,
DIMENSION(NUMEL),
INTENT(IN) :: CEP
80 INTEGER,
DIMENSION(NUMEL),
INTENT(IN) :: LOCAL_ELEMENT_ID
81 TYPE (SURF_),
DIMENSION(NSURF),
TARGET,
INTENT(IN) :: IGRSURF
82 TYPE(t_ebcs_tab),
INTENT(INOUT) :: EBCS_TAB,EBCS_TAB_LOC_2
87 INTEGER :: GLOBAL_INDEX,EBCS_ID,SURF_ID,NSEG
88 INTEGER :: ELEM_ID,LOCAL_SEG
89 INTEGER,
DIMENSION(:,:),
ALLOCATABLE :: LIST_NODE,LIST_NODE_2
98 ebcs_id = list_other_ebcs(i)
100 IF(ebcs_tab_loc_2%tab(i)%poly%surf_id > 0)
THEN
101 surf_id = ebcs_tab_loc_2%tab(i)%poly%surf_id
102 nseg = igrsurf(surf_id)%NSEG
105 IF(.NOT.
ALLOCATED(ebcs_tab_loc_2%tab(i)%poly%global_ielem))
THEN
106 ALLOCATE( ebcs_tab_loc_2%tab(i)%poly%global_ielem(nseg) )
109 ALLOCATE( list_node(nseg,4) )
114 elem_id = ebcs_tab%tab(ebcs_id)%poly%ielem(j)
118 IF( cep(elem_id)+1 == proc_id)
THEN
119 local_seg = local_seg + 1
120 global_index = global_index + 1
122 list_node(local_seg,ijk) = igrsurf(surf_id)%NODES(j,ijk)
124 ebcs_tab_loc_2%tab(i)%poly%iseg(local_seg) = sign(ebcs_tab%tab(ebcs_id)%poly%iseg(j),global_index)
126 ebcs_tab_loc_2%tab(i)%poly%ielem(local_seg) = local_element_id(ebcs_tab%tab(ebcs_id)%poly%ielem(j))
127 ebcs_tab_loc_2%tab(i)%poly%itype(local_seg) = ebcs_tab%tab(ebcs_id)%poly%itype(j)
129 ebcs_tab_loc_2%tab(i)%poly%global_ielem(local_seg) = ebcs_tab%tab(ebcs_id)%poly%ielem(j)
134 ALLOCATE( list_node_2(local_seg,4) )
135 list_node_2(1:local_seg,1:4) = list_node(1:local_seg,1:4)
136 CALL ebcs_tab_loc_2%tab(i)%poly%set_nodes_elems(local_seg, numnod, list_node_2)
137 DEALLOCATE( list_node,list_node_2 )
subroutine split_ebcs(proc_id, local_nebcs, list_other_ebcs, numel, cep, igrsurf, local_element_id, ebcs_tab, ebcs_tab_loc_2)