15 std::cerr <<
"Warning!: No blocks to exchange ghost values in level " << level << std::endl;
19 for (std::list<Octree*>::iterator it =
level_nodes[level].begin(), end =
level_nodes[level].end(); it != end; ++it) {
23 Field *f = (*it)->get_block_data()->scalarfields[l];
25 if( f->
name == name ) {
28 for (
int m=0; m<3; m++) {
29 for (
int n=0; n<2; n++) {
31 if((*it)->bc[m][n] ==
NONE && (*it)->neighbour[m][n] != NULL) {
41 (*it)->neighbour[m][n]->get_block_data()->scalarfields[l]->val[i-
nx_block][j][k];
48 for(
int i=0; i<
pad; i++) {
53 (*it)->neighbour[m][n]->get_block_data()->scalarfields[l]->val[i+
nx_block][j][k];
65 (*it)->neighbour[m][n]->get_block_data()->scalarfields[l]->val[i][j-
ny_block][k];
73 for(
int j=0; j<
pad; j++) {
77 (*it)->neighbour[m][n]->get_block_data()->scalarfields[l]->val[i][j+
ny_block][k];
89 (*it)->neighbour[m][n]->get_block_data()->scalarfields[l]->val[i][j][k-
nz_block];
98 for(
int k=0; k<
pad; k++) {
101 (*it)->neighbour[m][n]->get_block_data()->scalarfields[l]->val[i][j][k+
nz_block];
114 VecField *f = (*it)->get_block_data()->vectorfields[l];
116 if( f->
name == name ) {
119 for (
int m=0; m<3; m++) {
120 for (
int n=0; n<2; n++) {
122 if((*it)->bc[m][n] ==
NONE && (*it)->neighbour[m][n] != NULL) {
132 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->x[i-
nx_block][j][k];
134 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->y[i-
nx_block][j][k];
136 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->z[i-
nx_block][j][k];
143 for(
int i=0; i<
pad; i++) {
148 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->x[i+
nx_block][j][k];
150 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->y[i+
nx_block][j][k];
152 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->z[i+
nx_block][j][k];
164 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->x[i][j-
ny_block][k];
166 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->y[i][j-
ny_block][k];
168 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->z[i][j-
ny_block][k];
176 for(
int j=0; j<
pad; j++) {
180 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->x[i][j+
ny_block][k];
182 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->y[i][j+
ny_block][k];
184 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->z[i][j+
ny_block][k];
196 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->x[i][j][k-
nz_block];
198 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->y[i][j][k-
nz_block];
200 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->z[i][j][k-
nz_block];
209 for(
int k=0; k<
pad; k++) {
212 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->x[i][j][k+
nz_block];
214 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->y[i][j][k+
nz_block];
216 (*it)->neighbour[m][n]->get_block_data()->vectorfields[l]->z[i][j][k+
nz_block];
std::vector< std::string > scalar_fields
Template class for any vector field variable in the domain.
std::list< Octree * > level_nodes[20]
Template class for any scalar field variable in the domain.
std::vector< std::string > vector_fields
void exchange_ghost_val(int level, std::string name)
void create_lists_of_level_nodes()