sandbox/Antoonvh/trepos.c

    Test for the reposition function

    Before repositioning

    Before repositioning

    Not all particles are repositioned:

    After repositioning

    After repositioning

    After repositioning 2

    After repositioning 2

    After repositioning 3

    After repositioning 3

    #include "vof-tracer-particles.h"
    #include "view.h"
    #include "scatter2.h"
    
    vector uf[];
    scalar f[];
    
    int main() {
      L0 = 3;
      X0 = Y0 = -L0/2;
      init_grid (8);
      int pnr = 100;
      Particles P = new_vof_tracer_particles (sq(pnr), 1);
      place_in_square (P, (struct Init_P){pnr});
      fraction(f, sq(1) - sq(x-0.0432) - sq(y + 0.1423));
      boundary ({f});
      scatter (P, s = 10);
      draw_vof ("f", lc = {1,0,1}, lw = 3);
      save ("before.png");
    
      reposition (f, P); 
      cells(lc = {0,1,1});
      scatter (P, s = 10);
      draw_vof ("f", lc = {1,0,1}, lw = 3);
      save ("after.png");
    
      Particles P2 = new_vof_tracer_particles (sq(pnr), 0);
      place_in_square (P2, (struct Init_P){pnr});
      reposition (f, P2); 
      cells (lc = {0,1,1});
      scatter (P2, s = 10);
      draw_vof ("f", lc = {1,0,1}, lw = 3);
      save ("after2.png");
      
      Particles P3 = new_vof_tracer_particles (sq(pnr), 3);
      place_in_square (P3, (struct Init_P){pnr});
      reposition (f, P3); 
      cells (lc = {0,1,1});
      scatter (P3, s = 10);
      draw_vof ("f", lc = {1,0,1}, lw = 3);
      save ("after3.png");
      
      run();
    }