00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #define initialize_interior true
00019
00020
00021 class P_interior {
00022 public:
00023 P_interior(Index3D I, P_interior* Next) : ind(I), next(Next) {};
00024
00025
00026 void initialize(const Grid* gitter, int var_ebene);
00027
00028
00029
00030
00031 double *varM(const Grid* gitter,int level) const;
00032
00033 double *varN(const Grid* gitter, int level) const;
00034 double *varS(const Grid* gitter, int level) const;
00035 double *varW(const Grid* gitter, int level) const;
00036 double *varE(const Grid* gitter, int level) const;
00037 double *varT(const Grid* gitter, int level) const;
00038 double *varD(const Grid* gitter, int level) const;
00039
00040 double *varND(const Grid* gitter, int level) const;
00041 double *varWN(const Grid* gitter, int level) const;
00042 double *varWT(const Grid* gitter, int level) const;
00043 double *varED(const Grid* gitter, int level) const;
00044 double *varST(const Grid* gitter, int level) const;
00045 double *varES(const Grid* gitter, int level) const;
00046
00047 double *varEST(const Grid* gitter, int level) const;
00048 double *varWND(const Grid* gitter, int level) const;
00049
00050
00051 double *varWD(const Grid* gitter, int level) const;
00052 double *varET(const Grid* gitter, int level) const;
00053
00054
00055 double *cell_varWSD(const Grid* gitter,int lev) const;
00056 double *cell_varWST(const Grid* gitter,int lev) const;
00057 double *cell_varWND(const Grid* gitter,int lev) const;
00058 double *cell_varWNT(const Grid* gitter,int lev) const;
00059 double *cell_varESD(const Grid* gitter,int lev) const;
00060 double *cell_varEST(const Grid* gitter,int lev) const;
00061 double *cell_varEND(const Grid* gitter,int lev) const;
00062 double *cell_varENT(const Grid* gitter,int lev) const;
00063
00064
00065
00066
00067 double *var_fine_M(const Grid* gitter, int level) const;
00068
00069 double *var_fine_N(const Grid* gitter, int level) const;
00070 double *var_fine_S(const Grid* gitter, int level) const;
00071 double *var_fine_W(const Grid* gitter, int level) const;
00072 double *var_fine_E(const Grid* gitter, int level) const;
00073 double *var_fine_T(const Grid* gitter, int level) const;
00074 double *var_fine_D(const Grid* gitter, int level) const;
00075
00076 double *var_fine_ND(const Grid* gitter, int level) const;
00077 double *var_fine_WN(const Grid* gitter, int level) const;
00078 double *var_fine_WT(const Grid* gitter, int level) const;
00079 double *var_fine_ED(const Grid* gitter, int level) const;
00080 double *var_fine_ST(const Grid* gitter, int level) const;
00081 double *var_fine_ES(const Grid* gitter, int level) const;
00082
00083 double *var_fine_EST(const Grid* gitter, int level) const;
00084 double *var_fine_WND(const Grid* gitter, int level) const;
00085
00086
00087
00088
00089 double *var_coarse_M(const Grid* gitter, int level) const;
00090
00091 double *var_coarse_N(const Grid* gitter, int level) const;
00092 double *var_coarse_S(const Grid* gitter, int level) const;
00093 double *var_coarse_W(const Grid* gitter, int level) const;
00094 double *var_coarse_E(const Grid* gitter, int level) const;
00095 double *var_coarse_T(const Grid* gitter, int level) const;
00096 double *var_coarse_D(const Grid* gitter, int level) const;
00097
00098 double *var_coarse_ND(const Grid* gitter, int level) const;
00099 double *var_coarse_WN(const Grid* gitter, int level) const;
00100 double *var_coarse_WT(const Grid* gitter, int level) const;
00101 double *var_coarse_ED(const Grid* gitter, int level) const;
00102 double *var_coarse_ST(const Grid* gitter, int level) const;
00103 double *var_coarse_ES(const Grid* gitter, int level) const;
00104
00105 double *var_coarse_EST(const Grid* gitter, int level) const;
00106 double *var_coarse_WND(const Grid* gitter, int level) const;
00107
00108
00109 D3vector coordinate(const Grid* gitter) const;
00110 double coordinateX(const Grid* gitter) const;
00111 double coordinateY(const Grid* gitter) const;
00112 double coordinateZ(const Grid* gitter) const;
00113
00114
00115 P_interior* Next() { return next; };
00116
00117
00118 Index3D Ind() const { return ind; };
00119 private:
00120 double* pointer_varM;
00121
00122 double* pointer_varN;
00123 double* pointer_varS;
00124 double* pointer_varE;
00125 double* pointer_varW;
00126 double* pointer_varT;
00127 double* pointer_varD;
00128
00129 double* pointer_varND;
00130 double* pointer_varWN;
00131 double* pointer_varWT;
00132 double* pointer_varED;
00133 double* pointer_varST;
00134 double* pointer_varES;
00135
00136 double* pointer_varEST;
00137 double* pointer_varWND;
00138
00139 Index3D ind;
00140 P_interior *next;
00141 };
00142
00143
00144
00145
00146 inline D3vector P_interior::coordinate(const Grid* gitter) const {
00147 return gitter->transform_coord(ind);
00148 };
00149 inline double P_interior::coordinateX(const Grid* gitter) const {
00150 return gitter->transform_coordX(ind);
00151 };
00152 inline double P_interior::coordinateY(const Grid* gitter) const {
00153 return gitter->transform_coordY(ind);
00154 };
00155 inline double P_interior::coordinateZ(const Grid* gitter) const {
00156 return gitter->transform_coordZ(ind);
00157 };
00158
00159
00160 inline void P_interior::initialize(const Grid* gitter, int level) {
00161 pointer_varM = gitter->Give_variable(ind,level);
00162
00163 pointer_varN = gitter->Give_variable(ind.next_NS(Rd,level),level);
00164 pointer_varS = gitter->Give_variable(ind.next_NS(Ld,level),level);
00165 pointer_varE = gitter->Give_variable(ind.next_EW(Rd,level),level);
00166 pointer_varW = gitter->Give_variable(ind.next_EW(Ld,level),level);
00167 pointer_varT = gitter->Give_variable(ind.next_TD(Rd,level),level);
00168 pointer_varD = gitter->Give_variable(ind.next_TD(Ld,level),level);
00169 pointer_varND =
00170 gitter->Give_variable(ind.next_NS(Rd,level).next_TD(Ld,level),level);
00171 pointer_varWN =
00172 gitter->Give_variable(ind.next_NS(Rd,level).next_EW(Ld,level),level);
00173 pointer_varWT =
00174 gitter->Give_variable(ind.next_TD(Rd,level).next_EW(Ld,level),level);
00175 pointer_varED =
00176 gitter->Give_variable(ind.next_TD(Ld,level).next_EW(Rd,level),level);
00177 pointer_varST =
00178 gitter->Give_variable(ind.next_TD(Rd,level).next_NS(Ld,level),level);
00179 pointer_varES =
00180 gitter->Give_variable(ind.next_EW(Rd,level).next_NS(Ld,level),level);
00181 pointer_varEST =
00182 gitter->Give_variable(
00183 ind.next_EW(Rd,level).next_NS(Ld,level).next_TD(Rd,level),level);
00184 pointer_varWND =
00185 gitter->Give_variable(
00186 ind.next_EW(Ld,level).next_NS(Rd,level).next_TD(Ld,level),level);
00187 };
00188
00189
00190
00191
00192 inline double *P_interior::varM(const Grid* gitter, int level) const {
00193 return pointer_varM;
00194 };
00195
00196 inline double *P_interior::varN(const Grid* gitter, int level)
00197 const {
00198 return pointer_varN;
00199 };
00200 inline double *P_interior::varS(const Grid* gitter, int level)
00201 const {
00202 return pointer_varS;
00203 };
00204 inline double *P_interior::varE(const Grid* gitter, int level)
00205 const {
00206 return pointer_varE;
00207 };
00208 inline double *P_interior::varW(const Grid* gitter, int level)
00209 const {
00210 return pointer_varW;
00211 };
00212 inline double *P_interior::varT(const Grid* gitter, int level)
00213 const {
00214 return pointer_varT;
00215 };
00216 inline double *P_interior::varD(const Grid* gitter, int level)
00217 const {
00218 return pointer_varD;
00219 };
00220
00221 inline double *P_interior::varND(const Grid* gitter, int level)
00222 const {
00223 return pointer_varND;
00224 };
00225 inline double *P_interior::varWN(const Grid* gitter, int level)
00226 const {
00227 return pointer_varWN;
00228 };
00229 inline double *P_interior::varWT(const Grid* gitter, int level)
00230 const {
00231 return pointer_varWT;
00232 };
00233 inline double *P_interior::varED(const Grid* gitter, int level)
00234 const {
00235 return pointer_varED;
00236 };
00237 inline double *P_interior::varST(const Grid* gitter, int level)
00238 const {
00239 return pointer_varST;
00240 };
00241 inline double *P_interior::varES(const Grid* gitter, int level)
00242 const {
00243 return pointer_varES;
00244 };
00245
00246
00247 inline double *P_interior::varWD(const Grid* gitter, int level)
00248 const {
00249 return gitter->Give_variable(ind.next_WD(level),level);
00250 };
00251 inline double *P_interior::varET(const Grid* gitter, int level)
00252 const {
00253 return gitter->Give_variable(ind.next_ET(level),level);
00254 };
00255
00256
00257 inline double *P_interior::varEST(const Grid* gitter, int level)
00258 const {
00259 return pointer_varEST;
00260 };
00261 inline double *P_interior::varWND(const Grid* gitter, int level)
00262 const {
00263 return pointer_varWND;
00264 };
00265
00266
00267 inline double *P_interior::cell_varENT(const Grid* gitter,int lev) const {
00268 return gitter->Give_cell_variable(ind.next_ENT(lev+1));
00269 };
00270 inline double *P_interior::cell_varEND(const Grid* gitter,int lev) const {
00271 return gitter->Give_cell_variable(ind.next_END(lev+1));
00272 };
00273 inline double *P_interior::cell_varEST(const Grid* gitter,int lev) const {
00274 return gitter->Give_cell_variable(ind.next_EST(lev+1));
00275 };
00276 inline double *P_interior::cell_varESD(const Grid* gitter,int lev) const {
00277 return gitter->Give_cell_variable(ind.next_ESD(lev+1));
00278 };
00279 inline double *P_interior::cell_varWNT(const Grid* gitter,int lev) const {
00280 return gitter->Give_cell_variable(ind.next_WNT(lev+1));
00281 };
00282 inline double *P_interior::cell_varWND(const Grid* gitter,int lev) const {
00283 return gitter->Give_cell_variable(ind.next_WND(lev+1));
00284 };
00285 inline double *P_interior::cell_varWST(const Grid* gitter,int lev) const {
00286 return gitter->Give_cell_variable(ind.next_WST(lev+1));
00287 };
00288 inline double *P_interior::cell_varWSD(const Grid* gitter,int lev) const {
00289 return gitter->Give_cell_variable(ind.next_WSD(lev+1));
00290 };
00291
00292
00293
00294
00295
00296 inline double *P_interior::var_fine_M(const Grid* gitter, int level) const {
00297 return gitter->Give_variable(ind,level+1);
00298 };
00299
00300 inline double *P_interior::var_fine_N(const Grid* gitter, int level)
00301 const {
00302 return gitter->Give_variable(ind.next_NS(Rd,level+1),level+1);
00303 };
00304 inline double *P_interior::var_fine_S(const Grid* gitter, int level)
00305 const {
00306 return gitter->Give_variable(ind.next_NS(Ld,level+1),level+1);
00307 };
00308 inline double *P_interior::var_fine_E(const Grid* gitter, int level)
00309 const {
00310 return gitter->Give_variable(ind.next_EW(Rd,level+1),level+1);
00311 };
00312 inline double *P_interior::var_fine_W(const Grid* gitter, int level)
00313 const {
00314 return gitter->Give_variable(ind.next_EW(Ld,level+1),level+1);
00315 };
00316 inline double *P_interior::var_fine_T(const Grid* gitter, int level)
00317 const {
00318 return gitter->Give_variable(ind.next_TD(Rd,level+1),level+1);
00319 };
00320 inline double *P_interior::var_fine_D(const Grid* gitter, int level)
00321 const {
00322 return gitter->Give_variable(ind.next_TD(Ld,level+1),level+1);
00323 };
00324
00325 inline double *P_interior::var_fine_ND(const Grid* gitter, int level)
00326 const {
00327 return gitter->Give_variable(ind.next_NS(Rd,level+1).next_TD(Ld,level+1),
00328 level+1);
00329 };
00330 inline double *P_interior::var_fine_WN(const Grid* gitter, int level)
00331 const {
00332 return gitter->Give_variable(ind.next_NS(Rd,level+1).next_EW(Ld,level+1),
00333 level+1);
00334 };
00335 inline double *P_interior::var_fine_WT(const Grid* gitter, int level)
00336 const {
00337 return gitter->Give_variable(ind.next_TD(Rd,level+1).next_EW(Ld,level+1),
00338 level+1);
00339 };
00340 inline double *P_interior::var_fine_ED(const Grid* gitter, int level)
00341 const {
00342 return gitter->Give_variable(ind.next_TD(Ld,level+1).next_EW(Rd,level+1),
00343 level+1);
00344 };
00345 inline double *P_interior::var_fine_ST(const Grid* gitter, int level)
00346 const {
00347 return gitter->Give_variable(ind.next_TD(Rd,level+1).next_NS(Ld,level+1),
00348 level+1);
00349 };
00350 inline double *P_interior::var_fine_ES(const Grid* gitter, int level)
00351 const {
00352 return gitter->Give_variable(ind.next_EW(Rd,level+1).next_NS(Ld,level+1),
00353 level+1);
00354 };
00355
00356 inline double *P_interior::var_fine_EST(const Grid* gitter, int level)
00357 const {
00358 return gitter->Give_variable(
00359 ind.next_EW(Rd,level+1).next_NS(Ld,level+1).next_TD(Rd,level+1),level+1);
00360 };
00361 inline double *P_interior::var_fine_WND(const Grid* gitter, int level)
00362 const {
00363 return gitter->Give_variable(
00364 ind.next_EW(Ld,level+1).next_NS(Rd,level+1).next_TD(Ld,level+1),level+1);
00365 };
00366
00367
00368
00369
00370 inline double *P_interior::var_coarse_M(const Grid* gitter, int level) const {
00371 return gitter->Give_variable(ind,level-1);
00372 };
00373
00374 inline double *P_interior::var_coarse_N(const Grid* gitter, int level)
00375 const {
00376 return gitter->Give_variable(ind.next_NS(Rd,level),level-1);
00377 };
00378 inline double *P_interior::var_coarse_S(const Grid* gitter, int level)
00379 const {
00380 return gitter->Give_variable(ind.next_NS(Ld,level),level-1);
00381 };
00382 inline double *P_interior::var_coarse_E(const Grid* gitter, int level)
00383 const {
00384 return gitter->Give_variable(ind.next_EW(Rd,level),level-1);
00385 };
00386 inline double *P_interior::var_coarse_W(const Grid* gitter, int level)
00387 const {
00388 return gitter->Give_variable(ind.next_EW(Ld,level),level-1);
00389 };
00390 inline double *P_interior::var_coarse_T(const Grid* gitter, int level)
00391 const {
00392 return gitter->Give_variable(ind.next_TD(Rd,level),level-1);
00393 };
00394 inline double *P_interior::var_coarse_D(const Grid* gitter, int level)
00395 const {
00396 return gitter->Give_variable(ind.next_TD(Ld,level),level-1);
00397 };
00398
00399 inline double *P_interior::var_coarse_ND(const Grid* gitter, int level)
00400 const {
00401 return gitter->Give_variable(ind.next_ND(level),level-1);
00402 };
00403 inline double *P_interior::var_coarse_WN(const Grid* gitter, int level)
00404 const {
00405 return gitter->Give_variable(ind.next_WN(level),level-1);
00406 };
00407 inline double *P_interior::var_coarse_WT(const Grid* gitter, int level)
00408 const {
00409 return gitter->Give_variable(ind.next_WT(level),level-1);
00410 };
00411 inline double *P_interior::var_coarse_ED(const Grid* gitter, int level)
00412 const {
00413 return gitter->Give_variable(ind.next_ED(level),level-1);
00414 };
00415 inline double *P_interior::var_coarse_ST(const Grid* gitter, int level)
00416 const {
00417 return gitter->Give_variable(ind.next_ST(level),level-1);
00418 };
00419 inline double *P_interior::var_coarse_ES(const Grid* gitter, int level)
00420 const {
00421 return gitter->Give_variable(ind.next_ES(level),level-1);
00422 };
00423
00424 inline double *P_interior::var_coarse_EST(const Grid* gitter, int level)
00425 const {
00426 return gitter->Give_variable(ind.next_EST(level),level-1);
00427 };
00428 inline double *P_interior::var_coarse_WND(const Grid* gitter, int level)
00429 const {
00430 return gitter->Give_variable(ind.next_WND(level),level-1);
00431 };