tgrain.c: add grain reading function - granular - granular dynamics simulation
 (HTM) git clone git://src.adamsgaard.dk/granular
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit a501b9c908adc5dbd1ca45be5f20bed5c8d04e4c
 (DIR) parent 828052591c1463144a4df91161a1c9a1749eefbe
 (HTM) Author: Anders Damsgaard <anders@adamsgaard.dk>
       Date:   Thu, 18 Mar 2021 11:17:35 +0100
       
       grain.c: add grain reading function
       
       Diffstat:
         M grain.c                             |      65 +++++++++++++++++++++++++++----
       
       1 file changed, 58 insertions(+), 7 deletions(-)
       ---
 (DIR) diff --git a/grain.c b/grain.c
       t@@ -71,7 +71,7 @@ print_padded_nd_int(FILE *stream, const size_t *arr)
                
                for (i = 0; i < ND; i++)
                        if (i < ND)
       -                        fprintf(stream, "%ld\t", arr[i]);
       +                        fprintf(stream, "%zu\t", arr[i]);
                        else
                                fprintf(stream, "0.0\t");
        }
       t@@ -91,9 +91,9 @@ grain_print(FILE *stream, const struct grain *g)
                print_padded_nd_double(stream, g->disp);
                print_padded_nd_double(stream, g->forceext);
                fprintf(stream, "%.*g\t", FLOATPREC, g->density);
       -        fprintf(stream, "%ld\t", g->fixed);
       -        fprintf(stream, "%ld\t", g->rotating);
       -        fprintf(stream, "%ld\t", g->enabled);
       +        fprintf(stream, "%zu\t", g->fixed);
       +        fprintf(stream, "%zu\t", g->rotating);
       +        fprintf(stream, "%zu\t", g->enabled);
                fprintf(stream, "%.*g\t", FLOATPREC, g->youngs_modulus);
                fprintf(stream, "%.*g\t", FLOATPREC, g->poissons_ratio);
                fprintf(stream, "%.*g\t", FLOATPREC, g->friction_coeff);
       t@@ -101,10 +101,10 @@ grain_print(FILE *stream, const struct grain *g)
                fprintf(stream, "%.*g\t", FLOATPREC, g->shear_strength);
                fprintf(stream, "%.*g\t", FLOATPREC, g->fracture_toughness);
                print_padded_nd_int(stream, g->gridpos);
       -        fprintf(stream, "%ld\t", g->ncontacts);
       +        fprintf(stream, "%zu\t", g->ncontacts);
                print_padded_nd_double(stream, g->contact_stress);
                fprintf(stream, "%.*g\t", FLOATPREC, g->thermal_energy);
       -        fprintf(stream, "%ld\n", g->color);
       +        fprintf(stream, "%zu\n", g->color);
        }
        
        struct grain *
       t@@ -112,7 +112,58 @@ grain_read(char *line)
        {
                struct grain *g = malloc(sizeof(*g));
        
       -        if (sscanf(line, "%lg\t", &g->radius) != 1)
       +        if (sscanf(line, "%lg\t"           /* radius */
       +                         "%lg\t%lg\t%lg\t" /* pos */
       +                         "%lg\t%lg\t%lg\t" /* vel */
       +                         "%lg\t%lg\t%lg\t" /* acc */
       +                         "%lg\t%lg\t%lg\t" /* force */
       +                         "%lg\t%lg\t%lg\t" /* angpos */
       +                         "%lg\t%lg\t%lg\t" /* angvel */
       +                         "%lg\t%lg\t%lg\t" /* angacc */
       +                         "%lg\t%lg\t%lg\t" /* torque */
       +                         "%lg\t%lg\t%lg\t" /* disp */
       +                         "%lg\t%lg\t%lg\t" /* forceext */
       +                         "%lg\t"           /* density */
       +                         "%zu\t"           /* fixed */
       +                         "%zu\t"           /* rotating */
       +                         "%zu\t"           /* enabled */
       +                         "%lg\t"           /* youngs_modulus */
       +                         "%lg\t"           /* poissons_ratio */
       +                         "%lg\t"           /* friction_coeff */
       +                         "%lg\t"           /* tensile_strength */
       +                         "%lg\t"           /* shear_strength */
       +                         "%lg\t"           /* fracture_toughness */
       +                         "%zu\t%zu\t%zu\t" /* gridpos */
       +                         "%zu\t"           /* ncontacts */
       +                         "%lg\t%lg\t%lg\t" /* contact_stress */
       +                         "%lg\t"           /* thermal_energy */
       +                         "%zu\n",          /* color */
       +                                         &g->radius,
       +                                         &g->pos[0], &g->pos[1], &g->pos[2], 
       +                                         &g->vel[0], &g->vel[1], &g->vel[2], 
       +                                         &g->acc[0], &g->acc[1], &g->acc[2], 
       +                                         &g->force[0], &g->force[1], &g->force[2], 
       +                                         &g->angpos[0], &g->angpos[1], &g->angpos[2], 
       +                                         &g->angvel[0], &g->angvel[1], &g->angvel[2], 
       +                                         &g->angacc[0], &g->angacc[1], &g->angacc[2], 
       +                                         &g->torque[0], &g->torque[1], &g->torque[2], 
       +                                         &g->disp[0], &g->disp[1], &g->disp[2], 
       +                                         &g->forceext[0], &g->forceext[1], &g->forceext[2], 
       +                                         &g->density,
       +                                         &g->fixed,
       +                                         &g->rotating,
       +                                         &g->enabled,
       +                                         &g->youngs_modulus,
       +                                         &g->poissons_ratio,
       +                                         &g->friction_coeff,
       +                                         &g->tensile_strength,
       +                                         &g->shear_strength,
       +                                         &g->fracture_toughness,
       +                                         &g->gridpos[0], &g->gridpos[1], &g->gridpos[2], 
       +                                         &g->ncontacts,
       +                                         &g->contact_stress[0], &g->contact_stress[1], &g->contact_stress[2], 
       +                                         &g->thermal_energy,
       +                                         &g->color) != 52)
                        errx(1, "%s: could not read line: %s", __func__, line);
        
                if (grain_check_values(g))