\hypertarget{namespacew__mpi__module}{}\doxysection{w\+\_\+mpi\+\_\+module Module Reference}
\label{namespacew__mpi__module}\index{w\_mpi\_module@{w\_mpi\_module}}


\doxysubsection{Detailed Description}
2次元球面\+: 球面調和関数展開，\+M\+P\+I並列 

\begin{DoxyAuthor}{Author}
Shin-\/ichi Takehiro, Youhei S\+A\+S\+A\+KI 
\end{DoxyAuthor}
\begin{DoxyCopyright}{Copyright}
Copyright (C) S\+P\+M\+O\+D\+EL Development Group, 2019. License is M\+I\+T/\+X11. see \mbox{\hyperlink{COPYRIGHT}{C\+O\+P\+Y\+R\+I\+G\+HT}} in detail
\end{DoxyCopyright}
spml/w\+\_\+mpi\+\_\+module モジュールは球面上での 2 次元流体運動を 球面調和函数を用いたスペクトル法と M\+PI 並列化によって数値計算するための Fortran90 関数を提供する.

\mbox{\hyperlink{namespacew__mpi__module}{w\+\_\+mpi\+\_\+module}} は実際には以下の下部モジュールからなる．
\begin{DoxyItemize}
\item \mbox{\hyperlink{namespacew__mpi__module__base}{w\+\_\+mpi\+\_\+module\+\_\+base}}\+: 基本変換
\item \mbox{\hyperlink{namespacew__mpi__module__deriv}{w\+\_\+mpi\+\_\+module\+\_\+deriv}}\+: 微分計算
\item \mbox{\hyperlink{namespacew__mpi__module__integral}{w\+\_\+mpi\+\_\+module\+\_\+integral}}\+: 積分・平均計算
\item \mbox{\hyperlink{namespacew__mpi__module__spectrum}{w\+\_\+mpi\+\_\+module\+\_\+spectrum}}\+: スペクトル解析
\item \mbox{\hyperlink{namespacew__mpi__module__interpolate}{w\+\_\+mpi\+\_\+module\+\_\+interpolate}}\+: 補間計算
\end{DoxyItemize}

内部で I\+S\+P\+A\+C\+K3 の S\+Y\+P\+A\+CK のサブルーチンを呼んでいる. スペクトルデータおよび格子点データの格納方法や変換の詳しい計算法に ついては I\+S\+P\+A\+C\+K3/\+S\+Y\+P\+A\+CK のマニュアルを参照されたい. \doxysubsubsection*{関数・変数の名前と型について}

\doxyparagraph*{命名法}


\begin{DoxyItemize}
\item 関数名の先頭 ({\ttfamily w\+\_\+}, {\ttfamily nm\+\_\+}, {\ttfamily n\+\_\+}, {\ttfamily xy\+\_\+}, {\ttfamily xv\+\_\+}, {\ttfamily x\+\_\+}, {\ttfamily y\+\_\+}, {\ttfamily v\+\_\+}) は, 返す値の形を示している.
\begin{DoxyItemize}
\item {\ttfamily w\+\_\+} \+:: スペクトルデータ
\item {\ttfamily xy\+\_\+} \+:: 2 次元格子点データ
\item {\ttfamily xv\+\_\+} \+:: 2 次元分散格子点データ
\item {\ttfamily nm\+\_\+} \+:: スペクトルデータの並んだ 3 次元配列(スペクトルデータの並びは 全波数 n, 帯状波数 m で指定される 2 次元配列)
\item {\ttfamily n\+\_\+} \+:: スペクトルデータの並んだ 2 次元配列 (スペクトルデータの並びは 全波数 n で指定される 1 次元配列)
\item {\ttfamily x\+\_\+} \+:: 経度方向 1 次元格子点データ
\item {\ttfamily y\+\_\+} \+:: 緯度方向 1 次元格子点データ
\item {\ttfamily v\+\_\+}\+:: 緯度方向 1 次元分散格子点データ
\end{DoxyItemize}
\item 関数名の間の文字列 {\ttfamily D\+Lon}, {\ttfamily Grad\+Lat}, {\ttfamily Grad\+Lat}, {\ttfamily Div\+Lon}, {\ttfamily Div\+Lat}, {\ttfamily Lapla}, {\ttfamily Lapla\+Inv}, {\ttfamily Jacobian} は, その関数の作用を表している.
\item 関数名の最後 ({\ttfamily \+\_\+w\+\_\+w}, {\ttfamily \+\_\+w}, {\ttfamily \+\_\+xy}, {\ttfamily \+\_\+x}, {\ttfamily \+\_\+y}) は, 入力変数の形スペクトルデータおよび格子点データであることを示している.
\begin{DoxyItemize}
\item {\ttfamily \+\_\+w} \+:: スペクトルデータ
\item {\ttfamily \+\_\+w\+\_\+w} \+:: 2 つのスペクトルデータ
\item {\ttfamily \+\_\+xy} \+:: 2 次元格子点データ
\item {\ttfamily \+\_\+xv} \+:: 2 次元分散格子点データ
\item {\ttfamily \+\_\+x} \+:: 経度方向 1 次元格子点データ
\item {\ttfamily \+\_\+y} \+:: 緯度方向 1 次元格子点データ
\item {\ttfamily \+\_\+v} \+:: 緯度方向 1 次元分散格子点データ
\end{DoxyItemize}
\end{DoxyItemize}

