Introduction
Introduction Statistics Contact Development Disclaimer Help
tadd first packing algorithm - granular - granular dynamics simulation
git clone git://src.adamsgaard.dk/granular
Log
Files
Refs
README
LICENSE
---
commit 2411376bd4ea88e2184dce638984407b56208f9a
parent 054a2cc1416d4760f8a25499d5db265877f4d359
Author: Anders Damsgaard <[email protected]>
Date: Thu, 18 Mar 2021 14:33:47 +0100
add first packing algorithm
Diffstat:
A packing.c | 38 +++++++++++++++++++++++++++++…
A packing.h | 19 +++++++++++++++++++
2 files changed, 57 insertions(+), 0 deletions(-)
---
diff --git a/packing.c b/packing.c
t@@ -0,0 +1,38 @@
+#include <err.h>
+#include "util.h"
+#include "granular.h"
+#include "grain.h"
+#include "arrays.h"
+
+struct grain *
+rectangular_packing(size_t n[3],
+ double radius_min, double radius_max,
+ double (*gsd)(double min, double max),
+ double padding_factor,
+ double origo[3])
+{
+ size_t i, j, k, l, ig;
+ struct grain *grains;
+ double dx_padding = radius_max * 2.0 * padding_factor;
+ double dx = radius_max * 2.0 + dx_padding;
+
+ if (!(grains = calloc(n[0] * n[1] * n[2], sizeof(struct grain))))
+ err(1, "%s: grains calloc", __func__);
+
+ for (k = 0; k < n[2]; k++)
+ for (j = 0; j < n[1]; j++)
+ for (i = 0; i < n[0]; i++) {
+ ig = idx3(i, j, k, n[0], n[1]);
+ grain_defaults(&grains[ig]);
+ grains[ig].radius = gsd(radius_min, radius_max…
+ grains[ig].pos[0] = i*dx + 0.5*dx + origo[0];
+ grains[ig].pos[1] = j*dx + 0.5*dx + origo[1];
+ grains[ig].pos[2] = k*dx + 0.5*dx + origo[2];
+ for (l = 0; l < 3; l++)
+ grains[ig].pos[l] +=
+ random_value_uniform(-0.5 * dx…
+ 0.5 * dx_…
+ }
+
+ return grains;
+}
diff --git a/packing.h b/packing.h
t@@ -0,0 +1,19 @@
+#ifndef GRANULAR_PACKING_
+#define GRANULAR_PACKING_
+
+#include "grain.h"
+#include "simulation.h"
+
+struct grain * rectangular_packing(size_t n[3],
+ double radius_min, double radius_max,
+ double (*gsd)(double min, double max),
+ double padd…
+ double *ori…
+
+struct grain ** triangular_packing_2d(int nx, int ny,
+ double radius_min, double radius_max);
+
+struct grain ** irregular_packing_2d(int nx, int ny,
+ double radius_min, double radius_max);
+
+#endif
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.