| |
| c--------------------------------------------------------------------- |
| c--------------------------------------------------------------------- |
| subroutine setiv |
| |
| c--------------------------------------------------------------------- |
| c--------------------------------------------------------------------- |
| |
| c--------------------------------------------------------------------- |
| c |
| c set the initial values of independent variables based on tri-linear |
| c interpolation of boundary values in the computational space. |
| c |
| c--------------------------------------------------------------------- |
| |
| implicit none |
| |
| include 'applu.incl' |
| |
| c--------------------------------------------------------------------- |
| c local variables |
| c--------------------------------------------------------------------- |
| integer i, j, k, m |
| double precision xi, eta, zeta |
| double precision pxi, peta, pzeta |
| double precision ue_1jk(5),ue_nx0jk(5),ue_i1k(5), |
| > ue_iny0k(5),ue_ij1(5),ue_ijnz(5) |
| |
| |
| !$omp parallel do default(shared) private(i,j,k,m,pxi,peta,pzeta, |
| !$omp& xi,eta,zeta,ue_ijnz,ue_ij1,ue_iny0k,ue_i1k,ue_nx0jk,ue_1jk) |
| !$omp& shared(nx0,ny0,nz) |
| do k = 2, nz - 1 |
| zeta = ( dble (k-1) ) / (nz-1) |
| do j = 2, ny - 1 |
| eta = ( dble (j-1) ) / (ny0-1) |
| do i = 2, nx - 1 |
| xi = ( dble (i-1) ) / (nx0-1) |
| call exact (1,j,k,ue_1jk) |
| call exact (nx0,j,k,ue_nx0jk) |
| call exact (i,1,k,ue_i1k) |
| call exact (i,ny0,k,ue_iny0k) |
| call exact (i,j,1,ue_ij1) |
| call exact (i,j,nz,ue_ijnz) |
| do m = 1, 5 |
| pxi = ( 1.0d+00 - xi ) * ue_1jk(m) |
| > + xi * ue_nx0jk(m) |
| peta = ( 1.0d+00 - eta ) * ue_i1k(m) |
| > + eta * ue_iny0k(m) |
| pzeta = ( 1.0d+00 - zeta ) * ue_ij1(m) |
| > + zeta * ue_ijnz(m) |
| |
| u( m, i, j, k ) = pxi + peta + pzeta |
| > - pxi * peta - peta * pzeta - pzeta * pxi |
| > + pxi * peta * pzeta |
| |
| end do |
| end do |
| end do |
| end do |
| !$omp end parallel do |
| |
| return |
| end |