\doxyparagraph*{各データの種類の説明}


\begin{DoxyItemize}
\item 以下 {\ttfamily DP = kind(1.\+0D)} である
\item {\ttfamily xy} \+: 2 次元格子点データ.
\begin{DoxyItemize}
\item 変数の種類と次元は {\ttfamily real(\+D\+P), dimension(im,jm)}
\item {\ttfamily im}, {\ttfamily jm} はそれぞれ経度, 緯度座標の格子点数であり, サブルーチン \mbox{\hyperlink{namespacew__mpi__module_ad43aa36675d4efea7d671c07510f897c}{w\+\_\+mpi\+\_\+initial}} にてあらかじめ設定しておく.
\end{DoxyItemize}
\item {\ttfamily xv} \+: 2 次元分散格子点データ.
\begin{DoxyItemize}
\item 変数の種類と次元は {\ttfamily real(\+D\+P), dimension(im,jc)}.
\item {\ttfamily im}, {\ttfamily jc} はそれぞれ経度の格子点数および プロセスで保有する緯度方向の格子点数である.
\item {\ttfamily jc} はサブルーチン \mbox{\hyperlink{namespacew__mpi__module_ad43aa36675d4efea7d671c07510f897c}{w\+\_\+mpi\+\_\+initial}} にて設定して おくことにより設定される public 変数である.
\end{DoxyItemize}
\item {\ttfamily w} \+: スペクトルデータ.
\begin{DoxyItemize}
\item 変数の種類と次元は {\ttfamily real(\+D\+P), dimension((nm+1)$\ast$(nm+1))}. {\ttfamily nm} は球面調和函数の最大全波数であり, サブルーチン \mbox{\hyperlink{namespacew__mpi__module_ad43aa36675d4efea7d671c07510f897c}{w\+\_\+mpi\+\_\+initial}} にてあらかじめ設定しておく.
\item スペクトルデータの格納のされ方は 関数 \mbox{\hyperlink{interfacew__mpi__module__base_1_1l__nm}{l\+\_\+nm}}, \mbox{\hyperlink{interfacew__mpi__module__base_1_1nm__l}{nm\+\_\+l}} によって調べることができる.
\end{DoxyItemize}
\item {\ttfamily nm} \+: スペクトルデータの並んだ 2 次元配列.
\begin{DoxyItemize}
\item 変数の種類と次元は {\ttfamily real(\+D\+P), dimension(0\+:nm,-\/nm\+:nm)}. 第 1 次元が水平全波数, 第 2 次元が帯状波数を表す.
\item {\ttfamily nm} は球面調和函数の最大全波数であり, サブルーチン w\+\_\+mpi\+\_\+initial にてあらかじめ設定しておく.
\end{DoxyItemize}
\item {\ttfamily n} \+: スペクトルデータの並んだ 1 次元配列.
\begin{DoxyItemize}
\item 変数の種類と次元は {\ttfamily real(\+D\+P), dimension(0\+:nm)}.
\item 第 1 次元が水平全波数を表す. {\ttfamily nm} は球面調和函数の最大全波数であり, サブルーチン w\+\_\+mpi\+\_\+initial にてあらかじめ設定しておく.
\end{DoxyItemize}
\item {\ttfamily x}, {\ttfamily y} \+: 経度, 緯度方向 1 次元格子点データ.
\begin{DoxyItemize}
\item 変数の種類と次元はそれぞれ {\ttfamily real(\+D\+P), dimension(im)} および {\ttfamily real(\+D\+P), dimension(jm)}.
\end{DoxyItemize}
\item {\ttfamily w\+\_\+} で始まる関数が返す値はスペクトルデータに同じ.
\item {\ttfamily xy\+\_\+} で始まる関数が返す値は 2 次元格子点データに同じ.
\item {\ttfamily xv\+\_\+} で始まる関数が返す値は 2 次元分散格子点データに同じ.
\item {\ttfamily x\+\_\+}, {\ttfamily y\+\_\+}, {\ttfamily v\+\_\+} で始まる関数が返す値は 1 次元格子点データに同じ.
\item スペクトルデータに対する微分等の作用とは, 対応する格子点データに 微分などを作用させたデータをスペクトル変換したものことである.
\end{DoxyItemize}

