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
00056
00057 double *var_fine_M(const Grid* gitter, int level) const;
00058
00059 double *var_fine_N(const Grid* gitter, int level) const;
00060 double *var_fine_S(const Grid* gitter, int level) const;
00061 double *var_fine_W(const Grid* gitter, int level) const;
00062 double *var_fine_E(const Grid* gitter, int level) const;
00063 double *var_fine_T(const Grid* gitter, int level) const;
00064 double *var_fine_D(const Grid* gitter, int level) const;
00065
00066 double *var_fine_ND(const Grid* gitter, int level) const;
00067 double *var_fine_WN(const Grid* gitter, int level) const;
00068 double *var_fine_WT(const Grid* gitter, int level) const;
00069 double *var_fine_ED(const Grid* gitter, int level) const;
00070 double *var_fine_ST(const Grid* gitter, int level) const;
00071 double *var_fine_ES(const Grid* gitter, int level) const;
00072
00073 double *var_fine_EST(const Grid* gitter, int level) const;
00074 double *var_fine_WND(const Grid* gitter, int level) const;
00075
00076
00077
00078
00079 double *var_coarse_M(const Grid* gitter, int level) const;
00080
00081 double *var_coarse_N(const Grid* gitter, int level) const;
00082 double *var_coarse_S(const Grid* gitter, int level) const;
00083 double *var_coarse_W(const Grid* gitter, int level) const;
00084 double *var_coarse_E(const Grid* gitter, int level) const;
00085 double *var_coarse_T(const Grid* gitter, int level) const;
00086 double *var_coarse_D(const Grid* gitter, int level) const;
00087
00088 double *var_coarse_ND(const Grid* gitter, int level) const;
00089 double *var_coarse_WN(const Grid* gitter, int level) const;
00090 double *var_coarse_WT(const Grid* gitter, int level) const;
00091 double *var_coarse_ED(const Grid* gitter, int level) const;
00092 double *var_coarse_ST(const Grid* gitter, int level) const;
00093 double *var_coarse_ES(const Grid* gitter, int level) const;
00094
00095 double *var_coarse_EST(const Grid* gitter, int level) const;
00096 double *var_coarse_WND(const Grid* gitter, int level) const;
00097
00098
00099 D3vector coordinate(const Grid* gitter) const;
00100 double coordinateX(const Grid* gitter) const;
00101 double coordinateY(const Grid* gitter) const;
00102 double coordinateZ(const Grid* gitter) const;
00103
00104
00105 P_interior* Next() { return next; };
00106
00107
00108 Index3D Ind() const { return ind; };
00109 private:
00110 double* pointer_varM;
00111 Index3D ind;
00112 P_interior *next;
00113 };
00114
00115
00116
00117
00118 inline D3vector P_interior::coordinate(const Grid* gitter) const {
00119 return gitter->transform_coord(ind);
00120 };
00121 inline double P_interior::coordinateX(const Grid* gitter) const {
00122 return gitter->transform_coordX(ind);
00123 };
00124 inline double P_interior::coordinateY(const Grid* gitter) const {
00125 return gitter->transform_coordY(ind);
00126 };
00127 inline double P_interior::coordinateZ(const Grid* gitter) const {
00128 return gitter->transform_coordZ(ind);
00129 };
00130
00131
00132 inline void P_interior::initialize(const Grid* gitter, int var_ebene) {
00133 pointer_varM = gitter->Give_variable(ind,var_ebene);
00134 };
00135
00136
00137
00138
00139 inline double *P_interior::varM(const Grid* gitter, int level) const {
00140 return pointer_varM;
00141 };
00142
00143 inline double *P_interior::varN(const Grid* gitter, int level)
00144 const {
00145 return gitter->Give_variable(ind.next_NS(Rd,level),level);
00146 };
00147 inline double *P_interior::varS(const Grid* gitter, int level)
00148 const {
00149 return gitter->Give_variable(ind.next_NS(Ld,level),level);
00150 };
00151 inline double *P_interior::varE(const Grid* gitter, int level)
00152 const {
00153 return gitter->Give_variable(ind.next_EW(Rd,level),level);
00154 };
00155 inline double *P_interior::varW(const Grid* gitter, int level)
00156 const {
00157 return gitter->Give_variable(ind.next_EW(Ld,level),level);
00158 };
00159 inline double *P_interior::varT(const Grid* gitter, int level)
00160 const {
00161 return gitter->Give_variable(ind.next_TD(Rd,level),level);
00162 };
00163 inline double *P_interior::varD(const Grid* gitter, int level)
00164 const {
00165 return gitter->Give_variable(ind.next_TD(Ld,level),level);
00166 };
00167
00168 inline double *P_interior::varND(const Grid* gitter, int level)
00169 const {
00170 return gitter->Give_variable(ind.next_NS(Rd,level).next_TD(Ld,level),
00171 level);
00172 };
00173 inline double *P_interior::varWN(const Grid* gitter, int level)
00174 const {
00175 return gitter->Give_variable(ind.next_NS(Rd,level).next_EW(Ld,level),
00176 level);
00177 };
00178 inline double *P_interior::varWT(const Grid* gitter, int level)
00179 const {
00180 return gitter->Give_variable(ind.next_TD(Rd,level).next_EW(Ld,level),
00181 level);
00182 };
00183 inline double *P_interior::varED(const Grid* gitter, int level)
00184 const {
00185 return gitter->Give_variable(ind.next_TD(Ld,level).next_EW(Rd,level),
00186 level);
00187 };
00188 inline double *P_interior::varST(const Grid* gitter, int level)
00189 const {
00190 return gitter->Give_variable(ind.next_TD(Rd,level).next_NS(Ld,level),
00191 level);
00192 };
00193 inline double *P_interior::varES(const Grid* gitter, int level)
00194 const {
00195 return gitter->Give_variable(ind.next_EW(Rd,level).next_NS(Ld,level),
00196 level);
00197 };
00198
00199 inline double *P_interior::varWD(const Grid* gitter, int level)
00200 const {
00201 return gitter->Give_variable(ind.next_WD(level),level);
00202 };
00203 inline double *P_interior::varET(const Grid* gitter, int level)
00204 const {
00205 return gitter->Give_variable(ind.next_ET(level),level);
00206 };
00207
00208
00209 inline double *P_interior::varEST(const Grid* gitter, int level)
00210 const {
00211 return gitter->Give_variable(
00212 ind.next_EW(Rd,level).next_NS(Ld,level).next_TD(Rd,level),level);
00213 };
00214 inline double *P_interior::varWND(const Grid* gitter, int level)
00215 const {
00216 return gitter->Give_variable(
00217 ind.next_EW(Ld,level).next_NS(Rd,level).next_TD(Ld,level),level);
00218 };
00219
00220
00221
00222
00223
00224
00225 inline double *P_interior::var_fine_M(const Grid* gitter, int level) const {
00226 return gitter->Give_variable(ind,level+1);
00227 };
00228
00229 inline double *P_interior::var_fine_N(const Grid* gitter, int level)
00230 const {
00231 return gitter->Give_variable(ind.next_NS(Rd,level+1),level+1);
00232 };
00233 inline double *P_interior::var_fine_S(const Grid* gitter, int level)
00234 const {
00235 return gitter->Give_variable(ind.next_NS(Ld,level+1),level+1);
00236 };
00237 inline double *P_interior::var_fine_E(const Grid* gitter, int level)
00238 const {
00239 return gitter->Give_variable(ind.next_EW(Rd,level+1),level+1);
00240 };
00241 inline double *P_interior::var_fine_W(const Grid* gitter, int level)
00242 const {
00243 return gitter->Give_variable(ind.next_EW(Ld,level+1),level+1);
00244 };
00245 inline double *P_interior::var_fine_T(const Grid* gitter, int level)
00246 const {
00247 return gitter->Give_variable(ind.next_TD(Rd,level+1),level+1);
00248 };
00249 inline double *P_interior::var_fine_D(const Grid* gitter, int level)
00250 const {
00251 return gitter->Give_variable(ind.next_TD(Ld,level+1),level+1);
00252 };
00253
00254 inline double *P_interior::var_fine_ND(const Grid* gitter, int level)
00255 const {
00256 return gitter->Give_variable(ind.next_NS(Rd,level+1).next_TD(Ld,level+1),
00257 level+1);
00258 };
00259 inline double *P_interior::var_fine_WN(const Grid* gitter, int level)
00260 const {
00261 return gitter->Give_variable(ind.next_NS(Rd,level+1).next_EW(Ld,level+1),
00262 level+1);
00263 };
00264 inline double *P_interior::var_fine_WT(const Grid* gitter, int level)
00265 const {
00266 return gitter->Give_variable(ind.next_TD(Rd,level+1).next_EW(Ld,level+1),
00267 level+1);
00268 };
00269 inline double *P_interior::var_fine_ED(const Grid* gitter, int level)
00270 const {
00271 return gitter->Give_variable(ind.next_TD(Ld,level+1).next_EW(Rd,level+1),
00272 level+1);
00273 };
00274 inline double *P_interior::var_fine_ST(const Grid* gitter, int level)
00275 const {
00276 return gitter->Give_variable(ind.next_TD(Rd,level+1).next_NS(Ld,level+1),
00277 level+1);
00278 };
00279 inline double *P_interior::var_fine_ES(const Grid* gitter, int level)
00280 const {
00281 return gitter->Give_variable(ind.next_EW(Rd,level+1).next_NS(Ld,level+1),
00282 level+1);
00283 };
00284
00285 inline double *P_interior::var_fine_EST(const Grid* gitter, int level)
00286 const {
00287 return gitter->Give_variable(
00288 ind.next_EW(Rd,level+1).next_NS(Ld,level+1).next_TD(Rd,level+1),level+1);
00289 };
00290 inline double *P_interior::var_fine_WND(const Grid* gitter, int level)
00291 const {
00292 return gitter->Give_variable(
00293 ind.next_EW(Ld,level+1).next_NS(Rd,level+1).next_TD(Ld,level+1),level+1);
00294 };
00295
00296
00297
00298
00299 inline double *P_interior::var_coarse_M(const Grid* gitter, int level) const {
00300 return gitter->Give_variable(ind,level-1);
00301 };
00302
00303 inline double *P_interior::var_coarse_N(const Grid* gitter, int level)
00304 const {
00305 return gitter->Give_variable(ind.next_NS(Rd,level),level-1);
00306 };
00307 inline double *P_interior::var_coarse_S(const Grid* gitter, int level)
00308 const {
00309 return gitter->Give_variable(ind.next_NS(Ld,level),level-1);
00310 };
00311 inline double *P_interior::var_coarse_E(const Grid* gitter, int level)
00312 const {
00313 return gitter->Give_variable(ind.next_EW(Rd,level),level-1);
00314 };
00315 inline double *P_interior::var_coarse_W(const Grid* gitter, int level)
00316 const {
00317 return gitter->Give_variable(ind.next_EW(Ld,level),level-1);
00318 };
00319 inline double *P_interior::var_coarse_T(const Grid* gitter, int level)
00320 const {
00321 return gitter->Give_variable(ind.next_TD(Rd,level),level-1);
00322 };
00323 inline double *P_interior::var_coarse_D(const Grid* gitter, int level)
00324 const {
00325 return gitter->Give_variable(ind.next_TD(Ld,level),level-1);
00326 };
00327
00328 inline double *P_interior::var_coarse_ND(const Grid* gitter, int level)
00329 const {
00330 return gitter->Give_variable(ind.next_ND(level),level-1);
00331 };
00332 inline double *P_interior::var_coarse_WN(const Grid* gitter, int level)
00333 const {
00334 return gitter->Give_variable(ind.next_WN(level),level-1);
00335 };
00336 inline double *P_interior::var_coarse_WT(const Grid* gitter, int level)
00337 const {
00338 return gitter->Give_variable(ind.next_WT(level),level-1);
00339 };
00340 inline double *P_interior::var_coarse_ED(const Grid* gitter, int level)
00341 const {
00342 return gitter->Give_variable(ind.next_ED(level),level-1);
00343 };
00344 inline double *P_interior::var_coarse_ST(const Grid* gitter, int level)
00345 const {
00346 return gitter->Give_variable(ind.next_ST(level),level-1);
00347 };
00348 inline double *P_interior::var_coarse_ES(const Grid* gitter, int level)
00349 const {
00350 return gitter->Give_variable(ind.next_ES(level),level-1);
00351 };
00352
00353
00354 inline double *P_interior::var_coarse_EST(const Grid* gitter, int level)
00355 const {
00356 return gitter->Give_variable(ind.next_EST(level),level-1);
00357 };
00358 inline double *P_interior::var_coarse_WND(const Grid* gitter, int level)
00359 const {
00360 return gitter->Give_variable(ind.next_WND(level),level-1);
00361 };