cngf-pf

continuum model for granular flows with pore-pressure dynamics (renamed from 1d_fd_simple_shear)
git clone git://src.adamsgaard.dk/cngf-pf # fast
git clone https://src.adamsgaard.dk/cngf-pf.git # slow
Log | Files | Refs | README | LICENSE Back to index

commit ecc6fe2a7904b99027b257d50282d0c2ea651329
parent 42819a7e94dc64e493361f2a3f7791b8e679d29f
Author: Anders Damsgaard <anders@adamsgaard.dk>
Date:   Fri,  3 Jul 2026 12:55:21 +0200

refactor(simulation): share column defaults between init_sim and reset_column

Diffstat:
Msimulation.c | 18++++++++++++------
Msimulation.h | 8+++++---
2 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/simulation.c b/simulation.c @@ -29,6 +29,11 @@ static struct solver_stats g_stats = {0, 0, 0, 0, 0}; /* lower limit for effective normal stress sigma_n_eff for granular solver */ #define SIGMA_N_EFF_MIN 1e-1 +/* defaults shared by init_sim() and reset_column() */ +#define DEFAULT_MU_WALL 0.45 +#define DEFAULT_PHI 0.25 /* Damsgaard et al 2013 */ +#define DEFAULT_K 1.9e-15 /* Damsgaard et al 2015 */ + /* Simulation settings */ void init_sim(struct simulation *sim) { int ret; @@ -39,7 +44,7 @@ void init_sim(struct simulation *sim) { sim->G = 9.81; sim->P_wall = 120e3; - sim->mu_wall = 0.45; + sim->mu_wall = DEFAULT_MU_WALL; sim->v_x_bot = 0.0; sim->v_x_fix = NAN; sim->v_x_limit = NAN; @@ -51,7 +56,7 @@ void init_sim(struct simulation *sim) { /* sim->C = 0.0; */ /* Henann and Kamrin 2016 */ sim->mu_s = tan(DEG2RAD(22.0)); /* Damsgaard et al 2013 */ sim->C = 0.0; /* Damsgaard et al 2013 */ - sim->phi = initval(0.25, 1); + sim->phi = initval(DEFAULT_PHI, 1); sim->d = 0.04; /* Damsgaard et al 2013 */ sim->transient = 0; sim->phi_min = 0.20; @@ -98,7 +103,7 @@ void init_sim(struct simulation *sim) { sim->alpha = 1e-8; sim->D = -1.0; /* disabled when negative */ - sim->k = initval(1.9e-15, 1); /* Damsgaard et al 2015 */ + sim->k = initval(DEFAULT_K, 1); /* Iverson et al 1994: Storglaciaren */ /* sim->k = initval(1.3e-14, 1); */ @@ -233,14 +238,15 @@ void reset_column(struct simulation *sim) { /* restore init_sim() defaults for porosity and permeability */ for (i = 0; i < nz; ++i) { - sim->phi[i] = 0.25; /* init_sim default */ - sim->k[i] = 1.9e-15; /* init_sim default */ + sim->phi[i] = DEFAULT_PHI; + sim->k[i] = DEFAULT_K; } /* reset per-column scalars to init_sim() defaults */ sim->t = 0.0; - sim->mu_wall = 0.45; + sim->mu_wall = DEFAULT_MU_WALL; sim->v_x_bot = 0.0; + sim->n_file = 0; } static void warn_parameter_value(const char message[], const double value, diff --git a/simulation.h b/simulation.h @@ -148,9 +148,11 @@ int prepare_arrays(struct simulation *sim); void free_arrays(struct simulation *sim); -/* Reset per-column state (stresses, velocities, fluidity, porosity, time) - * without reallocating; geometry (nz, L_z, z, dz) and workspaces are kept. - * For reuse of one prepared simulation across many independent columns. */ +/* Reset per-column state (stresses, velocities, fluidity, time, output-file + * counter) without reallocating; geometry (nz, L_z, z, dz), parameters, and + * solver workspaces are kept. phi and k are restored to the init_sim() + * defaults; set per-column values after the reset. For reuse of one prepared + * simulation across many independent columns. */ void reset_column(struct simulation *sim); /* returns: 0 ok, 1 one or more parameters are invalid */