\doxysubsubsection*{変数・手続き群の要約}

\doxyparagraph*{初期化・終了処理}


\begin{DoxyItemize}
\item \mbox{\hyperlink{namespacew__mpi__module_ad43aa36675d4efea7d671c07510f897c}{w\+\_\+mpi\+\_\+initial}} \+: スペクトル変換の格子点数, 波数, 領域の大きさの設定
\item \mbox{\hyperlink{namespacew__mpi__module_afaaa0926433bb9ac9829dfaa3fe5dfff}{w\+\_\+mpi\+\_\+finalize}} \+: モジュールの終了処理(割り付け配列の解放)をおこなう.
\item \mbox{\hyperlink{namespacew__mpi__module__base_a072b71533174027ae9d27c2f1ff0f2fb}{x\+\_\+\+Lon}}, \mbox{\hyperlink{namespacew__mpi__module__base_a6ba4addf173c21cc9324d9d1ca54053a}{x\+\_\+\+Lon\+\_\+\+Weight}} \+: 格子点座標(経度)と重みを格納した 1 次元配列
\item \mbox{\hyperlink{namespacew__mpi__module__base_a558a26a9e3991d3a1ee452a4558064ca}{y\+\_\+\+Lat}}, \mbox{\hyperlink{namespacew__mpi__module__base_a4786b3235b0aca80489c1eee6f3d03de}{y\+\_\+\+Lat\+\_\+\+Weight}} \+: 格子点座標(緯度)と重みを格納した 1 次元配列
\item \mbox{\hyperlink{namespacew__mpi__module__base_ad610bc790b82eefa025e56ce5323efeb}{v\+\_\+\+Lat}}, \mbox{\hyperlink{namespacew__mpi__module__base_a4e11ba6f50fd2ab37e67507800b4ebb4}{v\+\_\+\+Lat\+\_\+\+Weight}} \+: 分散格子点座標(緯度)と重みを格納した 1 次元配列
\item \mbox{\hyperlink{namespacew__mpi__module__base_a944d0cb65b11e2709ec56f34e7da8e36}{xy\+\_\+\+Lon}}, \mbox{\hyperlink{namespacew__mpi__module__base_aa21774d521bd62be2746c359c9e6ec9b}{xy\+\_\+\+Lat}} \+: 格子点データの経度・緯度座標(\+X,\+Y), 格子点データ型 2 次元配列
\item \mbox{\hyperlink{namespacew__mpi__module__base_aae7c556f825b8898424456421c6b5564}{xv\+\_\+\+Lon}}, \mbox{\hyperlink{namespacew__mpi__module__base_aeea6ed2d8858448c1eb88e3b40cdce8b}{xv\+\_\+\+Lat}}, \+: 分散格子点データの経度・緯度座標(\+X,\+Y), 格子点データ型 2 次元配列
\end{DoxyItemize}

\doxyparagraph*{基本変換}

