spml/at_module モジュールは 1 次元有限領域の下での 流体運動をチェビシェフ変換によりスペクトル数値計算するための Fortran90 関数を提供する. 2 次元データの 1 次元に関して同時にスペクトル計算を実行するための 関数も提供しており, 2, 3 次元領域での計算のベースも提供する. このモジュールは内部で ISPACK/FTPACK の Fortran77 サブルーチンを呼んでいる. スペクトルデータおよび格子点データの格納方法については ISPACK/FTPACK のマニュアルを参照されたい.
初期化 | 機能 |
---|---|
at_Initial | チェビシェフ変換の格子点数, 波数, 領域の大きさの設定 |
座標変数 | 機能 |
g_X | 格子点座標(X)を格納した 1 次元配列. |
g_X_Weigtht | 重み座標を格納した 1 次元配列. |
基本変換 | 機能 |
g_t, ag_at | チェビシェフデータから格子データへの変換 |
t_g, at_ag | 格子データからチェビシェフデータへの変換 |
微分 | 機能 |
t_Dx_t, at_Dx_at | チェビシェフデータに X 微分を作用させる |
境界値問題 | 機能 |
at_Boundaries_DD, at_Boundaries_DN, at_Boundaries_ND, at_Boundaries_NN | ディリクレ, ノイマン境界条件の適用 |
at_BoundariesTau_DD, at_BoundariesTau_DN, at_BoundariesTau_ND, at_BoundariesTau_NN | ディリクレ, ノイマン境界条件の適用(タウ法) |
at_BoundariesGrid_DD, at_BoundariesGrid_DN, at_BoundariesGrid_ND, at_BoundariesGrid_NN | ディリクレ, ノイマン境界条件の適用(選点法) |
積分・平均 | 機能 |
a_Int_ag, a_Avr_ag | 1 次元格子点データの並んだ 2 次元配列の積分および平均. |
Int_g, Avr_g | 1 次元格子点データの積分および平均. |
integer,intent(in) :: i ! 格子点の設定(X) integer,intent(in) :: k ! 切断波数の設定(X) real(8),intent(in) :: xmin, xmax ! X 座標の範囲
real(8), dimension(:,0:km),intent(inout) :: at_data ! 境界条件を適用するデータ(2 次元) real(8), dimension(size(at_data,1),2), intent(in), optional :: values ! 境界値1 次元チェビシェフデータの場合
real(8), dimension(0:km),intent(inout) :: t_data ! 境界条件を適用するデータ(1 次元) real(8), dimension(2), intent(in), optional :: values ! 境界値
real(8), dimension(:,0:km),intent(inout) :: at_data ! 境界条件を適用するデータ(2 次元) real(8), dimension(size(at_data,1),2), intent(in), optional :: values ! 境界値1 次元チェビシェフデータの場合
real(8), dimension(0:km),intent(inout) :: t_data ! 境界条件を適用するデータ(1 次元) real(8), dimension(2), intent(in), optional :: values ! 境界値
real(8), dimension(0:im) :: g_X
real(8), dimension(0:im) :: g_X_Weigtht
real(8), dimension(0:im) :: g_t real(8), dimension(0:km), intent(in) :: t real(8), dimension(size(at,1),0:im) :: ag_at real(8), dimension(:,0:km), intent(in) :: at
real(8), dimension(0:km) :: t_g real(8), dimension(0:im), intent(in) :: g real(8), dimension(size(ag,1),0:km) :: at_ag real(8), dimension(:,0:im), intent(in) :: ag
real(8), dimension(0:km) :: t_Dx_t real(8), dimension(0:km), intent(in) :: t real(8), dimension(size(at,1),0:km) :: at_dx_at real(8), dimension(:,0:km), intent(in) :: at
real(8), dimension(:,0:im-1), intent(in) :: ag real(8), dimension(size(ag,1)) :: a_Int_ag, a_Avr_ag
real(8), dimension(0:im-1), intent(in) :: g real(8) :: Int_g, Avr_g