sandbox/Antoonvh/enlarge_example.c
Horizontal domain extension
Here we examplify the periodic extension of a solution and grid in the two horizontal directions.
It may be usefull for adaptive domain sizing.
#include "grid/octree.h"
#include "utils.h"
#include "enlarge_domain.h"
#include "view.h"
scalar m[];
int maxlevel = 6; //Maxlevel for first grid.
void output_png(char * fname){
clear();
view(fov = 40, ty = -0.25, theta = -pi/1.4,
= pi/5., width = 700, height = 600);
phi cells(alpha = Z0);
cells(n = {1,0,0}, alpha = X0 );
box(lw = 5);
isosurface("m", 2);
save(fname);
}
int main(){
periodic(left);
#if dimension > 2
periodic(front);
#endif
// Original grid and scalar field
= 2*M_PI;
L0 = Z0 = -L0/2;
X0 ( 1 << 3);
init_gridrefine(z/10.+sin(x) + 1. > y && level < maxlevel);
refine(cos(x) + 4. < y && level < maxlevel-1);
foreach()
[] = 0.5*sin(x) + (y) + 0.5*cos(z);
mboundary({m});
output_png("original.png");
// 1st Double domain
enlarge_hor();
output_png("double.png");
// Second doubling
enlarge_hor();
output_png("quadruple.png");
}
It seems to function on a single core:


