Browsed by
Category: Programming

SMART〜The Well Model

SMART〜The Well Model

上流石油産業に於いて複雑で精微な坑井オペレーションが追求されたことを受けて、実態を正確に反映する坑井モデリングがリザーバーシミュレーションに不可欠な要素となった。しかしながら、従前の一般的な坑井モデルでは坑井内の多相流動モデルの再現性が限定的であった。これを受けて提唱された”Multi Segment Well Model (MSWell)”は現実的な坑井挙動に近づける坑井内に於ける物性の再現性の向上を図る技法であるものの、貯留層と強結合されるMSWell坑井モデルは多相流動方程式の同時解法の困難さを伴い実用的な技法であるとは言い難い。依って、Inhouse SMARTシミュレータにはMSWellモデルを導入していないものの、将来拡張を視野に多変数(3変数)を扱える坑井モデルを組み込んでいる。 Accurate well modeling becomes essential in the reservoir simulation because more complex well operations are employed in the petroleum industry. The prevailed standard well model is proved to be computationally efficient, while it lacks the ability to capture the multiphase flow details within the wellbore. MultiSegment well (MSWell) model is then proposed to approximate the actual physical shape of the well and perform accurate simulation within the wellbore. However, the increasing complexity of the…

Read More Read More

SMARTSOL〜The Strongly Coupled Well Model

SMARTSOL〜The Strongly Coupled Well Model

温暖な北陸の冬籠りを経て春を過ぎ初夏目前の梅雨入りのこの頃、半年以上に亘って追求してきたが、iSMARTに自動微分を組込むことが上手く行かず頓挫状態にある。只、その試行錯誤する合間、単変数坑井モデルのiSMARTに対して解析微分に基づくヤコビ行列を実装することになってしまったことは愛嬌か。本末転倒の取組みになってしまい本来の目的を達成することができなかったことで気分的にはスッキリしないが、結果オーライで良しとしよう。さて、残る”SMARTSOL”の重要論点である強結合坑井モデルの行列解法につき説明する。After a mild winter in Hokuriku, spring has passed quickly and the rainy season has just begun before summer, I am struggling to implement automatic differentiation in iSMART, although I have been working on it for more than half a year. I have not been able to figure out the fatal reason for the failure. During the trial and error period, however, I ended up incorporating the analytical Jacobian into the one-solution-variable well model in iSMART. It’s a charm, isn’t…

Read More Read More

Studio Life~2023 New Year’s Eve

Studio Life~2023 New Year’s Eve

年末年始は鎌倉の本宅で年越しです。小松駅から夜行バスに乗り翌朝新宿で私鉄に乗り換え最寄り駅片瀬江ノ島駅で降車。改札口に出て太陽の光に輝く海の景色を目にする瞬間、仄かな懐かしさを覚え、関東の天候の良さを思い出して鎌倉へ戻ってきた感激に浸る。今年の年末は晴天に恵まれて寒さ知らず。生憎大晦日は天気は崩れたが正月三ヶ日も好天に恵まれる予報。I am spending the New Year’s holiday at my main residence in Kamakura. I take an overnight bus from Komatsu Station, change to a local train at Shinjuku Station next morning, and get off at Katase Enoshima Station. As soon as I step out of the exit gate and see the sea shining in the sunlight, I feel a faint sense of nostalgia and recall the excellent weather in the Kanto area. I am filled with the emotion of returning…

Read More Read More

SMARTSOL〜The AIM Implementation

SMARTSOL〜The AIM Implementation

第二回目は順応陰解法(AIM)の実装編をお届けします。AIM法の陽・陰解法への切り替えについて閾値法と局所行列安定法が提唱されている。This second thread presents an implementation of the Adaptive Implicit Method (AIM), in which the Threshold Method as well as the Local Matrix Stability Analysis Method are proposed as the switching criterion between the explicit and implicit AIM method.

SMARTSOL〜The AIM Matrix Solver

SMARTSOL〜The AIM Matrix Solver

“SMARTSOL”の重要論点の一つである順応陰解法(AIM)に関してシリーズでご紹介します。第一回目は行列解法に於けるAIM法の取り扱い方法について説明します。I would like to address about the Adaptive Implicit Method (AIM) in series, which is one of the main functions incorporated in SMARTSOL. In this first thread, we will discuss how to implement the AIM method in the matrix solver.

SMARTSOL〜The CPR Preconditioner

SMARTSOL〜The CPR Preconditioner

