Skip to main content

Package with additional tools to the OrcFxAPI package

Project description

NsgOrcFx

Library of tools for the OrcaFlex API

This package wraps the original API from Orcina (OrcFxAPI) to include:

  • methods: pre- and post-processing tools such as line selection, load case generation, modal and fatigue analysis
  • coding facilities: auto-complete and hints with descriptions in IDE


All the attributes and methods from the source (OrcFxAPI) still accessible in the same way.


Installation:

pip install --upgrade NsgOrcFx

Example 1 - Auto-complete feature of IDE (e.g. VS Code and Spyder)

import NsgOrcFx

model = NsgOrcFx.Model()
line = model.CreateLine()

The data name may be found in the data attribute with the auto complete of the IDE (e.g., Visual Studio Code, Spyder, and PyCharm).

Screenshot of auto-complete with the 'data' component of objects (e.g., line.data.{data name})

In addition, a hint shows the description of the parameter (mouse cursor stopped in the data name).

Screenshot of hint with the 'data' component of objects (e.g., line.data.{data name})

In the exemple below, data names of general, environment, and line objects are accessed

model.general.data.ImplicitConstantTimeStep = 0.01 # data from general object
model.environment.data.WaveHeight = 5.0 # data from environment object
line.data.EndAConnection = 'Anchored' # data form the line object

The line could be alse located by name with the following method. Although it could be done with the original method (line = model['Line1']), the new method is recommended to allow the functionality of auto-complete (data attribute)

line = model.findLineByName('Line1')

A list of all lines in the model may be retrieved and then select the first one by

lines = model.getAllLines()
line1 = lines[0]

Example 2 - Reduced simulation time for irregular wave

import NsgOrcFx as ofx

model = ofx.Model()

# set irregular wave
model.environment.data.WaveType = 'JONSWAP'
model.environment.data.WaveHs = 2.5
model.environment.data.WaveGamma = 2
model.environment.data.WaveTp = 8

# set reduced simulation duration with 200 seconds
model.SetReducedSimulationDuration(200)

# save data file to check the wave history
model.Save('reduced.dat')

# after executing this code, open the generated data file
# then open Environment -> Waves preview, and set duration of 200s 
# click in View profile and observe that the largest event (rise or fall)
# is in the midle of the sea elevation history

Screenshot of Wave preview (Environment -> Waves preview -> View profile) for a simulation of irregular wave with reduced duration based on the largest rise/fall occurence

Example 3 - Generate load cases

import NsgOrcFx

model = NsgOrcFx.Model()
model.CreateLine()

# list of wave direction, height, and periods to define the Load Cases (LCs)
directions = [0, 45, 90] 
heights = [1.5, 2.0, 3.0]
periods = [5, 7, 9]

# Folder to save the generated files (LCs)
outFolder = 'tmp'

# Regular waves
model.GenerateLoadCases('Dean stream', directions, heights, periods, outFolder)


In case of irregular wave:

model.GenerateLoadCases('JONSWAP', directions, heights, periods, outFolder)


To run irregular waves with reduced simulation time, based on the occurance of the largest rise or fall in the specified storm period.

model.GenerateLoadCases('JONSWAP', directions, heights, periods, outFolder, reducedIrregDuration=200)

Example 4 - Calculating modal analysis and getting the normalized modal shape

import NsgOrcFx

model = NsgOrcFx.Model()
model.CreateLine()

modes = model.CalculateModal()

# mode shape index (0 for the 1st)
modeIndex = 0

# mode frequency
freq = modes.getModeFrequency(modeIndex)

# if normalize = True, the displacements will be normalized, so the maximum total displacements is equal to the line diameter
[arcLengths, Ux, Uy, Uz] = modes.GlobalDispShape('Line1', modeIndex, True)
print('Frequency = ', freq, 'Hz')
print(arcLengths, Ux, Uy, Uz)

Example 5 - Defining fatigue analysis and getting the fatigue life calculated

import NsgOrcFx

simFile = r'tests\tmp\fatigue.sim'
ftgFile = r'tests\tmp\fatigue.ftg'

# First, it is necessary a model with simulation complete
model = NsgOrcFx.Model()
model.CreateLine()
model.RunSimulation()
model.Save(simFile) 

# The fatigue analysis is defined, including the S-N curve based on the DNV-RP-C203
analysis = NsgOrcFx.FatigueAnalysis()
analysis.data.AnalysisType = 'Rainflow'
analysis.data.LoadCaseCount = 1
analysis.addLoadCase(simFile)
analysis.addSNCurveByNameAndEnv('F3','seawater')
analysis.addAnalysisData()
analysis.Calculate()
analysis.Save(ftgFile)

# Result of fatigue life in each node
lifePerNode = analysis.getLifeList()
print(lifePerNode)

Example 6 - Generates RAO plots from vessel type data

import NsgOrcFx as ofx

model = ofx.Model()

# Create a 'Vessel Type' object with default data
model.CreateObject(ofx.ObjectType.VesselType)

# Create RAO plots (amplitude and phase) and save to the defined folder
model.SaveRAOplots(r'tests\tmptestfiles')

 plot generated with SaveRAOplots() method

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nsgorcfx-1.0.24.tar.gz (35.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

NsgOrcFx-1.0.24-py3-none-any.whl (39.7 kB view details)

Uploaded Python 3

File details

Details for the file nsgorcfx-1.0.24.tar.gz.

File metadata

  • Download URL: nsgorcfx-1.0.24.tar.gz
  • Upload date:
  • Size: 35.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for nsgorcfx-1.0.24.tar.gz
Algorithm Hash digest
SHA256 6561c4ee2e09f50e88bcb1f41c9b93015c5b7d331201850d1c5112dac455f14a
MD5 f21d2d882061f9321358c56ceb9929e9
BLAKE2b-256 16b430d38d6c5fdc94e28dd15fe36f542c4050b92c86a9cadb5bf0f144af702e

See more details on using hashes here.

File details

Details for the file NsgOrcFx-1.0.24-py3-none-any.whl.

File metadata

  • Download URL: NsgOrcFx-1.0.24-py3-none-any.whl
  • Upload date:
  • Size: 39.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for NsgOrcFx-1.0.24-py3-none-any.whl
Algorithm Hash digest
SHA256 c82e9f8e8c5f104d2b1011478c705415eea95e049c3f01ec14088d6c44c6cb59
MD5 05bda65ae6599160772f592ca1ebbbc8
BLAKE2b-256 2506f9ee40816573c6b9fd91c932d512e0d5836c61b4bccab1958ddc81fe9624

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page