34
35
36
37#include "implicit_f.inc"
38
39
40
41#include "com01_c.inc"
42#include "com04_c.inc"
43#include "param_c.inc"
44
45
46
47 INTEGER MONVOL(*), NODLOCAL(*), LENVOLU, LEN_IA,
48 . MONVOL_L(LENVOLU),ITAB(*)
49 TYPE(MONVOL_STRUCT_), DIMENSION(NVOLU), INTENT(IN) :: T_MONVOL
50 INTEGER, INTENT(in) :: PROC
51
52
53
54 INTEGER ISHIFT, I, J, N, NJ, NJ1, NJ2, NJ3, IADJET, NJET
55 INTEGER :: SIZE_L
56 INTEGER, DIMENSION(NVOLU) :: NTRI,NTRI_LOCAL
57 INTEGER, DIMENSION(:), ALLOCATABLE :: TRI_L
58
59 ishift = nimv*nvolu+licbag
60
61
62
63 DO i = 1, nvolu
64 ntri(i) = t_monvol(i)%NB_FILL_TRI
65 njet = monvol(nimv*(i-1)+8)
66 iadjet = monvol(nimv*(i-1)+9)
67 DO nj = 1, njet
68 nj1 = monvol(ishift+iadjet+(nj-1)*nibjet+5)
69 nj2 = monvol(ishift+iadjet+(nj-1)*nibjet+6)
70 nj3 = monvol(ishift+iadjet+(nj-1)*nibjet+7)
71 IF(nj1/=0)THEN
72 nj1 = nodlocal(nj1)
73 IF(nj1/=0)monvol_l(ishift+iadjet+(nj-1)*nibjet+5)=nj1
74 END IF
75 IF(nj2/=0)THEN
76 nj2 = nodlocal(nj2)
77 IF(nj2/=0)monvol_l(ishift+iadjet+(nj-1)*nibjet+6)=nj2
78 END IF
79 IF(nj3/=0)THEN
80 nj3 = nodlocal(nj3)
81 IF(nj3/=0)monvol_l(ishift+iadjet+(nj-1)*nibjet+7)=nj3
82 END IF
83 END DO
84 END DO
85
87 len_ia = len_ia + lenvolu
88
89 DO i = 1, nvolu
90 ntri_local(i) = t_monvol(i)%NUMBER_TRI_PER_PROC(proc)
91 ENDDO
93 len_ia = len_ia + nvolu
94
95 DO i = 1, nvolu
96 IF (ntri(i) > 0) THEN
97 ALLOCATE(tri_l(3 * ntri(i)))
98 size_l = 0
99 DO j = 1, ntri(i)
100 IF (nodlocal(t_monvol(i)%FILL_TRI(3 * (j - 1) + 1)) /= 0 .AND.
101 . nodlocal(t_monvol(i)%FILL_TRI(3 * (j - 1) + 2)) /= 0 .AND.
102 . nodlocal(t_monvol(i)%FILL_TRI(3 * (j - 1) + 3)) /= 0) THEN
103 size_l = size_l + 3
104 tri_l(3 * (j - 1) + 1) = nodlocal(t_monvol(i)%FILL_TRI(3 * (j - 1) + 1))
105 tri_l(3 * (j - 1) + 2) = nodlocal(t_monvol(i)%FILL_TRI(3 * (j - 1) + 2))
106 tri_l(3 * (j - 1) + 3) = nodlocal(t_monvol(i)%FILL_TRI(3 * (j - 1) + 3))
107 ENDIF
108 ENDDO
109 IF (size_l > 0 ) THEN
111 len_ia = len_ia + size_l
112 ENDIF
113 DEALLOCATE(tri_l)
114 ENDIF
115 ENDDO
116
117 RETURN
void write_i_c(int *w, int *len)