RecurDynとParticleworksのCo-Simulation

FunctionBay社のRecurDynは、マルチボディダイナミクス(MBD)のシミュレーションを主な機能とする学際的なCAE(Computer Aided Engineering)ソフトウェアパッケージです。Prometech社が提供するParticleworksは、シミュレーションが困難とされる大きな自由曲面を含む流体の動きをシミュレーションするための代表的なソフトウェアです。ユーザーは、以下のチュートリアルに記載された手順で、Rescale ScaleXプラットフォーム上でParticleworksとRecurDynのコ・シミュレーションを実行することができます。

このチュートリアルでは、RecurDynとParticleworksのコ・シミュレーションをバッチで実行するデモを行います。このデモで使用したシミュレーションは、ピストンの挙動がエンジン内の潤滑油分布に与える影響を確認するためのものです。約50,000個のパーティクルが使用されました。

お困りの方はRescaleサポートにご連絡ください。

Engine
Import job Setup ボタンをクリックしてこのチュートリアルのジョブ設定を複製したり、Get Job Results ボタンをクリックしてこのチュートリアルの完了したジョブを自分のアカウントに共有したりすることができます。



ジョブ概要

Simulation CodeRecurDyn V9R1 – Particleworks 6.1
Analysis TypeMBD-Particle based CFD co-simulation
DescriptionA Simulation of lubricant behavior inside an engine
Suggested HardwareEmerald / 18 cores
Commandexport OMP_NUM_THREADS=18 export MPI_PROCS=$((RESCALE_CORES_PER_SLOT / (OMP_NUM_THREADS/2))) mpirun -machinefile $MACHINEFILE -n $MPI_PROCS app.solver.double -p $PWD/scene -k simd -n $OMP_NUM_THREADS –inter_proc_cmd=’rdsolver sampleEngineModel sampleEngineModel’
Estimated Run TimeAbout 1 hour

プロジェクトファイルの生成

Rescale上でRecurDynとParticleworksのコ・シミュレーションを行うには、コマンド使用に適したプロジェクトを作成する必要があります。この作業は、Rescale内のLinux環境を使って解析できるように、Windows環境でのモデルを先に作成しておく必要があります。

RecurDyn Setting

Exporting .rmd file
  • sampleEngineModel.rmdを作成するには、sceneフォルダ内のsampleEngineModel.rdynを開き、.rmdファイルを作成します。RecurDynソルバーの設定パラメータを保存し、RecurDynモデルからエクスポートします。
  • sampleEngineModel.rss の作成方法 ・Analysis タブで Scenario をクリックし、下図に示す手順で .rss ファイルを作成します。.rssファイルはSimulation Scenarioファイルであり、シミュレーションに必要な時間やデータ出力間隔などの情報が含まれています。
Exporting .rss file
  • sampleEngineModel.rmdとsampleEngineModel.rssはどちらもシーンフォルダに配置されている必要があります。
  • 詳細は、RecurDynオンラインヘルプ > Linux Standalone Solverを参照してください。

Particleworks設定

  • 1ステップだけ解析したら、Particleworksを一時停止する。すると、プロジェクトファイル/scene/sub.jsonが自動的に作成されます。sub.json ファイルには Particleworks 用の変数が含まれています。
  • 自動生成されたプロジェクトファイル/models/models.jsonを開いてください。そして、cadファイルのパスを削除した後、下図のようにファイル名を残してください。
Change of cad file path

ジョブセットアップ

ログインと初期画面

  • Rescaleの利用を開始するには、platform.rescale.comにアクセスし、アカウント情報を使ってログインしてください。
  • ログインすると、以下のような初期画面が表示され、すでに持っている仕事の管理、または新しい仕事の作成ができます。
  • プラットフォームのメイン画面から、画面左上にある「+New Job」ボタンをクリックします。これにより、セットアップページが表示されます。
Initial Screen
  • プロジェクトファイルを生成する」で作成したフォルダをローカルにZIPして、プロジェクトファイル(*.zip)をRescaleにアップロードします。
Upload project file

ソフトウェアの設定

  • 次へ」をクリックして、解析の「ソフトウェア設定」セクションに進みます。

