Class | l_module |
In: |
libsrc/l_module/l_module.f90
|
Authors: | Shin-ichi Takehiro, Youhei SASAKI |
Version: | $Id: l_module.f90 590 2013-08-19 08:48:21Z uwabami $ |
Copyright&License: | See COPYRIGHT |
spml/l_module モジュールは球面上での経度方向に一様な帯状的 1 次元 流体運動をルジャンドル多項式を用いたスペクトル法によって数値計算する ための Fortran90 関数を提供する.
内部で ISPACK の SJPACK の Fortran77 サブルーチンを呼んでいる. スペクトルデータおよび格子点データの格納方法や変換の詳しい計算法に ついては ISPACK/SJPACK のマニュアルを参照されたい.
l_ : | スペクトル(ルジャンドル多項式成分)データ |
y_ : | 1 次元緯度格子点データ |
_l : | スペクト(ルジャンドル多項式成分)ルデータ |
_y : | 緯度方向 1 次元格子点データ |
l_Initial : | スペクトル変換の格子点数, 波数, 領域の大きさの設定 |
l_Finalize : | モジュールの終了処理(割り付け配列の解放)をおこなう. |
y_Lat : | 格子点座標(緯度, 経度座標)を格納した 1 次元配列 |
y_Lat_Weight : | 重み座標を格納した 1 次元配列 |
y_l : | スペクトルデータから格子データへの変換 |
l_y : | 格子データからスペクトルデータへの変換 |
l_Lapla_l : | スペクトルデータにラプラシアンを作用させる |
l_LaplaInv_l : | スペクトルデータにラプラシアンの逆変換を作用させる |
y_GradLat_l : | スペクトルデータに勾配型緯度微分∂/∂φを作用させる |
l_DivLat_y : | 格子データに発散型緯度微分 1 /cosφ・∂(g cosφ)/∂φを作用させる |
y_GradMu_l : | スペクトルデータに 勾配型緯度微分 (1-μ^2)∂/∂μを作用させる |
l_DivMu_y : | 格子データに発散型緯度微分∂/∂μを作用させる |
Interpolate_l : | スペクトルデータから任意の点での値を求める. |
IntLat_y, AvrLat_y : | 1 次元(Y)格子点データの緯度方向積分および平均 |
作成中
Function : | |||
AvrLat_y : | real(8)
| ||
y_data(1:jm) : | real(8), intent(in)
|
1 次元(Y)格子点データの緯度(Y)方向平均.
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算し, y_Y_Weight の総和で割ることで平均している.
Original external subprogram is l_module_sjpack#AvrLat_y
Function : | |||
IntLat_y : | real(8)
| ||
y_data(1:jm) : | real(8), intent(in)
|
1 次元緯度(Y)格子点データの Y 方向積分.
実際には格子点データ各点毎に y_Y_Weight をかけた総和を計算している.
Original external subprogram is l_module_sjpack#IntLat_y
Function : | |||
Interpolate_l : | real(8)
| ||
l_data(0:nn) : | real(8), intent(IN)
| ||
alat : | real(8), intent(IN)
|
緯度 alat における関数値を そのルジャンドル変換係数 l_data から補間計算する
Original external subprogram is l_module_sjpack#Interpolate_l
Function : | |||
l_DivLat_y(0:nn) : | real(8)
| ||
y_data(1:jm) : | real(8), intent(in)
|
格子点データに発散型緯度微分 1/cosφ・∂(f cosφ)/∂φ を作用させて スペクトルデータに変換して返す.
Original external subprogram is l_module_sjpack#l_DivLat_y
Function : | |||
l_DivMu_y(0:nn) : | real(8)
| ||
y_data(1:jm) : | real(8), intent(in)
|
格子点データに発散型緯度微分 ∂/∂μ (μ=sinφ)を作用させて スペクトルデータに変換して返す(1 層用).
Original external subprogram is l_module_sjpack#l_DivMu_y
Subroutine : |
モジュールの終了処理(割り付け配列の解放)をおこなう.
解像度を変更する際にはこのサブルーチンを呼んで終了処理を おこなったのちに再度 l_Initial で初期設定しなければ ならない.
Original external subprogram is l_module_sjpack#l_Finalize
Function : | |||
l_LaplaInv_l(0:nn) : | real(8)
| ||
l_data(0:nn) : | real(8), intent(in)
|
入力スペクトルデータに逆ラプラシアン
▽^{-2} =[1/cosφ・∂/∂φ(cosφ∂/∂φ)]^{-1}
を作用する.
スペクトルデータの逆ラプラシアンとは, 対応する格子点データに 逆ラプラシアンを作用させたデータのスペクトル変換のことである.
Original external subprogram is l_module_sjpack#l_LaplaInv_l
Function : | |||
l_Lapla_l(0:nn) : | real(8)
| ||
l_data(0:nn) : | real(8), intent(in)
|
入力スペクトルデータにラプラシアン
▽^2 = 1/cosφ・∂/∂φ(cosφ∂/∂φ)
を作用する.
スペクトルデータのラプラシアンとは, 対応する格子点データに ラプラシアンを作用させたデータのスペクトル変換のことである.
Original external subprogram is l_module_sjpack#l_Lapla_l
Subroutine : | |||
n_in : | integer,intent(in)
| ||
j_in : | integer,intent(in)
|
スペクトル変換の格子点数, 波数を設定する.
他の関数を呼ぶ前に, 最初にこのサブルーチンを呼んで初期設定を しなければならない.
Original external subprogram is l_module_sjpack#l_initial
Function : | |||
l_y(0:nn) : | real(8)
| ||
y_data(1:jm) : | real(8), intent(in)
|
スペクトルデータから格子データへ変換する(1 層用).
Original external subprogram is l_module_sjpack#l_y
Function : | |||
y_GradLat_l(1:jm) : | real(8)
| ||
l_data(0:nn) : | real(8), intent(in)
|
スペクトルデータに勾配型緯度微分 ∂/∂φ を作用させて 格子点データに変換して返す(1 層用).
Original external subprogram is l_module_sjpack#y_GradLat_l
Function : | |||
y_GradMu_l(1:jm) : | real(8)
| ||
l_data(0:nm) : | real(8), intent(in)
|
スペクトルデータに勾配型緯度微分 (1-μ^2)∂/∂μ (μ=sinφ) を作用させて格子点データに変換して返す.
Original external subprogram is l_module_sjpack#y_GradMu_l
Variable : | |||
y_Lat(:) : | real(8), allocatable
|
Original external subprogram is l_module_sjpack#y_Lat
Variable : | |||
y_Lat_Weight(:) : | real(8), allocatable
|
Original external subprogram is l_module_sjpack#y_Lat_Weight
Function : | |||
y_l(1:jm) : | real(8)
| ||
l_data(0:nn) : | real(8), intent(in)
|
スペクトルデータから格子データへ変換する(1 層用).
Original external subprogram is l_module_sjpack#y_l