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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include "cctk.h"
#include "cctk_Arguments.h"
#include "cctk_Parameters.h"
#include "Symmetry.h"
int Cart3dTest_Initial (CCTK_ARGUMENTS)
{
DECLARE_CCTK_ARGUMENTS
DECLARE_CCTK_PARAMETERS
int r;
int i,j,k;
int vi[9];
#if 0
r = Cart3dSetTensorTypeVN (cctkGH, "Cart3dTest::s", "SCALAR");
assert (r>=0);
r = Cart3dSetTensorTypeVN
(cctkGH, "Cart3dTest::vx Cart3dTest::vy Cart3dTest::vz", "VECTOR");
assert (r>=0);
r = Cart3dSetTensorTypeVN
(cctkGH, "Cart3dTest::txx Cart3dTest::txy Cart3dTest::txz"
" Cart3dTest::tyy Cart3dTest::tyz Cart3dTest::tzz", "SYMMTENSOR");
assert (r>=0);
r = Cart3dSetTensorTypeVN
(cctkGH, "Cart3dTest::az Cart3dTest::ay Cart3dTest::ax", "ANTISYMMTENSOR");
assert (r>=0);
#endif
vi[0] = CCTK_VarIndex("Cart3dTest::s");
r = Cart3dSetTensorTypeVI (cctkGH, 1, vi, "SCALAR");
assert (r>=0);
vi[0] = CCTK_VarIndex("Cart3dTest::vx");
vi[1] = CCTK_VarIndex("Cart3dTest::vy");
vi[2] = CCTK_VarIndex("Cart3dTest::vz");
r = Cart3dSetTensorTypeVI (cctkGH, 3, vi, "VECTOR");
assert (r>=0);
vi[0] = CCTK_VarIndex("Cart3dTest::txx");
vi[1] = CCTK_VarIndex("Cart3dTest::txy");
vi[2] = CCTK_VarIndex("Cart3dTest::txz");
vi[3] = CCTK_VarIndex("Cart3dTest::tyy");
vi[4] = CCTK_VarIndex("Cart3dTest::tyz");
vi[5] = CCTK_VarIndex("Cart3dTest::tzz");
r = Cart3dSetTensorTypeVI (cctkGH, 6, vi, "SYMMTENSOR");
assert (r>=0);
vi[0] = CCTK_VarIndex("Cart3dTest::fxx");
vi[1] = CCTK_VarIndex("Cart3dTest::fxy");
vi[2] = CCTK_VarIndex("Cart3dTest::fxz");
vi[3] = CCTK_VarIndex("Cart3dTest::fyx");
vi[4] = CCTK_VarIndex("Cart3dTest::fyy");
vi[5] = CCTK_VarIndex("Cart3dTest::fyz");
vi[6] = CCTK_VarIndex("Cart3dTest::fzx");
vi[7] = CCTK_VarIndex("Cart3dTest::fzy");
vi[8] = CCTK_VarIndex("Cart3dTest::fzz");
r = Cart3dSetTensorTypeVI (cctkGH, 9, vi, "TENSOR");
assert (r>=0);
vi[0] = CCTK_VarIndex("Cart3dTest::az"); /* watch the order! */
vi[1] = CCTK_VarIndex("Cart3dTest::ay");
vi[2] = CCTK_VarIndex("Cart3dTest::ax");
r = Cart3dSetTensorTypeVI (cctkGH, 3, vi, "ANTISYMMTENSOR");
assert (r>=0);
for (k=0; k<cctk_lsh[2]; ++k) {
for (j=0; j<cctk_lsh[1]; ++j) {
for (i=0; i<cctk_lsh[0]; ++i) {
const int ii = cctk_lbnd[0] + i;
const int jj = cctk_lbnd[1] + j;
const int kk = cctk_lbnd[2] + k;
const int ind = CCTK_GFINDEX3D(cctkGH, i,j,k);
/* store the position in the components */
s[ind] = (( 1 * 100 + ii) * 100 + jj) * 100 + kk;
vx[ind] = ((11 * 100 + ii) * 100 + jj) * 100 + kk;
vy[ind] = ((12 * 100 + ii) * 100 + jj) * 100 + kk;
vz[ind] = ((13 * 100 + ii) * 100 + jj) * 100 + kk;
txx[ind] = ((21 * 100 + ii) * 100 + jj) * 100 + kk;
txy[ind] = ((22 * 100 + ii) * 100 + jj) * 100 + kk;
txz[ind] = ((23 * 100 + ii) * 100 + jj) * 100 + kk;
tyy[ind] = ((24 * 100 + ii) * 100 + jj) * 100 + kk;
tyz[ind] = ((25 * 100 + ii) * 100 + jj) * 100 + kk;
tzz[ind] = ((26 * 100 + ii) * 100 + jj) * 100 + kk;
ax[ind] = ((31 * 100 + ii) * 100 + jj) * 100 + kk;
ay[ind] = ((32 * 100 + ii) * 100 + jj) * 100 + kk;
az[ind] = ((33 * 100 + ii) * 100 + jj) * 100 + kk;
fxx[ind] = ((41 * 100 + ii) * 100 + jj) * 100 + kk;
fxy[ind] = ((42 * 100 + ii) * 100 + jj) * 100 + kk;
fxz[ind] = ((43 * 100 + ii) * 100 + jj) * 100 + kk;
fyx[ind] = ((44 * 100 + ii) * 100 + jj) * 100 + kk;
fyy[ind] = ((45 * 100 + ii) * 100 + jj) * 100 + kk;
fyz[ind] = ((46 * 100 + ii) * 100 + jj) * 100 + kk;
fzx[ind] = ((47 * 100 + ii) * 100 + jj) * 100 + kk;
fzy[ind] = ((48 * 100 + ii) * 100 + jj) * 100 + kk;
fzz[ind] = ((49 * 100 + ii) * 100 + jj) * 100 + kk;
}
}
}
return 0;
}
|