Skip to content

Commit ca4ae84

Browse files
committed
vector_para
1 parent 2b62c03 commit ca4ae84

2 files changed

Lines changed: 146 additions & 0 deletions

File tree

post/.DS_Store

0 Bytes
Binary file not shown.
Lines changed: 146 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,146 @@
1+
subroutine generate_output(nstep)
2+
3+
use commondata
4+
5+
integer :: nstep,numx,numy,numz
6+
integer :: i,k,j
7+
character(len=40) :: namefile
8+
character(len=80) :: buffer
9+
character(len=10) :: lf
10+
character(len=8) :: str1,str2,str3
11+
character(len=16) :: str4
12+
13+
! end of line character
14+
lf=achar(10)
15+
16+
! fields included
17+
nfields=uflag + vflag + wflag + phiflag
18+
19+
!input??
20+
x_start=1
21+
x_end=nx
22+
dnx=2
23+
y_start=1
24+
y_end=ny
25+
dny=2
26+
z_start=1
27+
z_end=nz
28+
dnz=2
29+
30+
numx=0
31+
numy=0
32+
numz=0
33+
do i=x_start,x_end,dnx
34+
numx=numx+1
35+
enddo
36+
do j=y_start,y_end,dny
37+
numy=numy+1
38+
enddo
39+
do k=z_start,z_end,dnz
40+
numz=numz+1
41+
enddo
42+
43+
44+
45+
write(namefile,'(a,i8.8,a)') './output/OUTPAR_',nstep,'.vtk'
46+
open(66,file=trim(namefile),status='new',form='unformatted',access='stream',convert='big_endian')
47+
! start writing vtk file
48+
! write header
49+
buffer='# vtk DataFile Version 3.0'//lf
50+
write(66) trim(buffer)
51+
buffer='Phase field'//lf
52+
write(66) trim(buffer)
53+
buffer='BINARY'//lf
54+
write(66) trim(buffer)
55+
buffer='DATASET RECTILINEAR_GRID'//lf
56+
write(66) trim(buffer)
57+
58+
!write grid
59+
write(str1(1:8),'(i8)') numx
60+
write(str2(1:8),'(i8)') numy
61+
write(str3(1:8),'(i8)') numz
62+
buffer='DIMENSIONS '//str1//str2//str3//lf
63+
write(66) trim(buffer)
64+
buffer='X_COORDINATES '//str1//' float'//lf ;
65+
write(66) trim(buffer)
66+
do i=x_start,x_end,dnx
67+
write(66) real(x(i))
68+
enddo
69+
buffer='Y_COORDINATES '//str2//' float'//lf ;
70+
write(66) trim(buffer)
71+
do j=y_start,y_end,dny
72+
write(66) real(y(j))
73+
enddo
74+
buffer='Z_COORDINATES '//str3//' float'//lf ;
75+
write(66) trim(buffer)
76+
do k=z_start,z_end,dnz
77+
write(66) real(z(k))
78+
enddo
79+
80+
! write content (data format)
81+
write(str4(1:16),'(i16)') numx*numy*numz
82+
buffer='POINT_DATA '//str4//lf
83+
write(66) trim(buffer)
84+
write(str1(1:8),'(i8)') nfields
85+
buffer='FIELD FieldData '//str1//lf
86+
write(66) trim(buffer)
87+
88+
89+
! write u field
90+
if (uflag .eq. 1) then
91+
write(str4(1:16),'(i16)') numx*numy*numz
92+
buffer = 'u 1 '//str4//' float'//lf
93+
write(66) trim(buffer)
94+
do k=z_start,z_end,dnz
95+
do j=y_start,y_end,dny
96+
do i=x_start,x_end,dnx
97+
write(66) real(u(i,j,k))
98+
enddo
99+
enddo
100+
enddo
101+
endif
102+
103+
! write v field
104+
if (vflag .eq. 1) then
105+
write(str4(1:16),'(i16)') numx*numy*numz
106+
buffer = 'v 1 '//str4//' float'//lf
107+
write(66) trim(buffer)
108+
do k=z_start,z_end,dnz
109+
do j=y_start,y_end,dny
110+
do i=x_start,x_end,dnx
111+
write(66) real(v(i,j,k))
112+
enddo
113+
enddo
114+
enddo
115+
endif
116+
117+
! write w field
118+
if (wflag .eq. 1) then
119+
write(str4(1:16),'(i16)') numx*numy*numz
120+
buffer = 'w 1 '//str4//' float'//lf
121+
write(66) trim(buffer)
122+
do k=z_start,z_end,dnz
123+
do j=y_start,y_end,dny
124+
do i=x_start,x_end,dnx
125+
write(66) real(w(i,j,k))
126+
enddo
127+
enddo
128+
enddo
129+
endif
130+
131+
! write phi field
132+
if (phiflag .eq. 1) then
133+
write(str4(1:16),'(i16)') numx*numy*numz
134+
buffer = 'phi 1 '//str4//' float'//lf
135+
write(66) trim(buffer)
136+
do k=z_start,z_end,dnz
137+
do j=y_start,y_end,dny
138+
do i=x_start,x_end,dnx
139+
write(66) real(phi(i,j,k))
140+
enddo
141+
enddo
142+
enddo
143+
endif
144+
145+
return
146+
end

0 commit comments

Comments
 (0)