格子点データとスペクトルの変換．\mbox{\hyperlink{namespacew__mpi__module__base}{w\+\_\+mpi\+\_\+module\+\_\+base}} で定義.


\begin{DoxyItemize}
\item \mbox{\hyperlink{namespacew__mpi__module__base_af3c71ab39dece6b5a1016ba418f8371b}{xv\+\_\+w}} \+: スペクトルデータから分散格子データへの変換
\item \mbox{\hyperlink{namespacew__mpi__module__base_a8437d71392fa94854209b7898dc2dd99}{w\+\_\+xv}} \+: 分散格子データからスペクトルデータへの変換
\item \mbox{\hyperlink{interfacew__mpi__module__base_1_1l__nm}{l\+\_\+nm}}, \mbox{\hyperlink{interfacew__mpi__module__base_1_1nm__l}{nm\+\_\+l}} \+: スペクトルデータの格納位置と全波数・帯状波数の変換
\item \mbox{\hyperlink{namespacew__mpi__module__base_a004e891d275758b2e9a39b5d41672a53}{w\+\_\+\+Stream\+Potential2\+Vector\+M\+PI}} \+: 流線ポテンシャルから速度場計算
\item \mbox{\hyperlink{namespacew__mpi__module__base_a15326f414093545618c681f41166ac70}{w\+\_\+\+Vector2\+Vor\+Div\+M\+PI}} \+: 速度場から渦度発散を計算
\item \mbox{\hyperlink{namespacew__mpi__module__base_a843761fce9a1f561f1e84a2ce7fc7456}{w\+\_\+\+Vector\+Cos\+Lat2\+Vor\+Div\+M\+PI}} \+: 速度場から渦度発散を計算
\end{DoxyItemize}

\doxyparagraph*{微分}

微分演算. \mbox{\hyperlink{namespacew__mpi__module__deriv}{w\+\_\+mpi\+\_\+module\+\_\+deriv}} で定義.


\begin{DoxyItemize}
\item \mbox{\hyperlink{namespacew__mpi__module__deriv_aadc2516ae2424b6bc4f85cf699300472}{w\+\_\+\+Lapla\+\_\+w}} \+: スペクトルデータにラプラシアンを作用させる
\item \mbox{\hyperlink{namespacew__mpi__module__deriv_a09b7d83eae095639e1bbf93ce8f1e1cd}{rn}} \+: スペクトルデータのラプラシアンを計算するための係数.
\item \mbox{\hyperlink{namespacew__mpi__module__deriv_a4e22b1b0af70e8410f799ca19d662194}{w\+\_\+\+Lapla\+Inv\+\_\+w}} \+: スペクトルデータにラプラシアンの逆変換を作用させる
\item \mbox{\hyperlink{namespacew__mpi__module__deriv_a295a04c5bb22abeda21d26df427e5196}{w\+\_\+\+D\+Lon\+\_\+w}} \+: スペクトルデータに経度微分∂/∂λを作用させる
\item \mbox{\hyperlink{namespacew__mpi__module__deriv_a111fea49e62fae2bef4c1e469953fbeb}{xv\+\_\+\+Grad\+Lon\+\_\+w}} \+: スペクトルデータに勾配型経度微分 $1/\cosφ・∂/∂λ$ を作用させる
\item \mbox{\hyperlink{namespacew__mpi__module__deriv_a261466ebec6ee1fdfed34058cf067e20}{xv\+\_\+\+Grad\+Lat\+\_\+w}} \+: スペクトルデータに勾配型緯度微分 $∂/∂φ$を作用させる
\item \mbox{\hyperlink{namespacew__mpi__module__deriv_a8b915a2755d31d6588dda33efc799ea6}{w\+\_\+\+Div\+Lon\+\_\+xv}} \+: 格子データに発散型経度微分 $1/\cosφ・∂/∂λ$ を作用させる
\item \mbox{\hyperlink{namespacew__mpi__module__deriv_ae17c2a92a99e81b145ad079a2435009f}{w\+\_\+\+Div\+Lat\+\_\+xv}} \+: 格子データに発散型緯度微分 $1/\cosφ・∂(g \cosφ)/∂φ$ を作用させる
\item \mbox{\hyperlink{namespacew__mpi__module__deriv_a111fea49e62fae2bef4c1e469953fbeb}{xv\+\_\+\+Grad\+Lon\+\_\+w}} \+: スペクトルデータに勾配型経度微分 $ 1/\cosφ・∂/∂λ$ を作用させる
\item \mbox{\hyperlink{namespacew__mpi__module__deriv_a261466ebec6ee1fdfed34058cf067e20}{xv\+\_\+\+Grad\+Lat\+\_\+w}} \+: スペクトルデータに勾配型緯度微分 $∂/∂φ$を作用させる
\item \mbox{\hyperlink{namespacew__mpi__module__deriv_a8b915a2755d31d6588dda33efc799ea6}{w\+\_\+\+Div\+Lon\+\_\+xv}} \+: 格子データに発散型経度微分 $1/\cosφ・∂/∂λ$を作用させる
\item \mbox{\hyperlink{namespacew__mpi__module__deriv_ae17c2a92a99e81b145ad079a2435009f}{w\+\_\+\+Div\+Lat\+\_\+xv}} \+: 格子データに発散型緯度微分 $1/\cosφ・∂(g \cosφ)/∂φ$ を作用させる
\item \mbox{\hyperlink{namespacew__mpi__module__deriv_ab246c6c943215affad4f7a35cde5414b}{w\+\_\+\+Div\+\_\+xv\+\_\+xv}} \+: ベクトル成分である 2 つの格子データに発散を作用させる
\item \mbox{\hyperlink{namespacew__mpi__module__deriv_aa5a8aa88e123ba48be370a9c24f57fd5}{w\+\_\+\+Jacobian\+M\+P\+I\+\_\+w\+\_\+w}} \+: 2 つのスペクトルデータからヤコビアンを計算する
\end{DoxyItemize}

