JP6897477B2 - 流体シミュレーションプログラム、流体シミュレーション方法および流体シミュレーション装置 - Google Patents

流体シミュレーションプログラム、流体シミュレーション方法および流体シミュレーション装置 Download PDF

Info

Publication number
JP6897477B2
JP6897477B2 JP2017197253A JP2017197253A JP6897477B2 JP 6897477 B2 JP6897477 B2 JP 6897477B2 JP 2017197253 A JP2017197253 A JP 2017197253A JP 2017197253 A JP2017197253 A JP 2017197253A JP 6897477 B2 JP6897477 B2 JP 6897477B2
Authority
JP
Japan
Prior art keywords
particle
particles
fluid
pressure
boundary
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017197253A
Other languages
English (en)
Other versions
JP2019070597A (ja
Inventor
多聞 諏訪
多聞 諏訪
正喜 風間
正喜 風間
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2017197253A priority Critical patent/JP6897477B2/ja
Priority to US16/151,447 priority patent/US11113438B2/en
Publication of JP2019070597A publication Critical patent/JP2019070597A/ja
Application granted granted Critical
Publication of JP6897477B2 publication Critical patent/JP6897477B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/28Design optimisation, verification or simulation using fluid dynamics, e.g. using Navier-Stokes equations or computational fluid dynamics [CFD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/23Design optimisation, verification or simulation using finite element methods [FEM] or finite difference methods [FDM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/25Design optimisation, verification or simulation using particle-based methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • G06T13/603D [Three Dimensional] animation of natural phenomena, e.g. rain, snow, water or plants
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/10Numerical modelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/24Fluid dynamics

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • Fluid Mechanics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明の実施形態は、流体シミュレーションプログラム、流体シミュレーション方法および流体シミュレーション装置に関する。
従来、流体や弾性体などの連続体(以下、流体)の運動を数値的に計算する流体解析手法の一つとして、連続体を粒子として離散化し、粒子分布で表現する粒子法がある。この粒子法としては、Smoothed Particle Hydrodynamics(SPH)法や Moving Particle Semi-implicitもしくはMoving Particle Simulation(MPS)法が知られている。
これら、粒子分布を用いて解析対象を表現する手法においては、ある粒子から影響半径と呼ばれる距離(h)以内にある粒子を近傍粒子としてその粒子の情報を用いる。一例として、SPH法で非圧縮流体の運動方程式として以下の式(1)を解くことを考える。
Figure 0006897477
ここで、左辺は流体要素の加速度、右辺第一項は圧力勾配項、第二項は外力項である。これをSPH法を用いて離散化する。x,v,ρ,m,pをそれぞれ、粒子iの位置ベクトル、速度ベクトル、密度、質量、圧力とすると、時間発展について以下の式(2a)、(2b)のとおりに計算することができる。
Figure 0006897477
ここで、Δtはシミュレーションの時間刻み、上付き添え字nは時間ステップ数である。また、角括弧<>はSPH法による重ね合わせ評価を表し、次の式(3)のとおりである。
Figure 0006897477
ここで、和の対象jは粒子iから半径h以内に存在する粒子(近傍粒子)のインデックスを渡るものとする。また、以後SPH法の重ね合わせの和をとるときはすべて同様である。Wはカーネル関数で、粒子の分布から連続場を構成するのに用い、以下の式(4)の3次のスプライン関数等がよく使われる。ここで、βは規格化係数であり、解析対象が三次元の場合はπh3 である。
Figure 0006897477
各粒子の圧力pは非圧縮条件∇・v=0を満たすように決めるため、式(5)の圧力ポアソン方程式を陰的に解くことで求める。
Figure 0006897477
ここで、ρは物質の基準密度、v は外力項によって更新された中間状態の速度であり、次の式(6)で表現される。
Figure 0006897477
式(5)の左辺は圧力のラプラシアンであり、次の式(7)で離散化される。
Figure 0006897477
また、式(5)の右辺の速度発散は、次の式(8)で離散化される。
Figure 0006897477
このように離散化することで、式(7)の圧力ポアソン方程式は、次の式(9)、(10)として表すことができ、次の式(11)という線形方程式に帰着する。
Figure 0006897477
Figure 0006897477
上記の圧力ポアソン方程式は、ある粒子の近傍に十分な粒子がない時に、その粒子を自由表面とみなし、自由表面の粒子に対して圧力を0と定めて適切な境界条件を与えることで、共役勾配法等の反復法により解くことができる。
特開2010−243293号公報 特開2016−125934号公報
J.J. Monaghan, "Smoothed Particle Hydrodynamics", Annu. Rev. Astron. Astrophys. 30: 543-74(1992) 浅井光輝,藤本啓介,田邊将一,別府万寿博,"階段状の非適合境界を有する粒子法解析における仮想マーカーを用いたすべり・非すべり境界処理法",Transactions of JSCES, Paper No.20130011,2013年
しかしながら、上記の従来技術では、細い隙間に流体が入り込むことで適切な境界条件が設定されない場合に、解が一意に定まらず、圧力が発散するなどの不具合が生じることがある。例えば、細い隙間に流体が入り込んだ時には、全ての流体粒子に対して近傍粒子が存在することになり、狭い隙間において自由表面と判定できる粒子が存在しなくなることから、適切な境界条件が設定されないこととなる。
1つの側面では、粒子法における解の収束性を確保することを可能とする流体シミュレーションプログラム、流体シミュレーション方法および流体シミュレーション装置を提供することを目的とする。
第1の案では、流体シミュレーションプログラムは、抽出する処理と、求める処理と、算出する処理とをコンピュータに実行させる。抽出する処理は、所定の時間における各粒子の粒子データに含まれる位置情報をもとに、壁との境界にかかる壁境界粒子の中から、流体粒子との距離が所定値以下の粒子を第1粒子とし、第1粒子との距離が所定値以下の粒子を第2粒子として抽出する。求める処理は、抽出した第1粒子および第2粒子をもとに、各粒子の圧力を求める圧力ポアソン方程式の境界条件を設定して各粒子にかかる圧力を求める。算出する処理は、求めた圧力に基づいて次の時間における各粒子の粒子データを算出する。
本発明の1実施態様によれば、粒子法における解の収束性を確保することができる。
図1は、実施形態にかかる流体シミュレーション装置の構成例を示す機能ブロック図である。 図2−1は、自由流体粒子の入力データの一例を示す説明図である。 図2−2は、壁境界粒子の入力データの一例を示す説明図である。 図2−3は、壁内部粒子の入力データの一例を示す説明図である。 図3−1は、自由流体粒子の中間データの一例を示す説明図である。 図3−2は、壁境界粒子の中間データの一例を示す説明図である。 図3−3は、壁内部粒子の中間データの一例を示す説明図である。 図4は、実施形態にかかる流体シミュレーション装置の動作例を示すフローチャートである。 図5は、近傍リストの一例を示す説明図である。 図6−1は、粒子の近傍を表す空間領域の分類を説明する説明図である。 図6−2は、表面粒子と内部粒子の抽出例を説明する説明図である。 図7は、粒子の分類処理を例示するフローチャートである。 図8は、粒子の分類を説明する説明図である。 図9は、求解処理を例示するフローチャートである。 図10−1は、解が発散するケースを説明する説明図である。 図10−2は、境界条件の改善例を説明する説明図である。 図11は、実施形態にかかる流体シミュレーション装置のハードウエア構成例を示すブロック図である。
以下、図面を参照して、実施形態にかかる流体シミュレーションプログラム、流体シミュレーション方法および流体シミュレーション装置を説明する。実施形態において同一の機能を有する構成には同一の符号を付し、重複する説明は省略する。なお、以下の実施形態で説明する流体シミュレーションプログラム、流体シミュレーション方法および流体シミュレーション装置は、一例を示すに過ぎず、実施形態を限定するものではない。また、以下の各実施形態は、矛盾しない範囲内で適宜組みあわせてもよい。
図1は、実施形態にかかる流体シミュレーション装置の構成例を示す機能ブロック図である。図1に示すように、流体シミュレーション装置1は、粒子法による流体シミュレーションを実行するワークステーション等の情報処理装置であり、制御部10と、記憶部20とを有する。
制御部10は、CPU(Central Processing Unit)などの電子回路に対応する。制御部10は、各種の処理手順を規定したプログラムや制御データを格納するための内部メモリを有し、これらによって種々の処理を実行する。制御部10は、シミュレーション受付部11と、粒子分類部12と、演算部13と、出力部14とを有する。
記憶部20は、例えば、RAM、フラッシュメモリ(Flash Memory)などの半導体メモリ素子、または、ハードディスク、光ディスクなどの記憶装置である。記憶部20は、粒子情報21と、逐次結果情報22とを有する。
粒子情報21は、流体シミュレーションの設定条件として入力される入力データであり、主には流体シミュレーションにかかる各粒子の情報である。この粒子情報21における入力データは、例えば計算パラメータと、3種類の各粒子の粒子データとを有する。
計算パラメータは、シミュレーション対象となる流体の物性値やシミュレーション環境などを示すパラメータである。例えば、計算パラメータとしては、各粒子が影響を及ぼす影響半径、各粒子に及ぶ外力ベクトル、シミュレーションの時間刻み幅、シミュレーション対象の物質の基準密度、一粒子の質量、ゼロ除算防止パラメータηなどを含む。
粒子データは、自由流体粒子、壁境界粒子、壁内部粒子の3種類を含む。図2−1は、自由流体粒子の入力データの一例を示す説明図である。図2−2は、壁境界粒子の入力データの一例を示す説明図である。図2−3は、壁内部粒子の入力データの一例を示す説明図である。
自由流体粒子は、シミュレーションの解析対象となる流体を表す粒子である。すなわち、自由流体粒子は、流体粒子の一例である。図2−1に示すように、自由流体粒子にかかる自由流体粒子入力データ100は、各粒子(i、i+1、…)の位置座標101、速度102密度103および質量104を有する。なお、位置座標101および速度102については、入力データを初期値として、時間ステップごとに計算された位置および速度の値で更新される。
壁境界粒子は、自由流体粒子の移動が妨げられる固定境界表面に配置し、圧力ポアソン方程式の境界条件を表すための粒子である。図2−2に示すように、壁境界粒子にかかる壁境界粒子入力データ200は、各粒子(i、i+1、…)の位置座標201、密度202および質量203を有する。
壁内部粒子は、固定境界内部に配置し、速度発散と圧力勾配を計算する際に用いる粒子である。図2−3に示すように、壁内部粒子にかかる壁内部粒子入力データ300は、各粒子(i、i+1、…)の位置座標301、法線ベクトル302、固定境界面までの距離303、密度304および質量305を有する。なお、これらの粒子の密度、質量については、計算パラメータに含まれる値を使用してもよい。
逐次結果情報22は、流体シミュレーションにおいて、各粒子の時間ステップごとのシミュレーション結果を示す中間データである。図3−1は、自由流体粒子の中間データの一例を示す説明図である。図3−2は、壁境界粒子の中間データの一例を示す説明図である。図3−3は、壁内部粒子の中間データの一例を示す説明図である。
図3−1に示すように、自由流体粒子にかかる自由流体粒子中間データ110は、各粒子(i、i+1、…)の圧力111、中間速度112、速度発散113および境界フラグ114を有する。ここで、境界フラグ114は、各自由流体粒子について、内部粒子または表面粒子の分類を示すフラグである。
図3−2に示すように、壁境界粒子にかかる壁境界粒子中間データ210は、各粒子(i、i+1、…)の速度発散211、圧力212および境界フラグ213を有する。ここで、境界フラグ213は、各壁境界粒子について、固定流体粒子、圧力境界粒子または非使用粒子の分類を示すフラグである。
図3−3に示すように、壁内部粒子にかかる壁内部粒子中間データ310は、各粒子(i、i+1、…)の仮想マーカ位置311、仮想マーカ速度312、仮想マーカ加速度313、仮想マーカ圧力314、中間速度315および圧力316を有する。ここで、仮想マーカ位置311は、壁内部粒子の固定境界面に対する鏡像位置であり、仮想マーカ速度312、仮想マーカ加速度313および仮想マーカ圧力314は、鏡像位置における速度、加速度および圧力の仮想値である。
シミュレーション受付部11は、流体シミュレーションの実行要求を受け付ける。例えば、シミュレーション受付部11は、計算パラメータ、自由流体粒子入力データ100、壁境界粒子入力データ200および壁内部粒子入力データ300などの粒子情報21を含む実行要求を受け付ける。次いで、シミュレーション受付部11は、受け付けた粒子情報21を記憶部20に格納し、シミュレーション受付部11、粒子分類部12および出力部14による流体シミュレーションの処理を開始する。
粒子分類部12は、計算パラメータの時間刻み幅による時間ステップごとに、粒子情報21における各粒子の位置情報(位置座標101、201、301)をもとに、各粒子の分類を行う。具体的には、粒子分類部12は、自由流体粒子について、表面粒子と、内部粒子とに分類する。また、粒子分類部12は、壁境界粒子について、固定流体粒子と、圧力境界粒子と、非使用粒子とに分類する。
演算部13は、粒子分類部12による各粒子の分類結果をもとに、各粒子の圧力を求める圧力ポアソン方程式の境界条件を設定し、各粒子にかかる圧力を求める。具体的には、演算部13は、壁境界粒子について、固定流体粒子として分類(抽出)された粒子については速度を所定値として固定する流体粒子とし、圧力ポアソン方程式を解く際の自由度に含めるようにする。また、演算部13は、壁境界粒子について、圧力境界粒子として分類(抽出)された粒子については圧力を0とする境界条件を設定する。次いで、演算部13は、設定した条件で圧力ポアソン方程式により各粒子にかかる圧力を算出する。次いで、演算部13は、求めた圧力に基づいて次の時間における各粒子の粒子データ(例えば速度および位置)を算出する。
出力部14は、演算部13の算出結果を出力する。具体的には、出力部14は、時間ステップごとに算出された算出結果を逐次結果情報22として記憶部20に格納する。なお、出力部14は、シミュレーションの開始から終了までの時間ステップごとに算出された逐次結果情報22に基づくシミュレーション結果を、ディスプレイなどの表示装置への表示出力やファイル出力してもよい。
ここで、流体シミュレーション装置1における流体シミュレーションの処理内容について、詳細を説明する。図4は、実施形態にかかる流体シミュレーション装置1の動作例を示すフローチャートである。
図4に示すように、処理が開始されると、流体シミュレーション装置1のシミュレーション受付部11は、ユーザからの入力操作などを介して、粒子情報21にかかる入力データの取得を行う(S1)。
次いで、流体シミュレーション装置1の粒子分類部12、演算部13および出力部14は、粒子情報21および逐次結果情報22を参照し、シミュレーションの終了時間に対応するステップ(時間ステップ)数分のループ処理(S2〜S12)を実行する。
S2に次いで、粒子分類部12は、粒子情報21における位置情報(位置座標101、201、301)に基づいて、粒子ごとの、近傍にある粒子の近傍リストを作成する(S3)。具体的には、粒子分類部12は、各粒子において、粒子の位置から計算パラメータにおける影響半径内の距離にある粒子を抽出し、近傍の粒子を識別する粒子番号の近傍リストを作成する。
図5は、近傍リストの一例を示す説明図である。図5に示すように、近傍リスト30は、粒子(…i−1、i、i+1、i+2、…)ごとに、影響半径内にある近傍の粒子を並べたものである。例えば、粒子(i)については、粒子(j、j、…)が近傍にある粒子のリストとして挙げられている。また、粒子(i+1)については、粒子(j’,j’、…)が近傍にある粒子のリストとして挙げられている。
次いで、演算部13は、自由流体粒子の各粒子の速度(v )に対して、外力ベクトル(g)と時間刻み幅(Δt)とによる速度更新(式(6))を行い、中間速度(v )を算出する(S4)。
次いで、演算部13は、自由流体粒子に対して、速度発散を算出する(S5)。これは、仮想マーカ位置311における速度評価、壁内部粒子の速度評価、速度発散の算出、という手順で行う。
具体的には、演算部13は、仮想マーカ位置311を壁内部粒子の固定境界面に対する鏡像位置として算出する。例えば、ある壁内部粒子の仮想マーカ位置311は、粒子の位置座標301、法線ベクトル302および固定境界面までの距離303を用いて次の式(12)で算出される。
Figure 0006897477
この位置における速度(仮想マーカ速度312)は、次の式(13)によって評価する。ここで、和をとる範囲は自由流体粒子の近傍粒子とする。
Figure 0006897477
演算部13は、壁内部粒子の中間速度315を、仮想マーカ位置311の仮想マーカ速度312からv =−v VMとして算出する。これは、固定境界面において非すべり条件を課したことに相当する。
次いで、演算部13は、各自由流体粒子に対して速度発散を式(8)用いて算出する。ここで、和をとる範囲は、自由流体粒子と壁内部粒子の近傍粒子の範囲とする。
次いで、粒子分類部12は、自由流体粒子の中から表面粒子とする粒子を検出(抽出)する(S6)。具体的には、粒子分類部12は、ある粒子に注目したとき、いずれかの方向に近傍粒子(近傍リスト30にある、その粒子からの距離が影響半径よりも小さい粒子)が存在しない時を表面粒子とする。また、粒子分類部12は、全ての方向に近傍粒子が存在するときを内部粒子とする。
図6−1は、粒子の近傍を表す空間領域の分類を説明する説明図である。図6−2は、表面粒子と内部粒子の抽出例を説明する説明図である。
図6−1に示すように、2次元を例にして説明すると、先ず、注目する粒子(i)を中心として影響半径内の空間領域をx+、x−、y+、y−の4領域に分類する。次いで、粒子分類部12は、影響半径内の粒子がいずれの空間領域に属するかを判断し、粒子が一つも所属しない領域があった場合、粒子(i)を表面粒子であると抽出する。
図6−2に示すように、ケースC1では、y+の領域に近傍粒子が存在しないため、中心の粒子(ia)については表面粒子として抽出される。一方、ケースC2では、全ての領域に近傍粒子が存在するため、粒子(ib)は内部粒子として抽出される。粒子分類部12は、この判定結果について、自由流体粒子中間データ110の境界フラグ114に分類結果として保存する。
次いで、粒子分類部12は、粒子情報21における位置座標101、201、301に基づく粒子の分類処理により、壁境界粒子を固定流体粒子、圧力境界粒子、非使用粒子に分類する(S7)。
図7は、粒子の分類処理を例示するフローチャートである。図7に示すように、分類処理が開始されると、粒子分類部12は、全ての壁境界粒子の境界フラグ213を非使用粒子とする(S20)。
次いで、粒子分類部12は、自由流体粒子ごとのループ処理(i)を実行する(S21〜S28)。ループ処理(i)が開始されると、粒子分類部12は、自由流体粒子を一つ選び、粒子iとする(S22)。
次いで、粒子分類部12は、壁境界粒子ごとのループ処理(j)を実行する(S23〜S27)。ループ処理(j)が開始されると、粒子分類部12は、壁境界粒子を一つ選び粒子jとする(S24)。
次いで、粒子分類部12は、粒子iの位置座標101と、粒子jの位置座標201とを用いて粒子iと粒子jの距離(r)を求め、粒子iと粒子jの距離が影響半径以下であるか否かを判定する(S25)。
影響半径以下である場合(S25:YES)、粒子分類部12は、粒子jの境界フラグ213を固定流体粒子とする(S26)。影響半径以下でない場合(S25:NO)、粒子分類部12は、S26をスキップして、境界フラグ213をそのままとする。
次いで、粒子分類部12は、まだ選択されていない壁境界粒子があれば、その粒子を粒子jとして、ループ処理(j)を繰り返す。また、粒子分類部12は、ループ処理(j)の後、まだ選択されていない自由流体粒子があれば、その粒子を粒子iとして、ループ処理(i)を繰り返す。
次いで、粒子分類部12は、固定流体粒子ごとのループ処理(j’)を実行する(S29〜S37)。ループ処理(j’)が開始されると、粒子分類部12は、境界フラグ213を固定流体粒子とされた壁境界粒子を一つ選び粒子j’とする(S30)。
次いで、粒子分類部12は、壁境界粒子ごとのループ処理(j’’)を実行する(S31〜S36)。ループ処理(j’’)が開始されると、粒子分類部12は、壁境界粒子を一つ選び粒子j’’とする(S32)。
次いで、粒子分類部12は、粒子j’’の境界フラグ213が非使用粒子であるか否かを判定する(S33)。非使用粒子でない場合(S33:NO)、粒子分類部12は、S36へ処理をスキップし、次の粒子j’’を選ぶループ処理を行う。
非使用粒子である場合(S33:YES)、粒子分類部12は、粒子j’、j’’の位置座標201を用いて粒子j’、j’’の距離(rj’j’’)を求め、粒子iと粒子jの距離が影響半径以下であるか否かを判定する(S34)。
影響半径以下である場合(S34:YES)、粒子分類部12は、粒子j’’の境界フラグ213を圧力境界粒子とする(S35)。影響半径以下でない場合(S34:NO)、粒子分類部12は、S35をスキップして、境界フラグ213をそのままとする。
次いで、粒子分類部12は、まだ選択されていない壁境界粒子があれば、その粒子を粒子j’’として、ループ処理(j’’)を繰り返す。また、粒子分類部12は、ループ処理(j’’)の後、まだ選択されていない固定流体粒子があれば、その粒子を粒子j’として、ループ処理(j’)を繰り返す。
図8は、粒子の分類を説明する説明図である。図8に示すように自由流体粒子40については、S6の処理により、内部粒子41または表面粒子42に分類される。また、壁境界粒子50については、S7の分類処理により、固定流体粒子51、圧力境界粒子52および非使用粒子53のいずれかに分類される。
図4に戻り、S7に次ぐ処理を説明する。なお、非使用粒子53については、このステップが終わるまで使用されないので、以後、無視することとする。ここで改めて自由流体粒子40、固定流体粒子51、圧力境界粒子52などに通し番号を振り、以後、その番号を用いて粒子i、粒子j等として参照する。また、演算部13は、固定流体粒子51、圧力境界粒子52の圧力212および速度発散211を0とする。
S7に次いで、演算部13は、各粒子の圧力を求める圧力ポアソン方程式として、式(11)に示した線形方程式を解くことで各粒子の圧力を求める(S8)。
具体的には、演算部13は、作業データとして係数行列Aと右辺ベクトルbを用意する。係数行列Aは粒子数の2乗個の実数値が格納できれば十分であるが、そのほとんどが0値となるので、非ゼロ要素のみを効率よく格納するためにCompressed Sparse Row(CSR)形式などを用いてもよい。右辺ベクトルbは粒子数と同数の実数値を格納できる配列として確保する。演算部13は、この係数行列Aと右辺ベクトルbに対して行列方程式(式11)を解く求解処理を行う。
図9は、求解処理を例示するフローチャートである。図9に示すように、処理が開始されると、演算部13は、係数行列Aijの値を全て0とし、全要素0で初期化する(S40)。
次いで、演算部13は、自由流体粒子または壁境界粒子を一つ選び粒子iとする(S41)。次いで、演算部13は、粒子iの境界フラグ114または境界フラグ213が内部粒子41または固定流体粒子51であるか否かを判定する(S42)。
内部粒子41または固定流体粒子51でない場合(S42:NO)、演算部13は、係数行列Aijの要素を1とする(S49)。次いで、演算部13は、右辺ベクトルbの要素の値を粒子iの圧力p(圧力111または圧力212)とし(S50)、S51へ処理を進める。
内部粒子41または固定流体粒子51である場合(S42:YES)、演算部13は、粒子iの近傍リスト30に含まれる粒子ごとのループ処理(j)を実行する(S43〜S47)。ループ処理(j)が開始されると、演算部13は、粒子iの近傍リスト30に含まれる粒子を一つ選び、粒子jとする(S44)。
次いで、演算部13は、係数行列Aijの要素について、式(9)の右辺上によって値を算出する(S45)。ここで、演算部13は、各粒子の位置座標101または位置座標201、密度103または密度202、質量104または質量203を用いる。次いで、演算部13は、係数行列Aiiの要素に、S45で算出した値を加算する(S46)。
次いで、演算部13は、粒子iの近傍リスト30に含まれる粒子の中でまだ選択されていない粒子があれば、その粒子を粒子jとして、ループ処理(j)を繰り返す。
粒子iの近傍粒子の全てに対してS43〜S47の処理が済んだ後、演算部13は、右辺ベクトルbの値を式(10)を用いて算出する(S48)。ここでは、各粒子の速度発散113または速度発散211を用いる。
次いで、演算部13は、まだ選んでいない内部粒子41か固定流体粒子51があるか否かを判定する(S51)。まだ選んでいない内部粒子41か固定流体粒子51がある場合(S51:YES)、演算部13は、S41へ処理を戻し、新たな粒子iを選ぶ。
まだ選んでいない内部粒子41か固定流体粒子51がない場合(S51:NO)、演算部13は、ここまでの処理で得られた係数行列Aijと右辺ベクトルbおよび各粒子の圧力111または圧力212をpとし、行列方程式を解く(S52)。具体的には、演算部13は、行列方程式Aij=bを解くことで、圧力を求める。この求解には、例えば共役勾配法などの解法を用いればよい。
図4に戻り、S8に次いで、演算部13は、S8の求解処理による算出結果をもとに、各粒子について圧力勾配による加速度(速度)の算出を行う(S9)。具体的には、演算部13は、S8により各自由流体粒子の圧力pが求められたところで、次に壁内部粒子の圧力を求める。
演算部13は、壁内部粒子の圧力を求めるために、先ず仮想マーカ加速度313と仮想マーカ圧力314を次の式(14)、(15)によって求める。
Figure 0006897477
Figure 0006897477
次に、演算部13は、式(14)、(15)によって求めた値を用いて、壁内部粒子の圧力p wallを次の式(16)によって算出する。
Figure 0006897477
このようにして自由流体粒子と壁内部粒子の圧力が求められたところで、演算部13は、式(3)を用いて圧力勾配を求め、圧力勾配により粒子の加速度、速度を更新する。なお、式(3)の和については、自由流体粒子と壁内部粒子との近傍をわたるものとする。
次いで、演算部13は、速度・加速度の時間積分を行い、各粒子の位置を更新して時間を1ステップ進める(S10)。具体的には、演算部13は、求めた速度に1ステップ分の時間をかけ合わせて各粒子の移動距離を求め、各粒子の位置(位置座標101)を更新することで1ステップ分の計算が完了する。
次いで、出力部14は、計算結果を逐次結果情報22としてファイル出力する(S11)。流体シミュレーション装置1は、このS2〜S12のループ処理を繰り返すことで、シミュレーションの開始から終了までの、計算パラメータの時間刻み幅による時間ステップごとのシミュレーション結果を得る。
以上のように、流体シミュレーション装置1は、粒子分類部12と、演算部13とを有する。粒子分類部12は、各粒子の時間ステップごとの粒子データに含まれる位置情報をもとに、壁境界粒子50の中から、自由流体粒子40との距離が所定値以下の粒子を固定流体粒子51として抽出する。また、粒子分類部12は、固定流体粒子51との距離が所定値以下の粒子を圧力境界粒子52として抽出する。演算部13は、抽出した固定流体粒子51および圧力境界粒子52をもとに、各粒子の圧力を求める圧力ポアソン方程式の境界条件を設定して各粒子にかかる圧力を求める。次いで、演算部13は、求めた圧力に基づいて次の時間ステップにおける各粒子の粒子データを算出する。このように壁境界粒子50より抽出した固定流体粒子51および圧力境界粒子52をもとに各粒子の圧力を求める圧力ポアソン方程式の境界条件を設定することで、流体シミュレーション装置1は、例えば細い隙間に流体が入り込む場合であっても適切な境界条件を設定することができる。このため、流体シミュレーション装置1は、粒子法における解の収束性を確保することができる。
ここで、適切な境界条件を設定し、境界条件を改善することで、粒子法における解の収束性を確保されることを、解が発散するケースと比較して説明する。図10−1は、解が発散するケースを説明する説明図である。図10−2は、境界条件の改善例を説明する説明図である。
図10−1に示すように、壁境界粒子50が一律に設定されるケースでは、狭い隙間に入り込む自由流体粒子40について、粒子40aを取り囲む粒子が多く、内部粒子として判定される。このケースでは、粒子40aの近傍にある壁境界粒子50において圧力ポアソン方程式を解く際の境界条件に含める粒子が存在しないことから、境界条件が設定されずに圧力ポアソン方程式を解くことで解が発散する場合がある。
これに対し、本実施形態では、壁境界粒子50の中から、自由流体粒子40との距離が所定値以下の粒子を固定流体粒子51として抽出し、固定流体粒子51との距離が所定値以下の粒子を圧力境界粒子52として抽出する。そして、壁境界粒子50より抽出した固定流体粒子51および圧力境界粒子52をもとに各粒子の圧力を求める圧力ポアソン方程式の境界条件を設定する。
例えば、流体シミュレーション装置1は、固定流体粒子51を速度固定の流体粒子とし、圧力境界粒子52を圧力を0として圧力ポアソン方程式の境界条件を設定する。このように、流体シミュレーション装置1は、流体の近傍となった固定流体粒子51を圧力ポアソン方程式を解く際の自由度に含め、固定流体粒子51近傍の圧力境界粒子52は圧力0の表面粒子として圧力ポアソン方程式の境界条件とする。これにより、流体シミュレーション装置1は、例えば細い隙間に流体が入る事象を破綻なく計算できる。
具体的には、図10−2に示すように、自由流体粒子40の近傍にある壁境界粒子50については、例えば速度固定の固定流体粒子51として扱い、圧力ポアソン方程式の自由度に含める。また、流体の近傍ではないが、固定流体粒子51の近傍にある壁境界粒子を圧力境界粒子52(表面粒子)として、圧力0と定めることで、圧力ポアソン方程式の境界条件とする。なお、流体の近傍でも固定流体粒子51の近傍でもない壁境界粒子50については、非使用粒子53として圧力ポアソン方程式の算出時に使用しないものとする。このように、固定流体粒子51および圧力境界粒子52をもとに各粒子の圧力を求める圧力ポアソン方程式の境界条件を設定することで、狭い隙間に入り込む自由流体粒子40がある場合でも、解の収束性を確保することができる。
なお、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
また、流体シミュレーション装置1で行われる各種処理機能は、CPU(またはMPU、MCU(Micro Controller Unit)等のマイクロ・コンピュータ)上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、CPU(またはMPU、MCU等のマイクロ・コンピュータ)で解析実行されるプログラム上、またはワイヤードロジックによるハードウエア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。また、流体シミュレーション装置1で行われる各種処理機能は、クラウドコンピューティングにより、複数のコンピュータが協働して実行してもよい。
ところで、上記の実施形態で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の実施形態と同様の機能を有するプログラムを実行するコンピュータ(ハードウエア)の一例を説明する。図11は、実施形態にかかる流体シミュレーション装置1のハードウエア構成例を示すブロック図である。
図11に示すように、流体シミュレーション装置1は、各種演算処理を実行するCPU401と、データ入力を受け付ける入力装置402と、モニタ403と、音声等の出力装置404とを有する。また、流体シミュレーション装置1は、記憶媒体からプログラム等を読み取る媒体読取装置405と、各種装置と接続するためのインタフェース装置406と、有線または無線により外部機器と通信接続するための通信装置407とを有する。また、流体シミュレーション装置1は、各種情報を一時記憶するRAM408と、ハードディスク装置409とを有する。また、流体シミュレーション装置1内の各部(401〜409)は、バス410に接続される。
ハードディスク装置409には、上記の実施形態で説明したシミュレーション受付部11、粒子分類部12、演算部13および出力部14などで各種の処理を実行するためのプログラム411が記憶される。また、ハードディスク装置409には、プログラム411が参照する各種データ412(例えば粒子情報21、逐次結果情報22等)が記憶される。入力装置402は、例えば、流体シミュレーション装置1の操作者から操作情報の入力を受け付ける。モニタ403は、例えば、操作者が操作する各種画面を表示する。インタフェース装置406は、例えば印刷装置等が接続される。通信装置407は、LAN(Local Area Network)等の通信ネットワークと接続され、通信ネットワークを介した外部機器との間で各種情報をやりとりする。
CPU401は、ハードディスク装置409に記憶されたプログラム411を読み出して、RAM408に展開して実行することで、シミュレーション受付部11、粒子分類部12、演算部13および出力部14にかかる各種の処理を行う。なお、プログラム411は、ハードディスク装置409に記憶されていなくてもよい。例えば、流体シミュレーション装置1が読み取り可能な記憶媒体に記憶されたプログラム411を読み出して実行するようにしてもよい。流体シミュレーション装置1が読み取り可能な記憶媒体は、例えば、CD−ROMやDVDディスク、USB(Universal Serial Bus)メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、LAN等に接続された装置にこのプログラム411を記憶させておき、流体シミュレーション装置1がこれらからプログラム411を読み出して実行するようにしてもよい。
以上の実施形態に関し、さらに以下の付記を開示する。
(付記1)所定の時間における各粒子の粒子データに含まれる位置情報をもとに、壁との境界にかかる壁境界粒子の中から、流体粒子との距離が所定値以下の粒子を第1粒子とし、前記第1粒子との距離が所定値以下の粒子を第2粒子として抽出し、
抽出した前記第1粒子および前記第2粒子をもとに、各粒子の圧力を求める圧力ポアソン方程式の境界条件を設定して各粒子にかかる圧力を求め、
求めた前記圧力に基づいて次の時間における各粒子の粒子データを算出する、
処理をコンピュータに実行させることを特徴とする流体シミュレーションプログラム。
(付記2)前記求める処理は、前記第1粒子を速度を所定値とする流体粒子とし、前記第2粒子の圧力を0として前記境界条件を設定する、
付記1に記載の流体シミュレーションプログラム。
(付記3)所定の時間における各粒子の粒子データに含まれる位置情報をもとに、壁との境界にかかる壁境界粒子の中から、流体粒子との距離が所定値以下の粒子を第1粒子とし、前記第1粒子との距離が所定値以下の粒子を第2粒子として抽出し、
抽出した前記第1粒子および前記第2粒子をもとに、各粒子の圧力を求める圧力ポアソン方程式の境界条件を設定して各粒子にかかる圧力を求め、
求めた前記圧力に基づいて次の時間における各粒子の粒子データを算出する、
処理をコンピュータが実行することを特徴とする流体シミュレーション方法。
(付記4)前記求める処理は、前記第1粒子を速度を所定値とする流体粒子とし、前記第2粒子の圧力を0として前記境界条件を設定する、
付記3に記載の流体シミュレーション方法。
(付記5)所定の時間における各粒子の粒子データに含まれる位置情報をもとに、壁との境界にかかる壁境界粒子の中から、流体粒子との距離が所定値以下の粒子を第1粒子とし、前記第1粒子との距離が所定値以下の粒子を第2粒子として抽出する分類部と、
抽出した前記第1粒子および前記第2粒子をもとに、各粒子の圧力を求める圧力ポアソン方程式の境界条件を設定して各粒子にかかる圧力を求め、求めた前記圧力に基づいて次の時間における各粒子の粒子データを算出する算出部と、
を有することを特徴とする流体シミュレーション装置。
(付記6)前記算出部は、前記第1粒子を速度を所定値とする流体粒子とし、前記第2粒子の圧力を0として前記境界条件を設定する、
付記5に記載の流体シミュレーション装置。
1…流体シミュレーション装置
10…制御部
11…シミュレーション受付部
12…粒子分類部
13…演算部
14…出力部
20…記憶部
21…粒子情報
22…逐次結果情報
30…近傍リスト
40…自由流体粒子
41…内部粒子
42…表面粒子
50…壁境界粒子
51…固定流体粒子
52…圧力境界粒子
53…非使用粒子
401…CPU
402…入力装置
403…モニタ
404…出力装置
405…媒体読取装置
406…インタフェース装置
407…通信装置
408…RAM
409…ハードディスク装置
410…バス
411…プログラム
412…各種データ
C1、C2…ケース
i、ia、ib、j、j’、j’’…粒子

Claims (4)

  1. 所定の時間における各粒子の粒子データに含まれる位置情報をもとに、壁との境界にかかる壁境界粒子の中から、流体粒子との距離が所定値以下の粒子を第1粒子とし、前記第1粒子との距離が所定値以下の粒子を第2粒子として抽出し、
    抽出した前記第1粒子および前記第2粒子をもとに、各粒子の圧力を求める圧力ポアソン方程式の境界条件を設定して各粒子にかかる圧力を求め、
    求めた前記圧力に基づいて次の時間における各粒子の粒子データを算出する、
    処理をコンピュータに実行させることを特徴とする流体シミュレーションプログラム。
  2. 前記求める処理は、前記第1粒子を速度を所定値とする流体粒子とし、前記第2粒子の圧力を0として前記境界条件を設定する、
    請求項1に記載の流体シミュレーションプログラム。
  3. 所定の時間における各粒子の粒子データに含まれる位置情報をもとに、壁との境界にかかる壁境界粒子の中から、流体粒子との距離が所定値以下の粒子を第1粒子とし、前記第1粒子との距離が所定値以下の粒子を第2粒子として抽出し、
    抽出した前記第1粒子および前記第2粒子をもとに、各粒子の圧力を求める圧力ポアソン方程式の境界条件を設定して各粒子にかかる圧力を求め、
    求めた前記圧力に基づいて次の時間における各粒子の粒子データを算出する、
    処理をコンピュータが実行することを特徴とする流体シミュレーション方法。
  4. 所定の時間における各粒子の粒子データに含まれる位置情報をもとに、壁との境界にかかる壁境界粒子の中から、流体粒子との距離が所定値以下の粒子を第1粒子とし、前記第1粒子との距離が所定値以下の粒子を第2粒子として抽出する分類部と、
    抽出した前記第1粒子および前記第2粒子をもとに、各粒子の圧力を求める圧力ポアソン方程式の境界条件を設定して各粒子にかかる圧力を求め、求めた前記圧力に基づいて次の時間における各粒子の粒子データを算出する算出部と、
    を有することを特徴とする流体シミュレーション装置。
JP2017197253A 2017-10-10 2017-10-10 流体シミュレーションプログラム、流体シミュレーション方法および流体シミュレーション装置 Active JP6897477B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017197253A JP6897477B2 (ja) 2017-10-10 2017-10-10 流体シミュレーションプログラム、流体シミュレーション方法および流体シミュレーション装置
US16/151,447 US11113438B2 (en) 2017-10-10 2018-10-04 Fluid simulation program, fluid simulation method, and fluid simulation device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017197253A JP6897477B2 (ja) 2017-10-10 2017-10-10 流体シミュレーションプログラム、流体シミュレーション方法および流体シミュレーション装置

Publications (2)

Publication Number Publication Date
JP2019070597A JP2019070597A (ja) 2019-05-09
JP6897477B2 true JP6897477B2 (ja) 2021-06-30

Family

ID=65992538

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017197253A Active JP6897477B2 (ja) 2017-10-10 2017-10-10 流体シミュレーションプログラム、流体シミュレーション方法および流体シミュレーション装置

Country Status (2)

Country Link
US (1) US11113438B2 (ja)
JP (1) JP6897477B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220012662A (ko) * 2020-07-23 2022-02-04 이에이트 주식회사 입자 기반의 유체 해석 시뮬레이션 방법 및 유체 해석 시뮬레이션 장치

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112560326B (zh) * 2019-09-26 2023-07-18 腾讯科技(深圳)有限公司 压力场的确定方法及装置
JP7285223B2 (ja) * 2020-01-21 2023-06-01 住友重機械工業株式会社 シミュレーション装置、シミュレーション方法、及びプログラム
CN111400971B (zh) * 2020-03-20 2022-06-03 中国石油大学(北京) 一种液体中颗粒运动受力计算方法及装置
KR102436664B1 (ko) * 2020-07-17 2022-08-26 이에이트 주식회사 Wcsph 기반의 유체 해석 시뮬레이션 장치, 방법 및 컴퓨터 프로그램
CN112765867B (zh) * 2020-12-21 2022-12-09 西安交通大学 一种基于粒子方法的通用光滑边界建模方法
CN113761779B (zh) * 2021-09-09 2024-05-07 西安交通大学 一种基于无网格粒子法的开放边界处理方法、系统及装置
CN117057210B (zh) * 2023-08-28 2024-01-23 天津大学 一种基于颗粒离散元的热传导模拟方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005301651A (ja) * 2004-04-12 2005-10-27 Sumitomo Chemical Co Ltd 粒子運動のシミュレーション方法
JP5231898B2 (ja) * 2008-08-27 2013-07-10 株式会社ミツバ 圧力測定装置、圧力測定方法およびこれを実行するプログラム
KR101159163B1 (ko) * 2008-12-10 2012-06-22 한국전자통신연구원 비압축 상태의 유체 시뮬레이션 방법, 기록매체, 장치
JP2010243293A (ja) * 2009-04-03 2010-10-28 Toshiba Corp 流動解析方法、流動解析装置、及び流動解析プログラム
JP5670832B2 (ja) * 2011-05-24 2015-02-18 富士通株式会社 シミュレーション方法、シミュレーション装置及びシミュレーションプログラム
JP6048062B2 (ja) * 2012-10-18 2016-12-21 富士通株式会社 シミュレーションプログラム、シミュレーション方法及びシミュレーション装置
JP6458501B2 (ja) 2015-01-06 2019-01-30 富士通株式会社 シミュレーションプログラム、シミュレーション方法、およびシミュレーション装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220012662A (ko) * 2020-07-23 2022-02-04 이에이트 주식회사 입자 기반의 유체 해석 시뮬레이션 방법 및 유체 해석 시뮬레이션 장치

Also Published As

Publication number Publication date
US20190108299A1 (en) 2019-04-11
US11113438B2 (en) 2021-09-07
JP2019070597A (ja) 2019-05-09

Similar Documents

Publication Publication Date Title
JP6897477B2 (ja) 流体シミュレーションプログラム、流体シミュレーション方法および流体シミュレーション装置
Zou et al. A nonintrusive proper generalized decomposition scheme with application in biomechanics
Duan et al. Volume preserved mass–spring model with novel constraints for soft tissue deformation
Chen et al. Numerical coarsening using discontinuous shape functions
Fierz et al. Maintaining large time steps in explicit finite element simulations using shape matching
GB2546861A (en) 3D model generation from 2D images
Wang et al. Second order method for solving 3D elasticity equations with complex interfaces
Moutsanidis et al. Modeling strong discontinuities in the material point method using a single velocity field
Hill et al. Constrained distance transforms for spatial atlas registration
Sun et al. A precise method for cloth configuration parsing applied to single-arm flattening
Yang et al. SpatioTemporally adaptive quadtree mesh (STAQ) digital image correlation for resolving large deformations around complex geometries and discontinuities
KR102543354B1 (ko) 금속 넥킹 파손을 겪을 것으로 예상되는 구조의 시간-전진 수치적 시뮬레이션을 행하기 위한 방법 및 시스템
US20190087511A1 (en) Design-information processing apparatus and non-transitory computer readable medium
Tagliabue et al. Biomechanical modelling of probe to tissue interaction during ultrasound scanning
JP2017078943A (ja) 解析プログラム
Xie et al. Finite-element kalman filter with state constraint for dynamic soft tissue modelling
JP7246636B2 (ja) 情報処理装置、粒子シミュレータシステム、及び粒子シミュレータ方法
Aulisa et al. Monolithic coupling of the implicit material point method with the finite element method
Mu et al. Geometric and electrostatic modeling using molecular rigidity functions
KR102436658B1 (ko) 입자 기반의 유체 해석 시뮬레이션 방법 및 유체 해석 시뮬레이션 장치
US9864836B2 (en) Computer product, rendering apparatus, and rendering method
Mendizabal et al. Face-based smoothed finite element method for real-time simulation of soft tissue
Nasopoulou et al. Feasibility of the estimation of myocardial stiffness with reduced 2d deformation data
Amanifard et al. An SPH approach for fluid-hypoelastic structure interactions with free surfaces
JP6065616B2 (ja) シミュレーションプログラム、シミュレーション方法及びシミュレーション装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200709

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210423

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210511

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210524

R150 Certificate of patent or registration of utility model

Ref document number: 6897477

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150