1#include "applu_share.h"
2#include "applu_macros.h"
3
4#define ue_1jk(m)   ue_1jk[m-1]
5#define ue_nx0jk(m) ue_nx0jk[m-1]
6#define ue_i1k(m)   ue_i1k[m-1]
7#define ue_iny0k(m) ue_iny0k[m-1]
8#define ue_ij1(m)   ue_ij1[m-1]
9#define ue_ijnz(m)  ue_ijnz[m-1]
10
11void setiv() {
12
13//c---------------------------------------------------------------------
14//c
15//c   set the initial values of independent variables based on tri-linear
16//c   interpolation of boundary values in the computational space.
17//c
18//c---------------------------------------------------------------------
19
20//c---------------------------------------------------------------------
21//c  local variables
22//c---------------------------------------------------------------------
23      int i, j, k, m;
24      int iglob, jglob;
25      double xi, eta, zeta;
26      double pxi, peta, pzeta;
27      double ue_1jk[5],ue_nx0jk[5],ue_i1k[5],
28             ue_iny0k[5],ue_ij1[5],ue_ijnz[5];
29      int one = 1;
30
31      for ( k = 2;  k <= nz - 1;  k++) {
32         zeta = ( (double) (k-1) ) / (nz-1);
33         for ( j = 1;  j <= ny;  j++) {
34          jglob = jpt + j;
35          if (jglob != 1 && jglob != ny0) {
36            eta = ( (double) (jglob-1) ) / (ny0-1);
37            for ( i = 1;  i <= nx;  i++) {
38              iglob = ipt + i;
39              if (iglob != 1 && iglob != nx0) {
40               xi = ( (double) (iglob-1) ) / (nx0-1);
41               exact(one,jglob,k,ue_1jk);
42               exact(nx0,jglob,k,ue_nx0jk);
43               exact(iglob,one,k,ue_i1k);
44               exact(iglob,ny0,k,ue_iny0k);
45               exact(iglob,jglob,one,ue_ij1);
46               exact(iglob,jglob,nz,ue_ijnz);
47               for ( m = 1;  m <= 5;  m++) {
48                  pxi =   (1.0 - xi  ) * ue_1jk(m) + xi   * ue_nx0jk(m);
49                  peta =  (1.0 - eta ) * ue_i1k(m) + eta  * ue_iny0k(m);
50                  pzeta = (1.0 - zeta) * ue_ij1(m) + zeta * ue_ijnz(m);
51
52                  u( m, i, j, k ) = pxi + peta + pzeta
53                       - pxi * peta - peta * pzeta - pzeta * pxi
54                       + pxi * peta * pzeta;
55
56               }
57              }
58            }
59          }
60         }
61      }
62
63//      for ( k = 1;  k <= nz;  k++) {
64//         for ( j = -1;  j <= ny+2;  j++) {
65//            for ( i = -1;  i <= nx+2;  i++) {
66//               for ( m = 1;  m <= 5;  m++) {
67//                  u( m, i, j, k ) = (double) (id*100 + m);
68//               }
69//            }
70//         }
71//      }
72
73      return;
74}
75
76