$(λ,μ)$ 座標( $μ=\sinφ)$での微分


\begin{DoxyItemize}
\item \mbox{\hyperlink{namespacew__mpi__module__deriv_ad9c14844cb0f636cee535f6c80dcc819}{xv\+\_\+\+Grad\+Lambda\+\_\+w}} \+: スペクトルデータに勾配型経度微分 $∂/∂λ$を作用させる
\item \mbox{\hyperlink{namespacew__mpi__module__deriv_a43d89cad3ab5e845652bcf659fb57e7e}{xv\+\_\+\+Gradmu\+\_\+w}} \+: スペクトルデータに勾配型緯度微分 $(1-μ^2)∂/∂μ$を作用させる
\item \mbox{\hyperlink{namespacew__mpi__module__deriv_ad9c14844cb0f636cee535f6c80dcc819}{xv\+\_\+\+Grad\+Lambda\+\_\+w}} \+: スペクトルデータに勾配型経度微分 $∂/∂λ$を作用させる
\item \mbox{\hyperlink{namespacew__mpi__module__deriv_a43d89cad3ab5e845652bcf659fb57e7e}{xv\+\_\+\+Grad\+Mu\+\_\+w}} \+: スペクトルデータに勾配型緯度微分 $(1-μ^2)∂/∂μ$を作用させる
\item \mbox{\hyperlink{namespacew__mpi__module__deriv_af4903172f0eddcfb870f89d362a20d00}{w\+\_\+\+Div\+Lambda\+\_\+xv}} \+: 格子データに発散型経度微分 $1/(1-μ^2)・∂/∂λ$を作用させる
\item \mbox{\hyperlink{namespacew__mpi__module__deriv_a71cffe8d693497980157ab8a19a0ca6a}{w\+\_\+\+Div\+Mu\+\_\+xv}} \+: 格子データに発散型緯度微分 $∂/∂μ$を作用させる
\end{DoxyItemize}

\doxyparagraph*{補間}

補間. \mbox{\hyperlink{namespacew__mpi__module__interpolate}{w\+\_\+mpi\+\_\+module\+\_\+interpolate}} で定義.


\begin{DoxyItemize}
\item \mbox{\hyperlink{interfacew__mpi__module__interpolate_1_1interpolate__w}{Interpolate\+\_\+w}} \+: スペクトルデータから任意の点での値を求める.
\end{DoxyItemize}

\doxyparagraph*{積分・平均}

\mbox{\hyperlink{namespacew__mpi__module__integral}{w\+\_\+mpi\+\_\+module\+\_\+integral}} で定義.


