tadd granulargrain program to generate a single grain with default values - gra… | |
git clone git://src.adamsgaard.dk/granular | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 38ee3e966946012ebde62181c49022ba0103853f | |
parent cce359bcaf94938276bdd3e28515f088b2ceef5f | |
Author: Anders Damsgaard <[email protected]> | |
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(-) | |
--- | |
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}" | |
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 [email protected] | |
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; | |
+} |