tSet fluid BCs in reusable function - cngf-pf - continuum model for granular flows with pore-pressure dynamics (renamed from 1d_fd_simple_shear)
 (HTM) git clone git://src.adamsgaard.dk/cngf-pf
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit 1d27bea446f7b34d61d3126d701dc9367a1b0ea6
 (DIR) parent e94f455468778b12e109147a3c3eb2732b554a9a
 (HTM) Author: Anders Damsgaard <anders@adamsgaard.dk>
       Date:   Mon,  1 Jul 2019 13:11:58 +0200
       
       Set fluid BCs in reusable function
       
       Diffstat:
         M fluid.c                             |      18 +++++++++++-------
       
       1 file changed, 11 insertions(+), 7 deletions(-)
       ---
 (DIR) diff --git a/fluid.c b/fluid.c
       t@@ -60,6 +60,14 @@ sine_wave(const double time,
                return amplitude*sin(2.0*PI*frequency*time + phase) + base_value;
        }
        
       +static void
       +set_fluid_bcs(struct simulation* sim, const double p_f_top)
       +{
       +        set_bc_dirichlet(sim->p_f_ghost, sim->nz, +1, p_f_top);
       +        sim->p_f_ghost[idx1g(sim->nz-1)] = p_f_top; /* Include top node in BC */
       +        set_bc_neumann(sim->p_f_ghost, sim->nz, -1);
       +}
       +
        static double
        darcy_pressure_change_1d(const int i,
                                 const int nz,
       t@@ -129,9 +137,7 @@ darcy_solver_1d(struct simulation* sim,
                                    sim->p_f_top);
        
                /* set fluid BCs (1 of 2) */
       -        set_bc_dirichlet(sim->p_f_ghost, sim->nz, +1, p_f_top);
       -        sim->p_f_ghost[idx1g(sim->nz-1)] = p_f_top; /* Include top node in BC */
       -        set_bc_neumann(sim->p_f_ghost, sim->nz, -1);
       +        set_fluid_bcs(sim, p_f_top);
        
                solved = 0;
        
       t@@ -154,18 +160,16 @@ darcy_solver_1d(struct simulation* sim,
                        dp_f_dt_impl = zeros(sim->nz);
                        p_f_ghost_out = zeros(sim->nz+2);
                        r_norm = zeros(sim->nz);
       +
                        for (iter=0; iter<max_iter; ++iter) {
        
                                /* set fluid BCs (2 of 2) */
       -                        set_bc_dirichlet(sim->p_f_ghost, sim->nz, +1, p_f_top);
       -                        sim->p_f_ghost[idx1g(sim->nz-1)] = p_f_top;
       -                        set_bc_neumann(sim->p_f_ghost, sim->nz, -1);
       +                        set_fluid_bcs(sim, p_f_top);
        #ifdef DEBUG
                                puts(".. p_f_ghost after BC:");
                                print_array(sim->p_f_ghost, sim->nz+2);
        #endif
        
       -                        /* for (int i=0; i<sim->nz; ++i) */
                                for (i=0; i<sim->nz-1; ++i)
                                        dp_f_dt_impl[i] = darcy_pressure_change_1d(i,
                                                                                   sim->nz,