36
37
38
39
40
41
42 USE intbufdef_mod
44
45
46
47#include "implicit_f.inc"
48
49
50
51 INTEGER , INTENT(IN) :: NRTM
52 INTEGER , INTENT(IN) ::
53 INTEGER , INTENT(IN) :: PROC
54 INTEGER , INTENT(IN) :: NUMELS
55 INTEGER , INTENT(IN) :: NUMELQ
56 INTEGER , INTENT(IN) :: NUMELC
57 INTEGER , INTENT(IN) :: NUMELT
58 INTEGER , INTENT(IN) :: NUMELP
59 INTEGER , INTENT(IN) :: NUMELR
60 INTEGER , INTENT(IN) :: NUMELTG
61
62 INTEGER , INTENT(IN) :: IDEL_SOLID
63 INTEGER , INTENT(IN) :: IELEM_M(2,NRTM)
64 INTEGER , INTENT(IN) :: TAG_SEG(NRTM_L)
65 INTEGER , INTENT(IN) :: CEP(*),CEL(*)
66 INTEGER , INTENT(IN) :: MVOISIN(4,NRTM)
67 INTEGER , INTENT(INOUT) :: PROC_MVOISIN(4,NRTM)
68 TYPE(INTERSURFP) :: INTERCEP
69
70
71
72 INTEGER I,J,K,GLOB,IE1,IEL1,IE2,IEL2,N
73 INTEGER :: OFFSET_SHELL,OFFSET_SHELL3N
74 INTEGER, DIMENSION(:),ALLOCATABLE :: IBUF1,IBUF3
75
76 ALLOCATE(ibuf1(2*nrtm_l))
77 ibuf1(1:2*nrtm_l) = 0
78 ALLOCATE(ibuf3(4*nrtm_l))
79 IF(idel_solid > 0) THEN
80 ibuf3(1:4*nrtm_l) = 0
81 ELSE
82 ibuf3(1:4*nrtm_l) = 0
83 ENDIF
84 offset_shell=numels+numelq
85 offset_shell3n=offset_shell+numelc+numelt+numelp+numelr
86
87
88
89
90
91
92 DO i=1, nrtm_l
93 k=tag_seg(i)
94 ie1 = ielem_m(1,k)
95
96 iel1 = 0
97
98 IF(ie1 <= numels) THEN
99 iel1 = cel(ie1)
100 ELSEIF(offset_shell<ie1.AND.ie1<=offset_shell+numelc) THEN
101 iel1 = offset_shell+cel(ie1)
102 ELSEIF(offset_shell3n<ie1.AND.ie1<=offset_shell3n+numeltg) THEN
103 iel1 = offset_shell3n+cel(ie1)
104 ENDIF
105
106 ie2 = ielem_m(2,k)
107 iel2 = 0
108 IF(ie2 > 0) THEN
109 iel2 = cel(ie2)
110 ENDIF
111 IF(cep(ie1)==proc ) THEN
112 ibuf1(2*(i-1)+1) =iel1
113 IF(ie2 >0) THEN
114 IF(cep(ie2)==proc ) THEN
115 ibuf1(2*(i-1)+2) =iel2
116 ELSE
117 ibuf1(2*(i-1)+2) =-ie2
118 ENDIF
119 ENDIF
120 ENDIF
121 ENDDO
122
123 DO i = 1, nrtm
124 DO j = 1,4
125 k = mvoisin(j,i)
126 IF(k /= 0) proc_mvoisin(j,i) = intercep%P(k)
127 ENDDO
128 ENDDO
129 DO i = 1, nrtm_l
130 k=tag_seg(i)
131 DO j = 1,4
132 n = mvoisin(j,k)
133 IF(n /= 0) ibuf3(4*(i-1)+j) = proc_mvoisin(j,k)
134 ENDDO
135 ENDDO
136
139
140 DEALLOCATE(ibuf1)
141 DEALLOCATE(ibuf3)
142
143 RETURN
void write_i_c(int *w, int *len)