36
37
38
39 USE elbufdef_mod
40 USE multi_fvm_mod
42 use element_mod , only :nixs,nixq,nixtg
43
44
45
46#include "implicit_f.inc"
47
48
49
50 INTEGER,INTENT(IN) :: N2D
51 INTEGER,INTENT(IN) :: NUMELS, NUMELTG, NUMELQ, NUMNOD, NGROUP
52 INTEGER,INTENT(IN) :: NBSUBMAT
53 INTEGER IXS(NIXS,NUMELS),IPART_(*),IPHASE(NBSUBMAT+1,*),IDP,NUPARAM
54 INTEGER ITAGNSOL(NUMNOD)
55 INTEGER :: NBIP(NBSUBMAT,NEL)
56 INTEGER :: NTRACE
57 INTEGER ISOLNOD,PART_FILL(*)
58 INTEGER,INTENT(IN) :: IXQ(NIXQ,NUMELQ)
59 INTEGER,INTENT(IN) :: IXTG(NIXTG,NUMELTG)
60 INTEGER, INTENT(IN) :: ITYP
63 INTEGER,INTENT(IN) :: MLW
64 INTEGER,INTENT(IN) :: NG
65 TYPE(ELBUF_STRUCT_), TARGET, DIMENSION(NGROUP), INTENT(IN) :: ELBUF_TAB
66 TYPE (MULTI_FVM_STRUCT), INTENT(IN) :: MULTI_FVM
67 INTEGER, INTENT(IN) :: NEL
68
69
70
71 INTEGER :: I,K,J
72 INTEGER :: IMAT
73 INTEGER :: IX(4)
75 TYPE(G_BUFEL_) ,POINTER :: GBUF
76 TYPE(L_BUFEL_) ,POINTER ::
77
78
79
80
81 av(1:nbsubmat) = zero
82
83 IF(mlw==51)THEN
84
85 av(1) = uparam(4)
86 av(2) = uparam(5)
87 av(3) = uparam(6)
88 av(4) = uparam(46)
89 ELSE
90 gbuf => elbuf_tab(ng)%GBUF
91 DO i=1,multi_fvm%NBMAT
92 lbuf => elbuf_tab(ng)%BUFLY(i)%LBUF(1,1,1)
93 av(i) = lbuf%VOL(1) / gbuf%VOL(1)
94 ENDDO
95 ENDIF
96
97 DO i=1,nel
98 IF(ipart_(i) /= 0) THEN
99 IF (ipart_(i) /= idp .AND. part_fill(ipart_(i)) == 0) THEN
100 kvol(1:nbsubmat,i) = av(1:nbsubmat)
101 part_fill(ipart_(i)) = 1
102 ELSEIF (ipart_(i) == idp) THEN
103 imat=maxloc(av(1:nbsubmat),1)
104 iphase(1,i) = imat
105 iphase(nbsubmat+1,i) = 1
106 kvol(imat,i) = zero
107 IF (nbip(imat,i) == 0) THEN
108 nbip(imat,i) = ntrace
109 ENDIF
110 IF (isolnod == 8) THEN
111 DO k=2,9
112 j = ixs(k,i)
113 IF(itagnsol(j) == 0)itagnsol(j) = 1
114 END DO
115 ELSEIF (isolnod == 4) THEN
116 ix(1) =ixs(2,i)
117 ix(2) =ixs(4,i)
118 ix(3) =ixs(7,i)
119 ix(4) =ixs(6,i)
120 DO k=1,4
121 j = ix(k)
122 IF(itagnsol(j) == 0)itagnsol(j) = 1
123 END do
124 ELSEIF(ityp == 7 .AND. n2d > 0)THEN
125 IF(itagnsol(ixtg(2,i)) == 0)itagnsol(ixtg(2,i)) = 1
126 IF(itagnsol(ixtg(3,i)) == 0)itagnsol(ixtg(3,i)) = 1
127 IF(itagnsol
128 ELSEIF(ityp == 2)THEN
129 IF(itagnsol(ixq(2,i)) == 0)itagnsol(ixq(2,i)) = 1
130 IF(itagnsol(ixq(3,i)) == 0)itagnsol(ixq(3,i)) = 1
131 IF(itagnsol(ixq(4,i)) == 0)itagnsol(ixq(4,i)) = 1
132 IF(itagnsol(ixq(5,i)) == 0)itagnsol(ixq(5,i)) = 1
133 endif
134 part_fill(idp) = 1
136 ENDIF !IF(ipart(i) /= 0)
137 END do
138
139 RETURN
if(complex_arithmetic) id