|
| | particle_wall.parser = argparse.ArgumentParser(description='Setup and run PeriDEM simulation') |
| |
| | particle_wall.default |
| |
| | particle_wall.type |
| |
| | particle_wall.help |
| |
| | particle_wall.args = parser.parse_args() |
| |
| str | particle_wall.fpath = './' |
| |
| list | particle_wall.center = [0., 0., 0.] |
| | origin (this center is used to discretize the particle and later discretization is translated and rotated appropriately)
|
| |
| list | particle_wall.g = [0., -10., 0.] |
| | gravity
|
| |
| float | particle_wall.R = 0.001 |
| | radius of p
|
| |
| float | particle_wall.h = R / 8. |
| | mesh size (use smaller radius to decide)
|
| |
| int | particle_wall.horizon = 3. * h |
| | peridynamics horizon (typically taken as 2 to 4 times the mesh size)
|
| |
| list | particle_wall.wall_rect = [0., 0., 0., 2.*R, horizon, 0.] |
| | wall geometry (corner point coordinates)
|
| |
| float | particle_wall.d = 0.001 |
| | initial distance between particle and wall
|
| |
| float | particle_wall.delta = d - horizon |
| |
| list | particle_wall.v0 = [0, -np.sqrt(2. * np.abs(g[1]) * delta), 0.] |
| |
| float | particle_wall.T = 0.1 |
| | final time and time step
|
| |
| int | particle_wall.N_steps = 2000000 |
| |
| float | particle_wall.dt = T / N_steps |
| |
| int | particle_wall.N_out = N_steps / 100 |
| |
| float | particle_wall.nu1 = 0.25 |
| | material for zone 1 (in this case zone 1 has just one particle)
|
| |
| int | particle_wall.rho1 = 1200. |
| |
| float | particle_wall.K1 = 2.16e+7 |
| |
| | particle_wall.E1 = get_E(K1, nu1) |
| |
| | particle_wall.G1 = get_G(E1, nu1) |
| |
| int | particle_wall.Gc1 = 50. |
| |
| float | particle_wall.nu2 = 0.25 |
| |
| int | particle_wall.rho2 = 1200. |
| |
| float | particle_wall.K2 = 2.16e+7 |
| |
| | particle_wall.E2 = get_E(K2, nu2) |
| |
| | particle_wall.G2 = get_G(E2, nu2) |
| |
| int | particle_wall.Gc2 = 50. |
| |
| float | particle_wall.R_contact_factor = 0.95 |
| | contact radius is taken as R_contact_factor * h_{min} where h_{min} is the minimum mesh size over all meshes (it is computed at the begining of simulation) we only specify the R_contact_factor
|
| |
| int | particle_wall.Kn_11 = 18. * get_eff_k(K1, K1) / (np.pi * np.power(horizon, 5)) |
| | define Kn parameter for normal contact force (see PeriDEM paper for more details)
|
| |
| int | particle_wall.Kn_22 = 18. * get_eff_k(K2, K2) / (np.pi * np.power(horizon, 5)) |
| |
| int | particle_wall.Kn_12 = 18. * get_eff_k(K1, K2) / (np.pi * np.power(horizon, 5)) |
| |
| float | particle_wall.beta_n_eps = 0.9 |
| | define beta_n parameter for normal damping
|
| |
| int | particle_wall.beta_n_factor = 5000. |
| |
| bool | particle_wall.damping_active = True |
| |
| float | particle_wall.friction_coeff = 0.5 |
| | friction coefficient
|
| |
| bool | particle_wall.friction_active = False |
| |
| list | particle_wall.centers = [] |
| |
| | particle_wall.inpf = open(fpath + 'input.yaml','w') |
| | file below creates .geo file (see util.py)
|
| |
| list | particle_wall.contain_params = [0., 0., 0., 2.*R, 4.*R, 0.] |
| | provide model specific details
|
| |
| list | particle_wall.p_geom = [R, center[0], center[1], center[2]] |
| | zone info we have two zones
|
| |
| str | particle_wall.cmd = "gmsh p.geo -2 &> /dev/null" |
| | Neighbor info at present, this block has no impact in the simulation.
|
| |
| | particle_wall.process = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE) |
| |
| | particle_wall.output |
| |
| | particle_wall.error |
| |