-
Notifications
You must be signed in to change notification settings - Fork 0
/
TurbView.f
145 lines (120 loc) · 4.74 KB
/
TurbView.f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
C############################################################################
C Chair of Structural Analysis - TUM (Statik)
C Date: 15.07.21
C Contributor: Ammar Khallouf
C Version: 1.0
C############################################################################
C Description:
C This small program converts generated binary files from "TurbGen" to Plot3d visualization format (ASCII files)
C This allows to visualize the gnerated turbulence box in post-processinng softwares like "Paraview"
C The input parameters read directly from the command line are given in the following order:
C NX,NY,NZ: No. of grids along each direction
C LX,LY,LZ: Dimensions of the turbulence box (i.e side length along each direction)
C fileU.bin, fileV.bin, fileW.bin: output binary files from "TurbGen" for the velocity components (u,v,w)
C Example input from the command line:
C For a turbulence box with (128 x 32 x 32) grids and a domain size (LX=256 m, LY=64 m, LZ= 64 m)
C with generated turbulence files: sim-u.bin, sim-v.bin, sim-w.bin
C The call should be like this:
C TurbView 128 32 32 256 64 64 sim-u.bin sim-v.bin sim-w.bin
!############################################################################
program TurbView
implicit none
integer::i,j,k,recnr,h,l,recordlength,ifile
integer::nt,nx,ny,nz,ndata
real*4::dummy
integer,parameter::idp=kind(1d0),idpo=4
real(idp),allocatable,dimension(:,:,:)::x,y,z,u,v,w
integer ifirst,ilast,namelenin,namelenout
integer,parameter::wordlen=1024
character(len=wordlen)::infile,text
character(len=wordlen),dimension(3)::infiles
integer,dimension(3)::n,ifileslen
real(idp),dimension(3)::Lbox,Delta,Shift
C---- User input from command line -------------------------------------
infiles=''
do i=1,3
call getarg(i,text);read(text,*)n(i)
enddo
do i=1,3
call getarg(3+i,text);read(text,*)Lbox(i)
enddo
do i=1,3
call getarg(6+i,text);read(text,*)infiles(i)
ifileslen(i)=Len_Trim(infiles(i))
enddo
write(*,10)' n1=',n(1),' n2=',n(2),' n3=',n(3)
10 format(a,i10,a,i10,a,i10)
allocate(x(n(1),n(2),n(3)),
& y(n(1),n(2),n(3)),
& z(n(1),n(2),n(3)),
& u(n(1),n(2),n(3)),
& v(n(1),n(2),n(3)),
& w(n(1),n(2),n(3)))
C---- Read file --------------------------------------------------------
print*,' Reading files : ',infiles(1)(1:ifileslen(1))
open(unit=1,file=infiles(1)(1:ifileslen(1)),
& access='direct',form='unformatted',recl=1)
do i=1,n(1);do j=1,n(2); do k=1,n(3);
recnr=k+(j-1)*n(3)+(i-1)*n(2)*n(3)
read(1,rec=recnr)dummy
u(i,j,k)=dble(dummy)
enddo;enddo;enddo
close(1)
print*,' Reading files : ',infiles(2)(1:ifileslen(2))
open(unit=1,file=infiles(2)(1:ifileslen(2)),
& access='direct',form='unformatted',recl=1)
do i=1,n(1);do j=1,n(2); do k=1,n(3);
recnr=k+(j-1)*n(3)+(i-1)*n(2)*n(3)
read(1,rec=recnr)dummy
v(i,j,k)=dble(dummy)
enddo;enddo;enddo
close(1)
print*,' Reading files : ',infiles(3)(1:ifileslen(3))
open(unit=1,file=infiles(3)(1:ifileslen(3)),
& access='direct',form='unformatted',recl=1)
do i=1,n(1);do j=1,n(2);do k=1,n(3);
recnr=k+(j-1)*n(3)+(i-1)*n(2)*n(3)
read(1,rec=recnr)dummy
w(i,j,k)=dble(dummy)
enddo;enddo;enddo
close(1)
print*,' Finished reading the input files '
do k=1,n(3)
do j=1,n(2)
do i=1,n(1)
x(i,j,k)=Lbox(1)/(n(1)-1)*(i-1)
enddo;enddo;enddo
do k=1,n(3)
do j=1,n(2)
do i=1,n(1)
y(i,j,k)=Lbox(2)/(n(2)-1)*(j-1)
enddo;enddo;enddo
do k=1,n(3)
do j=1,n(2)
do i=1,n(1)
z(i,j,k)=Lbox(3)/(n(3)-1)*(k-1)
enddo;enddo;enddo
open(unit=10,form='unformatted',file='Turb_Box.xyz')
write(10)1
write(10)n(1),n(2),n(3)
write(10)
& (((real(x(i,j,k),idpo),i=1,n(1)),j=1,n(2)),k=1,n(3)),
& (((real(y(i,j,k),idpo),i=1,n(1)),j=1,n(2)),k=1,n(3)),
& (((real(z(i,j,k),idpo),i=1,n(1)),j=1,n(2)),k=1,n(3))
close(10)
open(unit=10,form='formatted',file='Turb_Box.nam')
write(10,*)'u-velocity ; velocity'
write(10,*)'v-velocity'
write(10,*)'w-velocity'
close(10)
open(unit=10,form='unformatted',file='Turb_Box.f')
write(10)1
write(10)n(1),n(2),n(3),3
write(10)
& (((real(u(i,j,k),idpo),i=1,n(1)),j=1,n(2)),k=1,n(3)),
& (((real(v(i,j,k),idpo),i=1,n(1)),j=1,n(2)),k=1,n(3)),
& (((real(w(i,j,k),idpo),i=1,n(1)),j=1,n(2)),k=1,n(3))
close(10)
print*,' Finished writing Plot3D format files'
stop
end