54 use element_mod ,
only : nixs
55 USE spmd_comm_world_mod,
ONLY : spmd_comm_world
59#include
"implicit_f.inc"
76 INTEGER,
DIMENSION(NIXS,*),
INTENT(in) :: IXS
77 TYPE(multi_fvm_struct),
INTENT(INOUT) :: MULTI_FVM
78 INTEGER,
INTENT(in) :: FLAG
82 INTEGER MSGOFF,MSGOFF0,MSGTYP,I,K,N,
84 CHARACTER FILNAM*100,*7
85 INTEGER :: LEN_TMP_NAME,SHIFT
86 CHARACTER(len=2148) :: TMP_NAME
87 INTEGER,
DIMENSION(NSPMD) :: SIZE_NUMELS
88 INTEGER,
DIMENSION(:),
ALLOCATABLE :: SDNODG
89 DOUBLE PRECISION,
DIMENSION(:,:),
ALLOCATABLE :: AGLOB,RECGLOB
90 DOUBLE PRECISION,
DIMENSION(:,:),
ALLOCATABLE :: RECGLOB_ORDERED
92 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ITRI,WORK,INDEX_TRI
97 INTEGER STATUS(MPI_STATUS_SIZE),IERROR
106 ALLOCATE( sdnodg(numelsg) )
107 ALLOCATE( recglob(4,numelsg) )
109 ALLOCATE( sdnodg(numels) )
110 ALLOCATE( recglob(0,0) )
111 ALLOCATE( aglob(4,numels) )
114 size_numels(1:nspmd) = 0
119 aglob(1,i) = ixs(nixs,i)
120 aglob(2,i) = multi_fvm%VEL(1,i)
121 aglob(3,i) = multi_fvm%VEL(2,i)
122 aglob(4,i) = multi_fvm%VEL(3,i)
128 . spmd_comm_world,ierror)
131 CALL mpi_send(aglob,4*numels,mpi_double_precision,
133 . spmd_comm_world,ierror)
135 size_numels(1) = numels
138 CALL mpi_recv(size_numels(k),1,mpi_integer,
140 . spmd_comm_world,status,ierror)
142 ALLOCATE( aglob(4,size_numels(k)) )
145 CALL mpi_recv(aglob,4*size_numels(k),mpi_double_precision,
147 . spmd_comm_world,status,ierror)
151 shift = shift + size_numels(i)
153 DO i=1,size_numels(k)
154 recglob(1,i+shift) = aglob(1,i)
155 recglob(2,i+shift) = aglob(2,i)
156 recglob(3,i+shift) = aglob(3,i)
157 recglob(4,i+shift) = aglob(4,i)
169 recglob(1,i) = ixs(nixs,i)
170 recglob(2,i) = multi_fvm%VEL(1,i)
171 recglob(3,i) = multi_fvm%VEL(2,i)
172 recglob(4,i) = multi_fvm%VEL(3,i)
175 ALLOCATE( itri(numelsg) )
176 ALLOCATE( index_tri(2*numelsg) )
177 ALLOCATE( work(70000) )
180 itri(i) = nint(recglob(1,i))
183 CALL my_orders(0,work,itri,index_tri,numelsg,1)
186 ALLOCATE(recglob_ordered(4,numelsg))
189 recglob_ordered(1,i) = recglob(1,n)
190 recglob_ordered(2,i) = recglob(2,n)
191 recglob_ordered(3,i) = recglob(3,n)
192 recglob_ordered(4,i) = recglob(4,n)
195 WRITE(iout,*) ncycle,
"MULTI_FVM CHECKSUM:",
checksum
196 DEALLOCATE( recglob_ordered)
197 ELSE IF(flag == 1)
THEN
198 WRITE(cyclenum,
'(I7.7)')ncycle
199 filnam=rootnam(1:rootlen)//
'_FVM_'//chrun//
'_'//cyclenum//
'.adb'
204 OPEN(unit=idbg5,file=tmp_name(1:len_tmp_name),access=
'SEQUENTIAL',
205 . form=
'FORMATTED',status=
'UNKNOWN')
211 WRITE(idbg5,
'(A,I10,I10,Z20,Z20,Z20)' )
'>',ncycle,nint(recglob(1,n)),recglob(2,n),recglob
213 WRITE (iout,1300) filnam(1:filen)
214 WRITE (istdo,1300) filnam(1:filen)
219 DEALLOCATE( index_tri )
224 IF(
ALLOCATED(sdnodg))
DEALLOCATE( sdnodg )
225 IF(
ALLOCATED(recglob))
DEALLOCATE( recglob )
226 IF(
ALLOCATED(aglob))
DEALLOCATE( aglob )
228 1300
FORMAT (4x,
' DEBUG ANALYSIS FVM FILE :',1x,a,
' WRITTEN')