33
34
35
37
38
39
40#include "implicit_f.inc"
41
42
43
44 INTEGER, INTENT(IN) :: NDAMP_VREL_L,NGRNOD,NDAMP,,NSPMD
45 INTEGER, INTENT(IN) :: IDAMP_VREL_L(NDAMP)
46 INTEGER, INTENT(INOUT) :: LEN_IA
47 my_real,
INTENT(IN) :: dampr(nrdamp,ndamp)
48 TYPE (GROUP_),DIMENSION(NGRNOD),INTENT(IN) :: IGRNOD
49
50
51
52 INTEGER NLOCAL
54
55
56
57 INTEGER I,J,IGR,,PMAIN,CPT
58 INTEGER FR_DAMP_VREL(NSPMD+2,NDAMP_VREL_L),ID_DAMP_VREL(NDAMP_VREL_L)
59
60
61 pmain = 1
62 cpt = 0
63 DO i=1,ndamp
64 IF (idamp_vrel_l(i) > 0) THEN
65 cpt = cpt+1
66 id_damp_vrel(cpt) = i
67 ENDIF
68 ENDDO
69
70 fr_damp_vrel(1:nspmd+2,1:ndamp_vrel_l) = 0
71 DO i=1,ndamp_vrel_l
72 igr = nint(dampr(2,id_damp_vrel(i)))
73
74 DO proc = 1,nspmd
75 DO j = 1,igrnod(igr)%NENTITY
76 IF (
nlocal(igrnod(igr)%ENTITY(j),proc)==1)
THEN
77 fr_damp_vrel(proc,i) = 1
78 ENDIF
79 ENDDO
80 ENDDO
81
82 DO proc = 1,nspmd
83 IF (fr_damp_vrel(proc,i) == 1) THEN
84 pmain = proc
85 exit
86 ENDIF
87 ENDDO
88 fr_damp_vrel(nspmd+1,i) = 0
89 fr_damp_vrel(nspmd+2,i) = pmain
90 ENDDO
91
93 len_ia = len_ia + ndamp_vrel_l
94
95 CALL write_i_c(fr_damp_vrel,ndamp_vrel_l*(nspmd+2))
96 len_ia = len_ia + ndamp_vrel_l*(nspmd+2)
97
98
99 RETURN
void write_i_c(int *w, int *len)