Directions

In the code given below,
Line # 91 stores a value to the east of i=0 and j=0. using [k][k + 1] as index terms.
Line # 92 stores a value to the west of i=0 and j=0. using [k][k - 1] as index terms.
Line # 93 stores a value to the north of i=0 and j=0. using [k][k - Ky] as index terms.
Line # 94 stores a value to the south of i=0 and j=0 using [k][k + Ky] as index terms.

I want to ask what if I use index as [k+1][k + 1] and [k+1][k + 1], which direction will this point to?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <iostream>
#define Kx 6
#define Ky 8
#define N 48
#define K 1.0 //thermal conductivity,
#define TR 300.0 //
#define TL 300.0 //
#define TT 380.0 //Panel Face /Bottom Temerature
#define TB 300.0 //M-chasiss Face
#define aT 1.0 //relaxation factor (energy)
#define localre 0.001 //local residual for iterative method to solve matrix
#define localiter 50  //local iteration
using namespace std;

int main()
{
 int i, j, js;
 double S[N]; //source term
 double l; //Localre 
 double K_Tstar[Ky][Kx];/// Previous stage temperature value
 double T[Ky][Kx];//// Current stage temperature value
 double Mk[N];// Arrangement for Matrix Breakdown
 double Lex, Ley, dx, error, dy;//// Length direction variable
 double aP, aE, aW, aS, aN;
 double ke, kw, ks, kn;// Heat transfer coefficient
 dx = 1.0 / Kx;
 dy = 1.0 / Ky;
 ke = dy / dx;
 kw = dy / dx;
 ks = dx / dy;
 kn = dx / dy;
 int Ms;	//T initialize
 for (i = 0; i < Ky; i++)
 {
   for (j = 0; j < Kx; j++)
   {
     T[i][j] = 300.0;
   }
 }
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
for (Ms = 0; Ms < localiter; Ms++)
{
  int x = 0;
  int k = 0;//
  //arrange u, v, source, p_prime to 1'col matrix
  for (i = 0; i < Ky; i++)
  {
    for (j = 0; j < Kx; j++)
    {
       S[k] = 0.0;
       l = 0.0;
       Mk[k] = T[i][j];
       K_Tstar[i][j] = T[i][j];
       k++;
    }
}
 double **kP_T = NULL;// Memory Area Allocation
 kP_T = new double *[N];
  for (i = 0; i < N; i++)
  {
    kP_T[i] = new double[N];
  }
  for (i = 0; i < N; i++)
  {
    for (j = 0; j < N; j++)
    {
     kP_T[i][j] = 0.0;
    }
  }
//??? ??// Insert Initial Value
  for (i = 0; i < N; i++)
  {
   for (j = 0; j < N; j++)
    {
     kP_T[i][j] = 0.0;
    }
  }
 //T - matrix coefficient
  k = 0;
  for (i = 0; i < Ky; i++)
  {
   for (j = 0; j < Kx; j++)
    {
     if (i == 0)
      {
      if (j == 0) // bottom node, left column
       {
	kP_T[k][k + 1] = -ke;
	kP_T[k][k - 1] = -kw;
        kP_T[k][k - Ky] = -kn;
        kP_T[k][k + Ky] = -ks;
	kP_T[k][k] = -kP_T[k][k + 1] - kP_T[k][k + Ky] + 2.0*kn + 2.0*kw;
	S[k] = 2.0 * kw*TL + 2.0 * kn*TT;
	k++;
	cout << kP_T[k][k] << endl;
       }
      }
    }
  }
}
return 0;
}
Last edited on
The code doesn't seem to make sense.
Where did you get it from?
What are all the strange question marks for?
It actually cut a part of a big code, which I am trying to understand. The questions marks are nothing just ignor them.
1. Add some convenience variables.
2. Rename some of the cryptic 1 and 2 letter variables to be something more meaningful.
3. Add more detail to any debugging you have.
1
2
3
4
5
6
7
8
9
10
11
    int east = k + 1;
    int south= k + Ky;
    kP_T[k][east] = -ke;
    kP_T[k][south] = -ks;
    kP_T[k][k] = -kP_T[k][east] -   // aka +ke
                  kP_T[k][south] +  // aka +ks
                  2.0*kn +
                  2.0*kw;
    S[k] = 2.0 * kw*TLeft + 2.0 * kn*TTop;
    k++;
    cout << "k=" << k << ", KP_T=" << kP_T[k][k] << endl;
Topic archived. No new replies allowed.