\begin{DoxyItemize}
\item \mbox{\hyperlink{namespacew__mpi__module__integral_ac5af87b417884be2b5cb2999284b1306}{Int\+Lon\+Lat\+\_\+xv}} \+: 2 次元格子点データの全領域積分
\item \mbox{\hyperlink{namespacew__mpi__module__integral_a700c19629d80b3fe18a9cb6e938da5ad}{avrlonlat\+\_\+xv}} \+: 2 次元格子点データの全領域平均
\item \mbox{\hyperlink{namespacew__mpi__module__integral_ab648eb7e4753d7bef778f73ba59f44f9}{v\+\_\+intlon\+\_\+xv}} \+: 2 次元格子点データの経度方向積分
\item \mbox{\hyperlink{namespacew__mpi__module__integral_a2aae0ec7dfbaa01ac333543cb077d3fd}{v\+\_\+avrlon\+\_\+xv}} \+: 2 次元格子点データの経度方向平均
\item \mbox{\hyperlink{namespacew__mpi__module__integral_a6a200156a354cde87981a5995db3bbbd}{intlon\+\_\+x}} \+: 1 次元(x)格子点データの経度方向積分
\item \mbox{\hyperlink{namespacew__mpi__module__integral_a52546cfced200f8a9a3c605d79af7824}{avrlon\+\_\+x}} \+: 1 次元(x)格子点データの経度方向平均
\item \mbox{\hyperlink{namespacew__mpi__module__integral_a71b75e471c8cdb91d0ae71087710cafa}{x\+\_\+intlat\+\_\+xv}} \+: 2 次元格子点データの緯度方向積分
\item \mbox{\hyperlink{namespacew__mpi__module__integral_ac6285d0af7ec095f2e01357e51d27ea2}{x\+\_\+avrlat\+\_\+xv}} \+: 2 次元格子点データの緯度方向平均
\item \mbox{\hyperlink{namespacew__mpi__module__integral_af757b3b5cc28c759991c14504b75f2d2}{Int\+Lat\+\_\+v}} \+: 1 次元(\+Y)格子点データの緯度方向積分
\item \mbox{\hyperlink{namespacew__mpi__module__integral_a58d3350d84b1507c0acb6ac596717eae}{Avr\+Lat\+\_\+v}} \+: 1 次元(\+Y)格子点データの緯度方向平均
\end{DoxyItemize}

\doxyparagraph*{スペクトル解析}

\mbox{\hyperlink{namespacew__mpi__module__spectrum}{w\+\_\+mpi\+\_\+module\+\_\+spectrum}} で定義.


\begin{DoxyItemize}
\item \mbox{\hyperlink{namespacew__mpi__module__spectrum_ad675605d45cbbc355f46816d595ba8f3}{nm\+\_\+\+Energy\+From\+Streamfunc\+\_\+w}} \+: 流線関数からエネルギースペクトルを計算する (水平全波数 n, 帯状波数 m 空間)
\item \mbox{\hyperlink{namespacew__mpi__module__spectrum_a3cce9f9de7512db2298728171c71ab25}{n\+\_\+\+Energy\+From\+Streamfunc\+\_\+w}} \+: 流線関数からエネルギースペクトルを計算する (水平全波数 n 空間)
\item \mbox{\hyperlink{namespacew__mpi__module__spectrum_ab935c9bf0451a14ebde6d139c524be2f}{nm\+\_\+\+Enstrophy\+From\+Streamfunc\+\_\+w}} \+: 流線関数からエンストロフィースペクトルを計算する (水平全波数 n, 帯状波数 m 空間)
\item \mbox{\hyperlink{namespacew__mpi__module__spectrum_af3309da6f286e23513f9f974c549e057}{n\+\_\+\+Enstrophy\+From\+Streamfunc\+\_\+w}} \+: 流線関数からエンストロフィースペクトルを計算する (水平全波数 n 空間)
\item \mbox{\hyperlink{namespacew__mpi__module__spectrum_a67c21a8ec84b7f2c0f0312a136c6fe45}{w\+\_\+spectrum\+\_\+\+V\+Miss}} \+: 欠損値 
\end{DoxyItemize}\doxysubsection*{Functions/\+Subroutines}
\begin{DoxyCompactItemize}
\item 
subroutine, public \mbox{\hyperlink{namespacew__mpi__module_ad43aa36675d4efea7d671c07510f897c}{w\+\_\+mpi\+\_\+initial}} (n\+\_\+in, i\+\_\+in, j\+\_\+in, np\+\_\+in)
\begin{DoxyCompactList}\small\item\em 補間関数 \end{DoxyCompactList}\item 
subroutine, public \mbox{\hyperlink{namespacew__mpi__module_afaaa0926433bb9ac9829dfaa3fe5dfff}{w\+\_\+mpi\+\_\+finalize}}
\begin{DoxyCompactList}\small\item\em モジュールの終了処理(割り付け配列の解放)をおこなう. \end{DoxyCompactList}\end{DoxyCompactItemize}


