textend elasticity testing - slidergrid - grid of elastic sliders on a frictional surface (HTM) git clone git://src.adamsgaard.dk/slidergrid (DIR) Log (DIR) Files (DIR) Refs (DIR) README (DIR) LICENSE --- (DIR) commit 56d818be2914d596c94e0b4968a04f37ca20a759 (DIR) parent d5fcc2684a0bcfda20f1d29e2aab1b830c0190d7 (HTM) Author: Anders Damsgaard <anders.damsgaard@geo.au.dk> Date: Tue, 5 Apr 2016 13:55:53 -0700 extend elasticity testing Diffstat: M Makefile | 10 ++++++++-- M slidergrid/main.c | 13 ++++++------- M slidergrid/slider.c | 24 ++++++++++++++++++------ M slidergrid/slider.h | 3 ++- M tests/Makefile | 3 +++ M tests/elasticity/Makefile | 7 ++++--- M tests/elasticity/normal.c | 10 +++++----- 7 files changed, 46 insertions(+), 24 deletions(-) --- (DIR) diff --git a/Makefile b/Makefile t@@ -10,12 +10,17 @@ ESSENTIALOBJS=$(SRCFOLDER)/main.o \ $(SRCFOLDER)/simulation.o BIN=example -default: example tests +default: example tests run-example + +run-example: $(BIN) + ./$(BIN) + ./postprocessing.py --plot-kinetic-energy $(BIN)-output + @#./postprocessing.py --plot-sliders $(BIN)-output example: example.o $(ESSENTIALOBJS) $(CC) $(LDLIBS) $^ -o $@ -tests: +test: make -C tests/ debug: $(BIN) t@@ -26,3 +31,4 @@ clean: @$(RM) -r $(BIN)-output @$(RM) *.o @$(RM) $(SRCFOLDER)/*.o + @make -C tests clean (DIR) diff --git a/slidergrid/main.c b/slidergrid/main.c t@@ -217,12 +217,10 @@ int main(int argc, char** argv) time_since_file = 0.0; } - if (verbose) { - if (time_since_status > sim.dt*100. || - time_since_status >= sim.file_interval) { - print_status(sim); - time_since_status = 0.; - } + if (verbose && time_since_status > sim.dt*100. || + time_since_status >= sim.file_interval) { + print_status(sim); + time_since_status = 0.; } sim.iteration++; t@@ -230,7 +228,8 @@ int main(int argc, char** argv) time_since_file += sim.dt; } - print_status(sim); + if (verbose) + print_status(sim); puts(""); // end program (DIR) diff --git a/slidergrid/slider.c b/slidergrid/slider.c t@@ -43,7 +43,8 @@ void initialize_slider_values(slider* s) s->neighbor_distance[i] = zeroes_float3(); s->neighbor_relative_distance_displacement[i] = zeroes_float3(); s->neighbor_relative_distance_velocity[i] = zeroes_float3(); - s->neighbor_tangential_displacment[i] = zeroes_float3(); + s->neighbor_relative_tangential_displacement[i] = zeroes_float3(); + s->neighbor_relative_tangential_velocity[i] = zeroes_float3(); } } t@@ -213,7 +214,7 @@ void bond_normal_deformation(slider* s1, const slider s2, tangential_displacement0_uncor = zeroes_float3(); else tangential_displacement0_uncor = - s1->neighbor_tangential_displacment[idx_neighbor]; + s1->neighbor_relative_tangential_displacement[idx_neighbor]; // Correct previous tangential displacement vector if the contact plane is // reoriented t@@ -227,12 +228,23 @@ void bond_normal_deformation(slider* s1, const slider s2, const Float3 tangential_displacement_future = add_float3(tangential_displacement0, dtangential_displacement); - // determine dtangential_displacement by central differences + // get current tangential displacement from central differences + const Float3 tangential_displacement = divide_float3_scalar( + subtract_float3(tangential_displacement_future, + tangential_displacement0), 2.0); + // total relative displacement in inter-slider distance + if (iteration == 0) + s1->neighbor_relative_tangential_displacement[idx_neighbor] = + tangential_displacement; + else + s1->neighbor_relative_distance_displacement[idx_neighbor] = + add_float3( + s1->neighbor_relative_tangential_displacement[idx_neighbor], + dtangential_displacement); - // use dtangential_displacement for elastic response on shear motion - - // use vel_t for viscous response on shear motion + // total relative displacement in inter-slider distance + s1->neighbor_relative_tangential_velocity[idx_neighbor] = vel_t; } (DIR) diff --git a/slidergrid/slider.h b/slidergrid/slider.h t@@ -53,7 +53,8 @@ typedef struct { Float3 neighbor_distance[MAX_NEIGHBORS]; Float3 neighbor_relative_distance_displacement[MAX_NEIGHBORS]; Float3 neighbor_relative_distance_velocity[MAX_NEIGHBORS]; - Float3 neighbor_tangential_displacment[MAX_NEIGHBORS]; + Float3 neighbor_relative_tangential_displacement[MAX_NEIGHBORS]; + Float3 neighbor_relative_tangential_velocity[MAX_NEIGHBORS]; } slider; (DIR) diff --git a/tests/Makefile b/tests/Makefile t@@ -1,2 +1,5 @@ all: make -C elasticity + +clean: + make -C elasticity clean (DIR) diff --git a/tests/elasticity/Makefile b/tests/elasticity/Makefile t@@ -2,7 +2,8 @@ CC=gcc #CFLAGS=-Wall -O3 -march=native CFLAGS=-Wall -g -pg LDLIBS=-lm -SRCFOLDER=../../slidergrid +ROOT=../../ +SRCFOLDER=$(ROOT)/slidergrid ESSENTIALOBJS=$(SRCFOLDER)/main.o \ $(SRCFOLDER)/slider.o \ $(SRCFOLDER)/grid.o \ t@@ -14,8 +15,8 @@ default: run-test run-test: normal ./$< --verbose - @#python postprocessing.py --plot-sliders $<-output - @#rsync -rav test-output /var/www/html/ + python $(ROOT)postprocessing.py --plot-kinetic-energy $<-output + python $(ROOT)postprocessing.py --plot-sliders $<-output normal: normal.o $(ESSENTIALOBJS) $(CC) $(LDLIBS) $^ -o $@ (DIR) diff --git a/tests/elasticity/normal.c b/tests/elasticity/normal.c t@@ -9,11 +9,11 @@ simulation setup_simulation() { // create empty simulation structure with default values simulation sim = create_simulation(); - sim.id = "test"; + sim.id = "normal"; // initialize grid of sliders - //int nx = 10; - int nx = 2; + int nx = 10; + //int nx = 2; int ny = 1; int nz = 1; sim.N = nx*ny*nz; t@@ -39,8 +39,8 @@ simulation setup_simulation() // set temporal parameters sim.time = 0.0; - sim.time_end = 10.0; - sim.file_interval = 0.1; + sim.time_end = 1000.0; + sim.file_interval = 1.0; return sim; }