subroutine Calc_PotTemp( &
  & DelTimeLFrog, xz_PotTempBl, xz_PotTempNl, pz_VelXNl, xr_VelZNl, xz_KhBl, xz_KmBl, &
  & xz_PotTempAl
  & )

  real(DP), intent(in)  :: DelTimeLFrog
  real(DP), intent(in)  :: xz_PotTempBl(imin:imax,
  real(DP), intent(in)  :: xz_PotTempNl
  real(DP), intent(in)  :: pz_VelXNl
  real(DP), intent(in)  :: xr_VelZNl
  real(DP), intent(in)  :: xz_KhBl
  real(DP), intent(in)  :: xz_KmBl
  real(DP), intent(out) :: xz_PotTempAl

  
  xz_PotTempAl =                                                  &
    &   xz_PotTempBl                                              &
    & + DelTimeLFrog                                              &
    &   * (                                                       &
    &     + xz_AdvScalar( xz_PotTempNl,     pz_VelXNl, xr_VelZNl) &
    &     + xz_AdvScalar( xz_PotTempBasicZ, pz_VelXNl, xr_VelZNl) &
    &     + xz_NumDiffScalar(xz_PotTempBl)                        &
    &     + xz_RadHeatConst( xz_ExnerBl )                         &
    &     + xz_Sponge( xz_PotTempBl )                             &
    &     + xz_TurbScalar(xz_PotTempBl,     xz_KhBl)              &
    &     + xz_TurbScalar(xz_PotTempBasicZ, xz_KhBl)              &
    &     + xz_DispHeat( xz_KmBl )                                &
    &     + xz_HeatFluxDiff( xz_PotTempNl )                       &
    &      )
  
  ! 境界条件 Boundary condition
  !
  call BoundaryXCyc_xz( xz_PotTempAl ) ! (inout)
  call BoundaryZSym_xz( xz_PotTempAl ) ! (inout)
  
end subroutine Calc_PotTemp
