直交曲線座標系基底の変化 伊藤榮信 2011 年 8 月 19 日 更新 2012 年 3 月 2 日 1 はじめに ここで取り上げる問題は流体力学に限ったことでは無く偏微分方程式を曲 線座標系で表示する際に現れる.例えば Navier-Stokes 方程式のベクトル表 記は 1 ∂u + (u · ∇)u = − ∇p + ν∇2 u ∂t ρ (1) である.3 次元直交座標系 (図 1) をとると,流速を 図 1: 3 次元直交座標系 u = ui + vj + wk (2) と書くことができ,ナブラは ∇=i ∂ ∂ ∂ +j +k ∂x ∂y ∂z (3) である.ただし,i,j,k は x, y, z 軸上の単位ベクトルであり,直交条件 i · j = 0, i · k = 0, j · k = 0 1 (4) を満たす. 上の Navier-Stokes 方程式で左辺第 2 項 (u · ∇)u を具体的に計算すると (2) と (3) 式より (u · ∇)u = (ui + vj + wk) · i = u ∂ ∂ ∂ +j +k ∂x ∂y ∂z ∂ ∂ ∂ +v +w ∂x ∂y ∂z (ui + vj + wk) (ui + vj + wk) (5) となる.i 成分を考えると =u =u ∂(ui) ∂(ui) ∂(ui) +v +w ∂x ∂y ∂z ∂u ∂i ∂u ∂i ∂u ∂i i + u2 + v i + vu + w i + wu ∂x ∂x ∂y ∂y ∂z ∂z =u ∂u ∂u ∂u i+v i+w i ∂x ∂y ∂z (6) と計算できる.ここで ∂i ∂i ∂i = 0, = 0, = 0, ∂x ∂y ∂z (7) は明らかで,3 次元直交座標系の等質性から納得のいくものである. それでは球座標系 (r, θ, φ) の場合にはどうであろうか (図 2).この場合, 図 2: 球座標系 流速は u = ur ar + uθ aθ + uφ aφ 2 (8) で表され,ナブラは ∇ = ar ∂ ∂ 1 ∂ 1 + aθ + aφ ∂r r ∂θ r sin θ ∂φ (9) で定義さるれ.ただし,ar ,aθ ,aφ は r, θ, φ 軸上の単位ベクトルであり,直 交条件 ar · aθ = 0, ar · aφ = 0, aθ · aφ = 0 (10) を満たす. さて直交座標系の場合と同様 (u · ∇)u は (u · ∇)u = ur ∂ 1 ∂ 1 ∂ + uθ + uφ ∂r r ∂θ r sin θ ∂φ (ur ar + uθ aθ + uφ aφ ) となるが,(6) 式の先頭行に対応する式の aθ 成分は ur ∂(uθ aθ ) 1 ∂(uθ aθ ) 1 ∂(uθ aθ ) + uθ + uφ ∂r r ∂θ r sin θ ∂φ (11) である.更にこの式の第 2 項を偏微分すると uθ 1 ∂(uθ aθ ) u2 ∂aθ uθ ∂uθ = aθ + θ r ∂θ r ∂θ r ∂θ となる.ところで aθ は方向が常に変化している基底であるので, ∂aθ =? ∂θ はどうなるのだろうか1 .つまり,各基底ベクトルの偏導関数はどのように表 されるのか. ∂ar ∂ar ∂ar =?, =?, =?, ∂r ∂θ ∂φ ∂aθ ∂aθ ∂aθ =?, =?, =?, ∂r ∂θ ∂φ (12) ∂aφ ∂aφ ∂aφ =?, =?, =?, ∂r ∂θ ∂φ 2 直交曲線座標系 内容を複雑化しないため出現する用語を最小にとどめ話を進めたい.その ため,一般性を犠牲にし特定な場合に限定することで簡略化したい.まして や数学的厳密性などには気を使わない. 1 この場合に限っては,この偏導関数が - a となることが図からも分かる.それは向心力方 r 向である. 3 図 1 は座標軸がすべて直線なので直線座標系と呼ぶ.しかも,3 つの軸は 直交するので2 ,直交座標系である.また,図 2 で 1 本は直線 (r) だが残りの 二つは (見た目で) 曲線-これを座標曲線という-なのでこれらから成る系を 曲線座標系と呼び,更に 3 本の軸は直交しているので直交曲線座標系と呼ぶ. ここで扱うのはこの直交曲線座標系に限定する3 . 以下,球座標系について話を進める.(円柱座標については付録に記す.) 図 2 の点 P の直交座標 (x, y, z) と球座標 (r, θ, φ) との間には x = r sin θ cos φ, y = r sin θ sin φ, z = r cos θ (13) の関係がある.ただし r ≥ 0, 0 · θ · π, 0 · φ < 2π とする.一方,(13) 式を (r, θ, φ) について解けば r = x2 + y2 + z 2 , x2 + y 2 , θ = tan−1 z y φ = tan−1 , x 3 (14) 自然基底 直交座標系での基底 i, j, k は最も質の良い (扱いやすい) 基底である.球座 標系ではどうであろうか.ある座標曲線上で基底となるベクトルとはその座 標曲線に沿ったベクトルである (曲線の接ベクトルで図 3).例えば,点 P で θ 曲線に沿うベクトルの方向とは点 P から ∆θ だけ変化させた場合のその変 化の方向となる.このときの x, y, z の変化はどれほどとなるであろうか.そ れを調べるには (13) 式を使えばよい: ∂y ∂z ∂x = r cos θ cos φ, = r cos θ sin φ, = −r sin θ. ∂θ ∂θ ∂θ (15) この事をもう少し正確に数式を使って考えよう.図 3 の OP を 3 次元直交座 標系内の位置ベクトル r で表すと r = xi + yj + zk = r sin θ cos φi + r sin θ sin φj + r cos θk (16) であるから,点 P において θ 曲線に沿うベクトルを eθ とすると eθ = ∂r = r cos θ cos φi + r cos θ sin φj − r sin θk ∂θ (17) 2 必ずしも直交する必要は無く,直交しない場合の座標系を斜交座標系という.しかし,既に 記したように内容を簡略化するため,全ては直交するとする. 3 前の注記に関連するが,直交座標系のみを考えているので反変ベクトルと共変ベクトルと いったことを考える必要が無い. 4 図 3: θ 曲線に沿う基底 となる.ここで (16) 式を使った.この eθ の大きさは eθ · eθ = r 2 cos2 θ + r 2 sin2 θ = r 2 (18) である.このように基底 eθ は単位ベクトルではなく微分されただけの自然の ままの基底である.これを自然基底と呼ぶ.説明の都合上 θ 曲線から始めた が r については er = ∂r = sin θ cos φi + sin θ sin φj + cos θk, ∂r (19) であり,(18) 式と同様の計算をすれば er の大きさは 1 となる.さらに,φ 曲 線については eφ = ∂r = −r sin θ sin φi + r sin θ cos φj, ∂φ (20) であるから,この場合 eφ の大きさは r sin θ となる.また,φ 曲線の性質から z 成分,もしくは k 方向の成分が無いことがわかる.以上をまとめると ∂r er = = sin θ cos φi + sin θ sin φj + cos θk, ∂r ∂r = r cos θ cos φi + r cos θ sin φj − r sin θk, eθ = (21) ∂θ eφ = ∂r = −r sin θ sin φi + r sin θ cos φj, ∂φ となる. er · eθ = er · eφ = eθ · eφ = 0, 5 (22) となることは上の式から確かめられる.これらの直交性は座標曲線の直交性 から明らかである. 表記法について これ以降の計算を容易にするため座標について次の表記を取り入れる: (x, y, z) = (x1 , x2 , x3 ), (r, θ, φ) = (u1 , u2 , u3 ). この記号法を使って (21) 式を表すなら ∂r = sin u2 cos u3 i + sin u2 sin u3 j + cos u2 k, e1 = ∂u 1 ∂r e2 = = u1 cos u2 cos u3 i + u1 cos u2 sin u3 j − u1 sin u2 k, ∂u 2 ∂r e3 = = −u1 sin u2 sin u3 i + u1 sin u2 cos u3 j, ∂u3 (23) となる. gij の導入 次のセクションで使用するため以下の量を定義しておく: e1 · e1 = g11 = 1, e2 · e2 = g22 = r 2 , e3 · e3 = g33 = r 2 sin2 θ, その他の, ei · ej = gij = 0, (24) i = j = 1 ~3 また,(16) と (23) 式から dr = ∂r ∂r ∂r du1 + du2 + du3 ∂u1 ∂u2 ∂u3 (25) また, dr = e1 du1 + e2 du2 + e3 du3 = ei dui (26) と書くこともできる.最右辺の表記では添字 i が 2 度現れている.このよう に 2 度現れた添字については 1~3 の和をとるという規則がある (縮約とかア インシュタインの規約).(26) 式の内積を考えると dr · dr = ds2 = e1 · e1 du21 + e2 · e2 du22 + e3 · e3 du23 となることが分かるが,更に (24) 式で定義された gij により ds2 = g11 du21 + g22 du22 + g33 du23 = gij dui duj 6 (27) 図 4: 微小距離の表現 と書くことができる4 .ここで添字として現れる i, j については 1~3 までの 和をとる. 4 自然基底の変化 点 P(r) から点 Q(r + dr) までの変位 dr を点 P の自然基底で表した微分の 式 (26) をもう一度記す. dr = ei dui (28) 点 P の座標は P(u1 , u2 , u3 ) である. 点 P(ui ) と点 Q(ui + dui ) での自然基底は異なるので,これを ei (Q) = ei (P) + dei (P) (29) とする.この変動部分 dei を dej = ωi,j ei (30) のように表すことができるであろう [1].この ωi,j が求められれば本題が解決 する.(再度注意しておくが j で和をとっている.例えば de2 = ω1,2 e1 + ω2,2 e2 + ω3,2 e3 となる. )つまり,未知の微小変化 dei とは言え,考えている空間内のベクト ルなのであるから点 P における自然基底 ej の線形結合で表せるはずである. 4 実はこの式は微分幾何学もしくは一般相対性理論で最も重要な式であり,2 次微分形式とい う.また,ここではテンソルという用語を使わないようにしているが,gij は計量テンソルと呼 ばれ,一般相対性理論では重力ポテンシャルを表している. 7 図 5: 点 P と点 Q における自然基底 微小であるためには係数 ωi,j を微小とすればよい.すなわち ωi,j = Γi,jk duk (31) 再再度注意しておくがここでも k で和をとっているので,例えば ω3,2 = Γ3,21 du1 + Γ3,22 du2 + Γ3,23 du3 ということである.余談であるが (30) 式の次の番号無しの式で記した ω3,2 に はここで記したものが代入されるので全てを書くと相当長い式となる. (30) 式の ωi,j を (31) 式で表した式は dej = Γi,jk ei duk (32) となる.なお,ここで記号 Γi,jk は通常 Γijk とか i jk で表されるが5 ,ここでは添字についてはすべて下に付けることにしているの で (31) 式で定義した. 本題は (12) 式の右辺がどのように書かれるかを知ることであった.つまり (32) 式より ∂ej = Γi,jk ei ∂uk (33) であるから,Γi,jk が分かれば解決した事になる.(12) 式では単位ベクトル aθ を使ったが (|aθ | = 1),これについては ei の大きさを後で 1 にすればよい. Γi,jk には次の性質がある.(28) 式より ∂r = ej ∂uj 5 実はこの記号はクリストッフェルの記号として有名である. 8 であるので ∂ ∂r ∂ej = = Γi,jk ei ∂uk ∂uj ∂uk となる.ここで (33) 式を使った.また ∂ ∂r ∂ ∂r ∂ek = = = Γi,kj ei ∂uk ∂uj ∂uj ∂uk ∂uj であるので, Γi,jk = Γi,kj (34) となる.つまり jk について「対称」という性質をもっている. さて,gij の定義式 ei · ej = gij の両辺の微分を計算すると dei · ej + ei · dej = dgij 上式左辺の dei には dei = Γℓ,ik eℓ duk を,dej には (32) 式を代入すると (Γℓ,ik eℓ duk ) · ej + ei · (Γℓ,jk eℓ duk ) = dgij この式の左辺の eℓ との内積を明示すると (Γℓ,ik duk )eℓ · ej + ei · eℓ (Γℓ,jk duk ) = dgij であるから,更に偏導関数の形で表すと, Γℓ,ik gℓj + giℓ Γℓ,jk = ∂gij ∂uk (35) ∂gik ∂uj (36) ∂gkj ∂ui (37) となる.この式の j と k を入れ換えた式 gℓk Γℓ,ij + giℓ Γℓ,kj = また i と k を入れ換えた式 gℓj Γℓ,ki + gkℓ Γℓ,ji = を作り,(35) + (36) - (37) より 2giℓ Γℓ,jk = ∂gij ∂gik ∂gjk + − ∂uk ∂uj ∂ui (38) を得る.ここで,gij = gji や Γℓ,jk = Γℓ,kj を使った.更に,左辺の 2giℓ で両 辺を割ると Γℓ,jk = (giℓ )−1 1 2 ∂gik ∂gjk ∂gij + − ∂uk ∂uj ∂ui (39) が得られる6 .この式で右辺は i について和がとられていることに注意. 6 (38) 式から (39) 式の変形で簡単に (g )−1 としたが,これは直交曲線座標系をという仮定 iℓ のもとでのみ可能である (gij = 0, i = j). 一般の場合には giℓ の逆行列を計算し,i で縮約を するなど,もっと面倒である. 9 5 例:球座標系 球座標系の場合,(u1 , u2 , u3 ) = (r, θ, φ) である.また,既に記しているよ うに g11 = 1, g22 = r 2 , g33 = r 2 sin2 θ もしくは 1 0 gij = 0 r 2 0 0 0 0 r 2 sin2 θ であるので −1 gij 1 = 0 0 0 1/r2 0 0 0 1/(r 2 sin2 θ) である.よって先ず 1)ℓ = 1 の場合: Γ1,jk = (gi1 )−1 1 2 ∂gik ∂gjk ∂gij + − ∂uk ∂uj ∂ui −1 −1 よってここで gi1 でゼロでないものは i = 1 の場合のみであるから,g11 =1 で Γ1,jk = 1 2 ∂g1j ∂g1k ∂gjk + − ∂uk ∂uj ∂u1 =− 1 ∂gjk 2 ∂r このうち,gjk がゼロでなく r の関数であるものは j = k = 2 の場合である から, Γ1,22 = −r. 2)ℓ = 2 の場合: Γ2,jk = (gi2 )−1 1 2 ∂gij ∂gik ∂gjk + − ∂uk ∂uj ∂ui −1 −1 よってここで gi2 でゼロでないものは i = 2 の場合のみであるから,g22 = 1/r 2 で Γ2,jk = 1 2r 2 ∂g2k ∂gjk ∂g2j + − ∂uk ∂uj ∂u2 ここで gjk がゼロでないものは j = 1, k = 2 の場合と j = k = 3 の場合で ある: Γ2,12 = 1 2r 2 ∂g21 ∂g22 ∂g22 + − ∂θ ∂r ∂θ 10 = 1 , r Γ2,33 = 1 2r2 − ∂g33 ∂θ = − sin θ cos θ 2)ℓ = 3 の場合: Γ3,jk = (gi3 )−1 1 2 ∂gik ∂gjk ∂gij + − ∂uk ∂uj ∂ui −1 −1 よってここで gi3 でゼロでないものは i = 3 の場合のみであるから,g33 = 1/(r 2 sin2 θ) で Γ3,jk = 1 2r 2 sin2 θ ∂g3k ∂gjk ∂g3j + − ∂uk ∂uj ∂φ この場合,j = 1, k = 3 の場合と j = 2, k = 3 の場合で Γ3,13 = 1 cos θ , Γ3,23 = r sin θ である. ゼロでない Γi,jk は Γ1,22 = −r, Γ1,33 = −r sin2 θ, Γ2,12 = Γ2,21 = Γ3,13 = Γ3,31 = 1 , Γ2,33 = − sin θ cos θ, r 1 cos θ , Γ3,23 = Γ3,32 = r sin θ となる. (32) 式 dej = Γi,jk ei duk を考慮し上の結果をまとめると,自然基底の微分は de1 = Γ2,12 e2 du2 + Γ3,13 e3 du3 de2 = Γ1,22 e1 du2 + Γ2,21 e2 du1 + Γ3,23 e3 du3 de3 = Γ1,33 e1 e1 du3 + Γ2,33 e2 du3 + Γ3,31 e3 e3 du1 + Γ3,32 e3 e3 du2 , であるが,これらに Γi,jk の値を代入すると 1 1 de1 = e2 dθ + e3 dφ, r r 1 cos θ e3 dφ, de2 = −re1 dθ + e2 dr + r sin θ de3 = −r sin2 θe1 dφ − sin θ cos θe2 dφ + 1 e3 dr + cos θ e3 dθ, r sin θ 11 (40) が得られる.しかし公式集では基底を単位ベクトルで表している.ei を単位 ベクトルにするには各々を大きさ |ei | で割ればよいのだから,既に gij を定 義した (24) を参考に ar = e1 , aθ = 1 e2 , r aφ = 1 e3 r sin θ (41) を得る.これらを (40) に代入するが,この式の左辺には微分があり,これは de2 = d(raθ ) = (dr)aθ + rdaθ , de3 = d(r sin θaφ ) = (dr) sin θaφ + r cos θ(dθ)aφ + r sin θdaφ . であるから,これを注意すると (40) 式は dar = aθ dθ + sin θaφ dφ, daθ = −ar dθ + cos θaφ dφ, (42) daφ = − sin θar dφ − cos θaθ dφ, を得, 「はじめに」で問題提起した偏導関数 (12) は ∂ar ∂ar ∂ar = 0, = aθ , = sin θaφ , ∂r ∂θ ∂φ ∂aθ ∂aθ ∂aθ = 0, = −ar , = cos θaφ , ∂r ∂θ ∂φ (43) ∂aφ ∂aφ ∂aφ = 0, = 0, = − sin θar − cos θaθ , ∂r ∂θ ∂φ となる. 6 さいごに 直交曲線座標系での基底の偏導関数がどのように表されるかを 2 から 3 ペー ジ程度で説明できればと思ったが,14 ページにもなってしまった.これを基 に,余分なところを削り,せめて 5 から 6 ページにしたい.なお,Batchelor 「入門流体力学」[2] の付録 (p.601) には半ページほどでこれが導出されてい るが,あまりに省略されすぎている. ベクトル解析の本には何故か自然基底で表された自然基底の微分 (40) 式で 終わっている.この自然基底を単位ベクトルにまで進め,基底の導関数とい う形でまとめたものには出会っていない.[3],[4],[5],[6] 明らかに数学者 との関心の違いであり,ここにも隙間が見える. 12 しかしここまで来ると,話を少し進めて簡単な曲面論までいってしまうこ ともできそうである.ここでは 3 次元空間内の基底の微分 dei を 3 次元空間 内の基底 (3 本) で表現したが,曲面の場合は,重力を考えているわけではな いから,3 次元空間内の曲面 (2 次元) であり,dei は接平面内の基底 (2 本のベ クトル) と接平面に垂直なベクトルで表現される (という若干の違いはある). これをもう少し進めればレビ・チビタの平行性とユークリッド接続へとつな がる [3],[4],[5].2 次元内の生物はこの垂直な方向の存在に気づかない. 重要な追記) ここで記述した面倒な方法をあっさりとひっくり返してしまうような簡単な 導出方法を以下の URL で見つけた. http://www.phys.u-ryukyu.ac.jp/~maeno/cgi-bin/pukiwiki/index.php?%CE %CC%BB%D2%CE%CF%B3%D82006%C7%AF%C5%D9%C2%E812%B2 %F3 に記された方法である.これについては付録に追加した. 参考文献 [1] 田代嘉宏著:基礎数学選書 23 テンソル解析:裳華房 (1978) [2] G.K.Batchelor 著,橋本英典他訳:入門流体力学:東京電機大学出版局 (1972) [3] 矢野健太郎著:数学ライブラリー 4 接続の幾何学:森北出版社 (1968) [4] 矢野健太郎・石原繁 共著:大学演習 ベクトル解析:裳華房 (1964) [5] 小林昭七著:基礎数学選書 17 曲線と曲面の微分幾何:裳華房 (1974) [6] 松本誠著:基礎数学選書 14 計量微分幾何:裳華房 (1974) A 例:円筒座標系 3 次元直交座標 (x, y, z) と円筒座標 (r, φ, z) との間には x = r cos φ, y = r sin φ, (44) z=z これを r, φ, z について解くと 2 2 r = x +yy , φ = tan−1 , x z=z 13 (45) (u1 , u2 , u3 ) = (r, θ, z) とする.座標 (x, y, z) の位置ベクトル r は r = xi + yj + zk = r cos φi + r sin φj + zk であるから,円筒座標系の自然基底 er , eφ , ez は er = cos φi + sin φj, eφ = −r sin φi + r cos φj, ez = k となる.よって er · er = g11 = 1, eφ · eφ = g22 = r2 , ez · ez = g33 = 1 行列の形で書くと 1 gij = 0 0 0 r2 0 0 0 1 であり −1 gij 1 0 = 0 1/r 2 0 0 0 0 1 である.よって先ず 1)ℓ = 1 の場合: Γ1,jk = (gi1 )−1 1 2 ∂gij ∂gik ∂gjk + − ∂uk ∂uj ∂ui −1 −1 よってここで gi1 でゼロでないものは i = 1 の場合のみであるから,g11 =1 で Γ1,jk = 1 2 ∂g1k ∂gjk ∂g1j + − ∂uk ∂uj ∂u1 =− 1 ∂gjk 2 ∂r このうち,gjk がゼロでなく r の関数であるものは i = j = 2 の場合である から, Γ1,22 = −r. 2)ℓ = 2 の場合: Γ2,jk = (gi2 )−1 1 2 ∂gik ∂gjk ∂gij + − ∂uk ∂uj ∂ui −1 −1 よってここで gi2 でゼロでないものは i = 2 の場合のみであるから,g22 = 1/r 2 で Γ2,jk = 1 2r 2 ∂g2j ∂g2k ∂gjk + − ∂uk ∂uj ∂u2 14 ここで gjk がゼロでないものは j = 1, k = 2 の場合である: Γ2,12 = 1 2r 2 ∂g21 ∂g22 ∂g22 + − ∂θ ∂r ∂θ = 1 , r 2)ℓ = 3 の場合: Γ3,jk = 0 である. ゼロでない Γi,jk は Γ1,22 = −r, Γ2,12 = Γ2,21 = 1 , r (32) 式 dej = Γi,jk ei duk を考慮し上の結果をまとめると,自然基底の微分は de1 = Γ2,12 e2 du2 de2 = Γ1,22 e1 du2 + Γ2,21 e2 du1 de3 = 0, であるが,これらに Γi,jk の値を代入すると 1 de1 = e2 dθ, r 1 de2 = −re1 dφ + e2 dr, r de3 = 0, (46) が得られる.基底を単位ベクトルで表す.ei を単位ベクトルにするには各々 を大きさ |ei | で割ればよいのだから,既に gij を計算してあるので ar = e1 , aφ = 1 e2 , r az = e3 (47) を得る.これらを (46) に代入するが,この式の左辺には微分があり,これは de2 = d(raφ ) = (dr)aφ + rdaφ , であるから,これを注意すると (46) 式は dar = aφ dφ daφ = −ar dφ, daz = 0, 15 (48) を得る.偏導関数は ∂ar ∂ar ∂ar = 0, = aφ , = 0, ∂r ∂φ ∂z ∂aφ ∂aφ ∂aφ = 0, = −ar , = 0, ∂r ∂φ ∂zi (49) ∂az ∂az ∂az = 0, = 0, = 0, ∂r ∂φ ∂z となる. B 単位基底ベクトルの偏導関数の簡単な導出 (23) 式で (u1 , u2 , u3 ) を元に戻し (r, θ, φ) とするならば er = eθ = eφ = ∂r = sin θ cos φi + sin θ sin φj + cos θk, ∂r ∂r = r cos θ cos φi + r cos θ sin φj − r sin θk, ∂θ ∂r = −r sin θ sin φi + r sin θ cos φj, ∂φ となる.基底ベクトルを単位ベクトルにすると ∂r ar = = sin θ cos φi + sin θ sin φj + cos θk, ∂r ∂r = cos θ cos φi + cos θ sin φj − sin θk, aθ = r∂θ ∂r aφ = = − sin φi + cos φj, r sin θ∂φ が得られる.この式で例えば, ∂ar = cos θ cos φi + cos θ sin φj − sin θk = aθ , ∂θ である.また ∂aφ = − cos φi − sin φj = − sin θar − cos θaθ , ∂φ となる. 16 (50) 索引 アインシュタインの規約, 6 クリストッフェルの記号, 8 計量テンソル, 7 座標曲線, 4 自然基底, 5 縮約, 6 直交曲線座標系, 4 2 次微分形式, 7 20
© Copyright 2025 ExpyDoc