library(duvernaygeomechmodel)
This notebook conducts exploratory data analysis on the experimental data.
Brazilian tests suggest that the carbonate facies has a higher tensile strength than the shale facies. But this is statistically rejected by a Welsh's t-test.
brazilian = read_csv('../data/brazilian_tests.csv') ggplot(brazilian) + geom_boxplot(aes(x = group, y = tensile_strength, colour = group)) + geom_jitter(aes(x = group, y = tensile_strength, colour = group), width = 0.25) + facet_grid(. ~ orientation) + labs(y = 'Tensile Strength (MPa)', x = '', title = '') + scale_color_manual(name = '', values = c('blue','dark green')) + theme(legend.position = "none") + ggsave('../output/brazilian_results.pdf', height = 6, width = 6) + ggsave('../output/brazilian_results.png', height = 6, width = 6) brazilian %>% group_by(group) %>% summarize(n = n(), mean = mean(tensile_strength), sd = sd(tensile_strength)) t.test(tensile_strength ~ group, data = brazilian)
The UCS results show significant strength anisotropy in both carbonate and shale formations.
ucs = read_csv('../data/static_tests.csv') %>% filter(confining_pressure < 1) ggplot(ucs) + geom_boxplot(aes(x = group, y = peak_stress_dev, colour = group)) + geom_jitter(aes(x = group, y = peak_stress_dev, colour = group), width = 0.25) + facet_grid(. ~ orientation) + labs(y = 'Unconfined Compressive Strength (MPa)', x = '', title = '') + scale_color_manual(name = '', values = c('blue','dark green')) + theme(legend.position = "none") + ggsave('../output/ucs_results.pdf', height = 6, width = 6) + ggsave('../output/ucs_results.png', height = 6, width = 6) ucs %>% group_by(group, orientation) %>% summarize(n = n(), mean = mean(peak_stress_dev), sd = sd(peak_stress_dev)) # are vertical shale samples stronger than horizontal ones? t.test( peak_stress_dev ~ orientation, data = ucs %>% filter(group == 'shale', orientation != 'oblique') ) # are oblique samples the weakest? t.test( peak_stress_dev ~ orientation, data = ucs %>% filter(group == 'shale', orientation != 'vertical') ) # are vertical carbonate samples stronger than horizontal ones? t.test( peak_stress_dev ~ orientation, data = ucs %>% filter(group == 'carbonate', orientation != 'oblique') )
triaxial = read_csv('../data/static_tests.csv') %>% filter(confining_pressure > 0) p1 = ggplot(triaxial) + geom_histogram(aes(x = youngs_modulus, fill = orientation, y = ..ncount..), bins = 50) + facet_grid(. ~ group) + coord_flip() + labs(y = 'Normalized Count', x = 'Young\'s Modulus (GPa)', title = '(a) Young\'s Modulus') + scale_color_manual(name = '', values = c('blue','dark green')) + theme(legend.position = "bottom") p2 = ggplot(triaxial) + geom_histogram(aes(x = poisson_ratio, fill = orientation, y = ..ncount..), bins = 50) + facet_grid(. ~ group) + coord_flip() + labs(y = 'Normalized Count', x = 'Poisson\'s Ratio', title = '(b) Poisson\'s Ratio') + scale_color_manual(name = '', values = c('blue','dark green')) + theme(legend.position = "bottom") p3 = ggplot(triaxial) + geom_boxplot(aes(x = group, y = bulk_density, colour = group)) + geom_jitter(aes(x = group, y = bulk_density, colour = group), width = 0.25) + ylim(2.4,2.8) + labs(y = 'Bulk Density (g/cc)', x = '', title = '(c) Bulk Density') + scale_color_manual(name = '', values = c('blue','dark green')) + theme(legend.position = "bottom") grobs = arrangeGrob(grobs=list(p1,p2,p3), widths = unit(c(4.5,4.5,3),"in"), heights = unit(c(6),"in")) ggsave("../output/triaxial_results.pdf", grobs, width = 12, height = 6) ggsave("../output/triaxial_results.png", grobs, width = 12, height = 6, dpi=600) # are carbonate samples stiffer than shales? t.test( youngs_modulus ~ group, data = triaxial %>% filter(orientation == 'vertical') ) t.test( youngs_modulus ~ group, data = triaxial %>% filter(orientation == 'horizontal') ) # What would the difference and RMSE of YM and PR be at a standardized confining pressure? ym_carb <- lm(youngs_modulus ~ confining_pressure, data = triaxial %>% filter(group == 'carbonate')) predict(ym_carb, newdata = data.frame(confining_pressure = 20)) rmse(ym_carb) ym_shale <- lm(youngs_modulus ~ confining_pressure, data = triaxial %>% filter(group == 'shale')) predict(ym_shale, newdata = data.frame(confining_pressure = 20)) rmse(ym_shale) pr_carb <- lm(poisson_ratio ~ confining_pressure, data = triaxial %>% filter(group == 'carbonate')) predict(pr_carb, newdata = data.frame(confining_pressure = 20)) rmse(pr_carb) pr_shale <- lm(poisson_ratio ~ confining_pressure, data = triaxial %>% filter(group == 'shale')) predict(pr_shale, newdata = data.frame(confining_pressure = 20)) rmse(pr_shale)
upt_df = read_csv('../data/upt_tests.csv') %>% select(group, vp, vs, confining_pressure, deviatoric_stress, orientation, measured_depth) %>% arrange() upt_df_gather <- gather( upt_df, key = 'test_type', value = 'value', -group, -confining_pressure, -deviatoric_stress, -orientation, -measured_depth ) ggplot(upt_df_gather) + geom_point(aes(x = (confining_pressure + deviatoric_stress)/2, y = value, fill = test_type), shape = 21) + facet_grid(. ~ group + orientation) + labs(y = 'Velocity (m/s)', x = 'Mean Stress (MPa)', title = '') + scale_fill_manual(name = '', values = alpha(c("blue", "red"), .2)) + scale_shape_discrete(solid=TRUE) + theme(legend.title = element_blank()) + theme(legend.position = c(0.04, 0.12)) + ggsave('../output/upt_scatter.pdf', height = 6, width = 12) t.test( vs ~ orientation, data = upt_df %>% filter(orientation != 'oblique') )
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.