geotechcli 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/commands/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmF5D"}
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+F5D"}
@@ -14,9 +14,14 @@ export function registerExportCommand(program) {
14
14
  try {
15
15
  const data = JSON.parse(readFileSync(opts.input, 'utf-8'));
16
16
  const features = Array.isArray(data) ? data : [data];
17
+ const missingCoordinates = features.filter((feature) => (feature.lat === undefined && feature.latitude === undefined) ||
18
+ (feature.lng === undefined && feature.longitude === undefined));
19
+ if (missingCoordinates.length > 0) {
20
+ throw new Error(`Missing latitude/longitude for ${missingCoordinates.length} feature(s). Provide lat/lng or latitude/longitude fields before exporting GeoJSON.`);
21
+ }
17
22
  const geoJsonFeatures = features.map((f, i) => ({
18
- lat: f.lat ?? f.latitude ?? 35.0 + i * 0.001,
19
- lng: f.lng ?? f.longitude ?? 139.0 + i * 0.001,
23
+ lat: f.lat ?? f.latitude,
24
+ lng: f.lng ?? f.longitude,
20
25
  properties: f,
21
26
  name: f.id ?? f.boreholeId ?? `Feature-${i + 1}`,
22
27
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/commands/export.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"liquefaction.d.ts","sourceRoot":"","sources":["../../src/commands/liquefaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6GlE"}
1
+ {"version":3,"file":"liquefaction.d.ts","sourceRoot":"","sources":["../../src/commands/liquefaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAepC,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmHlE"}
@@ -1,6 +1,6 @@
1
1
  import { Command } from 'commander';
2
2
  import { calculateLiquefaction } from '@geotechcli/core';
3
- import { heading, keyValue, renderTable, renderSteps, renderJSON, warn, success } from '../ui/terminal.js';
3
+ import { heading, keyValue, renderTable, renderSteps, renderJSON, warn, success, error, } from '../ui/terminal.js';
4
4
  import { addGlobalFlags, getGlobalFlags } from '../util/flags.js';
5
5
  import { readFileSync, writeFileSync } from 'node:fs';
6
6
  export function registerLiquefactionCommand(program) {
@@ -13,11 +13,12 @@ export function registerLiquefactionCommand(program) {
13
13
  .option('--depth <m>', 'Single layer depth (m)', parseFloat)
14
14
  .option('--spt <N>', 'Single layer SPT N-value', parseFloat)
15
15
  .option('--fines <percent>', 'Single layer fines content (%)', parseFloat, 5)
16
+ .option('--demo', 'Use the built-in demo SPT profile')
16
17
  .action((opts) => {
17
18
  const flags = getGlobalFlags(opts);
19
+ let source = 'user';
18
20
  let layers;
19
21
  if (opts.sptProfile) {
20
- // Parse CSV
21
22
  const csv = readFileSync(opts.sptProfile, 'utf-8');
22
23
  const lines = csv.trim().split('\n');
23
24
  const header = lines[0].toLowerCase();
@@ -31,7 +32,7 @@ export function registerLiquefactionCommand(program) {
31
32
  unitWeight: cols[3] ?? 18,
32
33
  waterTableDepth: cols[4] ?? 1,
33
34
  };
34
- }).filter((l) => !isNaN(l.depth) && !isNaN(l.sptN));
35
+ }).filter((layer) => !isNaN(layer.depth) && !isNaN(layer.sptN));
35
36
  }
36
37
  else if (opts.depth && opts.spt !== undefined) {
37
38
  layers = [{
@@ -42,8 +43,8 @@ export function registerLiquefactionCommand(program) {
42
43
  waterTableDepth: 1,
43
44
  }];
44
45
  }
45
- else {
46
- // Demo layers
46
+ else if (opts.demo) {
47
+ source = 'demo';
47
48
  layers = [
48
49
  { depth: 2.0, sptN: 8, finesContent: 15, unitWeight: 17, waterTableDepth: 1.5 },
49
50
  { depth: 4.5, sptN: 12, finesContent: 10, unitWeight: 18, waterTableDepth: 1.5 },
@@ -51,9 +52,14 @@ export function registerLiquefactionCommand(program) {
51
52
  { depth: 10.0, sptN: 22, finesContent: 5, unitWeight: 19, waterTableDepth: 1.5 },
52
53
  ];
53
54
  if (!flags.json) {
54
- warn('No SPT profile provided using demo data. Use --spt-profile <file> for real analysis.');
55
+ warn('Using demo data because --demo was provided. Use --spt-profile <file> for real analysis.');
55
56
  }
56
57
  }
58
+ else {
59
+ error('No SPT profile provided. Use --spt-profile <file>, provide --depth/--spt, or pass --demo.');
60
+ process.exitCode = 1;
61
+ return;
62
+ }
57
63
  if (flags.dryRun) {
58
64
  console.log(` [dry-run] Would calculate liquefaction (${opts.method}):`);
59
65
  console.log(` Mw=${opts.magnitude}, PGA=${opts.pga}g, ${layers.length} layer(s)`);
@@ -65,25 +71,26 @@ export function registerLiquefactionCommand(program) {
65
71
  pga: opts.pga,
66
72
  method: opts.method,
67
73
  });
74
+ const outputResult = source === 'demo' ? { ...result, source } : result;
68
75
  if (flags.json) {
69
- renderJSON(result);
76
+ renderJSON(outputResult);
70
77
  return;
71
78
  }
72
79
  if (flags.quiet) {
73
- const severe = result.layers.filter(l => l.potential === 'SEVERE' || l.potential === 'HIGH').length;
80
+ const severe = result.layers.filter((layer) => layer.potential === 'SEVERE' || layer.potential === 'HIGH').length;
74
81
  console.log(`${severe}/${result.layers.length}`);
75
82
  return;
76
83
  }
77
- heading(`Liquefaction Analysis ${result.method === 'boulanger-idriss-2014' ? 'Boulanger & Idriss (2014)' : 'NCEER Simplified'}`);
84
+ heading(`Liquefaction Analysis - ${result.method === 'boulanger-idriss-2014' ? 'Boulanger & Idriss (2014)' : 'NCEER Simplified'}`);
78
85
  keyValue('Earthquake magnitude (Mw)', opts.magnitude);
79
86
  keyValue('Peak ground acceleration', `${opts.pga}g`);
80
- renderTable(['Depth (m)', 'N₁₆₀', '(N₁)₆₀cs', 'CSR', 'CRR', 'FS', 'Potential'], result.layers.map((l) => [
81
- l.depth, l.N160, l.N160cs, l.CSR, l.CRR, l.factorOfSafety, l.potential,
87
+ renderTable(['Depth (m)', 'N160', '(N1)60cs', 'CSR', 'CRR', 'FS', 'Potential'], result.layers.map((layer) => [
88
+ layer.depth, layer.N160, layer.N160cs, layer.CSR, layer.CRR, layer.factorOfSafety, layer.potential,
82
89
  ]));
83
90
  keyValue('Estimated settlement', `${result.estimatedSettlement} mm`);
84
91
  renderSteps(result.steps, flags.verbose);
85
92
  if (flags.output) {
86
- writeFileSync(flags.output, JSON.stringify(result, null, 2));
93
+ writeFileSync(flags.output, JSON.stringify(outputResult, null, 2));
87
94
  success(`Results saved to ${flags.output}`);
88
95
  }
89
96
  console.log('');
@@ -1 +1 @@
1
- {"version":3,"file":"liquefaction.js","sourceRoot":"","sources":["../../src/commands/liquefaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"liquefaction.js","sourceRoot":"","sources":["../../src/commands/liquefaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerSeepageCommand(program: Command): void;
3
+ //# sourceMappingURL=seepage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seepage.d.ts","sourceRoot":"","sources":["../../src/commands/seepage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2BpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuH7D"}
@@ -0,0 +1,127 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { calculateDupuitSeepage, calculateFlowNetSeepage, } from '@geotechcli/core';
4
+ import { banner, keyValue, renderJSON, renderTable, success, warn, renderSteps, heading, } from '../ui/terminal.js';
5
+ import { addGlobalFlags, getGlobalFlags } from '../util/flags.js';
6
+ import { writeFileSync } from 'node:fs';
7
+ function riskColor(risk) {
8
+ if (risk === 'SEVERE')
9
+ return chalk.red.bold(risk);
10
+ if (risk === 'HIGH')
11
+ return chalk.red(risk);
12
+ if (risk === 'MODERATE')
13
+ return chalk.yellow(risk);
14
+ return chalk.green(risk);
15
+ }
16
+ export function registerSeepageCommand(program) {
17
+ const cmd = new Command('seepage')
18
+ .description('Seepage flow analysis with piping and heave safety checks')
19
+ .option('--method <m>', 'Analysis method: dupuit | flownet (default: dupuit)', 'dupuit')
20
+ // Common options
21
+ .requiredOption('--conductivity <m/s>', 'Hydraulic conductivity k in m/s')
22
+ .option('--h1 <m>', 'Upstream head h₁ in meters (dupuit method)')
23
+ .option('--h2 <m>', 'Downstream head h₂ in meters (dupuit method)', '0')
24
+ .option('--length <m>', 'Seepage path length L in meters (dupuit method)')
25
+ // Flow net options
26
+ .option('--head <m>', 'Total head loss H in meters (flownet method)')
27
+ .option('--nf <n>', 'Number of flow channels Nf (flownet method)')
28
+ .option('--nd <n>', 'Number of equipotential drops Nd (flownet method)')
29
+ .option('--critical-path <m>', 'Critical flow path length for exit gradient (flownet, default 1.0)')
30
+ // Soil properties
31
+ .option('--gs <Gs>', 'Specific gravity of solids Gs (default: 2.65)', '2.65')
32
+ .option('--void-ratio <e>', 'Void ratio e₀ (default: 0.7)', '0.7')
33
+ .addHelpText('after', `
34
+ Methods:
35
+ dupuit Dupuit-Forchheimer unconfined seepage between two boundaries
36
+ flownet Flow net approximation: Q = k × H × (Nf/Nd)
37
+
38
+ Examples:
39
+ geotech seepage --conductivity 1e-4 --h1 10 --h2 2 --length 20 --verbose
40
+ geotech seepage --method flownet --conductivity 5e-5 --head 8 --nf 4 --nd 6
41
+ geotech seepage --conductivity 1e-4 --h1 8 --h2 0 --length 15 --gs 2.7 --void-ratio 0.65 --json
42
+ `)
43
+ .action(async (opts) => {
44
+ const flags = getGlobalFlags(opts);
45
+ const method = opts.method;
46
+ const k = parseFloat(opts.conductivity);
47
+ const Gs = parseFloat(opts.gs);
48
+ const e = parseFloat(opts.voidRatio);
49
+ try {
50
+ let result;
51
+ if (method === 'flownet') {
52
+ if (!opts.head || !opts.nf || !opts.nd) {
53
+ console.error(chalk.red(' ✗ Flownet method requires --head, --nf, and --nd'));
54
+ process.exit(1);
55
+ }
56
+ result = calculateFlowNetSeepage({
57
+ hydraulicConductivity: k,
58
+ totalHead: parseFloat(opts.head),
59
+ flowChannels: parseInt(opts.nf, 10),
60
+ equipotentialDrops: parseInt(opts.nd, 10),
61
+ specificGravity: Gs,
62
+ voidRatio: e,
63
+ criticalFlowPath: opts.criticalPath ? parseFloat(opts.criticalPath) : undefined,
64
+ });
65
+ }
66
+ else {
67
+ // Dupuit default
68
+ if (!opts.h1 || !opts.length) {
69
+ console.error(chalk.red(' ✗ Dupuit method requires --h1 and --length'));
70
+ process.exit(1);
71
+ }
72
+ result = calculateDupuitSeepage({
73
+ hydraulicConductivity: k,
74
+ upstreamHead: parseFloat(opts.h1),
75
+ downstreamHead: parseFloat(opts.h2),
76
+ seepageLength: parseFloat(opts.length),
77
+ specificGravity: Gs,
78
+ voidRatio: e,
79
+ });
80
+ }
81
+ if (flags.json) {
82
+ renderJSON(result);
83
+ return;
84
+ }
85
+ if (!flags.quiet)
86
+ banner();
87
+ heading(`Seepage Analysis — ${method === 'flownet' ? 'Flow Net Method' : 'Dupuit-Forchheimer'}`);
88
+ keyValue('Seepage flow Q', `${result.seepageFlow.toExponential(3)} m³/s per m width`);
89
+ keyValue('Exit gradient', result.exitGradient.toFixed(4));
90
+ keyValue('Critical gradient', result.criticalGradient.toFixed(4));
91
+ keyValue('Piping FS', result.pipingFOS >= 999 ? '∞' : result.pipingFOS.toFixed(2));
92
+ console.log('');
93
+ console.log(chalk.gray(' Heave/Piping Risk: ') + riskColor(result.heaveRisk));
94
+ console.log(chalk.gray(` ${result.heaveRiskDescription}`));
95
+ renderSteps(result.steps, flags.verbose);
96
+ // Risk summary table
97
+ if (!flags.quiet) {
98
+ console.log('');
99
+ renderTable(['Parameter', 'Value', 'Limit', 'Status'], [
100
+ ['i_exit', result.exitGradient.toFixed(4), `< ${result.criticalGradient.toFixed(3)}`, result.exitGradient < result.criticalGradient ? '✓ OK' : '✗ EXCEEDS'],
101
+ ['FS (piping)', result.pipingFOS >= 999 ? '∞' : result.pipingFOS.toFixed(2), '≥ 3.0 (typical)', result.pipingFOS >= 3 ? '✓ OK' : result.pipingFOS >= 1.5 ? '⚠ MARGINAL' : '✗ FAIL'],
102
+ ]);
103
+ }
104
+ if (flags.output) {
105
+ writeFileSync(flags.output, JSON.stringify(result, null, 2));
106
+ success(`Results saved to ${flags.output}`);
107
+ }
108
+ if (!flags.quiet) {
109
+ console.log('');
110
+ warn('Piping FS ≥ 3.0 is typically required for dams and embankments. For retaining walls, FS ≥ 2.0 is often acceptable.');
111
+ }
112
+ }
113
+ catch (err) {
114
+ const msg = err instanceof Error ? err.message : String(err);
115
+ if (flags.json) {
116
+ console.log(JSON.stringify({ error: msg }, null, 2));
117
+ }
118
+ else {
119
+ console.error(chalk.red(`\n ✗ ${msg}\n`));
120
+ }
121
+ process.exit(1);
122
+ }
123
+ });
124
+ addGlobalFlags(cmd);
125
+ program.addCommand(cmd);
126
+ }
127
+ //# sourceMappingURL=seepage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seepage.js","sourceRoot":"","sources":["../../src/commands/seepage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerSettlementCommands(program: Command): void;
3
+ //# sourceMappingURL=settlement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settlement.d.ts","sourceRoot":"","sources":["../../src/commands/settlement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwPpC,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoBjE"}
@@ -0,0 +1,214 @@
1
+ import { Command } from 'commander';
2
+ import chalk from 'chalk';
3
+ import { calculateConsolidation, calculateSchmertmann, calculatePeckSettlement, } from '@geotechcli/core';
4
+ import { banner, keyValue, renderJSON, renderTable, renderChart, success, warn, renderSteps, heading, } from '../ui/terminal.js';
5
+ import { addGlobalFlags, getGlobalFlags } from '../util/flags.js';
6
+ import { writeFileSync } from 'node:fs';
7
+ function handleError(err, flags) {
8
+ const msg = err instanceof Error ? err.message : String(err);
9
+ if (flags.json) {
10
+ console.log(JSON.stringify({ error: msg }, null, 2));
11
+ }
12
+ else {
13
+ console.error(chalk.red(`\n ✗ ${msg}\n`));
14
+ }
15
+ process.exit(1);
16
+ }
17
+ // ---------------------------------------------------------------------------
18
+ // geotech settlement consolidation — Terzaghi 1D consolidation
19
+ // ---------------------------------------------------------------------------
20
+ function registerConsolidation(parent) {
21
+ const cmd = new Command('consolidation')
22
+ .description('Terzaghi 1D consolidation settlement (primary + time curve)')
23
+ .requiredOption('--cc <number>', 'Compression index Cc')
24
+ .requiredOption('--e0 <number>', 'Initial void ratio e₀')
25
+ .requiredOption('--thickness <m>', 'Clay layer thickness H in meters')
26
+ .requiredOption('--delta-sigma <kPa>', 'Stress increase Δσ in kPa')
27
+ .requiredOption('--sigma0 <kPa>', 'Initial effective stress σ₀ in kPa')
28
+ .option('--cr <number>', 'Recompression index Cr (default: Cc/5)')
29
+ .option('--sigmap <kPa>', 'Preconsolidation pressure σ_p in kPa')
30
+ .option('--drainage <type>', 'Drainage: single | double (default: double)', 'double')
31
+ .option('--cv <m2/yr>', 'Coefficient of consolidation Cv (m²/year) — enables time curve')
32
+ .action(async (opts) => {
33
+ const flags = getGlobalFlags(opts);
34
+ const input = {
35
+ compressionIndex: parseFloat(opts.cc),
36
+ voidRatio: parseFloat(opts.e0),
37
+ layerThickness: parseFloat(opts.thickness),
38
+ stressIncrease: parseFloat(opts.deltaSigma),
39
+ initialEffectiveStress: parseFloat(opts.sigma0),
40
+ recompressionIndex: opts.cr ? parseFloat(opts.cr) : undefined,
41
+ preconsolidationPressure: opts.sigmap ? parseFloat(opts.sigmap) : undefined,
42
+ drainagePath: (opts.drainage === 'single' ? 'single' : 'double'),
43
+ coefficientOfConsolidation: opts.cv ? parseFloat(opts.cv) : undefined,
44
+ };
45
+ try {
46
+ const result = calculateConsolidation(input);
47
+ if (flags.json) {
48
+ renderJSON(result);
49
+ return;
50
+ }
51
+ if (!flags.quiet)
52
+ banner();
53
+ heading('Terzaghi 1D Consolidation Settlement');
54
+ keyValue('Primary settlement', `${result.primarySettlement} mm`);
55
+ keyValue('Soil condition', result.isOverconsolidated ? 'Overconsolidated (OC)' : 'Normally consolidated (NC)');
56
+ renderSteps(result.steps, flags.verbose);
57
+ if (result.timeSettlement && result.timeSettlement.length > 0) {
58
+ console.log('');
59
+ renderTable(['Tv', 'U (%)', 'Time (yr)', 'Settlement (mm)'], result.timeSettlement.map(r => [
60
+ r.timeFactor.toFixed(3),
61
+ (r.consolidation * 100).toFixed(0),
62
+ r.timeYears.toFixed(2),
63
+ r.settlement.toFixed(1),
64
+ ]));
65
+ if (flags.plot) {
66
+ renderChart(result.timeSettlement.map(r => r.settlement), { label: 'Settlement over time (mm)', height: 10 });
67
+ }
68
+ }
69
+ if (flags.output) {
70
+ const data = JSON.stringify(result, null, 2);
71
+ writeFileSync(flags.output, data);
72
+ success(`Results saved to ${flags.output}`);
73
+ }
74
+ }
75
+ catch (err) {
76
+ handleError(err, flags);
77
+ }
78
+ });
79
+ addGlobalFlags(cmd);
80
+ parent.addCommand(cmd);
81
+ }
82
+ // ---------------------------------------------------------------------------
83
+ // geotech settlement immediate — Schmertmann elastic/creep settlement
84
+ // ---------------------------------------------------------------------------
85
+ function registerImmediate(parent) {
86
+ const cmd = new Command('immediate')
87
+ .description('Schmertmann immediate + creep settlement for shallow foundations')
88
+ .requiredOption('--stress <kPa>', 'Net applied stress q in kPa')
89
+ .requiredOption('--width <m>', 'Foundation width B in meters')
90
+ .requiredOption('--layers <json>', 'Soil layers as JSON: \'[{"thickness":1,"Es":5000},...]\' ')
91
+ .option('--depth <m>', 'Embedment depth D (default: 0)', '0')
92
+ .option('--unit-weight <kN/m3>', 'Unit weight γ in kN/m³ (default: 18)', '18')
93
+ .option('--time <years>', 'Time for creep factor (default: 1)', '1')
94
+ .action(async (opts) => {
95
+ const flags = getGlobalFlags(opts);
96
+ let layers;
97
+ try {
98
+ const raw = JSON.parse(opts.layers);
99
+ layers = raw.map(l => ({
100
+ thickness: l.thickness ?? 1,
101
+ elasticModulus: l.elasticModulus ?? l.Es ?? 5000,
102
+ }));
103
+ }
104
+ catch {
105
+ console.error(chalk.red(" ✗ Invalid --layers JSON. Example: '[{\"thickness\":1,\"Es\":5000}]'"));
106
+ process.exit(1);
107
+ }
108
+ const input = {
109
+ appliedStress: parseFloat(opts.stress),
110
+ foundationWidth: parseFloat(opts.width),
111
+ layers,
112
+ embedmentDepth: parseFloat(opts.depth),
113
+ unitWeight: parseFloat(opts.unitWeight),
114
+ timeFactor: parseFloat(opts.time),
115
+ };
116
+ try {
117
+ const result = calculateSchmertmann(input);
118
+ if (flags.json) {
119
+ renderJSON(result);
120
+ return;
121
+ }
122
+ if (!flags.quiet)
123
+ banner();
124
+ heading('Schmertmann Immediate + Creep Settlement');
125
+ keyValue('Immediate settlement', `${result.immediateSettlement} mm`);
126
+ keyValue('Creep settlement', `${result.creepSettlement} mm`);
127
+ keyValue('Total settlement', `${result.totalSettlement} mm`);
128
+ renderSteps(result.steps, flags.verbose);
129
+ if (flags.output) {
130
+ writeFileSync(flags.output, JSON.stringify(result, null, 2));
131
+ success(`Results saved to ${flags.output}`);
132
+ }
133
+ }
134
+ catch (err) {
135
+ handleError(err, flags);
136
+ }
137
+ });
138
+ addGlobalFlags(cmd);
139
+ parent.addCommand(cmd);
140
+ }
141
+ // ---------------------------------------------------------------------------
142
+ // geotech settlement tunnel — Peck surface settlement trough
143
+ // ---------------------------------------------------------------------------
144
+ function registerTunnelSettlement(parent) {
145
+ const cmd = new Command('tunnel')
146
+ .description('Peck Gaussian settlement trough above tunnel excavation')
147
+ .requiredOption('--diameter <m>', 'Tunnel diameter D in meters')
148
+ .requiredOption('--depth <m>', 'Depth to tunnel axis Z₀ in meters')
149
+ .option('--volume-loss <%>', 'Volume loss Vl in % (default: 1.0)', '1.0')
150
+ .option('--trough-k <K>', 'Trough width parameter K (default: 0.5)', '0.5')
151
+ .action(async (opts) => {
152
+ const flags = getGlobalFlags(opts);
153
+ const input = {
154
+ tunnelDiameter: parseFloat(opts.diameter),
155
+ tunnelDepth: parseFloat(opts.depth),
156
+ volumeLoss: parseFloat(opts.volumeLoss),
157
+ troughWidthParam: parseFloat(opts.troughK),
158
+ };
159
+ try {
160
+ const result = calculatePeckSettlement(input);
161
+ if (flags.json) {
162
+ renderJSON(result);
163
+ return;
164
+ }
165
+ if (!flags.quiet)
166
+ banner();
167
+ heading('Peck Tunnel Surface Settlement Trough');
168
+ keyValue('Maximum settlement', `${result.maxSettlement} mm`);
169
+ keyValue('Inflection point (i)', `${result.inflectionPoint} m`);
170
+ keyValue('Trough width (2.5i)', `${result.troughWidth} m`);
171
+ renderSteps(result.steps, flags.verbose);
172
+ if (flags.plot && result.profile.length > 0) {
173
+ const vals = result.profile.map(p => p.settlement);
174
+ renderChart(vals, { label: `Settlement trough (max = ${result.maxSettlement} mm)`, height: 10 });
175
+ }
176
+ if (!flags.quiet) {
177
+ console.log('');
178
+ warn('Peck trough assumes symmetrical ground conditions. Actual settlements depend on construction method, soil type, and monitoring data.');
179
+ }
180
+ if (flags.output) {
181
+ writeFileSync(flags.output, JSON.stringify(result, null, 2));
182
+ success(`Results saved to ${flags.output}`);
183
+ }
184
+ }
185
+ catch (err) {
186
+ handleError(err, flags);
187
+ }
188
+ });
189
+ addGlobalFlags(cmd);
190
+ parent.addCommand(cmd);
191
+ }
192
+ // ---------------------------------------------------------------------------
193
+ // Root: geotech settlement
194
+ // ---------------------------------------------------------------------------
195
+ export function registerSettlementCommands(program) {
196
+ const cmd = new Command('settlement')
197
+ .description('Settlement analysis: consolidation, immediate (Schmertmann), and tunnel trough (Peck)')
198
+ .addHelpText('after', `
199
+ Subcommands:
200
+ consolidation Terzaghi 1D primary consolidation + time curve
201
+ immediate Schmertmann elastic + creep settlement
202
+ tunnel Peck Gaussian surface settlement trough
203
+
204
+ Examples:
205
+ geotech settlement consolidation --cc 0.35 --e0 1.2 --thickness 5 --delta-sigma 80 --sigma0 100 --verbose
206
+ geotech settlement immediate --stress 150 --width 2.5 --layers '[{"thickness":2,"Es":8000}]'
207
+ geotech settlement tunnel --diameter 6 --depth 15 --volume-loss 1.5 --plot
208
+ `);
209
+ registerConsolidation(cmd);
210
+ registerImmediate(cmd);
211
+ registerTunnelSettlement(cmd);
212
+ program.addCommand(cmd);
213
+ }
214
+ //# sourceMappingURL=settlement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"settlement.js","sourceRoot":"","sources":["../../src/commands/settlement.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAapC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmF5D"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuCpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkH5D"}