PIPS
stencil.c File Reference
#include "stdio.h"
+ Include dependency graph for stencil.c:

Go to the source code of this file.

Typedefs

typedef float t_real
 

Functions

void stencil8 (int L, int n1, int n2, int n3, t_real u[n1][n2][n3], t_real v[n1][n2][n3], t_real c[2L+1], int is1, int ie1, int is2, int ie2, int is3, int ie3)
 
void init (int n1, int n2, int n3, t_real u[n1][n2][n3], t_real val)
 
t_real sum (int n1, int n2, int n3, t_real u[n1][n2][n3])
 
int main (int argc, char *argv[])
 

Typedef Documentation

◆ t_real

typedef float t_real

Definition at line 3 of file stencil.c.

Function Documentation

◆ init()

void init ( int  n1,
int  n2,
int  n3,
t_real  u[n1][n2][n3],
t_real  val 
)

Definition at line 44 of file stencil.c.

44  {
45  int i = 0, j = 0, k = 0;
46  for (i=0; i<n1 ; i++) {
47  for (j=0; j<n2 ; j++) {
48  for (k=0; k<n3 ; k++) {
49  u[i][j][k] = val;
50  }
51  }
52  }
53  return;
54 }

Referenced by main().

+ Here is the caller graph for this function:

◆ main()

int main ( int  argc,
char *  argv[] 
)

Definition at line 70 of file stencil.c.

70  {
71 
72  int is1,ie1,is2,ie2,is3,ie3,i;
73  int L = 4;
74  int n1 = 100;
75  int n2 = 100;
76  int n3 = 100;
77  if(argc >100000) n1=n2=n3=L=78;
78  {
79  t_real v[n1][n2][n3];
80  t_real u[n1][n2][n3];
81  t_real c[2*L+1];
82  is1=0;ie1=n1;
83  is2=0;ie2=n2;
84  is3=0;ie3=n3;
85 
86  for (i=0; i<2*L+1; i++) {
87  c[i] = 3.0f;
88  }
89 
90  // Simple case
91  init (n1,n2,n3,u , 1.0f);
92  init (n1,n2,n3,v , 1.0f);
93  stencil8(L,n1,n2,n3,u,v,c,is1,ie1,is2,ie2,is3,ie3);
94 
95  printf ("the sum is : %f\n", sum (n1,n2,n3,u));
96  } return 0;
97 }
static int is2(Pproblem XX, Pproblem VV, struct rproblem *RR)
=======================================================================
Definition: isolve.c:2158
int printf()
t_real sum(int n1, int n2, int n3, t_real u[n1][n2][n3])
Definition: stencil.c:57
void stencil8(int L, int n1, int n2, int n3, t_real u[n1][n2][n3], t_real v[n1][n2][n3], t_real c[2L+1], int is1, int ie1, int is2, int ie2, int is3, int ie3)
Definition: stencil.c:10
void init(int n1, int n2, int n3, t_real u[n1][n2][n3], t_real val)
Definition: stencil.c:44
float t_real
Definition: stencil.c:3
Definition: pip__tab.h:30

References init(), is2(), printf(), stencil8(), and sum().

+ Here is the call graph for this function:

◆ stencil8()

void stencil8 ( int  L,
int  n1,
int  n2,
int  n3,
t_real  u[n1][n2][n3],
t_real  v[n1][n2][n3],
t_real  c[2L+1],
int  is1,
int  ie1,
int  is2,
int  ie2,
int  is3,
int  ie3 
)

Definition at line 10 of file stencil.c.

12  {
13  // Stencil length : 2*L
14 
15  int i1,i2,i3;
16  t_real c_4,c_3,c_1, c_2, c0, c1, c2,c3,c4;
17 
18  c_4 = c[L-4]; c_3 = c[L-3]; c_2 = c[L-2]; c_1 = c[L-1];
19  c0 = c[L];
20  c4 = c[L+4]; c3 = c[L+3]; c2 = c[L+2]; c1 = c[L+1];
21 
22  //do i1=is1+L,ie1-L
23  for (i1=is1+L; i1<ie1-L ; i1++) {
24  //do i2=is2+L,ie2-L
25  for (i2=is2+L; i2<ie2-L ; i2++) {
26  // do i3=is3+L,ie3-L
27  for (i3=is3+L; i3<ie3-L ; i3++) {
28  u[i1][i2][i3]=
29  c_4 * (v[i1-4][i2][i3] + v[i1][i2-4][i3] + v[i1][i2][i3-4])
30  + c_3 * (v[i1-3][i2][i3] + v[i1][i2-3][i3] + v[i1][i2][i3-3])
31  + c_2 * (v[i1-2][i2][i3] + v[i1][i2-2][i3] + v[i1][i2][i3-2])
32  + c_1 * (v[i1-1][i2][i3] + v[i1][i2-1][i3] + v[i1][i2][i3-1])
33  + c0 * v[i1][ i2][i3] * 3.f
34  + c1 * (v[i1+1][i2][i3] + v[i1][i2+1][i3] + v[i1][i2][i3+1])
35  + c2 * (v[i1+2][i2][i3] + v[i1][i2+2][i3] + v[i1][i2][i3+2])
36  + c3 * (v[i1+3][i2][i3] + v[i1][i2+3][i3] + v[i1][i2][i3+3])
37  + c4 * (v[i1+4][i2][i3] + v[i1][i2+4][i3] + v[i1][i2][i3+4]);
38  }
39  }
40  }
41 }

References is2().

Referenced by main().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ sum()

t_real sum ( int  n1,
int  n2,
int  n3,
t_real  u[n1][n2][n3] 
)

Definition at line 57 of file stencil.c.

57  {
58  t_real result = 0;
59  int i = 0, j = 0, k = 0;
60  for (i=0; i<n1 ; i++) {
61  for (j=0; j<n2 ; j++) {
62  for (k=0; k<n3 ; k++) {
63  result += u[i][j][k];
64  }
65  }
66  }
67  return result;
68 }

Referenced by bounds_equal_p(), lu_back_substitution(), lu_decomposition(), main(), sc_elim_double_constraints(), size_of_actual_array(), vect_sum(), xsum(), and zeroing_multiple_edges().

+ Here is the caller graph for this function: