バケット掘削時の掘削土量を算出するEDEMpyスクリプト
本記事では、Altair MotionSolve - Altair EDEMの連成シミュレーションによりパワーショベルの掘削挙動をシミュレーションした場合の掘削土量を算出する方法を紹介します。
掘削土量を算出には、EDEMのPythonAPIであるEDEMpyを使用します。
Altair InspireのパラメトリックモデリングとAltair HyperStudyのDOEにより、バケット形状を様々に変えた場合の掘削性能を評価できます。掘削土量は重要な掘削性能の1つです。
本記事で使用したスクリプト、モデルは下記よりダウンロードいただけます。
EDEMpyによるバケット掘削土量算出
下記EDEMpyのサンプルコードです。
from edempy import Deck from edempy import BoxBin import pandas as pd #load EDEM model deck=Deck('EDEM_IronOre.dem') #define time time_interval = 0.1 time = [7,9,11] step=[t/time_interval for t in time] #get final step nstep=deck.numTimesteps-1 def calc_binned_mass(s): #get Center of Mass of Bucket geocom=deck.timestep[s].geometry['bucket'].getCoM() #set Bin volume boxbin = BoxBin(geocom + [0,0,0],3,3,3) #get ID / Position / Mass list ids=deck.timestep[nstep].particle[0].getIds() pos=deck.timestep[nstep].particle[0].getPositions() masses=deck.timestep[nstep].particle[0].mass #get ID / Position / Mass in Bin binned_ids=boxbin.getBinnedObjects(ids,pos) binned_mass=boxbin.getBinnedObjects(masses,pos,queryType='total') return binned_mass mass=[calc_binned_mass(s) for s in step] #write out to csv df=pd.DataFrame({'data':mass}) df.to_csv('edemout.csv',index=False)
任意時刻におけるバケット掘削土量を算出できます。
下記は7sec, 9sec, 11secの時刻における掘削土量を算出できます。指定時刻の数は任意です。
EDEMの出力間隔 0.1secを指定することで、出力すべきフレーム数を取得します。EDEMモデルの出力間隔に合わせてください。
#define time time_interval = 0.1 time = [7,9,11]
ジオメトリ名'bucket'の重心位置を取得し、重心位置から指定した寸法の立方体内の粒子の質量を計算します。
ここでは、3m x 3m x 3mとしています。バケットの大きさが変わる場合はこの値を修正します。
#get Center of Mass of Bucket geocom=deck.timestep[s].geometry['bucket'].getCoM() #set Bin volume boxbin = BoxBin(geocom + [0,0,0],3,3,3)
粒子のIDと位置を取得し、先に定義したボックス内の質量を算出するスクリプトです。
粒子の種類が複数ある場合は、どの粒子の質量を算出するかの指定が必要です。
1種類の場合は修正不要でそのままご利用いただけます。
#get ID / Position / Mass list ids=deck.timestep[nstep].particle[0].getIds() pos=deck.timestep[nstep].particle[0].getPositions() masses=deck.timestep[nstep].particle[0].mass #get ID / Position / Mass in Bin binned_ids=boxbin.getBinnedObjects(ids,pos) binned_mass=boxbin.getBinnedObjects(masses,pos,queryType='total')
最終的にedemout.csvでファイルが出力されます。7sec, 9sec, 11secの時刻における掘削土量(kg)が書き出されます。
このファイルの値をHyperStudyから応答として抽出することで、バケット形状変更後の掘削土量をすばやく評価できます。
例:バケットパラメータ(前後長さR、フロント壁長さl1、ボトム円弧r、カットアングルbeta)と掘削土量の関係
関連記事
使用ソフト