\doxysubsection{Function/\+Subroutine Documentation}
\mbox{\Hypertarget{namespacew__mpi__module_afaaa0926433bb9ac9829dfaa3fe5dfff}\label{namespacew__mpi__module_afaaa0926433bb9ac9829dfaa3fe5dfff}} 
\index{w\_mpi\_module@{w\_mpi\_module}!w\_mpi\_finalize@{w\_mpi\_finalize}}
\index{w\_mpi\_finalize@{w\_mpi\_finalize}!w\_mpi\_module@{w\_mpi\_module}}
\doxysubsubsection{\texorpdfstring{w\_mpi\_finalize()}{w\_mpi\_finalize()}}
{\footnotesize\ttfamily subroutine, public w\+\_\+mpi\+\_\+module\+::w\+\_\+mpi\+\_\+finalize (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}



モジュールの終了処理(割り付け配列の解放)をおこなう. 

解像度を変更する際にはこのサブルーチンを呼んで終了処理を おこなったのちに再度 w\+\_\+mpi\+\_\+\+Initial で初期設定しなければ ならない. 

Definition at line 429 of file w\+\_\+mpi\+\_\+module.\+f90.


\begin{DoxyCode}{0}
\DoxyCodeLine{429     \textcolor{keyword}{call }w\_base\_mpi\_finalize}
\DoxyCodeLine{430     \textcolor{keyword}{call }w\_deriv\_mpi\_finalize}
\DoxyCodeLine{431 }
\DoxyCodeLine{432     \textcolor{keyword}{call }messagenotify(\textcolor{stringliteral}{'M'},\textcolor{stringliteral}{'w\_mpi\_Finalize'},\&}
\DoxyCodeLine{433       \textcolor{stringliteral}{'w\_mpi\_module (2019/03/21) is finalized'})}
\DoxyCodeLine{434 }

\end{DoxyCode}


References w\+\_\+mpi\+\_\+module\+\_\+base\+::w\+\_\+base\+\_\+mpi\+\_\+finalize(), and w\+\_\+mpi\+\_\+module\+\_\+deriv\+::w\+\_\+deriv\+\_\+mpi\+\_\+finalize().

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=346pt]{namespacew__mpi__module_afaaa0926433bb9ac9829dfaa3fe5dfff_cgraph}
\end{center}
\end{figure}
\mbox{\Hypertarget{namespacew__mpi__module_ad43aa36675d4efea7d671c07510f897c}\label{namespacew__mpi__module_ad43aa36675d4efea7d671c07510f897c}} 
\index{w\_mpi\_module@{w\_mpi\_module}!w\_mpi\_initial@{w\_mpi\_initial}}
\index{w\_mpi\_initial@{w\_mpi\_initial}!w\_mpi\_module@{w\_mpi\_module}}
\doxysubsubsection{\texorpdfstring{w\_mpi\_initial()}{w\_mpi\_initial()}}
{\footnotesize\ttfamily subroutine, public w\+\_\+mpi\+\_\+module\+::w\+\_\+mpi\+\_\+initial (\begin{DoxyParamCaption}\item[{integer, intent(in)}]{n\+\_\+in,  }\item[{integer, intent(in)}]{i\+\_\+in,  }\item[{integer, intent(in)}]{j\+\_\+in,  }\item[{integer, intent(in), optional}]{np\+\_\+in }\end{DoxyParamCaption})}



