33
34
35
37 USE intbuf_fric_mod
38
39
40
41#include "implicit_f.inc"
42
43
44
45#include "com04_c.inc"
46
47
48
49 INTEGER TABCOUPLEPARTS_FRIC_TMP(NINTERFRIC,*),TABPARTS_FRIC_TMP(NINTERFRIC,*),
50 . NSETINIT(NINTERFRIC) ,IFRICORTH_TMP(NINTERFRIC
51
52 . tabcoef_fric_tmp(ninterfric,*)
53
54 TYPE(INTBUF_FRIC_STRUCT_), TARGET, DIMENSION(NINTERFRIC) :: INTBUF_FRIC_TAB(*)
55
56
57
58 INTEGER NIF , NSET ,I ,J ,K ,N ,IP ,NSETT ,NPARTF ,IORTH ,MFROT ,LENC
59 INTEGER, DIMENSION(:) ,POINTER :: TABCOUPLEPARTS_FRIC
60 INTEGER, DIMENSION(:) ,POINTER :: TABPARTS_FRIC
61 INTEGER, DIMENSION(:) ,POINTER :: ADPART_FRIC
62 INTEGER, DIMENSION(:) ,POINTER ::
63 my_real,
DIMENSION(:) ,
POINTER :: tabcoef_fric
64
65
66
67
68 DO nif = 1, ninterfric
69 tabcoupleparts_fric => intbuf_fric_tab(nif)%TABCOUPLEPARTS_FRIC
70 tabcoef_fric => intbuf_fric_tab(nif)%TABCOEF_FRIC
71 tabparts_fric => intbuf_fric_tab(nif)%TABPARTS_FRIC
72 adpart_fric => intbuf_fric_tab(nif)%ADPARTS_FRIC
73 nset = intbuf_fric_tab(nif)%NSETPRTS
74 nsett = nsetinit(nif)
75 npartf = intbuf_fric_tab(nif)%S_TABPARTS_FRIC
76 iorth = intbuf_fric_tab(nif)%IORTHFRIC
77 ifricorth => intbuf_fric_tab(nif)%IFRICORTH
78 mfrot = intbuf_fric_tab(nif)%FRICMOD
79
80 IF(mfrot ==0 ) THEN
81 lenc =2
82 ELSE
83 lenc = 8
84 ENDIF
85
86
87 DO j=1,lenc
88 tabcoef_fric(j) =tabcoef_fric_tmp(nif,j)
89 ENDDO
90
91 j = 1
92 k = 0
93 IF(iorth == 0) THEN
94 DO i=1,nsett
95 IF( tabcoupleparts_fric_tmp(nif,j)/= 0) THEN
96 k = k +1
97
98 tabcoupleparts_fric(k) = tabcoupleparts_fric_tmp(nif,j+1)
99
100 DO n=1,lenc
101 tabcoef_fric(lenc*k+n) =tabcoef_fric_tmp(nif,i*8+n)
102 ENDDO
103
104 ifricorth(k) = ifricorth_tmp(nif,i)
105 ENDIF
106 j = j+2
107 ENDDO
108 ELSEIF(iorth==1) THEN
109 DO i=1,nsett
110 IF( tabcoupleparts_fric_tmp(nif,j)/= 0) THEN
111 k = k +1
112
113 tabcoupleparts_fric(k) = tabcoupleparts_fric_tmp(nif,j+1)
114
115 DO n=1,lenc
116 tabcoef_fric(lenc+2*lenc*(k-1)+n) =tabcoef_fric_tmp(nif,8+16*(i-1)+n)
117 tabcoef_fric(2*k*lenc+n) =tabcoef_fric_tmp(nif,16*i+n)
118 ENDDO
119 ifricorth(k) = ifricorth_tmp(nif,i)
120 ENDIF
121
122
123 j = j+2
124 ENDDO
125
126 ENDIF
127
128
129 DO i=1,npartf
130 tabparts_fric(i) = tabparts_fric_tmp(nif,i)
131 ENDDO
132
133
134 adpart_fric(1) = 1
135 adpart_fric(2:npartf+1) = 0
136 DO i=1,npartf
137 k = 0
138 j = 1
139 DO n=1,nsett
140 IF( tabcoupleparts_fric_tmp(nif,j)/= 0) THEN
141 k = k + 1
142 IF(tabcoupleparts_fric_tmp(nif,j) == tabparts_fric(i)) THEN
143 adpart_fric(i+1) = adpart_fric(i+1) + 1
144 ENDIF
145 ENDIF
146 j = j +2
147 ENDDO
148 ENDDO
149 DO i=1,npartf
150 k = i +1
151 adpart_fric(k) =adpart_fric(k) +adpart_fric(i)
152 ENDDO
153
154 ENDDO
155
156 RETURN
157