dns-hit3d-fdm/write_stats.f90

122 lines
3 KiB
Fortran

subroutine write_tp_stat
use m_parameters
use m_stats
implicit none
write(tp_stat,"(i10,f15.10,9e15.6)") itime,time, &
energy,rms_u_prime,x_length,tau_e,eta,kol_vs, &
kol_ts,lambda,eps_v
call flush(tp_stat)
end subroutine write_tp_stat
subroutine write_tp_field
use m_parameters
use m_fdm_calc
implicit none
integer :: i, j, k, ii
if (fdm_sw.eq.0) then
if(mod(nx,spx).eq.0) then
write(tp_field,897) time,nx/spx,ny/spy,nz_all/spz
else
write(tp_field,897) time,nx/spx+1,ny/spy+1,nz_all/spz+1
endif
do k=1,nz_all,spz
do j=1,ny,spy
do i=1,nx,spx
write(tp_field,'(6e18.9)') dx*real(i),dy*real(j),dz*real(k),u_(i,j,k),v_(i,j,k),w_(i,j,k) ! u',v',w'
enddo
enddo
enddo
else
if(mod(nx,spx).eq.0) then
write(tp_field,897) time,nx/spx,ny/spy,nz_all/spz
else
write(tp_field,897) time,nx/spx+1,ny/spy+1,nz_all/spz+1
endif
do ii=1,nz_all,spz
do j=1,ny,spy
do i=1,nx,spx
write(tp_field,'(7e20.10)') real(i)*hx,real(j)*hx,real(ii)*hx, &
(1.-y1(2,i,j,ii)/y1(1,i,j,ii)),u_(i,j,ii), &
v_(i,j,ii),w_(i,j,ii)
enddo
enddo
enddo
endif
call flush(tp_field)
897 format('ZONE T="time= ',f10.5,'" I= ',i4,' J= ',i4,' K= ',i4,' F=POINT')
end subroutine write_tp_field
subroutine write_model_spectrum
use m_parameters
implicit none
integer :: i
real*8 :: k, wmag, ratio, fac
real*8 :: e_spec_log00=0.
real*8 :: e_spec_log01=0.
real*8 :: e_spec_log02=0.
real*8 :: e_spec_log03=0.
do i=1,kmax
k=real(i,8)
wmag=real(k, 8)
ratio=wmag / peak_wavenum
e_spec_log01=wmag**(-5.d0/3.d0)
e_spec_log02=ratio**3 / peak_wavenum * exp(-3.0D0*ratio)
fac = two * PI * ratio
e_spec_log03=fac**4 / (one + fac**2)**3
if(model_e_spec(i).le.0.) e_spec_log00=0.
write(model_spectrum,'(i3,4e15.5)') i,model_e_spec(i),&
e_spec_log01,e_spec_log02,e_spec_log03
write(tp_tke_spec,'(i5,e15.5)') i,model_e_spec(i)
enddo
end subroutine write_model_spectrum
subroutine write_vel_max (umax,vmax,wmax,umin,vmin,wmin)
use m_parameters
implicit none
real*8 :: umax,vmax,wmax,umin,vmin,wmin
write(tp_max_min_uvw,'(f12.6,6e18.8)')time,umax,vmax,wmax,umin,vmin,wmin
end subroutine write_vel_max
subroutine write_tp_eps_spec
use m_parameters
use m_stats
implicit none
integer :: i
write(tp_eps_spec,'(a15,f11.5,a1)')'ZONE T= " time=',time,'"'
write(tp_eps_spec,*) 'I=',kmax,'F=POINT'
do i=1,kmax
write(tp_eps_spec,'(i5,e15.5)') i,e_spec1(i)
enddo
end subroutine write_tp_eps_spec
subroutine write_tp_spec
use m_parameters
use m_stats
implicit none
integer :: i
write(501,'(a15,f11.5,a1)')'ZONE T= " time=',time,'"'
write(501,*) 'I=',kmax,'F=POINT'
do i=1,kmax
write(501,'(i5,2e15.5)') i,e_spec(i),e_spec1(i)
enddo
end subroutine write_tp_spec