Introduction
Introduction Statistics Contact Development Disclaimer Help
tfix many grain inconsitencies - granular - granular dynamics simulation
git clone git://src.adamsgaard.dk/granular
Log
Files
Refs
README
LICENSE
---
commit a2970453f73bbaedddd1e48e427c1825b67fe990
parent eaad1100200c4187905bcab135b121fa10b9d75e
Author: Anders Damsgaard <[email protected]>
Date: Thu, 18 Mar 2021 07:20:01 +0100
fix many grain inconsitencies
Diffstat:
M grain.c | 47 ++++++++++++++++-------------…
M grain.h | 2 ++
2 files changed, 27 insertions(+), 22 deletions(-)
---
diff --git a/grain.c b/grain.c
t@@ -32,13 +32,15 @@ grain_defaults(struct grain *g)
g->poissons_ratio = 0.2;
g->friction_coeff = 0.4;
g->tensile_strength = 1e8;
+ g->shear_strength = 1e8;
+ g->fracture_toughness = 1e8;
g->ncontacts = 0;
g->thermal_energy = 0.0;
g->color = 0;
}
static void
-print_padded_nd_double(FILE *stream, double *arr)
+print_padded_nd_double(FILE *stream, const double *arr)
{
size_t i;
t@@ -50,13 +52,13 @@ print_padded_nd_double(FILE *stream, double *arr)
}
static void
-print_padded_nd_int(FILE *stream, size_t *arr)
+print_padded_nd_int(FILE *stream, const size_t *arr)
{
size_t i;
for (i = 0; i < 3; i++)
if (i < nd)
- fprintf(stream, "%d\t", arr[i]);
+ fprintf(stream, "%ld\t", arr[i]);
else
fprintf(stream, "0.0\t");
}
t@@ -64,9 +66,7 @@ print_padded_nd_int(FILE *stream, size_t *arr)
void
print_grain(FILE *stream, const struct grain *g)
{
- size_t i;
-
- fprintf(stream, "%d\t", g->radius);
+ fprintf(stream, "%.17g\t", g->radius);
print_padded_nd_double(stream, g->pos);
print_padded_nd_double(stream, g->vel);
print_padded_nd_double(stream, g->acc);
t@@ -78,26 +78,26 @@ print_grain(FILE *stream, const struct grain *g)
print_padded_nd_double(stream, g->disp);
print_padded_nd_double(stream, g->forceext);
fprintf(stream, "%.17g\t", g->density);
- fprintf(stream, "%d\t", g->fixed);
- fprintf(stream, "%d\t", g->rotating);
- fprintf(stream, "%d\t", g->enabled);
+ fprintf(stream, "%ld\t", g->fixed);
+ fprintf(stream, "%ld\t", g->rotating);
+ fprintf(stream, "%ld\t", g->enabled);
fprintf(stream, "%.17g\t", g->youngs_modulus);
fprintf(stream, "%.17g\t", g->poissons_ratio);
- fprintf(stream, "%.17g\t", g->friction_coefficient);
+ fprintf(stream, "%.17g\t", g->friction_coeff);
fprintf(stream, "%.17g\t", g->tensile_strength);
fprintf(stream, "%.17g\t", g->shear_strength);
fprintf(stream, "%.17g\t", g->fracture_toughness);
- print_padded_nd_int(stream, g->grid_position);
- fprintf(stream, "%d\t", g->ncontacts);
- fprintf(stream, "%.17g\t", g->granular_stress);
+ print_padded_nd_int(stream, g->gridpos);
+ fprintf(stream, "%ld\t", g->ncontacts);
+ print_padded_nd_double(stream, g->contact_stress);
fprintf(stream, "%.17g\t", g->thermal_energy);
- fprintf(stream, "%d\n", g->color);
+ fprintf(stream, "%ld\n", g->color);
}
int
check_grain_values(const struct grain *g)
{
- int i;
+ size_t i;
int status = 0;
check_float_positive("grain->radius", g->radius, &status);
t@@ -124,23 +124,26 @@ check_grain_values(const struct grain *g)
g->youngs_modulus,
&status);
check_float_non_negative("grain->poissons_ratio",
- g->youngs_modulus,
+ g->poissons_ratio,
&status);
check_float_non_negative("grain->friction_coeff",
- g->youngs_modulus,
+ g->friction_coeff,
&status);
check_float_non_negative("grain->tensile_strength",
- g->youngs_modulus,
+ g->tensile_strength,
+ &status);
+ check_float_non_negative("grain->shear_strength",
+ g->shear_strength,
+ &status);
+ check_float_non_negative("grain->fracture_toughness",
+ g->fracture_toughness,
&status);
for (i = 0; i < nd; i++)
- if (g->gridpos[i] < 0)
+ if (g->gridpos[i] > 1)
warn_parameter_value("grain->gridpos is not 0 or 1",
(double)g->gr…
- if (g->ncontacts[i] < 0)
- warn_parameter_value("grain->ncontacts is not 0 or 1",
- (double)g->ncontacts[…
check_float_non_negative("grain->thermal_energy", g->thermal_energy, &…
return status;
diff --git a/grain.h b/grain.h
t@@ -24,6 +24,8 @@ struct grain {
double poissons_ratio;
double friction_coeff;
double tensile_strength;
+ double shear_strength;
+ double fracture_toughness;
size_t gridpos[ND];
size_t ncontacts;
double contact_stress[ND];
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.