TYCHO  1.3.0
 All Data Structures Files Functions Variables Enumerations Enumerator
/home/kapf/tycho_docu/para_coef.c
Go to the documentation of this file.
1 /*
2  * para_coef.c
3  *
4  * Author: Wolfgang Kapferer
5  */
6 
7 #include <stdio.h>
8 #include <stdlib.h>
9 #include <math.h>
10 
11 #include "variables_global.h"
12 #include "prototypes.h"
13 
17 int para_coef(int nmin, int nmax, int flag1, double *a_coef, double *dx,
18  double *ai_coef, double *b_coef, double *bi_coef, double *c_coef,
19  double *d_x, double **para, double *ci_coef) {
20  int i;
21 
22  for (i = nmin - 2; i <= nmax; i++) {
23  a_coef[i] = dx[i] + dx[i + 1];
24  //printf("%i %i %e %e\n", flag1, i, dx[i], dx[i+1]);
25  ai_coef[i] = 1.0 / a_coef[i];
26  b_coef[i] = a_coef[i] + dx[i];
27  bi_coef[i] = 1.0 / b_coef[i];
28  c_coef[i] = a_coef[i] + dx[i + 1];
29  ci_coef[i] = 1.0 / c_coef[i];
30  }
31  //a(j+.5) = a(j) + C1 * (a(j+1)-a(j)) + C2 * da(j+1) + C3 * da(j)
32  for (i = nmin - 1; i <= nmax; i++) {
33  d_x[i] = 1.0 / (a_coef[i - 1] + a_coef[i + 1]);
34  para[i][0] = dx[i] * ai_coef[i] + 2.0 * dx[i + 1] * dx[i] * d_x[i] * ai_coef[i] * (a_coef[i - 1] * bi_coef[i] - a_coef[i + 1] * ci_coef[i]);
35 
36  // to debug
37  //printf("%i %i %f %f %f\n", i, flag1, d_x[i], a_coef[i-1], a_coef[i+1]);
38  //printf("in para_coef: %f %f %f %f\n %f %f %f %f %f %i flag:%i\n", para[i][0], dx[i],ai_coef[i],dx[i+1], d_x[i], a_coef[i-1], bi_coef[i], a_coef[i+1], ci_coef[i], i, flag1);
39 
40  para[i][1] = -1 * d_x[i] * dx[i] * a_coef[i - 1] * bi_coef[i];
41  para[i][2] = d_x[i] * dx[i + 1] * a_coef[i + 1] * ci_coef[i];
42  }
43 
44  //da(j) = D1 * (a(j+1) - a(j)) + D2 * (a(j) - a(j-1))
45  for (i = nmin - 1; i <= nmax; i++) {
46  d_x[i] = dx[i] / (a_coef[i - 1] + dx[i + 1]);
47  para[i][3] = d_x[i] * b_coef[i - 1] * ai_coef[i];
48  para[i][4] = d_x[i] * c_coef[i] * ai_coef[i - 1];
49  }
50 
51  // to debug
52  //for (n=0; n<max_array_length+12; n++) printf("in para_coef: %g %g %g %g %g %i where:%i\n", para[n][0], para[n][1], para[n][2], para[n][3], para[n][4], n, flag1);
53 
54  return 0;
55 }