sandbox/Antoonvh/nsf4_boundaries.h

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    
    #include "higher-order.h"
    
    face vector uff;
    double dtf2;
    double p_left (Point point, Point neighbor, scalar _s, void * data) { 
      return (layer_nr_x == 1 ? val(_s,0,0,0) - (val(uff.x,0,0,0)/dtf2)*Delta :
    	  val(_s,1,0,0) - 3.*(val(uff.x,0,0,0)/dtf2)*Delta);
    }
    
    double p_left_h (Point point, Point neighbor, scalar _s, void * data) { 
      return layer_nr_x == 1 ? val(_s,0,0,0) : val(_s,1,0,0);
    }
    
    double p_right (Point point, Point neighbor, scalar _s, void * data) { 
      return (layer_nr_x == 1 ? val(_s,0,0,0) - (-val(uff.x,1,0,0)/dtf2)*Delta :
    	  val(_s,-1,0,0) - 3.*(-val(uff.x,1,0,0)/dtf2)*Delta);
    }
    
    double p_right_h (Point point, Point neighbor, scalar _s, void * data) { 
      return layer_nr_x == 1 ? val(_s,0,0,0) : val(_s,-1,0,0);
    }
    
    double p_bottom (Point point, Point neighbor, scalar _s, void * data) {
      return  (layer_nr_y == 1 ? val(_s,0,0,0) - (val(uff.y,0,0,0)/dtf2)*Delta :
    	   val(_s,0,1,0) - 3.*(val(uff.y,0,0,0)/dtf2)*Delta);
    }
    
    static double p_bottom_h (Point point, Point neighbor, scalar _s, void * data) { 
      return  layer_nr_y == 1 ? val(_s,0,0,0) : val(_s,0,1,0);
    }
    
    double p_top (Point point, Point neighbor, scalar _s, void * data) { 
      return  (layer_nr_y == 1 ? val(_s,0,0,0) + (val(uff.y,0,1,0)/dtf2)*Delta :
    	   val(_s,0,-1,0) + 3.*(val(uff.y,0,1,0)/dtf2)*Delta);
    }
    
    static double p_top_h (Point point, Point neighbor, scalar _s, void * data) { 
      return  layer_nr_y == 1 ? val(_s,0,0,0) : val(_s,0,-1,0);
    }