1 #ifndef SET_MATRIX4_FULL_H
2 #define SET_MATRIX4_FULL_H
23 Scalar data[5] = {NAN,NAN,NAN,NAN,NAN};
28 Scalar & operator () (
const int i,
const int j,
const int k,
const int l)
30 int uid = i + 2*j + 4*k + 8*l;
32 if (uid==0 )
return data[0];
34 else if (uid==8 || uid==4 || uid==2 || uid==1 )
return data[1];
36 else if (uid==12 || uid==10 || uid==6 || uid==9 || uid==5 || uid==3 )
return data[2];
38 else if (uid==14 || uid==13 || uid==11 || uid==7 )
return data[3];
40 else if (uid==15 )
return data[4];
44 Scalar operator () (
const int i,
const int j,
const int k,
const int l)
const
46 int uid = i + 2*j + 4*k + 8*l;
48 if (uid==0 )
return data[0];
50 else if (uid==8 || uid==4 || uid==2 || uid==1 )
return data[1];
52 else if (uid==12 || uid==10 || uid==6 || uid==9 || uid==5 || uid==3 )
return data[2];
54 else if (uid==14 || uid==13 || uid==11 || uid==7 )
return data[3];
56 else if (uid==15 )
return data[4];
82 if (std::isnan(data[0]))
return true;
83 if (std::isnan(data[1]))
return true;
84 if (std::isnan(data[2]))
return true;
85 if (std::isnan(data[3]))
return true;
86 if (std::isnan(data[4]))
return true;
94 Scalar data[15] = { NAN,NAN,NAN,NAN,NAN,
101 AMREX_GPU_HOST_DEVICE
102 Scalar & operator () (
const int i,
const int j,
const int k,
const int l)
104 int uid = i + 3*j + 9*k + 27*l;
106 if (uid==0 )
return data[0];
108 else if (uid==27 || uid==9 || uid==3 || uid==1 )
return data[1];
110 else if (uid==54 || uid==18 || uid==6 || uid==2 )
return data[2];
112 else if (uid==36 || uid==30 || uid==12 || uid==28 || uid==10 || uid==4 )
return data[3];
114 else if (uid==63 || uid==45 || uid==57 || uid==21 || uid==33 || uid==15 || uid==55 || uid==19 || uid==7 || uid==29 || uid==11 || uid==5 )
return data[4];
116 else if (uid==72 || uid==60 || uid==24 || uid==56 || uid==20 || uid==8 )
return data[5];
118 else if (uid==39 || uid==37 || uid==31 || uid==13 )
return data[6];
120 else if (uid==66 || uid==48 || uid==42 || uid==64 || uid==46 || uid==58 || uid==22 || uid==34 || uid==16 || uid==38 || uid==32 || uid==14 )
return data[7];
122 else if (uid==75 || uid==69 || uid==51 || uid==73 || uid==61 || uid==25 || uid==65 || uid==47 || uid==59 || uid==23 || uid==35 || uid==17 )
return data[8];
124 else if (uid==78 || uid==74 || uid==62 || uid==26 )
return data[9];
126 else if (uid==40 )
return data[10];
128 else if (uid==67 || uid==49 || uid==43 || uid==41 )
return data[11];
130 else if (uid==76 || uid==70 || uid==52 || uid==68 || uid==50 || uid==44 )
return data[12];
132 else if (uid==79 || uid==77 || uid==71 || uid==53 )
return data[13];
134 else if (uid==80 )
return data[14];
138 Scalar operator () (
const int i,
const int j,
const int k,
const int l)
const
140 int uid = i + 3*j + 9*k + 27*l;
142 if (uid==0 )
return data[0];
144 else if (uid==27 || uid==9 || uid==3 || uid==1 )
return data[1];
146 else if (uid==54 || uid==18 || uid==6 || uid==2 )
return data[2];
148 else if (uid==36 || uid==30 || uid==12 || uid==28 || uid==10 || uid==4 )
return data[3];
150 else if (uid==63 || uid==45 || uid==57 || uid==21 || uid==33 || uid==15 || uid==55 || uid==19 || uid==7 || uid==29 || uid==11 || uid==5 )
return data[4];
152 else if (uid==72 || uid==60 || uid==24 || uid==56 || uid==20 || uid==8 )
return data[5];
154 else if (uid==39 || uid==37 || uid==31 || uid==13 )
return data[6];
156 else if (uid==66 || uid==48 || uid==42 || uid==64 || uid==46 || uid==58 || uid==22 || uid==34 || uid==16 || uid==38 || uid==32 || uid==14 )
return data[7];
158 else if (uid==75 || uid==69 || uid==51 || uid==73 || uid==61 || uid==25 || uid==65 || uid==47 || uid==59 || uid==23 || uid==35 || uid==17 )
return data[8];
160 else if (uid==78 || uid==74 || uid==62 || uid==26 )
return data[9];
162 else if (uid==40 )
return data[10];
164 else if (uid==67 || uid==49 || uid==43 || uid==41 )
return data[11];
166 else if (uid==76 || uid==70 || uid==52 || uid==68 || uid==50 || uid==44 )
return data[12];
168 else if (uid==79 || uid==77 || uid==71 || uid==53 )
return data[13];
170 else if (uid==80 )
return data[14];
176 for (
int i = 0; i < 14; i++)
177 os <<
"i = " << i <<
" " << data[i] << std::endl;
180 for (
int k = 0; k < 3; k++)
182 for (
int i = -1; i < 4; i++)
184 for (
int l = 0; l < 3; l++)
186 if (i==-1) os <<
"┌ ┐ ";
187 else if (i == 3) os <<
"└ ┘ ";
191 for (
int j = 0; j < 3; j++)
194 os << std::scientific << std::setw(11) << val ;
219 for (
int i = 0 ; i < 15; i++) ret.
data[i] = 0.0;
225 if (std::isnan(data[ 0]))
return true;
226 if (std::isnan(data[ 1]))
return true;
227 if (std::isnan(data[ 2]))
return true;
228 if (std::isnan(data[ 3]))
return true;
229 if (std::isnan(data[ 4]))
return true;
230 if (std::isnan(data[ 5]))
return true;
231 if (std::isnan(data[ 6]))
return true;
232 if (std::isnan(data[ 7]))
return true;
233 if (std::isnan(data[ 8]))
return true;
234 if (std::isnan(data[ 9]))
return true;
235 if (std::isnan(data[10]))
return true;
236 if (std::isnan(data[11]))
return true;
237 if (std::isnan(data[12]))
return true;
238 if (std::isnan(data[13]))
return true;
239 if (std::isnan(data[14]))
return true;
245 operator<< (std::ostream& os,
const Matrix4<3,Sym::Full>& b);