34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 USE multi_fvm_mod
52
53
54
55#include "implicit_f.inc"
56
57
58
59 INTEGER, INTENT(in) :: S_APPEND_ARRAY
60 INTEGER, INTENT(in) :: NINTER
61 INTEGER, INTENT(in) :: NPARI
62 INTEGER, INTENT(in) :: NUMNOD
63 INTEGER, INTENT(in) :: NUMELS
64 INTEGER, INTENT(in) :: NGRBRIC
65 INTEGER, DIMENSION(NPARI,NINTER), INTENT(in) :: IPARI
66 my_real,
DIMENSION(3,NUMNOD),
INTENT(in) :: x,v
67 my_real,
DIMENSION(3,S_APPEND_ARRAY),
INTENT(inout) :: x_append,v_append
68 my_real,
DIMENSION(NUMNOD),
INTENT(in) :: ms
69 INTEGER, DIMENSION(NUMNOD), INTENT(in) :: KINET
70 my_real,
DIMENSION(S_APPEND_ARRAY),
INTENT(inout) :: mass_append
71 INTEGER, DIMENSION(S_APPEND_ARRAY), INTENT(inout) :: KINET_APPEND
72 INTEGER, DIMENSION(NIXS,NUMELS), INTENT(in) :: IXS
73 TYPE(MULTI_FVM_STRUCT) :: MULTI_FVM
74 TYPE (GROUP_) , DIMENSION(NGRBRIC), INTENT(in) :: IGRBRIC
75
76
77
78 INTEGER :: N,NN,II,JJ
79 INTEGER :: ISU1,NSN,NODE_ID,IBRIC
80 LOGICAL, DIMENSION(:), ALLOCATABLE :: TAG
81
82
83
84
85
86
87 multi_fvm%INT18_GLOBAL_LIST(1:ninter) = .false.
88 ALLOCATE(tag(numels))
89 tag(1:numels)=.false.
90 IF( multi_fvm%IS_INT18_LAW151 ) THEN
91 DO n=1,multi_fvm%NUMBER_INT18
92 nn = multi_fvm%INT18_LIST(n)
93 multi_fvm%INT18_GLOBAL_LIST(nn) = .true.
94 ENDDO
95
96 x_append(1:3,1:numnod) = x(1:3,1:numnod)
97 v_append(1:3,1:numnod) = v(1:3,1:numnod)
98 mass_append(1:numnod) = ms(1:numnod)
99 kinet_append(1:numnod) = kinet(1:numnod)
100
101 x_append( 1:3,numnod+1:numnod+numels ) = zero
102 v_append( 1:3,numnod+1:numnod+numels ) = zero
103
104 mass_append(numnod+1:numnod+numels) = zero
105 kinet_append(numnod+1:numnod+numels) = 0
106
107 DO nn=1,multi_fvm%NUMBER_INT18
108 n = multi_fvm%INT18_LIST(nn)
109 isu1 = ipari(45,n)
110 nsn = ipari(5,n)
111 DO ii = 1,nsn
112 ibric = igrbric(isu1)%ENTITY(ii)
113 IF(.NOT. tag(ibric)) THEN
114
115 mass_append(numnod + ibric) = zero
116
117 DO jj = 2, 9
118 node_id = ixs(jj, ibric)
119 x_append(1, numnod + ibric) = x_append(1, numnod + ibric) + one_over_8 * x(1, node_id)
120 x_append(2, numnod + ibric) = x_append(2, numnod + ibric) + one_over_8 * x(2, node_id)
121 x_append(3, numnod + ibric) = x_append(3, numnod + ibric) + one_over_8 * x(3, node_id)
122 ENDDO
123
124 v_append(1, numnod + ibric) = multi_fvm%VEL(1, ibric)
125 v_append(2, numnod + ibric) = multi_fvm%VEL(2, ibric)
126 v_append(3, numnod + ibric) = multi_fvm%VEL(3, ibric)
127 tag(ibric)=.true.
128 ENDIF
129 ENDDO
130 ENDDO
131 ENDIF
132 IF(ALLOCATED(tag))DEALLOCATE(tag)
133
134 RETURN