Skip to main content

Rhino plugin and PyElastica extension for data visualization.

Project description

PyElastica to Rhino

The package is in alpha-phase dev-stage.

PyElastica extension and Rhino plugin for Cosserat Rod (+ Rigid Body) visualization.

Requirements

The Grasshopper plugin does not have any additional requirement, but we recommend using anemone together. This plugin provide loop function that can be used to generate animated video.

Grasshopper Plugin

  • PyElastica exports npz file which can directly be imported using NpzImport module.
    • For now, NpzImport(Legacy) is used. More generalized version is still under development.
  • Provides CosseratRod and CosseratRodPeriodic that constructs rods directly.
    • Shape of position: (num_rod, timesteps, 3, num_nodes)
    • Shape of radius: (num_rod, timesteps, 3, num_elements)
    • If periodic is set to true, the trapazoidal averaging step is skipped for the radius.
  • All modules include C (switch) input. The purpose is to serialize the execution.
  • All modules include D (debug) output which returns the debugging text to inform progression or runtime error.

Legacy Import Mode

The grasshopper module import npz file. In the legacy import module, we expect the npz file to have the key <group>_position_history and <group>_radius_history for each group.

  • <group>_position_history should have the shape <number of rod, timesteps, 3 (dimension), number of nodes>.
  • <group>_radius_history should have the shape <number of rod, timesteps, number of elements>.

The number of nodes is expected to be one more than the number of elements. If the periodic is set to True, the number of nodes can be equal to the number of elements.

For sphere, the number of elements and the number of nodes are both 1. In such case, a sphere module must be used in grasshopper.

PyElastica Extension

We provide a data collector extension to PyElastica to easily collect the batch of data.

pip install elastica-rhino

Example Usage

import elastica
import elastica_rhino as er

... <simulation setup>

data_collector = er.RhinoExportCollector(
    save_path="data",
    step_skip=int((1/fps)/dt)  # Collect data every 'step_skip' iteration 
)
for arm in arm_list:
    simulation.collect_diagnostics(arm).using(
        er.ExportGeometry,
        data_collector,
        group="arm"
)
for muscle in muscle_list:
    simulation.collect_diagnostics(muscle).using(
        er.ExportGeometry,
        data_collector,
        group="muscle"
)

... <simulation setup>

simulation.finalize()

... <simulation run>

data_collector.save()

In Rhino, objects in the same group will be collected by layers. We recommend setting the parameter group for the same material or color of the rods.

Included Callbacks

  • ExportGeometry
  • ExportStrain (work in progress)
  • ExportInternalStress (work in progress)
  • ExportExternalStress (work in progress)

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

elastica_rhino-0.1.1.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

elastica_rhino-0.1.1-py2.py3-none-any.whl (6.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file elastica_rhino-0.1.1.tar.gz.

File metadata

  • Download URL: elastica_rhino-0.1.1.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.5

File hashes

Hashes for elastica_rhino-0.1.1.tar.gz
Algorithm Hash digest
SHA256 8c52322286822353dd28d4d593ab35f2832a4353db2e6317709b77479697d166
MD5 89835e291be08f6504a2bfb2a961ed61
BLAKE2b-256 a3138ef736fcc216b2dd4e2da5eb4fa7929a412e67a63db0602ac4ca8f769634

See more details on using hashes here.

File details

Details for the file elastica_rhino-0.1.1-py2.py3-none-any.whl.

File metadata

  • Download URL: elastica_rhino-0.1.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 6.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/32.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.62.3 importlib-metadata/4.11.1 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.8.5

File hashes

Hashes for elastica_rhino-0.1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 a391f38f82e44ccb27d6166d5d31f5de3fd66cd79798673f0b0542b0c7f27060
MD5 e34571692103f3f98f1ea513b6b4ed91
BLAKE2b-256 d2eb44ded097c2c1e95f878549a9bc70b5c3eaa174ef8ef5e942e8e4cca9f678

See more details on using hashes here.

Supported by

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