!---------------------------------------------------------------------- ! Copyright (c) 2006 - Masatsugu Odaka. All rights reserved. !---------------------------------------------------------------------- ! != 3 次元 (xyz方向) 等間隔交互格子 基本モジュール ! !* 履歴 ! * 2007/07/15 (小高正嗣) : 3D deepconv へ移植, dc_types を Use. ! * 2006/06/07 (小高正嗣) : 新規作成 ! module xyz_module !== 概要 ! ! xyz_module は, 2 次元 (xyz 方向) 不等間隔交互格子を用いた有限差分法に ! 基づく数値モデルのための, Fortran90 副プログラムおよび関数を提供する. ! ! xyz_module は以下のモジュールから構成される. ! ! : xyz_base_module ! 格子点設定, 平均操作などの基本的な副プログラム/関数を提供するモジュール ! : xyz_bc_module ! 境界条件を設定する関数を提供するモジュール ! ! !== 変数, 手続きの命名法 ! ! * 変数配列は ! ! (次元情報を示す文字列)_(変数名) ! ! のように命名する. ! ! * 配列を引数とする関数は ! ! (出力の次元情報を示す文字列)_(手続き名)_(入力の次元情報を示す文字列) ! ! のように命名する. ! ! * 配列を引数とする副プログラムは ! ! (手続き名)_(入力の次元情報を示す文字列) ! ! のように命名する. ! ! * 次元情報を示す文字列は, 文字数で配列の次元を表し, 文字の種類で ! 格子点の位置を表す. ! ! xyz : xyz 方向半整数格子点上の 2 次元配列 ! pxz : x 方向整数格子, yz 方向半正数点上の 2 次元配列 ! xqz : y 方向整数格子, xz 方向半正数点上の 2 次元配列 ! xyr : z 方向整数格子, xy 方向半正数点上の 2 次元配列 ! ! !== 変数, 手続きの要約 ! !=== 初期化 (xyz_base_module) ! ! xyz_axis_init :: 配列の上下限の値と格子点座標値, 格子点間隔を設定する ! !=== 座標変数 (xyz_base_module) ! ! imin, imax, jmin, jmax, kmin, kmax :: 配列の上限, 下限 ! xmargin, ymargin, zmargin :: 糊代格子点数 ! x_X, p_X, y_Y, q_Y, z_Z, r_Z :: 格子点座標(1次元) ! xyz_X, xyz_Y, xyz_Z :: 格子点座標(3次元) ! x_dx, p_dx, y_dy, q_dy, z_dz, r_dz :: 格子間隔(半整数格子, 整数格子) ! !=== 基本関数 (xyz_base_module) ! ! x_avr_p, p_avr_x, y_avr_q, q_avr_y、z_avr_r, r_avr_z :: 格子点間の変換(1次元) ! xyz_avr_pyz, xyr_avr_pyr, xqz_avr_pqz :: 格子点間の変換(3次元) ! pyz_avr_xyz, pyr_avr_xyr, pqz_avr_xqz :: 格子点間の変換(3次元) ! xyz_avr_xqz, pyz_avr_pqz, xyr_avr_xqr :: 格子点間の変換(3次元) ! xqz_avr_xyz, pqz_avr_pyz, xqr_avr_xyr :: 格子点間の変換(3次元) ! xyz_avr_xyr, pyz_avr_pyr, xqz_avr_xqr :: 格子点間の変換(3次元) ! xyr_avr_xyz, pyr_avr_pyz, xqr_avr_xqz :: 格子点間の変換(3次元) ! pqz_avr_xyz, pyr_avr_xyz, xqr_avr_xyz :: 格子点間の変換(3次元) ! xyz_avr_pqz, xyz_avr_pyr, xyz_avr_xqr :: 格子点間の変換(3次元) ! yz_IntX_xyz, yz_IntX_pyz, qz_IntX_xqz, yr_IntX_xyr :: x 方向積分 ! xz_IntY_xyz, xz_IntY_xqz, pz_IntY_pyz, xr_IntY_xyr :: y 方向積分 ! xy_IntZ_xyz, xy_IntZ_xyr, py_IntZ_pyz, xq_IntZ_xqz :: z 方向積分 ! z_IntXY_xyz, z_IntXY_pyz, z_IntXY_xqz, r_IntXY_xyr :: xy 方向積分 ! IntXYZ_xyz , IntXYZ_pyz , IntXYZ_xqz , IntXYZ_xyr, :: 領域積分 ! yz_AvrX_xyz, yz_AvrX_pyz, qz_AvrX_xqz, yr_AvrX_xyr :: x 方向平均 ! xz_AvrY_xyz, xz_AvrY_xqz, pz_AvrY_pyz, xr_AvrY_xyr :: y 方向平均 ! xy_AvrZ_xyz, xy_AvrZ_xyr, py_AvrZ_pyz, xq_AvrZ_xqz :: z 方向平均 ! z_AvrXY_xyz, z_AvrXY_pyz, z_AvrXY_xqz, r_AvrXY_xyr :: xy 方向平均 ! AvrXYZ_xyz , AvrXYZ_pyz , AvrXYZ_xqz , AvrXYZ_xyr :: 領域平均 ! !=== 境界条件設定 (xyz_bc_module) ! !==== x 方向の境界条件設定 ! ! BoundaryXSym_xyz, BoundaryXAsym_xyz, BoundaryXCyc_xyz ! BoundaryXSym_xqz, BoundaryXAsym_xqz, BoundaryXCyc_xqz ! BoundaryXSym_xyr, BoundaryXAsym_xyr, BoundaryXCyc_xyr ! BoundaryXSym_pyz, BoundaryXAsym_pyz, BoundaryXCyc_pyz ! !==== y 方向の境界条件設定 ! ! BoundaryYSym_xyz, BoundaryYAsym_xyz, BoundaryYCyc_xyz ! BoundaryYSym_xqz, BoundaryYAsym_xqz, BoundaryYCyc_xqz ! BoundaryYSym_xyr, BoundaryYAsym_xyr, BoundaryYCyc_xyr ! BoundaryYSym_pyz, BoundaryYAsym_pyz, BoundaryYCyc_pyz ! !==== z 方向の境界条件設定 ! ! BoundaryZSym_xyz, BoundaryZAsym_xyz, BoundaryZCyc_xyz ! BoundaryZSym_xqz, BoundaryZAsym_xqz, BoundaryZCyc_xqz ! BoundaryZSym_xyr, BoundaryZAsym_xyr, BoundaryZCyc_xyr ! BoundaryZSym_pyz, BoundaryZAsym_pyz, BoundaryZCyc_pyz ! use xyz_base_module, only : & & imin, imax, x_X, p_X, x_dx, p_dx, & & jmin, jmax, y_Y, q_Y, y_dy, q_dy, & & kmin, kmax, z_Z, r_Z, z_dz, r_dz, & & xmargin, ymargin, zmargin, & & xyz_X, xyz_Y, xyz_Z, xyz_dX, xyz_dY, xyz_dZ, & & xyz_axis_init, & & xyz_avr_pyz, xyr_avr_pyr, xqz_avr_pqz, & & pyz_avr_xyz, pyr_avr_xyr, pqz_avr_xqz, & & xyz_avr_xqz, pyz_avr_pqz, xyr_avr_xqr, & & xqz_avr_xyz, pqz_avr_pyz, xqr_avr_xyr, & & xyz_avr_xyr, pyz_avr_pyr, xqz_avr_xqr, & & xyr_avr_xyz, pyr_avr_pyz, xqr_avr_xqz, & & pqz_avr_xyz, pyr_avr_xyz, xqr_avr_xyz, & & xyz_avr_pqz, xyz_avr_pyr, xyz_avr_xqr, & & yz_IntX_xyz, yz_IntX_pyz, qz_IntX_xqz, yr_IntX_xyr, & & xz_IntY_xyz, xz_IntY_xqz, pz_IntY_pyz, xr_IntY_xyr, & & xy_IntZ_xyz, xy_IntZ_xyr, py_IntZ_pyz, xq_IntZ_xqz, & & z_IntXY_xyz, z_IntXY_pyz, z_IntXY_xqz, r_IntXY_xyr, & & IntXYZ_xyz , IntXYZ_pyz , IntXYZ_xqz , IntXYZ_xyr, & & yz_AvrX_xyz, yz_AvrX_pyz, qz_AvrX_xqz, yr_AvrX_xyr, & & xz_AvrY_xyz, xz_AvrY_xqz, pz_AvrY_pyz, xr_AvrY_xyr, & & xy_AvrZ_xyz, xy_AvrZ_xyr, py_AvrZ_pyz, xq_AvrZ_xqz, & & z_AvrXY_xyz, z_AvrXY_pyz, z_AvrXY_xqz, r_AvrXY_xyr, & & AvrXYZ_xyz , AvrXYZ_pyz , AvrXYZ_xqz , AvrXYZ_xyr use xyz_bc_module, only : BoundaryXSym_xyz, BoundaryXAsym_xyz, & & BoundaryXCyc_xyz, BoundaryXSym_xqz, & & BoundaryXAsym_xqz, BoundaryXCyc_xqz, & & BoundaryXSym_xyr, BoundaryXAsym_xyr, & & BoundaryXCyc_xyr, BoundaryXSym_pyz, & & BoundaryXAsym_pyz, BoundaryXCyc_pyz, & & BoundaryYSym_xyz, BoundaryYAsym_xyz, & & BoundaryYCyc_xyz, BoundaryYSym_xqz, & & BoundaryYAsym_xqz, BoundaryYCyc_xqz, & & BoundaryYSym_xyr, BoundaryYAsym_xyr, & & BoundaryYCyc_xyr, BoundaryYSym_pyz, & & BoundaryYAsym_pyz, BoundaryYCyc_pyz, & & BoundaryZSym_xyz, BoundaryZAsym_xyz, & & BoundaryZCyc_xyz, BoundaryZSym_xqz, & & BoundaryZAsym_xqz, BoundaryZCyc_xqz, & & BoundaryZSym_xyr, BoundaryZAsym_xyr, & & BoundaryZCyc_xyr, BoundaryZSym_pyz, & & BoundaryZAsym_pyz, BoundaryZCyc_pyz implicit none public end module xyz_module