tadd granulargrain program to generate a single grain with default values - granular - granular dynamics simulation
(HTM) git clone git://src.adamsgaard.dk/granular
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 38ee3e966946012ebde62181c49022ba0103853f
(DIR) parent cce359bcaf94938276bdd3e28515f088b2ceef5f
(HTM) Author: Anders Damsgaard <anders@adamsgaard.dk>
Date: Thu, 22 Apr 2021 19:08:24 +0200
add granulargrain program to generate a single grain with default values
Diffstat:
M Makefile | 12 ++++++++----
A granulargrain.1 | 81 ++++++++++++++++++++++++++++++
A granulargrain.c | 62 +++++++++++++++++++++++++++++++
3 files changed, 151 insertions(+), 4 deletions(-)
---
(DIR) diff --git a/Makefile b/Makefile
t@@ -11,6 +11,7 @@ DOCPREFIX = ${PREFIX}/share/doc/${NAME}
BIN = \
granular\
granular2vtu\
+ granulargrain\
granularpacking
SCRIPTS = \
granular2pdf
t@@ -61,14 +62,17 @@ ${OBJ}: ${HDR}
.c.o:
${CC} ${GRANULAR_CFLAGS} ${GRANULAR_CPPFLAGS} -o $@ -c $<
-granularpacking: granularpacking.o ${OBJ}
- ${CC} granularpacking.o ${OBJ} -o $@ ${GRANULAR_LDFLAGS}
+granular: granular.o ${OBJ}
+ ${CC} granular.o ${OBJ} -o $@ ${GRANULAR_LDFLAGS}
granular2vtu: granular2vtu.o ${OBJ}
${CC} granular2vtu.o ${OBJ} -o $@ ${GRANULAR_LDFLAGS}
-granular: granular.o ${OBJ}
- ${CC} granular.o ${OBJ} -o $@ ${GRANULAR_LDFLAGS}
+granulargrain: granulargrain.o ${OBJ}
+ ${CC} granulargrain.o ${OBJ} -o $@ ${GRANULAR_LDFLAGS}
+
+granularpacking: granularpacking.o ${OBJ}
+ ${CC} granularpacking.o ${OBJ} -o $@ ${GRANULAR_LDFLAGS}
dist:
rm -rf "${NAME}-${VERSION}"
(DIR) diff --git a/granulargrain.1 b/granulargrain.1
t@@ -0,0 +1,81 @@
+.Dd $Mdocdate$
+.Dt GRANULARGRAIN 1
+.Os
+.Sh NAME
+.Nm granulargrain
+.Nd generate a single grain in granular format
+.Sh SYNOPSIS
+.Nm
+.Op Fl d Ar diameter
+.Op Fl h
+.Op Fl u Ar vx
+.Op Fl v Ar vy
+.Op Fl w Ar vz
+.Op Fl x Ar x
+.Op Fl y Ar y
+.Op Fl z Ar z
+.Sh DESCRIPTION
+The
+.Nm
+program generates a single grain with default properties, and outputs
+the grain data in
+.Xr granular 5
+format.
+.Pp
+The options are as wollows:
+.Bl -tag -width Ds
+.It Fl d Ar diameter
+Specify grain diameter (default 1.0).
+.It Fl h
+Show help text.
+.It Fl u Ar vx
+Set x velocity to
+.Ar vx
+[m/s].
+.It Fl v Ar vy
+Set y velocity to
+.Ar vy
+[m/s].
+.It Fl w Ar vz
+Set z velocity to
+.Ar vz
+[m/s].
+.It Fl x Ar x
+Place grain at
+.Ar x
+position [m].
+.It Fl y Ar y
+Place grain at
+.Ar y
+position [m].
+.It Fl z Ar z
+Place grain at
+.Ar z
+position [m].
+.El
+.Sh EXIT STATUS
+.Nm
+exits 0 on success, and >0 if a runtime error occurs:
+.Pp
+.Bl -tag -width Ds -compact
+.It 0
+successful exit
+.It 1
+unspecified error
+.It 2
+.Xr pledge 2
+error
+.El
+.Sh EXAMPLES
+.Dl $ (granularpacking -u 1.0; granularpacking -x 1.0) \e\\
+.Dl | granular -e 2.0 -I 0.1 collision
+.Dl $ for f in collision.grain.*.tsv; do \e\\
+.Dl granular2vtu <"$f" >"${f%.tsv}.vtu"; \e\\
+.Dl done
+.Sh SEE ALSO
+.Xr granular2vtu 1 ,
+.Xr granularpacking 1 ,
+.Xr granular 1 ,
+.Xr granular 5
+.Sh AUTHORS
+.An Anders Damsgaard Aq Mt anders@adamsgaard.dk
(DIR) diff --git a/granulargrain.c b/granulargrain.c
t@@ -0,0 +1,62 @@
+#include <stdlib.h>
+#include <err.h>
+#include "granular.h"
+#include "arg.h"
+
+char *argv0;
+
+static void
+usage(void)
+{
+ errx(1, "usage: %s "
+ "[-d diameter] "
+ "[-h] "
+ "[-u vx] "
+ "[-v vy] "
+ "[-w vz] "
+ "[-x x] "
+ "[-y y] "
+ "[-z z]", argv0);
+}
+
+int
+main(int argc, char *argv[])
+{
+ struct grain g = grain_new();
+
+ ARGBEGIN {
+ case 'd':
+ g.diameter = atof(EARGF(usage()));
+ break;
+ case 'h':
+ usage();
+ break;
+ case 'u':
+ g.vel[0] = atoi(EARGF(usage()));
+ break;
+ case 'v':
+ g.vel[1] = atoi(EARGF(usage()));
+ break;
+ case 'w':
+ g.vel[2] = atoi(EARGF(usage()));
+ break;
+ case 'x':
+ g.pos[0] = atoi(EARGF(usage()));
+ break;
+ case 'y':
+ g.pos[1] = atoi(EARGF(usage()));
+ break;
+ case 'z':
+ g.pos[2] = atoi(EARGF(usage()));
+ break;
+ default:
+ usage();
+ } ARGEND;
+
+ if (argc > 1)
+ usage();
+
+ grain_print(stdout, &g);
+
+ return 0;
+}