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;
       +}