Particleworks

  • ソフトウェア」をクリックした後、「Particleworks」を検索します。その後、ソフトウェア構成設定に追加します。
Adding particleworks
  • :コマンドを使用したコ・シミュレーションでは、Particleworks用のコマンドがRecurDynを含む全てのコマンドを制御します。これは、Particleworksの並列化設定で必要となるハードウェアと並列化ライブラリを正しく使用するために不可欠です。
  • ここで、下図のようにParticleworks用のコマンドを入力します。RecurDyn と Particleworks の協調シミュレーションのためのコマンドは、Particleworks のコマンドウィンドウに入力します。コマンドの説明は本節の最後にあります。
Commands
  • ライセンスサーバーとRescaleを接続するために、ライセンスオプションで持っているライセンスのパスを入力します。

RecurDyn

  • RecurDynを検索して、ソフトウェアの設定に追加してください。
  • 解析オプションのコマンドウィンドウで#を使用してコメントアウトします(例:#rdsolver)。
  • ライセンスサーバーとRescaleを接続するために、ライセンスオプションで持っているライセンスのパスを入力します。

Command Explanation

  • export OMP_NUM_THREADS=18: OMP_NUM_THREADの変数に使用されるハードウェアのスレッド数を定義します。例えば、Intel Xeon E5-2655 v3ハードウェアをシミュレーションに使用する場合、このハードウェアは9コアで、Rescaleはデフォルトでハイパースレッディングを使用するため、スレッド数は18となります。
  • export MPI_PROCS=$((RESCALE_CORES_PER_SLOT / (OMP_NUM_THREADS/2))) と入力します。Particleworksの並列化はプロセス単位で行われるため(1プロセスは1ノード)、コマンドにはプロセスの総数を入力する必要があります。
  • Rescale独自の変数である「RESCALE_CORES_PER_SLOT」を使用すると、コアの総数を読み込むことができます。これをノードあたりのコア数(OMP_NUM_THREADS / 2)で割ると、作成するプロセス数を算出することができます。
  • mpirun -machinefile $MACHINEFILE -n $MPI_PROCS app.solver.double -p $PWD/scene -k simd -n $OMP_NUM_THREADS –inter_proc_cmd=’rdsolver sampleEngineModel sampleEngineModel’ :
  • mpirun: MPIの実行
  • -machinefile $MACHINEFILE: クラスタに登録されているマシン情報を読み込む
  • -n $MPI_PROCS:プロセス数
  • app.solver.double: Particleworksの倍精度ソルバー(単精度シミュレーションにはapp.solver.floatが使用されます。)
  • -p $PWD/scene: working directory. このデモでは、解凍された現在の場所である$PWDのサブフォルダである’scene’フォルダで操作を行います。
  • -k simd: CPUによる並列化実行(GPU使用時:-k cuda)
  • -n $OMP_NUM_THREADS: 各ノードで使用するスレッド数
  • –inter_proc_cmd=‘***‘: Co-SimulationのためのRecurDynソルバーに関する詳細情報
  • rdsolver: RecurDyn Solver
  • sampleEngineModel: *.rmdのファイル名
  • sampleEngineModel: .rssのファイル名

参考文献をご参照ください。7.10 コマンドライン(Particleworksインストールパス/Documents/UserManual.pdf)を参照してください。

ハードウェアの設定

  • ハードウェア設定]ボタンをクリックし、Rescaleが提供する適切なハードウェアを選択します。
Hardware settings
  • この例では、Emeraldタイプで18コアを選択しました。

ジョブを送信する

  • 画面右上のSubmitをクリックします。その後、以下の順序でシミュレーションが進行します。
  • Live Tailing’ウィンドウのProcess_output.logをクリックします。リアルタイムに出力されるシミュレーションログと、ソルバーのステータスメッセージを見ることができます。出力されるログはすべて一般的なLinux環境と同じであり、同じようにレビューに利用することができます。
Check output log

結果

  • 右側の「Results」タブをクリックします。Download Jobをクリックし、結果ファイルをダウンロードします。
