[!WARNING]
Part of the Python API documented below does not exist in
digitalmodel. These snippets are a specification of intended
capability, not runnable code. Do not import them, and do not report
a result obtained by pretending they ran.
Absent as of this revision:
digitalmodel.subsea.viv_analysis.viv_fatigue
digitalmodel.subsea.viv_analysis.viv_fatigue.VIVFatigue
The surrounding engineering content — method, conventions, what to
watch for — is unaffected and remains usable. Tracked in
aceengineer-strategy#267.
Viv Analysis
When to Use
- VIV analysis for risers and pipelines
- Pipeline free-span VIV screening and fatigue prechecks
- Natural frequency calculation for tubular members
- Vortex shedding frequency analysis
- VIV fatigue damage assessment
- Tubular member VIV screening
- Safety factor evaluation against VIV criteria
- Pressure wall prechecks when VIV span inputs depend on pipe wall/section properties
Prerequisites
- Python environment with
digitalmodel package installed
- Member geometry and material properties
- Current velocity profiles
- For risers: tension distribution along length
Python API
Natural Frequency Calculation
from digitalmodel.subsea.viv_analysis.viv_analysis import VIVAnalysis
from digitalmodel.subsea.viv_analysis.viv_tubular_members import VIVTubularMembers
# Initialize analysis
viv = VIVAnalysis()
# Define member properties
member = {
"length": 50.0,
*See sub-skills for full details.*
### Vortex Shedding Analysis
```python
# Vortex shedding frequency
diameter = 0.5 # meters
current_velocity = 1.5 # m/s
strouhal = 0.2
shedding_freq = viv.vortex_shedding_frequency(
diameter=diameter,
velocity=current_velocity,
strouhal_number=strouhal
*See sub-skills for full details.*
### Tubular Member Analysis
```python
from digitalmodel.subsea.viv_analysis.viv_tubular_members import VIVTubularMembers
# Initialize tubular member analysis
tubular = VIVTubularMembers()
# Define member
member_props = {
"name": "Brace1",
"outer_diameter": 0.324,
*See sub-skills for full details.*
### VIV Fatigue Assessment
```python
from digitalmodel.subsea.viv_analysis.viv_fatigue import VIVFatigue
# Initialize VIV fatigue analysis
viv_fatigue = VIVFatigue()
# Calculate VIV-induced stress range
stress_range = viv_fatigue.calculate_stress_range(
amplitude=0.5, # VIV amplitude in diameters
diameter=0.324,
*See sub-skills for full details.*
## Pipeline Free-Span VIV Workflow Notes
For subsea pipeline span work, treat VIV screening as a coupled structural/fatigue workflow rather than a standalone vortex-shedding calculation:
1. Establish pipe section properties from the actual design basis: OD, nominal WT, corrosion allowance, mill tolerance, grade/SMYS, weld factor, temperature factor, and code/design factor.
2. Run a pressure-wall sanity check before relying on the section for span/fatigue calculations. When using `digitalmodel`, prefer the pipe-capacity implementation under `src/digitalmodel/structural/pipe_capacity/` and document the equation branch used.
3. Use minimum/corroded wall for span stress and fatigue section properties unless the governing code or project basis specifies another convention.
4. Then evaluate span natural frequencies, reduced velocity, lock-in susceptibility, stress range, fatigue damage, and acceptance criteria under DNV-RP-F105 / DNV-ST-F101 or project-specific rules.
5. Do not present pressure containment as final wall adequacy; collapse, propagation buckling, local buckling, installation, hydrotest, thermal/strain, on-bottom stability, and VIV/free-span fatigue may still govern.
See `references/pipeline-span-pressure-wall-precheck.md` for the session-derived digitalmodel pressure-wall pattern and 12 in / 3000 psi example.
## Key Classes
| Class | Purpose |
|-------|---------|
| `VIVAnalysis` | Main VIV analysis router |
| `VIVTubularMembers` | Tubular member assessment |
| `VIVAnalysisComponents` | Component-level analysis |
| `VIVFatigue` | VIV-induced fatigue damage |
## Related Skills
- [catenary-riser](../catenary-riser/SKILL.md) - Riser configuration
- [fatigue-analysis](../fatigue-analysis/SKILL.md) - VIV fatigue damage
- [structural-analysis](../structural-analysis/SKILL.md) - Stress verification
## References
- DNV-RP-C205: Environmental Conditions and Environmental Loads
- DNV-RP-F105: Free Spanning Pipelines
- Blevins, R.D.: Flow-Induced Vibration
## Sub-Skills
- [Best Practices](best-practices/SKILL.md)
## Sub-Skills
- [Version Metadata](version-metadata/SKILL.md)
- [[1.0.0] - 2026-01-07](100-2026-01-07/SKILL.md)
- [1. Natural Frequency Analysis (+3)](1-natural-frequency-analysis/SKILL.md)
- [Strouhal Number (+2)](strouhal-number/SKILL.md)
- [Complete VIV Screening Workflow](complete-viv-screening-workflow/SKILL.md)
- [Natural Frequencies JSON (+1)](natural-frequencies-json/SKILL.md)
- [Design Code References](design-code-references/SKILL.md)
1---2name: viv-analysis-23description: Assess vortex-induced vibration (VIV) for risers and tubular members with natural frequency and safety factor calculations. Use for VIV susceptibility analysis, natural frequency calculation, vortex shedding assessment, and tubular member fatigue from VIV.4---56<!-- ace:api-missing-warning -->7> [!WARNING]8> **Part of the Python API documented below does not exist in9> `digitalmodel`.** These snippets are a *specification* of intended10> capability, not runnable code. Do not import them, and do not report11> a result obtained by pretending they ran.12>13> Absent as of this revision:14> - `digitalmodel.subsea.viv_analysis.viv_fatigue`15> - `digitalmodel.subsea.viv_analysis.viv_fatigue.VIVFatigue`16>17> The surrounding engineering content — method, conventions, what to18> watch for — is unaffected and remains usable. Tracked in19> aceengineer-strategy#267.2021<!-- ace:known-missing: digitalmodel.subsea.viv_analysis.viv_fatigue, digitalmodel.subsea.viv_analysis.viv_fatigue.VIVFatigue -->2223# Viv Analysis2425## When to Use2627- VIV analysis for risers and pipelines28- Pipeline free-span VIV screening and fatigue prechecks29- Natural frequency calculation for tubular members30- Vortex shedding frequency analysis31- VIV fatigue damage assessment32- Tubular member VIV screening33- Safety factor evaluation against VIV criteria34- Pressure wall prechecks when VIV span inputs depend on pipe wall/section properties3536## Prerequisites3738- Python environment with `digitalmodel` package installed39- Member geometry and material properties40- Current velocity profiles41- For risers: tension distribution along length4243## Python API4445### Natural Frequency Calculation4647```python48from digitalmodel.subsea.viv_analysis.viv_analysis import VIVAnalysis49from digitalmodel.subsea.viv_analysis.viv_tubular_members import VIVTubularMembers5051# Initialize analysis52viv = VIVAnalysis()5354# Define member properties55member = {56 "length": 50.0,5758*See sub-skills for full details.*59### Vortex Shedding Analysis6061```python62# Vortex shedding frequency63diameter = 0.5 # meters64current_velocity = 1.5 # m/s65strouhal = 0.26667shedding_freq = viv.vortex_shedding_frequency(68 diameter=diameter,69 velocity=current_velocity,70 strouhal_number=strouhal7172*See sub-skills for full details.*73### Tubular Member Analysis7475```python76from digitalmodel.subsea.viv_analysis.viv_tubular_members import VIVTubularMembers7778# Initialize tubular member analysis79tubular = VIVTubularMembers()8081# Define member82member_props = {83 "name": "Brace1",84 "outer_diameter": 0.324,8586*See sub-skills for full details.*87### VIV Fatigue Assessment8889```python90from digitalmodel.subsea.viv_analysis.viv_fatigue import VIVFatigue9192# Initialize VIV fatigue analysis93viv_fatigue = VIVFatigue()9495# Calculate VIV-induced stress range96stress_range = viv_fatigue.calculate_stress_range(97 amplitude=0.5, # VIV amplitude in diameters98 diameter=0.324,99100*See sub-skills for full details.*101102## Pipeline Free-Span VIV Workflow Notes103104For subsea pipeline span work, treat VIV screening as a coupled structural/fatigue workflow rather than a standalone vortex-shedding calculation:1051061. Establish pipe section properties from the actual design basis: OD, nominal WT, corrosion allowance, mill tolerance, grade/SMYS, weld factor, temperature factor, and code/design factor.1072. Run a pressure-wall sanity check before relying on the section for span/fatigue calculations. When using `digitalmodel`, prefer the pipe-capacity implementation under `src/digitalmodel/structural/pipe_capacity/` and document the equation branch used.1083. Use minimum/corroded wall for span stress and fatigue section properties unless the governing code or project basis specifies another convention.1094. Then evaluate span natural frequencies, reduced velocity, lock-in susceptibility, stress range, fatigue damage, and acceptance criteria under DNV-RP-F105 / DNV-ST-F101 or project-specific rules.1105. Do not present pressure containment as final wall adequacy; collapse, propagation buckling, local buckling, installation, hydrotest, thermal/strain, on-bottom stability, and VIV/free-span fatigue may still govern.111112See `references/pipeline-span-pressure-wall-precheck.md` for the session-derived digitalmodel pressure-wall pattern and 12 in / 3000 psi example.113114## Key Classes115116| Class | Purpose |117|-------|---------|118| `VIVAnalysis` | Main VIV analysis router |119| `VIVTubularMembers` | Tubular member assessment |120| `VIVAnalysisComponents` | Component-level analysis |121| `VIVFatigue` | VIV-induced fatigue damage |122123## Related Skills124125- [catenary-riser](../catenary-riser/SKILL.md) - Riser configuration126- [fatigue-analysis](../fatigue-analysis/SKILL.md) - VIV fatigue damage127- [structural-analysis](../structural-analysis/SKILL.md) - Stress verification128129## References130131- DNV-RP-C205: Environmental Conditions and Environmental Loads132- DNV-RP-F105: Free Spanning Pipelines133- Blevins, R.D.: Flow-Induced Vibration134135## Sub-Skills136137- [Best Practices](best-practices/SKILL.md)138139## Sub-Skills140141- [Version Metadata](version-metadata/SKILL.md)142- [[1.0.0] - 2026-01-07](100-2026-01-07/SKILL.md)143- [1. Natural Frequency Analysis (+3)](1-natural-frequency-analysis/SKILL.md)144- [Strouhal Number (+2)](strouhal-number/SKILL.md)145- [Complete VIV Screening Workflow](complete-viv-screening-workflow/SKILL.md)146- [Natural Frequencies JSON (+1)](natural-frequencies-json/SKILL.md)147- [Design Code References](design-code-references/SKILL.md)