untrack m_terms.f90 and added new termspec
This commit is contained in:
parent
ef078b886f
commit
026ad122eb
3 changed files with 68 additions and 329 deletions
1
code/.gitignore
vendored
1
code/.gitignore
vendored
|
|
@ -2,3 +2,4 @@
|
|||
*.so
|
||||
*.pyc
|
||||
*.ipynb
|
||||
m_terms.f90
|
||||
|
|
|
|||
67
code/code_gen/termspecs/termspec.vnsd_fluctuation
Normal file
67
code/code_gen/termspecs/termspec.vnsd_fluctuation
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
# fsd weighted (vn+sd) correlations
|
||||
|
||||
[u, v, w, y]
|
||||
|
||||
c = 1.0 - y
|
||||
wrate = rxn_rate(c)
|
||||
fsd = sqrt (sqr(ddx(c)) + sqr(ddy(c)) + sqr(ddz(c)))
|
||||
|
||||
sd = ((d2dx(c) + d2dy(c) + d2dz(c)) * $rod + wrate) / fsd
|
||||
|
||||
nx = - ddx(c) / fsd
|
||||
ny = - ddy(c) / fsd
|
||||
nz = - ddz(c) / fsd
|
||||
|
||||
vn = u * nx + v * ny + w * nz
|
||||
|
||||
divn = ddx(nx) + ddy(ny) + ddz(nz)
|
||||
|
||||
divn2 = sqr(divn)
|
||||
|
||||
# grad(n) : grad(n)
|
||||
gradn_gradn = sqr(ddx(nx)) + sqr(ddy(ny)) + sqr(ddz(nz)) + 2*(ddx(ny)*ddy(nx)) + 2*(ddx(nz)*ddz(nx)) + 2*(ddy(nz)*ddz(ny))
|
||||
|
||||
absk = abs(divn)
|
||||
|
||||
lapc = d2dx(c) + d2dy(c) + d2dz(c)
|
||||
|
||||
vnsd = vn+sd
|
||||
|
||||
divn_nx = divn*nx
|
||||
|
||||
gradn_vnsd = ddx(vnsd) * nx + ddy(vnsd) * ny + ddz(vnsd) * nz
|
||||
|
||||
gradt_vnsd1 = ddx(vnsd) - nx * gradn_vnsd
|
||||
|
||||
divn2_dndn = divn2 - gradn_gradn
|
||||
|
||||
sign_divn2_dndn = $dsign(divn2_dndn, divn)
|
||||
|
||||
vnsd_divn_cor = vnsd' * divn'
|
||||
|
||||
vnsd_divn_nx_cor = vnsd' * divn_nx'
|
||||
|
||||
vnsd_divn2_dndn_cor = vnsd' * divn2_dndn'
|
||||
|
||||
vnsd_sign_divn2_dndn_cor = vnsd' * sign_divn2_dndn'
|
||||
|
||||
vnsd_divn_nx = vnsd * divn_nx
|
||||
|
||||
vnsd_divn2_dndn = vnsd * divn2_dndn
|
||||
|
||||
vnsd_sign_divn2_dndn = vnsd * sign_divn2_dndn
|
||||
|
||||
avg { c, u, v, w, fsd, lapc, ddx_c, ddy_c, ddz_c, d2dx_c, d2dy_c, d2dz_c }
|
||||
|
||||
avg fsd { u, v, w, nx, ny, nz, absk, divn, sd, gradt_vnsd1,
|
||||
vnsd,
|
||||
divn_nx,
|
||||
vnsd_divn_nx,
|
||||
vnsd_divn_nx_cor,
|
||||
divn2_dndn,
|
||||
vnsd_divn2_dndn,
|
||||
vnsd_divn2_dndn_cor,
|
||||
sign_divn2_dndn,
|
||||
vnsd_sign_divn2_dndn,
|
||||
vnsd_sign_divn2_dndn_cor
|
||||
}
|
||||
329
code/m_terms.f90
329
code/m_terms.f90
|
|
@ -1,329 +0,0 @@
|
|||
module m_terms
|
||||
|
||||
use m_openmpi
|
||||
use m_parameters
|
||||
use m_arrays
|
||||
use m_calculate
|
||||
|
||||
implicit none
|
||||
|
||||
logical, parameter :: pass2_required=.false.
|
||||
character (len = *), parameter :: output_header="x avg_c avg_divn avg_fsd"
|
||||
real*8, allocatable, dimension(:) :: avg_c
|
||||
real*8, allocatable, dimension(:) :: avg_fsd
|
||||
real*8, allocatable, dimension(:) :: avg_divn
|
||||
|
||||
! field exporter common
|
||||
integer(kind=MPI_OFFSET_KIND) :: offset
|
||||
|
||||
|
||||
! - file_handles and mpi_infos
|
||||
integer(kind=MPI_INTEGER_KIND) :: divn_fh
|
||||
integer(kind=MPI_INTEGER_KIND) :: divn_info
|
||||
|
||||
! - buffer
|
||||
real*8, allocatable, dimension(:,:,:) :: divn_export_array
|
||||
|
||||
|
||||
! - file_handles and mpi_infos
|
||||
integer(kind=MPI_INTEGER_KIND) :: c_fh
|
||||
integer(kind=MPI_INTEGER_KIND) :: c_info
|
||||
|
||||
! - buffer
|
||||
real*8, allocatable, dimension(:,:,:) :: c_export_array
|
||||
|
||||
|
||||
! - file_handles and mpi_infos
|
||||
integer(kind=MPI_INTEGER_KIND) :: fsd_fh
|
||||
integer(kind=MPI_INTEGER_KIND) :: fsd_info
|
||||
|
||||
! - buffer
|
||||
real*8, allocatable, dimension(:,:,:) :: fsd_export_array
|
||||
|
||||
real*8, allocatable, dimension(:,:,:) :: xyzbuffer0
|
||||
real*8, allocatable, dimension(:,:,:) :: xyzbuffer1
|
||||
real*8, allocatable, dimension(:,:,:) :: xyzbuffer2
|
||||
real*8, allocatable, dimension(:,:,:) :: xyzbuffer3
|
||||
real*8, allocatable, dimension(:,:,:) :: xyzbuffer4
|
||||
|
||||
contains
|
||||
|
||||
subroutine m_terms_init
|
||||
|
||||
integer :: ierr
|
||||
|
||||
allocate(avg_c(nxp), stat=ierr) ; avg_c = 0.
|
||||
allocate(avg_fsd(nxp), stat=ierr) ; avg_fsd = 0.
|
||||
allocate(avg_divn(nxp), stat=ierr) ; avg_divn = 0.
|
||||
|
||||
! init
|
||||
call MPI_INFO_CREATE(divn_info, mpi_err)
|
||||
call MPI_FILE_OPEN(MPI_COMM_TASK,'export-divn.dat',MPI_MODE_WRONLY+MPI_MODE_CREATE,divn_info,divn_fh,mpi_err)
|
||||
allocate(divn_export_array(176:400,1:nyp,1:nzp), stat=ierr) ; divn_export_array = 0.
|
||||
|
||||
|
||||
! init
|
||||
call MPI_INFO_CREATE(c_info, mpi_err)
|
||||
call MPI_FILE_OPEN(MPI_COMM_TASK,'export-c.dat',MPI_MODE_WRONLY+MPI_MODE_CREATE,c_info,c_fh,mpi_err)
|
||||
allocate(c_export_array(176:400,1:nyp,1:nzp), stat=ierr) ; c_export_array = 0.
|
||||
|
||||
|
||||
! init
|
||||
call MPI_INFO_CREATE(fsd_info, mpi_err)
|
||||
call MPI_FILE_OPEN(MPI_COMM_TASK,'export-fsd.dat',MPI_MODE_WRONLY+MPI_MODE_CREATE,fsd_info,fsd_fh,mpi_err)
|
||||
allocate(fsd_export_array(176:400,1:nyp,1:nzp), stat=ierr) ; fsd_export_array = 0.
|
||||
|
||||
allocate(xyzbuffer0(nxp,nyp,nzp), stat=ierr) ; xyzbuffer0 = 0.
|
||||
allocate(xyzbuffer1(nxp,nyp,nzp), stat=ierr) ; xyzbuffer1 = 0.
|
||||
allocate(xyzbuffer2(nxp,nyp,nzp), stat=ierr) ; xyzbuffer2 = 0.
|
||||
allocate(xyzbuffer3(nxp,nyp,nzp), stat=ierr) ; xyzbuffer3 = 0.
|
||||
allocate(xyzbuffer4(nxp,nyp,nzp), stat=ierr) ; xyzbuffer4 = 0.
|
||||
|
||||
end subroutine m_terms_init
|
||||
|
||||
|
||||
subroutine m_terms_finalize
|
||||
|
||||
deallocate(avg_c)
|
||||
deallocate(avg_fsd)
|
||||
deallocate(avg_divn)
|
||||
|
||||
! finalize
|
||||
call MPI_FILE_CLOSE(divn_fh, mpi_err)
|
||||
call MPI_INFO_FREE(divn_info, mpi_err)
|
||||
deallocate(divn_export_array)
|
||||
|
||||
|
||||
! finalize
|
||||
call MPI_FILE_CLOSE(c_fh, mpi_err)
|
||||
call MPI_INFO_FREE(c_info, mpi_err)
|
||||
deallocate(c_export_array)
|
||||
|
||||
|
||||
! finalize
|
||||
call MPI_FILE_CLOSE(fsd_fh, mpi_err)
|
||||
call MPI_INFO_FREE(fsd_info, mpi_err)
|
||||
deallocate(fsd_export_array)
|
||||
|
||||
deallocate(xyzbuffer0)
|
||||
deallocate(xyzbuffer1)
|
||||
deallocate(xyzbuffer2)
|
||||
deallocate(xyzbuffer3)
|
||||
deallocate(xyzbuffer4)
|
||||
|
||||
end subroutine m_terms_finalize
|
||||
|
||||
|
||||
subroutine m_terms_calculate_pass1(fidx)
|
||||
|
||||
integer :: fidx
|
||||
integer :: i, j, k
|
||||
|
||||
|
||||
! c = ( 1.0 - y(i,j,k) )
|
||||
do k = 1, nzp
|
||||
do j = 1, nyp
|
||||
do i = 1, nxp
|
||||
xyzbuffer3(i,j,k) = ( 1.0 - y(i,j,k) )
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
|
||||
! copy to array for export
|
||||
do k = 1, nzp
|
||||
do j = 1, nyp
|
||||
do i = 176, 400
|
||||
c_export_array(i,j,k) = xyzbuffer3(i,j,k)
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
|
||||
! write to file
|
||||
count = (400 - 176 + 1) * (nyp - 1 + 1) * (nzp - 1 + 1)
|
||||
offset = export_offset(fidx) * count * 8
|
||||
call MPI_FILE_WRITE_AT(c_fh, offset, c_export_array, count, MPI_REAL8, mpi_status, mpi_err)
|
||||
|
||||
|
||||
do k = 1, nzp
|
||||
do j = 1, nyp
|
||||
do i = 1, nxp
|
||||
avg_c(i) = avg_c(i) + xyzbuffer3(i,j,k)
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
|
||||
call ddx ( xyzbuffer2, xyzbuffer3 )
|
||||
call ddy ( xyzbuffer1, xyzbuffer3 )
|
||||
call ddz ( xyzbuffer0, xyzbuffer3 )
|
||||
|
||||
! fsd = ( sqrt ( ( ( ((ddx_c(i,j,k))*(ddx_c(i,j,k))) + ((ddy_c(i,j,k))*(ddy_c(i,j,k))) ) + ((ddz_c(i,j,k))*(ddz_c(i,j,k))) ) ) )
|
||||
do k = 1, nzp
|
||||
do j = 1, nyp
|
||||
do i = 1, nxp
|
||||
xyzbuffer3(i,j,k) = ( sqrt ( ( ( ((xyzbuffer2(i,j,k))*(xyzbuffer2(i,j,k))) + ((xyzbuffer1(i,j,k))*(xyzbuffer1(i,j,k))) ) + ((xyzbuffer0(i,j,k))*(xyzbuffer0(i,j,k))) ) ) )
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
|
||||
! copy to array for export
|
||||
do k = 1, nzp
|
||||
do j = 1, nyp
|
||||
do i = 176, 400
|
||||
fsd_export_array(i,j,k) = xyzbuffer3(i,j,k)
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
|
||||
! write to file
|
||||
count = (400 - 176 + 1) * (nyp - 1 + 1) * (nzp - 1 + 1)
|
||||
offset = export_offset(fidx) * count * 8
|
||||
call MPI_FILE_WRITE_AT(fsd_fh, offset, fsd_export_array, count, MPI_REAL8, mpi_status, mpi_err)
|
||||
|
||||
|
||||
do k = 1, nzp
|
||||
do j = 1, nyp
|
||||
do i = 1, nxp
|
||||
avg_fsd(i) = avg_fsd(i) + xyzbuffer3(i,j,k)
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
|
||||
|
||||
! nx = ( ( - ddx_c(i,j,k) ) / fsd(i,j,k) )
|
||||
do k = 1, nzp
|
||||
do j = 1, nyp
|
||||
do i = 1, nxp
|
||||
xyzbuffer4(i,j,k) = ( ( - xyzbuffer2(i,j,k) ) / xyzbuffer3(i,j,k) )
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
|
||||
call ddx ( xyzbuffer2, xyzbuffer4 )
|
||||
|
||||
! ny = ( ( - ddy_c(i,j,k) ) / fsd(i,j,k) )
|
||||
do k = 1, nzp
|
||||
do j = 1, nyp
|
||||
do i = 1, nxp
|
||||
xyzbuffer4(i,j,k) = ( ( - xyzbuffer1(i,j,k) ) / xyzbuffer3(i,j,k) )
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
|
||||
|
||||
! nz = ( ( - ddz_c(i,j,k) ) / fsd(i,j,k) )
|
||||
do k = 1, nzp
|
||||
do j = 1, nyp
|
||||
do i = 1, nxp
|
||||
xyzbuffer1(i,j,k) = ( ( - xyzbuffer0(i,j,k) ) / xyzbuffer3(i,j,k) )
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
|
||||
call ddy ( xyzbuffer3, xyzbuffer4 )
|
||||
call ddz ( xyzbuffer0, xyzbuffer1 )
|
||||
|
||||
! divn = ( ( ddx_nx(i,j,k) + ddy_ny(i,j,k) ) + ddz_nz(i,j,k) )
|
||||
do k = 1, nzp
|
||||
do j = 1, nyp
|
||||
do i = 1, nxp
|
||||
xyzbuffer4(i,j,k) = ( ( xyzbuffer2(i,j,k) + xyzbuffer3(i,j,k) ) + xyzbuffer0(i,j,k) )
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
|
||||
! copy to array for export
|
||||
do k = 1, nzp
|
||||
do j = 1, nyp
|
||||
do i = 176, 400
|
||||
divn_export_array(i,j,k) = xyzbuffer4(i,j,k)
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
|
||||
! write to file
|
||||
count = (400 - 176 + 1) * (nyp - 1 + 1) * (nzp - 1 + 1)
|
||||
offset = export_offset(fidx) * count * 8
|
||||
call MPI_FILE_WRITE_AT(divn_fh, offset, divn_export_array, count, MPI_REAL8, mpi_status, mpi_err)
|
||||
|
||||
|
||||
do k = 1, nzp
|
||||
do j = 1, nyp
|
||||
do i = 1, nxp
|
||||
avg_divn(i) = avg_divn(i) + xyzbuffer4(i,j,k)
|
||||
end do
|
||||
end do
|
||||
end do
|
||||
|
||||
|
||||
end subroutine m_terms_calculate_pass1
|
||||
|
||||
|
||||
subroutine m_terms_average_pass1 (nfiles)
|
||||
|
||||
integer :: nfiles
|
||||
real*8 :: denum
|
||||
|
||||
denum=real(nfiles*nyp*nzp)
|
||||
|
||||
|
||||
call MPI_ALLREDUCE(MPI_IN_PLACE, avg_c, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
||||
|
||||
avg_c = avg_c / denum
|
||||
|
||||
|
||||
call MPI_ALLREDUCE(MPI_IN_PLACE, avg_divn, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
||||
|
||||
avg_divn = avg_divn / denum
|
||||
|
||||
|
||||
call MPI_ALLREDUCE(MPI_IN_PLACE, avg_fsd, nxp, MPI_REAL8, MPI_SUM, MPI_COMM_TASK, mpi_err)
|
||||
|
||||
avg_fsd = avg_fsd / denum
|
||||
|
||||
|
||||
end subroutine m_terms_average_pass1
|
||||
|
||||
|
||||
subroutine m_terms_calculate_pass2(fidx)
|
||||
|
||||
integer :: fidx
|
||||
integer :: i, j, k
|
||||
|
||||
|
||||
|
||||
end subroutine m_terms_calculate_pass2
|
||||
|
||||
|
||||
subroutine m_terms_average_pass2 (nfiles)
|
||||
|
||||
integer :: nfiles
|
||||
real*8 :: denum
|
||||
|
||||
denum=real(nfiles*nyp*nzp)
|
||||
|
||||
|
||||
|
||||
end subroutine m_terms_average_pass2
|
||||
|
||||
|
||||
subroutine m_terms_write_result
|
||||
|
||||
|
||||
integer :: i
|
||||
|
||||
open (200, file="qEdge_X.dat")
|
||||
|
||||
write (200,*) output_header
|
||||
|
||||
do i=1,nxp
|
||||
write (200,'(4e20.10)') real(i)*hxp, avg_c(i), avg_divn(i), avg_fsd(i)
|
||||
end do
|
||||
|
||||
close (200)
|
||||
|
||||
|
||||
end subroutine m_terms_write_result
|
||||
|
||||
|
||||
end module m_terms
|
||||
|
||||
Loading…
Add table
Reference in a new issue