← All Use Cases
🪨
Central Composite Design

Water Well Drilling Parameters

Central composite design to maximize flow rate and minimize turbidity by tuning drill depth, screen slot size, and gravel pack grade

Summary

This experiment investigates water well drilling parameters. Central composite design to maximize flow rate and minimize turbidity by tuning drill depth, screen slot size, and gravel pack grade.

The design varies 3 factors: depth m (m), ranging from 15 to 60, screen slot mm (mm), ranging from 0.5 to 2.0, and gravel mm (mm), ranging from 2 to 8. The goal is to optimize 2 responses: flow rate lpm (L/min) (maximize) and turbidity ntu (NTU) (minimize). Fixed conditions held constant across all runs include aquifer = alluvial_sand, casing diam = 150mm.

A Central Composite Design (CCD) was selected to fit a full quadratic response surface model, including curvature and interaction effects. With 3 factors this produces 22 runs including center points and axial (star) points that extend beyond the factorial range.

Quadratic response surface models were fitted to capture potential curvature and factor interactions. The RSM contour plots below visualize how pairs of factors jointly affect each response.

Key Findings

For flow rate lpm, the most influential factors were screen slot mm (49.0%), gravel mm (28.8%), depth m (22.2%). The best observed value was 66.0 (at depth m = 37.5, screen slot mm = 1.25, gravel mm = 5).

For turbidity ntu, the most influential factors were depth m (34.4%), screen slot mm (33.3%), gravel mm (32.3%). The best observed value was 1.5 (at depth m = 37.5, screen slot mm = 1.25, gravel mm = -0.477226).

Recommended Next Steps

Experimental Setup

Factors

FactorLowHighUnit
depth_m1560m
screen_slot_mm0.52.0mm
gravel_mm28mm

Fixed: aquifer = alluvial_sand, casing_diam = 150mm

Responses

ResponseDirectionUnit
flow_rate_lpm↑ maximizeL/min
turbidity_ntu↓ minimizeNTU

Configuration

use_cases/230_well_drilling/config.json
{ "metadata": { "name": "Water Well Drilling Parameters", "description": "Central composite design to maximize flow rate and minimize turbidity by tuning drill depth, screen slot size, and gravel pack grade" }, "factors": [ { "name": "depth_m", "levels": [ "15", "60" ], "type": "continuous", "unit": "m" }, { "name": "screen_slot_mm", "levels": [ "0.5", "2.0" ], "type": "continuous", "unit": "mm" }, { "name": "gravel_mm", "levels": [ "2", "8" ], "type": "continuous", "unit": "mm" } ], "fixed_factors": { "aquifer": "alluvial_sand", "casing_diam": "150mm" }, "responses": [ { "name": "flow_rate_lpm", "optimize": "maximize", "unit": "L/min" }, { "name": "turbidity_ntu", "optimize": "minimize", "unit": "NTU" } ], "settings": { "operation": "central_composite", "test_script": "use_cases/230_well_drilling/sim.sh" } }

Experimental Matrix

The Central Composite Design produces 22 runs. Each row is one experiment with specific factor settings.

Rundepth_mscreen_slot_mmgravel_mm
137.51.255
2600.58
31522
437.52.619315
537.51.255
6-3.579191.255
737.51.25-0.477226
837.51.255
96022
1078.57921.255
1137.51.255
1237.5-0.1193065
1337.51.255
14150.58
1537.51.255
16600.52
1737.51.2510.4772
186028
1937.51.255
20150.52
211528
2237.51.255

Step-by-Step Workflow

1

Preview the design

Terminal
$ doe info --config use_cases/230_well_drilling/config.json
2

Generate the runner script

Terminal
$ doe generate --config use_cases/230_well_drilling/config.json \ --output use_cases/230_well_drilling/results/run.sh --seed 42
3

Execute the experiments

Terminal
$ bash use_cases/230_well_drilling/results/run.sh
4

Analyze results

Terminal
$ doe analyze --config use_cases/230_well_drilling/config.json
5

Get optimization recommendations

Terminal
$ doe optimize --config use_cases/230_well_drilling/config.json
6

Multi-objective optimization

With 2 competing responses, use --multi to find the best compromise via Derringer–Suich desirability.

Terminal
$ doe optimize --config use_cases/230_well_drilling/config.json --multi
7

Generate the HTML report

