summaryrefslogtreecommitdiff
path: root/src/fracture.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fracture.c')
-rw-r--r--src/fracture.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/src/fracture.c b/src/fracture.c
index 11e6efd..7ee82fb 100644
--- a/src/fracture.c
+++ b/src/fracture.c
@@ -8,7 +8,7 @@ int main(int argc, char *argv[]) {
// defining variables to be (potentially) set by command line flags
uint8_t filename_len;
uint32_t N;
- uint_t L;
+ uint_t L, refactor_every;
double beta, inf, cutoff, crack_len;
bool crack_growth_crit, save_data, save_cluster_dist, use_voltage_boundaries, use_dual, save_network,
save_crit_stress, save_stress_field, save_voltage_field, save_toughness, save_energy, save_conductivity,
@@ -25,6 +25,7 @@ int main(int argc, char *argv[]) {
// set default values
N = 100;
+ refactor_every = UINT_MAX;
L = 16;
crack_len = 0.;
beta = .3;
@@ -45,7 +46,7 @@ int main(int argc, char *argv[]) {
save_damage_field = false;
save_conductivity = false;
save_toughness = false;
- save_energy = false;
+ save_energy = true;
save_threshold = false;
@@ -58,11 +59,14 @@ int main(int argc, char *argv[]) {
// get commandline options
- while ((opt = getopt(argc, argv, "n:L:b:B:q:dVcoNsCrtDSvel:gTE")) != -1) {
+ while ((opt = getopt(argc, argv, "n:L:b:B:q:dVcoNsCrtDSvel:gTER:")) != -1) {
switch (opt) {
case 'n':
N = atoi(optarg);
break;
+ case 'R':
+ refactor_every = atoi(optarg);
+ break;
case 'L':
L = atoi(optarg);
break;
@@ -303,7 +307,7 @@ int main(int argc, char *argv[]) {
graph_t *g = graph_create(lattice, boundary, L, use_dual, &c);
net_t *net = net_create(g, inf, beta, crack_len, use_voltage_boundaries, &c);
net_t *tmp_net = net_copy(net, &c);
- data_t *data = net_fracture(tmp_net, &c, cutoff);
+ data_t *data = net_fracture(tmp_net, &c, cutoff, refactor_every);
net_free(tmp_net, &c);
uint_t max_pos = 0;
@@ -357,7 +361,8 @@ int main(int argc, char *argv[]) {
break;
}
- break_edge(net, next_broken, &c);
+ bool refactor = ((j + 1) % refactor_every) == 0;
+ break_edge(net, next_broken, &c, refactor);
double val = data->extern_field[j];
if (save_cluster_dist) {