前処理法(Preconditioner)としてIncomplete LU FactorizationとNested Factorizationを紹介してきた。自分の現役時代のシミュレーション環境ではこれにて充分であったが、最近より複雑な地層を対象とする大規模な油層シミュレーションの環境下ではより効果的な解法としてCPR前処理(Constrained Pressure Residual Preconditioner)なる手法が用いられているようだ。まだin-house貯留層シミュレーターSMARTのMatrix Solution Package (SMARTSOL)には実装していないが、その概要及び実装の必要性等につき考察する。

iSMART〜The Hyper-Dual Numbers in Fortran

iSMART〜The Hyper-Dual Numbers in Fortran

4ヶ月に亘る冬籠りでPython,Juliaの自動微分の実装を終え、Fortran Simulator “iSMART”をJulia言語に変換中にある。スタンフォード大の博士論文を渉猟している折、Hyper-dual numbersなる超実数を用いて厳密に一階偏導関数、加えて二階偏導関数も導出できる論文に出会う。急遽変換を中断し、FortranによるHyper-dual numbersの実装を試みることにする。あの冬籠りは一体何だったんだろうか?After four months of dedication during the winter, I finished the implementation in Python and Julia for the automatic differentiation. I am currently working on converting the in-house Fortran program “iSMART” to Julia. While browsing papers at Stanford University, I came across a Ph.D. thesis on hyper-dual numbers, which is an extension of real numbers that can derive the first-order partial derivatives as well as the second-order partial derivatives in a strict manner. Suddenly I stopped…

Read More Read More

iSMART〜Automatic Differentiation in Julia Final

iSMART〜Automatic Differentiation in Julia Final

九谷広場でJulia版ADモジュールの開発に悪戦苦闘していた日曜の午後、騒がしい排気音に集中力が途切れがちになる。当初は気に止めずにいたが女性陣が騒ぎ出したのを機に外に目を向けるとロゴを付けた旧車が何台も駆け抜けている。何事だと外に出て交通整理の係員に問いかけると、初めて北陸で開催される車イベントで堺正章さんも参画。今晩ここに泊まって明朝ゴールの京都へ向かうと聞く。目を凝らしてロゴをみると”La Festa Primavera 2023″とある。あの本邦一格式の高いイベントかと驚く。明朝出発セレモニーで往年の名車に出会えると思うと、ハイな気分になり一気にモジュールの開発が捗り完成する。さて、Julia版ADモジュールのご紹介を兼ねたJulia言語概要解説編をお届けします。On a Sunday afternoon, while I am struggling to develop Julia’s version of the AD module at Kutani Square, the loud exhaust noises cause me to lose my concentration. I don’t pay attention at first, but then I look outside and see a bunch of old cars with logo stickers driving by as the women start to make a fuss. I go outside to ask an event staffer at the traffic control what’s going on. It turns…

Read More Read More

iSMART〜Automatic Differentiation Part 2

iSMART〜Automatic Differentiation Part 2

Pythonによる自動微分クラスの構築、実装の検証編をお届けします。単なるプログラミングな知見を駆使するだけで自動微分の肝はPart 1に集約されます。Part 2 would hopefully address an implementation and verification of the Automatic Differentiation Initiative class in Python. A mere programming skill is required in this part. The core of AD could be covered in Part 1.

iSMART〜Automatic Differentiation Part 1

iSMART〜Automatic Differentiation Part 1

冬籠りの三ヶ月間どっぷり自動微分(Automatic Differentiation)に浸かりました。俺の一世代前の貯留層シミュレーターiSMARTは導入の容易な差分商で近似する数値微分法を採用しているが、演算に大幅な手間が掛かる上に最適な微小値\(\epsilon\)を見出すのが難しく誤った解に収束することも起こりうる状況にある。近年研究対象のシミュレーターでは自動微分を用いてヤコビアン行列の組込みの手間の短縮化を図っていることを知り自動微分の組込みを夢見ていた。野外活動が鈍る北陸の冬の時期、iSMARTに自動微分の実装に向けてチャレンジを開始。Three months this winter are dedicated to the automatic differentiation (AD). My primitive reservoir simulator iSMART adopts the numerical differentiation method which is easy to implement but may end up converging to a wrong solution due to the loss of the search for an optimal \(\epsilon\). I wish to incorporate an AD function into iSMART, once I learn that the latest research simulators tend to use the AD function instead of spending huge time on constructing analytical Jacobian matrices….

Read More Read More