Skip to content
 
 

Latest commit

 

History

102 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

visCOT

COT(Combinatorial Orbit Topology)表記から流線図を自動生成する可視化ツール

2次元多重連結領域上の構造安定な非圧縮流れのトポロジーを、COT木表現から自動的に描画します。 深さに制限はなく、再帰的に任意の深さの木を可視化できます。

出力例

一様流 A0() 閉軌道を含む一様流 A0(a+(l+)) 2つの閉軌道 A0(a+(l+).a+(l+))
一様流 閉軌道 2つの閉軌道
鞍点結合 B0+(l+,c-(l-,).c-(l-,)) 3つの鞍点結合 障害物を含む流れ A0(a+(b++(B+{},B+{})))
鞍点結合 3つの鞍点結合 障害物を含む流れ

特徴

  • COT表記のパース — PLY(Python Lex-Yacc)ベースのパーサで木構造を構文解析
  • 自動レイアウト — 高さベースのスペーシングにより流線の重なりを防止
  • スプライン補間 — scipy による滑らかな流線の描画
  • レイアウト最適化 — Nelder-Mead 法による自動パラメータ最適化
  • 多彩な出力形式 — PNG, SVG, PDF, EPS に対応
  • 対話モード — 式を入力して即座にプレビュー

Requirements

  • Python 3.10+
  • matplotlib 3.7+
  • numpy 1.24+
  • scipy 1.10+
  • PLY 3.11+

インストール

git clone https://github.com/yokoyama-lab/visCOT.git
cd visCOT
pip install -e . --break-system-packages

開発用の依存パッケージ(pytest, ruff, mypy)も合わせてインストールする場合:

pip install -e ".[dev]" --break-system-packages

使い方

COT木表現を標準入力から与えて可視化する:

echo "A0(a2(c+(l+,).c+(l+,),c-(l-,).c-(l-,)))" | viscot

ファイルに保存する場合:

echo "A0(a2(c+(l+,).c+(l+,),c-(l-,).c-(l-,)))" | viscot -o output.png

ベクター形式で出力する場合:

echo "A0(a2(c+(l+,).c+(l+,),c-(l-,).c-(l-,)))" | viscot -o output.svg
echo "A0(a2(c+(l+,).c+(l+,),c-(l-,).c-(l-,)))" | viscot -o output.pdf

対話モードで起動する場合:

viscot -i

テスト

make test

Lint

make lint

About

Visualization program of tree representation of structurally stable incompressible flow in two dimensional multiple connection domain

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages