module m_terms use m_parameters use m_arrays use m_calculate implicit none real*8, allocatable, dimension(:,:,:) :: c_auto real*8, allocatable, dimension(:,:,:) :: fsd_auto real*8, allocatable, dimension(:,:,:) :: wrate_auto real*8, allocatable, dimension(:,:,:) :: dx_c_auto real*8, allocatable, dimension(:,:,:) :: dy_c_auto real*8, allocatable, dimension(:,:,:) :: dz_c_auto contains subroutine m_terms_init integer :: ierr allocate(c_auto(nxp,nyp,nzp), stat=ierr) ; c_auto = 0. allocate(fsd_auto(nxp,nyp,nzp), stat=ierr) ; fsd_auto = 0. allocate(wrate_auto(nxp,nyp,nzp), stat=ierr) ; wrate_auto = 0. allocate(dx_c_auto(nxp,nyp,nzp), stat=ierr) ; dx_c_auto = 0. allocate(dy_c_auto(nxp,nyp,nzp), stat=ierr) ; dy_c_auto = 0. allocate(dz_c_auto(nxp,nyp,nzp), stat=ierr) ; dz_c_auto = 0. end subroutine m_terms_init subroutine m_terms_finalize deallocate(c_auto) deallocate(fsd_auto) deallocate(wrate_auto) deallocate(dx_c_auto) deallocate(dy_c_auto) deallocate(dz_c_auto) end subroutine m_terms_finalize subroutine m_terms_calculate_instant integer :: i, j, k do k = 1, nzp do j = 1, nyp do i = 1, nxp c_auto(i,j,k) = ( 1.0 - y(i,j,k) ) end do end do end do do k = 1, nzp do j = 1, nyp do i = 1, nxp fsd_auto(i,j,k) = ( sqrt ( ( ( ((dx_c_auto(i,j,k))*(dx_c_auto(i,j,k))) + ((dy_c_auto(i,j,k))*(dy_c_auto(i,j,k))) ) + ((dz_c_auto(i,j,k))*(dz_c_auto(i,j,k))) ) ) ) end do end do end do do k = 1, nzp do j = 1, nyp do i = 1, nxp wrate_auto(i,j,k) = ( rxn_rate ( c_auto(i,j,k) ) ) end do end do end do end subroutine m_terms_calculate_instant end module m_terms