コンテンツにスキップ

ChainSolve とは? エンジニアリング計算への新しいアプローチ

ChainSolve の概要、その動作原理、存在する理由、およびスプレッドシート、Mathcad、従来の計算ツールとの違いについて。

BG ben godfrey · · 1 min read
CHAINSOLVE

計算上の課題

典型的な自動車サスペンション設計タスクを考えてみましょう。フロントコーナーのばね定数を決定する必要があります。これには以下が必要です:

  1. 目標固有振動数(車両ダイナミクス要件から導出)
  2. コーナー質量(車両重量配分から導出)
  3. モーションレシオ(サスペンション幾何学から導出)
  4. ばねインストール角度
  5. ホイールレート(目標周波数とコーナー質量から計算)
  6. コイルばね定数(ホイールレート、モーションレシオ、インストール角度から計算)

これらの値にはそれぞれ出所があります。仕様書から来る場合もあります。CAD モデルから来る場合もあります。他の計算から来る場合もあります。エンジニアリング判断である場合もあります。すべてを記録し、正当化し、追跡可能にする必要があります。

スプレッドシートでは、この計算が 30 行を占めることがあります。依存関係は暗黙的です。セル B14 はセル B8 を参照し、B8 は B3 を参照し、B3 は 6 ヶ月前に誰かが入力した値を参照しており、誰も出所を覚えていません。モーションレシオを変更すると、すべての下流値が正しく更新されたかどうかを手動で検証する必要があり、それらすべてを見つけられるとも限りません。

ChainSolve は根本的に異なるアプローチを採用しています。

グラフとしての計算

ChainSolve では、上記のばね定数計算は平坦なセルのリストではなく、計算ブロックの有向非環グラフです:

  • 入力は明示的で、命名され、型付けされ、文書化されています。各入力は値、単位、出所、および仮定を記録します。
  • ブロックは自己完結した計算ステップです。ブロックは命名された入力を受け取り、定義された計算(単純な公式から複雑な数値計算法まで)を適用し、命名された出力を生成します。
  • 接続は一つのブロックの出力を別のブロックの入力にリンクします。これらの接続は明示的で可視化されており、セル参照内に隠れていません。
  • チェーンは、完全なエンジニアリング計算を表すブロックの合成グラフです。

入力を変更すると、ChainSolve は影響を受けたすべての下流ブロックを識別し、トポロジカル順に再計算します。何が変更され、何が影響を受けたかについて曖昧性がありません。

既存ツールとの違い

スプレッドシート(Excel、Google Sheets): スプレッドシートは数式を持つセルのグリッドを提供します。依存関係はセル参照に暗黙的です。型付けがなく、単位チェックがなく、値に仮定や出所を添付する構造的な方法がありません。協力はファイルをメールで送信するか、共有ドライブバージョンが最新であることを期待することを意味します。ChainSolve は暗黙的なセルグラフを明示的で文書化された合成可能な計算グラフに置き換えます。

Mathcad / SMath: これらのツールは単一の分析のための読みやすく文書化された計算を作成するのに優れています。しかし、それらは本質的にドキュメント指向であり、Mathcad ワークシートはページであり、合成可能なコンポーネントではありません。あるワークシートからはり変形計算を取得し、別のワークシートから荷重計算とプログラムで合成することはできません。ChainSolve のブロックモデルは合成を第一級の操作にします。

カスタムスクリプト(Python、MATLAB): カスタムスクリプトを記述するエンジニアは合成性とバージョン管理を得ていますが、アクセス性を失います。チームのすべてのエンジニアが Python を読むことができるわけではありません。すべての計算がスクリプトの記述と保守を正当化するわけではありません。ChainSolve はコードの合成性をビジュアルツールのアクセス性と組み合わせます。

PLM 統合ツール: 製品ライフサイクル管理システムはトレーサビリティを提供しますが、極めて大きなオーバーヘッドがあります。これらは専任の管理者を持つ大規模な組織向けに設計されています。ChainSolve は企業インフラストラクチャを必要とせずに計算レベルのトレーサビリティを提供します。

コアワークフロー

典型的な ChainSolve ワークフロー:

  1. チェーンを作成します(例:「フロントサスペンションばね定数」)
  2. 入力ブロックを定義します:既知値、コーナー質量、目標周波数、モーションレシオ
  3. 計算ブロックを追加します:入力を出力に変換するもの。周波数と質量からホイールレート、ホイールレートとモーションレシオから春のレート
  4. ブロックを接続して依存グラフを作成します
  5. チェーンを実行してすべての出力を計算します
  6. エクスポートします。完全なトレーサビリティを備えた文書化されたレポートとして計算を

すべての変更が記録されます。すべての仮定が適用される値に添付されます。すべての計算はバージョン管理、共有、および大規模計算のコンポーネントとして再利用できます。

パフォーマンスのために構築

ChainSolve の計算エンジンは Rust で記述され、WebAssembly にコンパイルされています。これは以下を意味します:

  • 計算はブラウザで近いネイティブ速度で実行され、計算のためのサーバーラウンドトリップはありません
  • アプリケーション全体が読み込み後、オフラインで機能します
  • 数百のブロックを持つ複雑なチェーンはミリ秒で評価されます
  • 同じエンジンは一括処理と CI/CD 統合のためにサーバー側で実行できます

次に来るもの

ChainSolve は現在開発中です。上記のコアワークフローをカバーする初期リリースに向けて構築しており、自動車およびモータースポーツ分野の機械工学計算に焦点を当てています。

早期アクセスをご希望の場合、または開発をフォローしたい場合は、chainsolve.co.uk を訪問するか、このブログの RSS フィード に登録してください。

Written by
BG
ben godfrey
Godfrey Engineering Ltd. のエンジニア