返回 Skill 列表
extension
分类: 开发与工程无需 API Key

planning-hecras-execution

为HEC-RAS执行策略提供决策支持。分析项目检查器输出,以推荐应运行哪些计划、执行模式及最优参数。提供具有依赖排序、前提条件验证和资源感知参数建议的结构化执行计划。在规划执行策略、选择执行模式、确定计划顺序、验证前提条件或优化并行执行参数时使用。触发因素:计划执行、执行策略、应运行哪些计划、执行顺序、并行与顺序、compute_plan、compute_parallel、模式选择、前提条件、依赖关系、可运行计划、受阻计划、执行计划、批量策略。

person作者: jakexiaohubgithub

Planning HEC-RAS Execution

Decision support for selecting optimal HEC-RAS execution strategy. Analyzes Project Inspector output and generates actionable execution plans.

Primary Sources

DO NOT duplicate content from primary sources. This skill is a lightweight navigator.

  • .claude/rules/hec-ras/execution.md - Complete execution mode documentation
  • .claude/agents/hecras-project-inspector.md - Project Intelligence Report schema
  • .claude/skills/executing-hecras-plans/SKILL.md - Mode Selection Guide
  • .claude/skills/executing-hecras-rascontrol/SKILL.md - Legacy HEC-RAS (< 6.0)

Mode Selection Decision Tree

1. Is HEC-RAS version < 6.0?
   YES -> Use RasControl (executing-hecras-rascontrol skill)
   NO  -> Continue

2. How many runnable plans?
   ZERO    -> Report blockers, stop
   ONE     -> compute_plan() [+ stream_callback if monitoring needed]
   MULTIPLE -> Continue to step 3

3. Multiple Plan Decision:
   Debugging/diagnosing? -> compute_test_mode()
   Have remote workers?  -> compute_parallel_remote()
   Production/batch?     -> compute_parallel()

Mode Selection Matrix

| Context | Plans | Mode | Rationale | |---------|-------|------|-----------| | Debugging | Any | compute_test_mode() | Sequential, single folder | | Single plan, monitoring | 1 | compute_plan() + callback | Real-time output | | Single plan, quick | 1 | compute_plan() | Simplest API | | Multiple plans, production | 2+ | compute_parallel() | Fastest throughput | | Distributed infrastructure | 2+ | compute_parallel_remote() | Scale-out | | HEC-RAS < 6.0 | Any | RasControl | COM-based required | | Resume interrupted | 2+ | compute_parallel(skip_existing=True) | Skips completed |


Input: Project Intelligence Report

Expected input from Project Inspector Agent:

## Plans Analysis
| Plan | Title | Status | Geometry | Flow | Issues |
|------|-------|--------|----------|------|--------|
| 01 | Baseline | Runnable | g01 | u01 | None |
| 02 | Future | Missing geom | g03 (MISSING) | u02 | Geometry file not found |

### Execution Readiness
- **Ready to Run**: 01, 03
- **Blocked**: 02 (missing geometry g03)

Output: Execution Plan

Generate structured execution plans in this format:

# Execution Plan

## Recommended Mode
`compute_parallel()` - Multiple runnable plans, production context

## Execution Order
1. Plan 01 (Baseline) - Ready
2. Plan 03 (Modified) - Ready
   [Skip: Plan 02 - blocked by missing geometry g03]

## Parameters
```python
RasCmdr.compute_parallel(
    plans_to_run=["01", "03"],
    max_workers=2,
    num_cores=4,
    force_rerun=False,
    verify=True
)

Prerequisites

  • None for runnable plans

Blockers (Cannot Run)

| Plan | Issue | Resolution | |------|-------|------------| | 02 | Missing geometry g03 | Create geometry file or fix reference |

Warnings

  • Plan 02 blocked until g03 is created

---

## Parameter Recommendation

### Worker/Core Allocation

| System Cores | Model Type | `max_workers` | `num_cores` |
|--------------|------------|---------------|-------------|
| 4-8 | 1D | 2-4 | 2 |
| 8-16 | 2D | 2-4 | 4 |
| 16+ | Mixed | 4-6 | 4 |

**Formula**: `max_workers = min(num_plans, total_cores // num_cores)`

### Geometry Flags

| Scenario | `clear_geompre` | `force_geompre` |
|----------|-----------------|-----------------|
| Geometry unchanged | `False` | `False` |
| Minor edits (Manning's n) | `True` | `False` |
| Major changes (new mesh) | `False` | `True` |
| Geometry corruption | `False` | `True` |

### Skip/Rerun Flags

| Scenario | `force_rerun` | `skip_existing` |
|----------|---------------|-----------------|
| Normal (smart skip) | `False` | `False` |
| Force fresh results | `True` | `False` |
| Resume interrupted | `False` | `True` |

---

## Dependency Analysis

### Check for Blockers

```python
def get_runnable_plans(plan_df):
    """Identify which plans can execute."""
    runnable, blocked = [], {}

    for _, plan in plan_df.iterrows():
        plan_num = plan['plan_number']
        geom_ok = Path(plan['Geom Path']).exists() if plan.get('Geom Path') else True
        flow_ok = Path(plan['Flow Path']).exists() if plan.get('Flow Path') else True

        if geom_ok and flow_ok:
            runnable.append(plan_num)
        else:
            blocked[plan_num] = "Missing geometry" if not geom_ok else "Missing flow"

    return runnable, blocked

Dependencies to Consider

  1. Shared Geometry - Plans using same geometry can run in parallel
  2. Upstream/Downstream - Cascade models need sequential execution
  3. DSS Dependencies - Plans reading same DSS may conflict

Context-Specific Templates

Debugging Context

RasCmdr.compute_test_mode(
    plans_to_run=["01", "02", "03"],
    dest_folder_suffix="[Debug]",
    num_cores=2,
    verify=True
)

Production Context

RasCmdr.compute_parallel(
    plans_to_run=["01", "02", "03"],
    max_workers=4,
    num_cores=4,
    verify=True
)

Monitoring Context

from ras_commander.callbacks import ConsoleCallback

RasCmdr.compute_plan(
    "01",
    stream_callback=ConsoleCallback(verbose=True),
    verify=True
)

Common Blockers

| Blocker | Resolution | |---------|------------| | Missing geometry file | Create geometry or fix .prj reference | | Missing flow file | Create flow file or fix reference | | Missing DSS file | Download/create DSS or update path | | Geometry HDF outdated | Run with force_geompre=True | | Results already current | Use force_rerun=True if needed | | HEC-RAS < 6.0 | Use RasControl skill instead |


Integration

Upstream Skills

  • hecras-project-inspector - Generates intelligence report
  • reading-dss-boundary-data - Validates boundary conditions
  • repairing-geometry-issues - Fixes geometry blockers

Downstream Skills

  • executing-hecras-plans - Runs the execution plan
  • executing-remote-plans - Distributed execution
  • extracting-hecras-results - Post-execution analysis
  • parsing-compute-messages - Interpret execution results

See Also

  • .claude/rules/hec-ras/execution.md - Complete parameter documentation
  • .claude/agents/hecras-project-inspector.md - Input format details
  • examples/113_parallel_execution.ipynb - Working parallel example