Result file download

본 데모에서 사용할 예제는, 리커다인과 파티클웍스의 연성 해석을 통해 엔진 내 피스톤 거동이 윤활유 분포에 미치는 영향을 확인하기 위한 시뮬레이션이며 약 5만개의 입자를 사용하였다.Engine
다음 링크를 클릭하면 작업 설정을 가져 오거나 Rescale의 플랫폼에서 직접 작업 결과를 가져올 수 있습니다.


작업 설정 가져 오기


직무 결과 얻기


작업 요약

소프트웨어RecurDyn V9R1 – Particleworks 6.1
분석 유형MBD-Particle based CFD co-simulation
기술A Simulation of lubricant behavior in engine
하드웨어Emerald / 18 cores
커맨드export OMP_NUM_THREADS=18 export MPI_PROCS=$((RESCALE_CORES_PER_SLOT / (OMP_NUM_THREADS/2))) mpirun -machinefile $MACHINEFILE -n $MPI_PROCS app.solver.double -p $PWD/scene -k simd -n $OMP_NUM_THREADS –inter_proc_cmd=’rdsolver sampleEngineModel sampleEngineModel’
시뮬레이션 시간약 1시간

프로젝트 생성하기

리스케일 환경에서 리커다인-파티클웍스 연성해석을 수행하기 위해 먼저 커맨드 사용에 적합한 프로젝트를 생성하여야 한다. 윈도우 환경의 모델에서 본 작업이 선행 되어야 리눅스 환경을 기반으로 하는 리스케일 플랫폼에서 해석이 가능하다.

RecurDyn 셋팅

  • sampleEngineModel.rmd을 생성한다.
    scene 폴더 내에 있는 sampleEngineModel.rdyn을 열어 rmd파일을 생성한다.
    *.rmd 파일 :RecurDyn 솔버의 셋팅파라미터 정보를 저장, RecurDyn 모델에서 export
Exporting .rmd file
  • sampleEngineModel.rss을 생성한다.
    Analysis탭에 있는 Scenario에서 아래 프로세스에 따라 rss파일을 생성한다.
    *.rss 파일: 시뮬레이션 시나리오 파일, 총 시뮬레이션 시간 및 데이터 출력간격 정보 포함
Exporting .rss file
  • sampleEngineModel.rmd파일과 sampleEngineModel.rss파일은 반드시 scene 폴더 내에 위치
  • 참고자료: RecurDyn online help > Linux Standalone Solver

Particleworks 셋팅

  • Particleworks 단독으로 1스텝 해석 후 정지시켜 자동으로 프로젝트/scene/sub.json 파일이 생성되게 한다. sub.json은 Particleworks의 변수 포함
  • 역시 자동으로 생성된 프로젝트/models/models.json 파일을 열어, 아래 그림과 같이 cad파일의 경로를 삭제하고 파일명만 남긴다.
Change of cad file path

리스케일에서 Job 셋팅

로그인 및 초기 화면

    • 로그인을 하면 아래와 같은 초기 화면을 볼 수 있고, 보유한 Job들을 관리하거나 새로운 작업을 생성 할 수 있다. ( kr.rescale.com )
    • 새로운 작업 생성 – 새 작업 버튼을 클릭하여 새로운 작업을 생성한다.
Initial Screen
  • ‘1. 프로젝트 파일 생성하기(Generate project file)’ 과정에서 작업한 폴더를 zip 포맷으로 압축한다. zip 형식으로 압축한 프로젝트 파일을 리스케일에 업로드한다
Upload project file

소프트웨어 설정

소프트웨어 설정 구성에서 파티클웍스 추가

  • 소프트웨어 선택 탭에서 ‘Particleworks’를 검색하여 추가한다.
Adding particleworks
  • 참고: 커맨드를 이용한 co-simulation의 경우 Particleworks 커맨드를 사용하여 리커다인을 포함한 모든 명령을 제어한다. 이는 Particleworks의 병렬화 셋팅에서 요구하는 하드웨어 및 병렬화 라이브러리를 정확히 사용하기 위해 필수적이다.
  • ‘분석 옵션’의 ‘Command’ 창에 co-simulation을 위한 커맨드를 입력한다.
