URI:
       tuse common kozeny_carman function - cngf-pf - continuum model for granular flows with pore-pressure dynamics (renamed from 1d_fd_simple_shear)
  HTML git clone git://src.adamsgaard.dk/cngf-pf
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 86bfb546fc4ee751ba362a88bd1705e97bf82f5a
   DIR parent 50f06fc60f267608011e5c54e3170d98daa7569e
  HTML Author: Anders Damsgaard <anders@adamsgaard.dk>
       Date:   Tue, 17 Aug 2021 10:49:54 +0200
       
       use common kozeny_carman function
       
       Diffstat:
         M fluid.c                             |      10 +++-------
         M simulation.c                        |      12 +++++++++---
         M simulation.h                        |       1 +
       
       3 files changed, 13 insertions(+), 10 deletions(-)
       ---
   DIR diff --git a/fluid.c b/fluid.c
       t@@ -238,7 +238,7 @@ darcy_solver_1d(struct simulation *sim,
                        const double rel_tol)
        {
                int i, iter, solved = 0;
       -        double epsilon, p_f_top, omega, r_norm_max = NAN;
       +        double epsilon, p_f_top, omega, r_norm_max = NAN, *k_n, *phi_n;
                copy_values(sim->p_f_dot, sim->p_f_dot_old, sim->nz);
                
        
       t@@ -246,7 +246,7 @@ darcy_solver_1d(struct simulation *sim,
                 * epsilon = 0.0: explicit
                 * epsilon = 0.5: Crank-Nicolson
                 * epsilon = 1.0: implicit */
       -        epsilon = 0.5;
       +        epsilon = 0.0;
        
                /* underrelaxation parameter in ]0.0; 1.0],
                 * where omega = 1.0: no underrelaxation */
       t@@ -302,15 +302,11 @@ darcy_solver_1d(struct simulation *sim,
                if (epsilon > 0.0) {
        
                        /* grabbing the n + 1 iteration values for k and phi */
       -                double * k_n;
       -                double * phi_n;
                        k_n = zeros(sim->nz);
                        phi_n = zeros(sim->nz);
                        for (i = 0; i < sim->nz; ++i) {
                                phi_n[i] = sim->phi[i] + sim->dt*sim->phi_dot[i];
       -                        k_n[i] = sim->d * sim->d / 180.0
       -                                 * phi_n[i] * phi_n[i] * phi_n[i]
       -                                 / pow(1.0 - phi_n[i], 2.0);
       +                        k_n[i] = kozeny_carman(sim->d, phi_n[i]);
                        }
        #ifdef DEBUG
                        printf("\nEXPLICIT SOLVER IN %s\n", __func__);
   DIR diff --git a/simulation.c b/simulation.c
       t@@ -493,15 +493,21 @@ compute_porosity_change(struct simulation *sim)
                        sim->phi_dot[i] = sim->tan_psi[i] * sim->gamma_dot_p[i] * sim->phi[i];
        }
        
       +double
       +kozeny_carman(const double diameter, const double porosity)
       +{
       +        return pow(diameter, 2.0) / 180.0
       +               * pow(porosity, 3.0)
       +               / pow(1.0 - porosity, 2.0);
       +}
       +
        static void
        compute_permeability(struct simulation *sim)
        {
                int i;
        
                for (i = 0; i < sim->nz; ++i)
       -                sim->k[i] = pow(sim->d, 2.0) / 180.0
       -                            * pow(sim->phi[i], 3.0)
       -                            / pow(1.0 - sim->phi[i], 2.0);
       +                sim->k[i] = kozeny_carman(sim->d, sim->phi[i]);
        }
        
        /* NEW FUNCTIONS END */
   DIR diff --git a/simulation.h b/simulation.h
       t@@ -149,6 +149,7 @@ void set_bc_dirichlet(double *a,
                              const double value);
        
        double residual(double new_val, double old_val);
       +double kozeny_carman(const double diameter, const double porosity);
        
        void write_output_file(struct simulation *sim, const int normalize);
        void print_output(struct simulation *sim, FILE *fp, const int normalize);