39
40
41
42
43
44
45
46
47
49 USE elbufdef_mod
54
55
56
57#include "implicit_f.inc"
58
59
60
61#include "com01_c.inc"
62#include "com04_c.inc"
63#include "param_c.inc"
64#include "inter22.inc"
65
66
67
68 INTEGER, INTENT(IN) :: IPARG(NPARG,*), IPARI(NPARI,*),IXS(NIXS,*),IXQ(NIXQ,*)
69 INTEGER, INTENT(IN)
70INTEGER, INTENT(IN) :: IOK_PART(*),IS_WRITTEN_NODE(*)
71 my_real,
INTENT(INOUT) :: x(3,numnod)
72 my_real,
INTENT(INOUT) :: nodal_vector(3,*)
73 REAL R4
74 TYPE (ELBUF_STRUCT_), DIMENSION(NGROUP), TARGET :: ELBUF_TAB
75 TYPE (GROUP_) , DIMENSION(NGRNOD) :: IGRNOD
76
77
78
79 INTEGER :: ICELLM,NCELL,NBF,NBL,ICELL,NIN,NODE_ID,IB,NG,I
80 INTEGER :: IAD0, NNODES, II, NFACE, J, K, IE,IGR
82 REAL,DIMENSION(:,:)ALLOCATABLE
83LOGICAL :: lStillNode
85
86
87
88 nin = 1
89 IF(int22==0) RETURN
90 IF(ipari(82,nin)==0)RETURN
91
92
93
94
95 nbf = 1
97 ALLOCATE(buffer(3,numnod))
98 buffer(:,:) = zero
99
100
101 lstillnode = .true.
102 igr = ipari(82,nin)
103 nnodes = igrnod(igr)%NENTITY
104 IF(nnodes==0)RETURN
105 ii = 1
106 DO ib=nbf,nbl
108 icell = 0
110 DO WHILE (icell<=ncell)
111 icell = icell +1
112 IF (icell>ncell .AND. ncell/=0)icell=9
113 IF(.NOT.lstillnode) cycle
114
115 DO j=1, 6
116 IF(ii>nnodes)THEN
117 lstillnode = .false.
118 print *, "** Warning inter22 : no more node in group to mark cell center"
119 EXIT
120 ENDIF
121 node_id = igrnod(igr)%ENTITY(ii)
122 IF(iflg==1)THEN
123
124 buffer(1,node_id) =
brick_list(nin,ib)%POLY(icell)%FACE(j)%Vel(1)
126 buffer(3,node_id) =
brick_list(nin,ib)%POLY(icell)%FACE(j)%Vel(3)
127 ELSEIF(iflg==2)THEN
128
129 buffer(1,node_id) = -
brick_list(nin,ib)%POLY(icell)%FACE(j)%F_FACE(1)
130 buffer(2,node_id) = -
brick_list(nin,ib)%POLY(icell)%FACE(j)%F_FACE(2)
131 buffer(3,node_id) = -
brick_list(nin,ib)%POLY(icell)%FACE(j)%F_FACE(3)
132 ELSE
133 buffer(1,node_id) = zero
134 buffer(2,node_id) = zero
135 buffer(3,node_id) = zero
136 ENDIF
137 ii = ii + 1
138 ENDDO
139 ENDDO
140 enddo
141
142 DO ii=1,nnodes
143 node_id = igrnod(igr)%ENTITY(ii)
144 x(1:3,node_id) = zero
145 ENDDO
146
147 DO i=1,numnod
148 value(1)=buffer(1,i)
149 value(2)=buffer(2,i)
150 value(3)=buffer(3,i)
152 . VALUE)
153 ENDDO
154
155 DEALLOCATE(buffer)
156
157
158 RETURN
subroutine h3d_write_vector(iok_part, is_written, vector, i, offset, nft, value)
type(brick_entity), dimension(:,:), allocatable, target brick_list