Commands
  • ‘라이선스 옵션’에 보유한 라이선스의 경로를 입력하여 라이센스 서버와 리스케일을 연결한다.

소프트웨어 설정 구성에서 RecurDyn 추가

  • C-i 의 과정을 되풀이하여 RecurDyn을 소프트웨어에 추가한다.
  • ‘분석 옵션’의 Command 창에 ‘#’을 이용하여 주석 처리한다. (Ex: #rdsolver)
  • ‘라이선스 옵션’에 보유한 라이선스의 경로를 입력하여 라이센스 서버와 리스케일을 연결한다.

. 명령의 세부 사항

  • export OMP_NUM_THREADS=18: OMP_NUM_THREAD 변수에 사용할 하드웨어의 스레드 수를 저장한다. 예를 들어 해석에 Intel Xeon E5-2655 v3 하드웨어를 이용하는 경우, 이 하드웨어는 9개의 core를 가지고 있고, rescale은 기본적으로 하이퍼스레딩을 사용하기 때문에 thread의 수는 18이 된다.
  • Export: 변수를 저장한다
    export MPI_PROCS=$((RESCALE_CORES_PER_SLOT / (OMP_NUM_THREADS/2))) : 파티클웍스의 병렬화는 프로세스단위(1개의 프로세스는 1개의 노드를 의미)로 이루어지기 때문에 총 프로세스 개수를 커맨드에 입력해야 한다.
    리스케일의 자체변수인 RESCALE_CORES_PER_SLOT을 이용하여 총 core수를 불러올 수 있으며, 이를 각 노드당 코어 개수인 OMP_NUM_THREADS/2로 나누어 생성할 프로세스의 개수를 산정할 수 있다.
  • mpirun -machinefile $MACHINEFILE -n $MPI_PROCS app.solver.double -p $PWD/scene -k simd -n $OMP_NUM_THREADS –inter_proc_cmd=’rdsolver sampleEngineModel sampleEngineModel’
    • mpirun: mpi 실행
    • -machinefile $MACHINEFILE: 클러스터에 등록된 머신 정보를 입력
    • -n $MPI_PROCS: 프로세스 개수
    • app.solver.double: double precision을 사용하는 Particleworks의 솔버 (Single precision계산의 경우 app.solver.float 사용)
    • -p $PWD/scene: 작업디렉토리. 본 데모의 경우 압축이 해제된 현재위치인 $PWD의 하위폴더인 scene에서 작업이 수행됨
    • -k simd: cpu 병렬 연산 수행, GPU를 사용할 경우 ‘–k cuda’
    • -n $OMP_NUM_THREADS: 각 노드당 사용할 스레드 개수
    • –inter_proc_cmd=‘***‘: co-simulation에 사용할 리커다인 솔버 상세내용
    • rdsolver: 리커다인의 솔버
    • sampleEngineModel: rmd 파일명
    • sampleEngineModel: rss 파일명
  • 참고자료: Particleworks install path/Documents/UserManual.pdf 중 7.10 Command Line

하드웨어 설정

  • 하드웨어 설정 버튼을 클릭하여 리스케일에서 제공하는 하드웨어 중 적합한 장치를 선택할 수 있다.
Hardware settings
  • 이 예제의 경우 : 18 cores on Emerald

작업 저장 및 제출

  • 우측 상당에 위치한 ‘제출’을 클릭하면 아래와 같은 순서로 시뮬레이션이 진행된다.
  • ‘라이브 추적’ 창의 Process_output.log를 클릭한다. 실시간으로 출력되는 시뮬레이션 로그를 확인할 수 있으며, 이를 통하여 솔버의 상태 메시지 또한 확인할 수 있다. 출력되는 모든 로그는 일반적인 리눅스 환경과 동일하며 같은 방식으로 검토에 사용할 수 있다.
Check output log

결과 다운로드

  • 우측의 ‘결과’ 탭을 클릭한다. ‘Download job’을 클릭하여 전체 결과 파일을 다운받을 수 있다.
Result file download