library(duvernaygeomechmodel)

This notebook conducts exploratory data analysis on the experimental data.

Brazilian tests

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)

UCS tests

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 Results

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)

Ultrasonic Results

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')
  )


ScottHMcKean/duvernay_geomech_model documentation built on Sept. 12, 2022, 10:08 a.m.