31
32
33
35 USE my_alloc_mod
36
37
38
39#include "implicit_f.inc"
40
41
42
43 INTEGER , INTENT(IN) :: NUMNOD,NUMNOD_L
44 INTEGER , INTENT(INOUT) :: LEN_AM
45 INTEGER , DIMENSION(NUMNOD_L) , INTENT(IN) :: NODGLOB
46 TYPE (FAILWAVE_STR_) :: FAILWAVE
47 INTEGER ITAB(*)
48
49
50
51 INTEGER I,IWAVE,,NDDL,SIZE,LEN,NNOD_L,IAD,NG,NL,NN
52 INTEGER, DIMENSION(:), ALLOCATABLE :: INDX_LOC,IDXI_LOC
53 INTEGER, DIMENSION(4) :: HEAD
54 INTEGER, DIMENSION(:), ALLOCATABLE :: RBUF
55
56 CALL my_alloc(indx_loc,numnod_l)
57 CALL my_alloc(idxi_loc,numnod_l)
58 iwave = failwave%WAVE_MOD
59 nnod = failwave%NNOD
60 nddl = failwave%NDDL
61 SIZE = failwave%SIZE
62
63 IF (iwave == 0) THEN
64 head(1:4) = 0
66 len_am = len_am + 4
67
68 ELSE
69
70 nnod_l = 0
71 idxi_loc(:) = 0
72 DO i = 1,numnod_l
73 ng = nodglob(i)
74 nn = failwave%IDXI(ng)
75 IF (nn > 0) THEN
76 nnod_l = nnod_l + 1
77 indx_loc(nnod_l) = i
78 idxi_loc(i) = nnod_l
79 ENDIF
80 ENDDO
81
82 head(1) = iwave
83 head(2) = nddl
84 head(3) = SIZE
85 head(4) = nnod_l
86
88 len_am = len_am + 4
89
91 len_am = len_am + nnod_l
92
94 len_am = len_am + numnod_l
95
96 len = nnod_l*nddl*SIZE + nnod_l
97 ALLOCATE( rbuf(len) )
98 rbuf(:) = 0
100 len_am = len_am + len
101
102 DEALLOCATE( rbuf )
103 ENDIF
104
105 DEALLOCATE(indx_loc)
106 DEALLOCATE(idxi_loc)
107 RETURN
void write_i_c(int *w, int *len)