Class | DynFunc_3d |
In: |
dynamic/dynfunc_3d.f90
|
陽開放を用いた力学過程の各項の計算モジュール. 具体的には以下の項を計算するための関数を格納する.
* 移流項 * 浮力項 * 気圧傾度力項
Function : | |||
pyz_AdvVelX(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP)
| ||
pyz_VelX(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
| ||
xqz_VelY(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
| ||
xyr_VelZ(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
|
z 方向に半格子ずれた点における移流を計算
function pyz_AdvVelX(pyz_VelX, xqz_VelY, xyr_VelZ) ! ! z 方向に半格子ずれた点における移流を計算 ! !モジュール読み込み use xyz_deriv_c4_module, only: xyz_dx_pyz, pqz_dy_pyz, pyr_dz_pyz !暗黙の型宣言禁止 implicit none !変数定義 real(DP), intent(in) :: pyz_VelX (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !水平風速 real(DP), intent(in) :: xqz_VelY (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !水平風速 real(DP), intent(in) :: xyr_VelZ (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !鉛直風速 real(DP) :: pyz_AdvVelX(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !水平風の移流 ! pz_AdvVelX = 0.0d0 !初期化 pyz_AdvVelX = - pyz_VelX * pyz_avr_xyz( xyz_dx_pyz( pyz_VelX ) ) - pyz_avr_pqz( pqz_avr_xqz( xqz_VelY ) * pqz_dy_pyz( pyz_VelX ) ) - pyz_avr_pyr( pyr_avr_xyr( xyr_VelZ ) * pyr_dz_pyz( pyz_VelX ) ) end function pyz_AdvVelX
Function : | |||
pyz_GradPi(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP)
| ||
xyz_Exner(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
| ||
pyz_VelX(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
| ||
xqz_VelY(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
| ||
xyr_VelZ(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
|
z 方向に半格子ずれた点での圧力傾度力項の計算. 音波減衰項を含めた形式で定式化してあることに注意.
function pyz_GradPi(xyz_Exner, pyz_VelX, xqz_VelY, xyr_VelZ) ! ! z 方向に半格子ずれた点での圧力傾度力項の計算. ! 音波減衰項を含めた形式で定式化してあることに注意. ! !モジュール読み込み use xyz_deriv_module, only: xyz_dx_pyz, xyz_dy_xqz, xyz_dz_xyr, pyz_dx_xyz !暗黙の型宣言禁止 implicit none !変数定義 real(DP), intent(in) :: xyz_Exner (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !エクスナー関数の擾乱 real(DP), intent(in) :: pyz_VelX (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !水平速度 real(DP), intent(in) :: xqz_VelY (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !水平速度 real(DP), intent(in) :: xyr_VelZ (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !鉛直速度 real(DP) :: pyz_GradPi (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !圧力傾度力 real(DP) :: xyz_DivVel (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !速度の収束 !速度の収束 xyz_DivVel = xyz_dx_pyz( pyz_VelX ) + xyz_dy_xqz( xqz_VelY ) + xyz_dz_xyr( xyr_VelZ ) !圧力傾度 ! pyz_GradPi = 0.0d0 pyz_GradPi = pyz_avr_xyz( CpDry * xyz_PotTempBasicZ ) * ( pyz_dx_xyz( xyz_Exner ) - pyz_dx_xyz( DampSound * xyz_DivVel ) ) end function pyz_GradPi
Function : | |||
xqz_AdvVelY(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP)
| ||
pyz_VelX(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
| ||
xqz_VelY(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
| ||
xyr_VelZ(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
|
x 方向に半格子ずれた点における移流を計算
function xqz_AdvVelY(pyz_VelX, xqz_VelY, xyr_VelZ) ! ! x 方向に半格子ずれた点における移流を計算 ! !モジュール読み込み use xyz_deriv_c4_module, only: pqz_dx_xqz, xyz_dy_xqz, xqr_dz_xqz !暗黙の型宣言禁止 implicit none !変数定義 real(DP), intent(in) :: pyz_VelX (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !水平風速 real(DP), intent(in) :: xqz_VelY (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !水平風速 real(DP), intent(in) :: xyr_VelZ (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !鉛直風速 real(DP) :: xqz_AdvVelY (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !鉛直風の移流 ! xr_AdvVelZ = 0.0d0 !初期化 xqz_AdvVelY = - xqz_avr_pqz( pqz_avr_pyz( pyz_VelX ) * pqz_dx_xqz( xqz_VelY ) ) - xqz_VelY * xqz_avr_xyz( xyz_dy_xqz( xqz_VelY ) ) - xqz_avr_xqr( xqr_avr_xyr( xyr_VelZ ) * xqr_dz_xqz( xqz_VelY ) ) end function xqz_AdvVelY
Function : | |||
xqz_GradPi(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP)
| ||
xyz_Exner(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
| ||
pyz_VelX(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
| ||
xqz_VelY(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
| ||
xyr_VelZ(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
|
y 方向に半格子ずれた点での圧力傾度力項の計算. 音波減衰項を含めた形式で定式化してあることに注意.
function xqz_GradPi(xyz_Exner, pyz_VelX, xqz_VelY, xyr_VelZ) ! ! y 方向に半格子ずれた点での圧力傾度力項の計算. ! 音波減衰項を含めた形式で定式化してあることに注意. ! !モジュール読み込み use xyz_deriv_module, only: xyz_dx_pyz, xyz_dy_xqz, xyz_dz_xyr, xqz_dy_xyz !暗黙の型宣言禁止 implicit none !変数定義 real(DP), intent(in) :: xyz_Exner (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !エクスナー関数の擾乱 real(DP), intent(in) :: pyz_VelX (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !水平速度 real(DP), intent(in) :: xqz_VelY (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !水平速度 real(DP), intent(in) :: xyr_VelZ (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !鉛直速度 real(DP) :: xqz_GradPi (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !圧力傾度力 real(DP) :: xyz_DivVel (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !速度の収束 !速度の収束 xyz_DivVel = xyz_dx_pyz( pyz_VelX ) + xyz_dy_xqz( xqz_VelY ) + xyz_dz_xyr( xyr_VelZ ) !圧力傾度 ! xqz_GradPi = 0.0d0 xqz_GradPi = xqz_avr_xyz( CpDry * xyz_PotTempBasicZ ) * ( xqz_dy_xyz( xyz_Exner ) - xqz_dy_xyz( DampSound * xyz_DivVel ) ) end function xqz_GradPi
Function : | |||
xyr_AdvVelZ(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP)
| ||
pyz_VelX(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
| ||
xqz_VelY(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
| ||
xyr_VelZ(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
|
x 方向に半格子ずれた点における移流を計算
function xyr_AdvVelZ(pyz_VelX, xqz_VelY, xyr_VelZ) ! ! x 方向に半格子ずれた点における移流を計算 ! !モジュール読み込み use xyz_deriv_c4_module, only: pyr_dx_xyr, xqr_dy_xyr, xyz_dz_xyr !暗黙の型宣言禁止 implicit none !変数定義 real(DP), intent(in) :: pyz_VelX (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !水平風速 real(DP), intent(in) :: xqz_VelY (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !水平風速 real(DP), intent(in) :: xyr_VelZ (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !鉛直風速 real(DP) :: xyr_AdvVelZ (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !鉛直風の移流 ! xr_AdvVelZ = 0.0d0 !初期化 xyr_AdvVelZ = - xyr_avr_pyr( pyr_avr_pyz( pyz_VelX ) * pyr_dx_xyr( xyr_VelZ ) ) - xyr_avr_xqr( xqr_avr_xqz( xqz_VelY ) * xqr_dy_xyr( xyr_VelZ ) ) - xyr_VelZ * xyr_avr_xyz( xyz_dz_xyr( xyr_VelZ ) ) end function xyr_AdvVelZ
Function : | |||
xyr_Buoy(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP)
| ||
xyz_PotTemp(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
|
鉛直方向の運動方程式に現れる浮力項を計算
function xyr_Buoy(xyz_PotTemp) ! ! 鉛直方向の運動方程式に現れる浮力項を計算 !暗黙の型宣言禁止 implicit none !変数定義 real(DP), intent(in) :: xyz_PotTemp(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !温位擾乱 real(DP) :: xyr_Buoy (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !浮力項 ! !初期化 ! xr_Buoy = 0.0d0 !浮力項の計算 xyr_Buoy = Grav * xyr_avr_xyz(xyz_PotTemp / xyz_PotTempBasicZ) end function xyr_Buoy
Function : | |||
xyz_AdvScalar(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP)
| ||
xyz_Var(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
| ||
pyz_VelX(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
| ||
xqz_VelY(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
| ||
xyr_VelZ(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
|
x, z 方向に半格子ずれた点における移流を計算
function xyz_AdvScalar(xyz_Var, pyz_VelX, xqz_VelY, xyr_VelZ) ! ! x, z 方向に半格子ずれた点における移流を計算 ! !モジュール読み込み use xyz_deriv_c4_module, only: pyz_dx_xyz, xqz_dy_xyz, xyr_dz_xyz ! use xyz_deriv_module, only: pyz_dx_xyz, xqz_dy_xyz, xyr_dz_xyz !暗黙の型宣言禁止 implicit none !変数定義 real(DP), intent(in) :: pyz_VelX (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !水平風速 real(DP), intent(in) :: xqz_VelY (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !水平風速 real(DP), intent(in) :: xyr_VelZ (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !鉛直風速 real(DP), intent(in) :: xyz_Var (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !スカラー量 real(DP) :: xyz_AdvScalar (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !スカラー量の水平移流 xyz_AdvScalar = - xyz_avr_pyz(pyz_VelX * pyz_dx_xyz(xyz_Var)) - xyz_avr_xqz(xqz_VelY * xqz_dy_xyz(xyz_Var)) - xyz_avr_xyr(xyr_VelZ * xyr_dz_xyz(xyz_Var)) call StoreAdv( xyz_AdvScalar ) end function xyz_AdvScalar
Function : | |||
xyz_AdvScalar2(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP)
| ||
xyz_Var(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
| ||
pyz_VelX(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
| ||
xqz_VelY(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
| ||
xyr_VelZ(DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) : | real(DP), intent(in)
|
x, z 方向に半格子ずれた点における移流を計算
function xyz_AdvScalar2(xyz_Var, pyz_VelX, xqz_VelY, xyr_VelZ) ! ! x, z 方向に半格子ずれた点における移流を計算 ! !モジュール読み込み use xyz_deriv_module, only: pyz_dx_xyz, xqz_dy_xyz, xyr_dz_xyz !暗黙の型宣言禁止 implicit none !変数定義 real(DP), intent(in) :: pyz_VelX (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !水平風速 real(DP), intent(in) :: xqz_VelY (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !水平風速 real(DP), intent(in) :: xyr_VelZ (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !鉛直風速 real(DP), intent(in) :: xyz_Var (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !スカラー量 real(DP) :: xyz_AdvScalar2 (DimXMin:DimXMax,DimYMin:DimYMax,DimZMin:DimZMax) !スカラー量の水平移流 xyz_AdvScalar2 = - xyz_avr_pyz(pyz_VelX * pyz_dx_xyz(xyz_Var)) - xyz_avr_xqz(xqz_VelY * xqz_dy_xyz(xyz_Var)) - xyz_avr_xyr(xyr_VelZ * xyr_dz_xyz(xyz_Var)) call StoreAdv( xyz_AdvScalar2 ) end function xyz_AdvScalar2