補間関数 

スペクトル変換の格子点数, 波数および O\+P\+E\+N\+MP 使用時の 最大スレッド数を設定する.

他の関数を呼ぶ前に, 最初にこのサブルーチンを呼んで初期設定を しなければならない.

np\+\_\+in に 1 より大きな値を指定すれば I\+S\+P\+A\+CK の球面調和函数変換 O\+P\+E\+N\+MP 並列計算ルーチンが用いられる. 並列計算を実行するには, 実行時に環境変数 O\+M\+P\+\_\+\+N\+U\+M\+\_\+\+T\+H\+R\+E\+A\+DS を np\+\_\+in 以下の数字に設定する等の システムに応じた準備が必要となる.

np\+\_\+in に 1 より大きな値を指定しなければ並列計算ルーチンは呼ばれない. 
\begin{DoxyParams}[1]{Parameters}
\mbox{\texttt{ in}}  & {\em i\+\_\+in} & 格子点数(東西) \\
\hline
\mbox{\texttt{ in}}  & {\em j\+\_\+in} & 格子点数(南北) \\
\hline
\mbox{\texttt{ in}}  & {\em n\+\_\+in} & 切断波数の設定 \\
\hline
\mbox{\texttt{ in}}  & {\em np\+\_\+in} & O\+P\+E\+N\+MP での最大スレッド数 \\
\hline
\end{DoxyParams}


Definition at line 397 of file w\+\_\+mpi\+\_\+module.\+f90.


\begin{DoxyCode}{0}
\DoxyCodeLine{397 }
\DoxyCodeLine{398     \textcolor{keywordtype}{integer},\textcolor{keywordtype}{intent(in)} :: i\_in}
\DoxyCodeLine{400     \textcolor{keywordtype}{integer},\textcolor{keywordtype}{intent(in)} :: j\_in}
\DoxyCodeLine{402     \textcolor{keywordtype}{integer},\textcolor{keywordtype}{intent(in)} :: n\_in}
\DoxyCodeLine{404     \textcolor{keywordtype}{integer},\textcolor{keywordtype}{intent(in)}, \textcolor{keywordtype}{optional} :: np\_in}
\DoxyCodeLine{405 }
\DoxyCodeLine{406     \textcolor{keywordflow}{if} ( \textcolor{keyword}{present} (np\_in) ) \textcolor{keywordflow}{then}}
\DoxyCodeLine{407       \textcolor{keyword}{call }messagenotify(\textcolor{stringliteral}{'M'},\textcolor{stringliteral}{'w\_mpi\_base\_Initial'}, \&}
\DoxyCodeLine{408         \textcolor{stringliteral}{'Optional argument "NP\_IN" is dummy in w\_mpi\_module'})}
\DoxyCodeLine{409       \textcolor{keyword}{call }w\_base\_mpi\_initial(n\_in,i\_in,j\_in)}
\DoxyCodeLine{410     \textcolor{keywordflow}{else}}
\DoxyCodeLine{411       \textcolor{keyword}{call }w\_base\_mpi\_initial(n\_in,i\_in,j\_in)}
\DoxyCodeLine{412 \textcolor{keywordflow}{    endif}}
\DoxyCodeLine{413 }
\DoxyCodeLine{414     \textcolor{keyword}{call }w\_deriv\_mpi\_initial}
\DoxyCodeLine{415 }
\DoxyCodeLine{416     \textcolor{keyword}{call }messagenotify(\textcolor{stringliteral}{'M'},\textcolor{stringliteral}{'w\_mpi\_initial'}, \&}
\DoxyCodeLine{417       \textcolor{stringliteral}{'w\_mpi\_module (2019/03/17) is initialized'})}
\DoxyCodeLine{418 }

\end{DoxyCode}


References w\+\_\+mpi\+\_\+module\+\_\+base\+::w\+\_\+base\+\_\+mpi\+\_\+initial(), and w\+\_\+mpi\+\_\+module\+\_\+deriv\+::w\+\_\+deriv\+\_\+mpi\+\_\+initial().

Here is the call graph for this function\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{namespacew__mpi__module_ad43aa36675d4efea7d671c07510f897c_cgraph}
\end{center}
\end{figure}