Terminal
$ doe report --config use_cases/230_well_drilling/config.json \ --output use_cases/230_well_drilling/results/report.html

Features Exercised

FeatureValue
Design typecentral_composite
Factor typescontinuous (all 3)
Arg styledouble-dash
Responses2 (flow_rate_lpm ↑, turbidity_ntu ↓)
Total runs22

Analysis Results

Generated from actual experiment runs using the DOE Helper Tool.

Response: flow_rate_lpm

Top factors: screen_slot_mm (49.0%), gravel_mm (28.8%), depth_m (22.2%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
depth_m4410.8561102.71400.3810.8167
screen_slot_mm4880.8561220.21400.8180.5452
gravel_mm4756.8561189.21400.7020.6097
LackofFit21693.2045846.6023
PureError71885.5000
Error93578.7045269.3571
Total215627.2727267.9654

Pareto Chart

Pareto chart for flow_rate_lpm

Main Effects Plot

Main effects plot for flow_rate_lpm

Normal Probability Plot of Effects

Normal probability plot for flow_rate_lpm

Half-Normal Plot of Effects

Half-normal plot for flow_rate_lpm

Model Diagnostics

Model diagnostics for flow_rate_lpm

Response: turbidity_ntu

Top factors: depth_m (34.4%), screen_slot_mm (33.3%), gravel_mm (32.3%).

ANOVA

SourceDFSSMSFp-value
SourceDFSSMSFp-value
depth_m420.91575.22890.2990.8717
screen_slot_mm432.40908.10230.4630.7619
gravel_mm443.813210.95330.6260.6562
LackofFit213.21666.6083
PureError7122.5788
Error9135.795317.5113
Total21232.933211.0921

Pareto Chart

Pareto chart for turbidity_ntu

Main Effects Plot

Main effects plot for turbidity_ntu

Normal Probability Plot of Effects

Normal probability plot for turbidity_ntu

Half-Normal Plot of Effects

Half-normal plot for turbidity_ntu

Model Diagnostics

Model diagnostics for turbidity_ntu

Response Surface Plots

3D surfaces fitted with quadratic RSM. Red dots are observed data points.

flow rate lpm depth m vs gravel mm

RSM surface: flow rate lpm depth m vs gravel mm

flow rate lpm depth m vs screen slot mm

RSM surface: flow rate lpm depth m vs screen slot mm

flow rate lpm screen slot mm vs gravel mm

RSM surface: flow rate lpm screen slot mm vs gravel mm

turbidity ntu depth m vs gravel mm

RSM surface: turbidity ntu depth m vs gravel mm

turbidity ntu depth m vs screen slot mm

RSM surface: turbidity ntu depth m vs screen slot mm

turbidity ntu screen slot mm vs gravel mm

RSM surface: turbidity ntu screen slot mm vs gravel mm

Multi-Objective Optimization

When responses compete, Derringer–Suich desirability finds the best compromise. Each response is scaled to a 0–1 desirability, then combined via a weighted geometric mean.

Overall Desirability
D = 0.8325

Per-Response Desirability

ResponseWeightDesirabilityPredictedDir
flow_rate_lpm 1.5
0.8485
59.00 0.8485 59.00 L/min
turbidity_ntu 1.0
0.8091
3.50 0.8091 3.50 NTU

Recommended Settings

FactorValue
depth_m78.5792 m
screen_slot_mm1.25 mm
gravel_mm5 mm

Source: from observed run #10

Trade-off Summary

Sacrifice = how much worse than single-objective best.

ResponsePredictedBest ObservedSacrifice
turbidity_ntu3.501.50+2.00

Top 3 Runs by Desirability

RunDFactor Settings
#90.7356depth_m=37.5, screen_slot_mm=1.25, gravel_mm=-0.477226
#20.6432depth_m=15, screen_slot_mm=0.5, gravel_mm=2

Model Quality

ResponseType
turbidity_ntu0.0841linear

Full Multi-Objective Output

doe optimize --multi
============================================================ MULTI-OBJECTIVE OPTIMIZATION Method: Derringer-Suich Desirability Function ============================================================ Overall desirability: D = 0.8325 Response Weight Desirability Predicted Direction --------------------------------------------------------------------- flow_rate_lpm 1.5 0.8485 59.00 L/min ↑ turbidity_ntu 1.0 0.8091 3.50 NTU ↓ Recommended settings: depth_m = 78.5792 m screen_slot_mm = 1.25 mm gravel_mm = 5 mm (from observed run #10) Trade-off summary: flow_rate_lpm: 59.00 (best observed: 66.00, sacrifice: +7.00) turbidity_ntu: 3.50 (best observed: 1.50, sacrifice: +2.00) Model quality: flow_rate_lpm: R² = 0.4609 (quadratic) turbidity_ntu: R² = 0.0841 (linear) Top 3 observed runs by overall desirability: 1. Run #10 (D=0.8325): depth_m=78.5792, screen_slot_mm=1.25, gravel_mm=5 2. Run #9 (D=0.7356): depth_m=37.5, screen_slot_mm=1.25, gravel_mm=-0.477226 3. Run #2 (D=0.6432): depth_m=15, screen_slot_mm=0.5, gravel_mm=2

Full Analysis Output

doe analyze
=== Main Effects: flow_rate_lpm === Factor Effect Std Error % Contribution -------------------------------------------------------------- screen_slot_mm 29.7500 3.4900 49.0% gravel_mm 17.5000 3.4900 28.8% depth_m 13.5000 3.4900 22.2% === ANOVA Table: flow_rate_lpm === Source DF SS MS F p-value ----------------------------------------------------------------------------- depth_m 4 410.8561 102.7140 0.381 0.8167 screen_slot_mm 4 880.8561 220.2140 0.818 0.5452 gravel_mm 4 756.8561 189.2140 0.702 0.6097 Lack of Fit 2 1693.2045 846.6023 3.143 0.1062 Pure Error 7 1885.5000 269.3571 Error 9 3578.7045 269.3571 Total 21 5627.2727 267.9654 === Summary Statistics: flow_rate_lpm === depth_m: Level N Mean Std Min Max ------------------------------------------------------------ -3.57919 1 42.0000 0.0000 42.0000 42.0000 15 4 28.5000 16.0520 6.0000 41.0000 37.5 12 38.6667 14.2659 10.0000 59.0000 60 4 32.2500 27.1093 7.0000 66.0000 78.5792 1 39.0000 0.0000 39.0000 39.0000 screen_slot_mm: Level N Mean Std Min Max ------------------------------------------------------------ -0.119306 1 42.0000 0.0000 42.0000 42.0000 0.5 4 25.2500 17.2892 7.0000 41.0000 1.25 12 37.3333 13.3167 10.0000 59.0000 2 4 35.5000 25.1595 6.0000 66.0000 2.61931 1 55.0000 0.0000 55.0000 55.0000 gravel_mm: Level N Mean Std Min Max ------------------------------------------------------------ -0.477226 1 40.0000 0.0000 40.0000 40.0000 10.4772 1 41.0000 0.0000 41.0000 41.0000 2 4 23.5000 19.6723 6.0000 42.0000 5 12 38.6667 14.2786 10.0000 59.0000 8 4 37.2500 22.1115 14.0000 66.0000 === Main Effects: turbidity_ntu === Factor Effect Std Error % Contribution -------------------------------------------------------------- depth_m 4.0250 0.7101 34.4% screen_slot_mm 3.9000 0.7101 33.3% gravel_mm 3.7750 0.7101 32.3% === ANOVA Table: turbidity_ntu === Source DF SS MS F p-value ----------------------------------------------------------------------------- depth_m 4 20.9157 5.2289 0.299 0.8717 screen_slot_mm 4 32.4090 8.1023 0.463 0.7619 gravel_mm 4 43.8132 10.9533 0.626 0.6562 Lack of Fit 2 13.2166 6.6083 0.377 0.6988 Pure Error 7 122.5788 17.5113 Error 9 135.7953 17.5113 Total 21 232.9332 11.0921 === Summary Statistics: turbidity_ntu === depth_m: Level N Mean Std Min Max ------------------------------------------------------------ -3.57919 1 4.9000 0.0000 4.9000 4.9000 15 4 7.0000 4.7025 3.9000 14.0000 37.5 12 5.6500 3.3557 1.5000 13.4000 60 4 7.3250 2.6961 5.3000 11.2000 78.5792 1 3.3000 0.0000 3.3000 3.3000 screen_slot_mm: Level N Mean Std Min Max ------------------------------------------------------------ -0.119306 1 4.7000 0.0000 4.7000 4.7000 0.5 4 5.7250 0.9878 4.8000 7.1000 1.25 12 5.4833 3.4205 1.5000 13.4000 2 4 8.6000 4.7924 3.9000 14.0000 2.61931 1 5.5000 0.0000 5.5000 5.5000 gravel_mm: Level N Mean Std Min Max ------------------------------------------------------------ -0.477226 1 5.4000 0.0000 5.4000 5.4000 10.4772 1 5.5000 0.0000 5.5000 5.5000 2 4 5.2750 1.3475 3.9000 7.1000 5 12 5.4250 3.4280 1.5000 13.4000 8 4 9.0500 4.2587 5.3000 14.0000

Optimization Recommendations

doe optimize
=== Optimization: flow_rate_lpm === Direction: maximize Best observed run: #18 depth_m = 37.5 screen_slot_mm = 1.25 gravel_mm = 5 Value: 66.0 RSM Model (linear, R² = 0.0887, Adj R² = -0.0631): Coefficients: intercept +35.8182 depth_m -4.4824 screen_slot_mm +2.6859 gravel_mm +2.5966 RSM Model (quadratic, R² = 0.4361, Adj R² = 0.0132): Coefficients: intercept +37.4761 depth_m -4.4824 screen_slot_mm +2.6860 gravel_mm +2.5966 depth_m*screen_slot_mm +5.2500 depth_m*gravel_mm -5.7500 screen_slot_mm*gravel_mm +1.5000 depth_m^2 +4.1210 screen_slot_mm^2 -6.9789 gravel_mm^2 +0.3711 Curvature analysis: screen_slot_mm coef=-6.9789 concave (has a maximum) depth_m coef=+4.1210 convex (has a minimum) gravel_mm coef=+0.3711 convex (has a minimum) Notable interactions: depth_m*gravel_mm coef=-5.7500 (antagonistic) depth_m*screen_slot_mm coef=+5.2500 (synergistic) screen_slot_mm*gravel_mm coef=+1.5000 (synergistic) Predicted optimum (from quadratic model, at observed points): depth_m = -3.57919 screen_slot_mm = 1.25 gravel_mm = 5 Predicted value: 59.3967 Surface optimum (via L-BFGS-B, quadratic model): depth_m = 15 screen_slot_mm = 1.19283 gravel_mm = 8 Predicted value: 54.8378 Model quality: Weak fit — consider adding center points or using a different design. Factor importance: 1. screen_slot_mm (effect: 39.2, contribution: 52.3%) 2. depth_m (effect: 24.0, contribution: 32.0%) 3. gravel_mm (effect: 11.8, contribution: 15.7%) === Optimization: turbidity_ntu === Direction: minimize Best observed run: #16 depth_m = 37.5 screen_slot_mm = 1.25 gravel_mm = -0.477226 Value: 1.5 RSM Model (linear, R² = 0.0424, Adj R² = -0.1172): Coefficients: intercept +6.0591 depth_m +0.6236 screen_slot_mm -0.5241 gravel_mm -0.1009 RSM Model (quadratic, R² = 0.3244, Adj R² = -0.1823): Coefficients: intercept +7.9301 depth_m +0.6236 screen_slot_mm -0.5241 gravel_mm -0.1009 depth_m*screen_slot_mm +0.1250 depth_m*gravel_mm -0.8000 screen_slot_mm*gravel_mm +0.2250 depth_m^2 -0.2905 screen_slot_mm^2 -1.0555 gravel_mm^2 -1.4605 Curvature analysis: gravel_mm coef=-1.4605 concave (has a maximum) screen_slot_mm coef=-1.0555 concave (has a maximum) depth_m coef=-0.2905 concave (has a maximum) Notable interactions: depth_m*gravel_mm coef=-0.8000 (antagonistic) Predicted optimum (from linear model, at observed points): depth_m = 60 screen_slot_mm = 0.5 gravel_mm = 2 Predicted value: 7.3076 Surface optimum (via L-BFGS-B, linear model): depth_m = 15 screen_slot_mm = 2 gravel_mm = 8 Predicted value: 4.8105 Model quality: Weak fit — consider adding center points or using a different design. Factor importance: 1. gravel_mm (effect: 5.8, contribution: 41.5%) 2. depth_m (effect: 5.0, contribution: 35.7%) 3. screen_slot_mm (effect: 3.2, contribution: 22.8%)
← Previous: Soil Compaction Testing Next: Rock Thin Section Preparation →