32
33
34
35
36
37 USE intbufdef_mod
38
39
40
41#include "implicit_f.inc"
42
43
44
45#include "task_c.inc"
46#include "com04_c.inc"
47
48
49
50 INTEGER, INTENT(in) :: ITASK
51 INTEGER, INTENT(in) :: SIZE_SEC_NODE
52 INTEGER, DIMENSION(2*NUMNOD), INTENT(in) :: ITAG
53 INTEGER, DIMENSION(NINTER), INTENT(inout) :: NEWFRONT
54 TYPE(INTBUF_STRUCT_), DIMENSION(NINTER), INTENT(inout) :: INTBUF_TAB
55
56
57
58 INTEGER, DIMENSION(NUMNOD+1), INTENT(in) :: SHIFT_S_NODE
59
60 INTEGER, DIMENSION(SIZE_SEC_NODE), INTENT(in) :: INTER_SEC_NODE,SEC_NODE_ID
61
62
63
64 INTEGER :: I,J,K
65 INTEGER :: FIRST,LAST
66 INTEGER :: LOCAL_COUNTER,SHIFT
67 INTEGER :: NB_INTERFACE,NIN,NODE_ID
68 INTEGER, DIMENSION(:), ALLOCATABLE :: LOCAL_INDEX_SECONDARY_NODE
69
70 local_counter = 0
71 first = 1 + itask * (numnod / nthread)
72 last = (itask + 1) * (numnod / nthread)
73 IF(itask+1==nthread) last = numnod
74 ALLOCATE( local_index_secondary_node( last-first+1 ) )
75
76
77 DO i=first,last
78 IF(itag(i)==0) THEN
79 local_counter = local_counter + 1
80 local_index_secondary_node(local_counter) = i
81 ENDIF
82 ENDDO
83
84
85 DO i=1,local_counter
86 k = local_index_secondary_node(i)
87 nb_interface = shift_s_node(k+1) - shift_s_node(k)
88 shift = shift_s_node(k)
89 DO j=1,nb_interface
90 nin = inter_sec_node(shift+j)
91 node_id = sec_node_id(shift+j)
92
93 IF(intbuf_tab(nin)%STFNS(node_id)>zero) THEN
94 intbuf_tab(nin)%STFNS(node_id) = -intbuf_tab(nin)%STFNS(node_id)
95 newfront(nin) = -1
96 ENDIF
97 ENDDO
98 ENDDO
99
100 DEALLOCATE( local_index_secondary_node )
101
102 RETURN