Linux  R2.6.5-7.282-sn2 FORTRAN90/SX         Rev.360        Tue Oct 11 12:35:41 2011
FILE NAME: arare.f90
PROGRAM NAME: deepconv_arare
DIAGNOSTIC LIST

  LINE  LEVEL( NO.): DIAGNOSTIC MESSAGE

   282  vec  (   4): Vectorized array expression.
   282  vec  (   4): Vectorized array expression.
   287  vec  (   4): Vectorized array expression.
   287  vec  (   4): Vectorized array expression.
   366  vec  (   4): Vectorized array expression.
   366  vec  (   4): Vectorized array expression.
   367  vec  (   4): Vectorized array expression.
   367  vec  (   4): Vectorized array expression.
   368  vec  (   4): Vectorized array expression.
   368  vec  (   4): Vectorized array expression.
   369  vec  (   4): Vectorized array expression.
   369  vec  (   4): Vectorized array expression.
   370  vec  (   4): Vectorized array expression.
   370  vec  (   4): Vectorized array expression.
   371  vec  (   4): Vectorized array expression.
   371  vec  (   4): Vectorized array expression.
   376  vec  (   3): Unvectorized loop.
   419  vec  (   4): Vectorized array expression.
   419  vec  (   4): Vectorized array expression.
   420  vec  (   4): Vectorized array expression.
   420  vec  (   4): Vectorized array expression.
   421  vec  (   4): Vectorized array expression.
   421  vec  (   4): Vectorized array expression.
   422  vec  (   4): Vectorized array expression.
   422  vec  (   4): Vectorized array expression.
   423  vec  (   4): Vectorized array expression.
   423  vec  (   4): Vectorized array expression.
   424  vec  (   4): Vectorized array expression.
   424  vec  (   4): Vectorized array expression.
   425  vec  (   4): Vectorized array expression.
   432  vec  (   4): Vectorized array expression.
   432  vec  (   4): Vectorized array expression.
   433  vec  (   4): Vectorized array expression.
   433  vec  (   4): Vectorized array expression.
   434  vec  (   4): Vectorized array expression.
   434  vec  (   4): Vectorized array expression.
   435  vec  (   4): Vectorized array expression.
   435  vec  (   4): Vectorized array expression.
   438  vec  (   4): Vectorized array expression.
   438  vec  (   4): Vectorized array expression.
   439  vec  (   4): Vectorized array expression.
   439  vec  (   4): Vectorized array expression.
   445  vec  (   4): Vectorized array expression.
   446  vec  (   4): Vectorized array expression.
   447  vec  (   4): Vectorized array expression.
   448  vec  (   4): Vectorized array expression.
   449  vec  (   4): Vectorized array expression.
   450  vec  (   4): Vectorized array expression.
   451  vec  (   4): Vectorized array expression.
   452  vec  (   4): Vectorized array expression.
   496  vec  (   3): Unvectorized loop.
   530  vec  (   4): Vectorized array expression.
   530  vec  (   4): Vectorized array expression.
   532  vec  (   4): Vectorized array expression.
   532  vec  (   4): Vectorized array expression.
   539  vec  (   3): Unvectorized loop.
   541  vec  (   4): Vectorized array expression.
   541  vec  (   4): Vectorized array expression.
   583  opt  (  11): Fused array assignments. :line 583 - 583
   583  vec  (   4): Vectorized array expression.
   583  vec  (   4): Vectorized array expression.
   584  opt  (  11): Fused array assignments. :line 584 - 584
   584  vec  (   4): Vectorized array expression.
   584  vec  (   4): Vectorized array expression.
   585  opt  (  11): Fused array assignments. :line 585 - 585
   585  vec  (   4): Vectorized array expression.
   585  vec  (   4): Vectorized array expression.
   586  opt  (  11): Fused array assignments. :line 586 - 586
   586  vec  (   4): Vectorized array expression.
   586  vec  (   4): Vectorized array expression.
   587  opt  (  11): Fused array assignments. :line 587 - 587
   587  vec  (   4): Vectorized array expression.
   587  vec  (   4): Vectorized array expression.
   588  opt  (  11): Fused array assignments. :line 588 - 588
   588  vec  (   4): Vectorized array expression.
   588  vec  (   4): Vectorized array expression.
   589  opt  (  11): Fused array assignments. :line 589 - 589
   589  vec  (   4): Vectorized array expression.
   589  vec  (   4): Vectorized array expression.
   590  opt  (  11): Fused array assignments. :line 590 - 590
   590  vec  (   4): Vectorized array expression.
   590  vec  (   4): Vectorized array expression.
   591  opt  (  11): Fused array assignments. :line 591 - 591
   591  vec  (   4): Vectorized array expression.
   591  vec  (   4): Vectorized array expression.
   637  vec  (   4): Vectorized array expression.
   637  vec  (   4): Vectorized array expression.
   637  vec  (   4): Vectorized array expression.
   638  vec  (   4): Vectorized array expression.
   638  vec  (   4): Vectorized array expression.
   639  vec  (   4): Vectorized array expression.
   648  vec  (   4): Vectorized array expression.
   648  vec  (   4): Vectorized array expression.
   648  vec  (   4): Vectorized array expression.
   649  vec  (   4): Vectorized array expression.
   649  vec  (   4): Vectorized array expression.
   650  vec  (   4): Vectorized array expression.
   659  vec  (   4): Vectorized array expression.
   659  vec  (   4): Vectorized array expression.
   659  vec  (   4): Vectorized array expression.
   660  vec  (   4): Vectorized array expression.
   660  vec  (   4): Vectorized array expression.
   661  vec  (   4): Vectorized array expression.
   669  vec  (   4): Vectorized array expression.
   669  vec  (   4): Vectorized array expression.
   669  vec  (   4): Vectorized array expression.
   670  vec  (   4): Vectorized array expression.
   670  vec  (   4): Vectorized array expression.
   678  vec  (   4): Vectorized array expression.
   678  vec  (   4): Vectorized array expression.
   678  vec  (   4): Vectorized array expression.
   679  vec  (   4): Vectorized array expression.
   679  vec  (   4): Vectorized array expression.
   687  vec  (   4): Vectorized array expression.
   687  vec  (   4): Vectorized array expression.
   687  vec  (   4): Vectorized array expression.
   688  vec  (   4): Vectorized array expression.
   688  vec  (   4): Vectorized array expression.
   694  vec  (   4): Vectorized array expression.
   694  vec  (   4): Vectorized array expression.
   694  vec  (   4): Vectorized array expression.
   700  vec  (   4): Vectorized array expression.
   700  vec  (   4): Vectorized array expression.
   700  vec  (   4): Vectorized array expression.
   706  vec  (   4): Vectorized array expression.
   706  vec  (   4): Vectorized array expression.
   706  vec  (   4): Vectorized array expression.
   718  vec  (   4): Vectorized array expression.
   719  vec  (   4): Vectorized array expression.
   720  vec  (   4): Vectorized array expression.
   721  vec  (   4): Vectorized array expression.
   722  vec  (   4): Vectorized array expression.
   723  vec  (   4): Vectorized array expression.
   724  vec  (   4): Vectorized array expression.
   725  vec  (   4): Vectorized array expression.
   726  vec  (   4): Vectorized array expression.
Linux  R2.6.5-7.282-sn2 FORTRAN90/SX         Rev.360        Tue Oct 11 12:35:41 2011
FILE NAME: arare.f90
PROGRAM NAME: deepconv_arare
TRANSFORMATION LIST

  LINE                   FORTRAN STATEMENT

     1  != deepconv/arare 湿潤大気対流計算用主プログラム (三次元版)
     2  !
     3  != deepconv/arare main program for moist atmospheric convection (3D)
     4  !
     5  ! Authors::   杉山耕一朗(SUGIYAMA Ko-ichiro), ODAKA Masatsugu
     6  ! Version::   $Id: arare.f90,v 1.26 2011-10-06 04:06:02 yot Exp $
     7  ! Tag Name::  $Name: arare5-20111010 $
     8  ! Copyright:: Copyright (C) GFD Dennou Club, 2007. All rights reserved.
     9  ! License::   See COPYRIGHT[link:../../COPYRIGHT]
    10  !
    11  
    12  program deepconv_arare
    13    !
    14    ! 非静力学モデル deepconv/arare 湿潤大気対流計算用主プログラム (三次元版)
    15    !
    16  
    17    ! モジュール引用  use statement
    18    !
    19  
    20    ! gtool5 関連
    21    ! gtool5 modules
    22    !
    23    use dc_types,      only: STRING, DP
    24    use dc_message,    only: MessageNotify
    25    use gtool_history, only: HistoryPut
    26    use gtool_historyauto, only: HistoryAutoPut
    27  
    28    ! 初期設定モジュール
    29    ! Initialize module
    30    !
    31    use mpi_wrapper, only : MPIWrapperInit, MPIWrapperFinalize, myrank
    32    use argset,   only: argset_init
    33    use clockset, only: ClocksetInit, ClocksetClose, ClocksetPredict, &
    34      &                 ClockSetPreStart, ClockSetLoopStart, ClockSetPreStop, ClockSetLoopStop
    35    use gridset,  only: gridset_init, imin, imax, jmin, jmax, kmin, kmax, nx, ny, nz, ncmax
    36    use timeset,  only: timeset_init, TimesetProgress, &
    37      &                 TimeA, TimeN, TimeB, NstepShort, NstepOutput, &
    38      &                 EndTime, RestartTime, &
    39      &                 DelTimeLong, DelTimeShort, DelTimeOutput
    40    use axesset,  only: axesset_init, xyz_avr_pyz, xyz_avr_xqz, xyz_avr_xyr
    41    use constants,only: constants_init
    42    use composition, only: composition_init, SpcWetSymbol
    43    use fileset,  only: fileset_init
    44    use basicset, only: xyzf_QMixBZ, xyz_DensBZ, xyz_EffMolWtBZ, &
    45      &                 xyz_PTempBZ, xyz_TempBZ, xyz_PressBZ, &
    46      &                 xyz_VelSoundBZ, xyz_ExnerBZ
    47    use ChemCalc, only: ChemCalc_init
    48    use namelist_util, only: NmlutilInit, namelist_filename
    49  
    50    ! 下請けモジュール
    51    ! Utility modules
    52    !
    53    use cflcheck, only : CFLCheckTimeShort, &
    54      &                  CFLCheckTimeLongVelX, &
    55      &                  CFLCheckTimeLongVelY, &
    56      &                  CFLCheckTimeLongVelZ
    57    use timefilter, only : AsselinFilter
    58    use damping, only: Damping_init, SpongeLayer_forcing
    59  
    60    ! 力学過程計算用関数モジュール
    61    ! Dynamical processes module
    62    !
    63    use DynamicsHEVI, only: Dynamics_Init,  &
    64      &                      Dynamics_Long_forcing, Dynamics_Short_forcing, Dynamics_Km_forcing
    65    use fillnegative,only: FillNegative_init
    66  
    67    ! 乱流拡散計算用モジュール
    68    ! Turbulent diffusion module
    69    !
    70    use Turbulence_kw1978,  only: Turbulence_kw1978_Init, Turbulence_KW1978_forcing
    71  
    72    ! 放射強制計算用モジュール
    73    ! Radiative forceing module
    74    !
    75    use Radiation_simple,  only: Radiation_simple_init, xyz_RadHeatConst, xyz_RadHeatVary
    76    use radiation_heatbalance, only: Radiation_heatbalance_init, Radiation_heatbalance_forcing
    77  
    78    ! 境界からのフラックス計算用モジュール
    79    ! Surface flux module
    80    !
    81    use Surfaceflux_Diff, only: Surfaceflux_Diff_init, Surfaceflux_Diff_forcing
    82    use Surfaceflux_Bulk, only: Surfaceflux_Bulk_init, Surfaceflux_Bulk_forcing
    83  
    84    ! 湿潤過程計算用モジュール
    85    ! Moist processes modules
    86    !
    87    use Cloudphys_K1969, only: Cloudphys_K1969_Init, Cloudphys_K1969_forcing, &
    88      &                        Cloudphys_K1969_FallRain
    89    use Cloudphys_marscond, only: cloudphys_marscond_Init, cloudphys_marscond_forcing
    90  
    91  
    92    ! ファイル入出力モジュール
    93    ! File I/O module
    94    !
    95    use RestartFileIO, only : ReStartFileio_init, ReStartFileio_Finalize, &
    96      &                       ReStartFileio_BZ_Get, ReStartFileio_Var_Get, rstat
    97    use HistoryFileIO, only: HistoryFileio_init, HistoryFileio_Finalize
    98  
    99    implicit none
   100  
   101    ! 内部変数
   102    ! Internal variables
   103    !
   104    character(*), parameter:: prog_name = 'arare'
   105                              ! 主プログラム名.
   106                              ! Main program name
   107  
   108    real(DP), allocatable :: pyz_VelXBl(:,:,:)
   109                               ! $ u (t-\Delta t) $ 東西風 ; zonal wind
   110    real(DP), allocatable :: pyz_VelXNl(:,:,:)
   111                               ! $ u (t) $          東西風 ; zonal wind
   112    real(DP), allocatable :: xyz_VelXNl(:,:,:)
   113                               ! $ u (t) $          東西風 ; zonal wind
   114    real(DP), allocatable :: pyz_VelXAl(:,:,:)
   115                               ! $ u (t+\Delta t) $ 東西風 ; zonal wind
   116    real(DP), allocatable :: pyz_VelXNs(:,:,:)
   117                               ! $ u (\tau) $ 東西風 ; zonal wind
   118    real(DP), allocatable :: pyz_VelXAs(:,:,:)
   119                               ! $ u (\tau +\Delta \tau) $ 東西風 ; zonal wind
   120    real(DP), allocatable :: xqz_VelYBl(:,:,:)
   121                               ! $ v (t-\Delta t) $ 南北風 ; meridonal wind
   122    real(DP), allocatable :: xqz_VelYNl(:,:,:)
   123                               ! $ v (t) $ 南北風 ; meridonal wind
   124    real(DP), allocatable :: xyz_VelYNl(:,:,:)
   125                               ! $ v (t) $ 南北風 ; meridonal wind
   126    real(DP), allocatable :: xqz_VelYAl(:,:,:)
   127                               ! $ v (t+\Delta t) $ 南北風 ; meridonal wind
   128    real(DP), allocatable :: xqz_VelYNs(:,:,:)
   129                               ! $ v (\tau -\tau) $ 南北風 ; meridonal wind
   130    real(DP), allocatable :: xqz_VelYAs(:,:,:)
   131                               ! $ v (\tau) $ 南北風 ; meridonal wind
   132    real(DP), allocatable :: xyr_VelZBl(:,:,:)
   133                               ! $ w (t-\Delta t) $ 鉛直風 ; vertical wind
   134    real(DP), allocatable :: xyr_VelZNl(:,:,:)
   135                               ! $ w (t) $ 鉛直風 ; vertical wind
   136    real(DP), allocatable :: xyz_VelZNl(:,:,:)
   137                               ! $ w (t) $ 鉛直風 ; vertical wind
   138    real(DP), allocatable :: xyr_VelZAl(:,:,:)
   139                               ! $ w (t+\Delta t) $ 鉛直風 ; vertical wind
   140    real(DP), allocatable :: xyr_VelZNs(:,:,:)
   141                               ! $ w (\tau) $ 鉛直風 ; vertical wind
   142    real(DP), allocatable :: xyr_VelZAs(:,:,:)
   143                               ! $ w (\tau +\Delta \tau)  鉛直風 ; vertical wind
   144    real(DP), allocatable :: xyz_ExnerBl(:,:,:)
   145                               ! $ \pi (t-\Delta t) $ 圧力関数 ; Exner function
   146    real(DP), allocatable :: xyz_ExnerNl(:,:,:)
   147                               ! $ \pi (t) $ 圧力関数 ; Exner function
   148    real(DP), allocatable :: xyz_ExnerAl(:,:,:)
   149                               ! $ \pi (t+\Delta t) $ 圧力関数 ; Exner function
   150    real(DP), allocatable :: xyz_ExnerNs(:,:,:)
   151                               ! $ \pi (\tau -\Delta \tau) $ 圧力関数 ; Exner function
   152    real(DP), allocatable :: xyz_ExnerAs(:,:,:)
   153                               ! $ \pi (\tau) $ 圧力関数 ; Exner function
   154    real(DP), allocatable :: xyz_PTempBl(:,:,:)
   155                               ! $ \theta (t-\Delta t) $ 温位 ; Potential temp.
   156    real(DP), allocatable :: xyz_PTempNl(:,:,:)
   157                               ! $ \theta (t) $ 温位 ; Potential temp.
   158    real(DP), allocatable :: xyz_PTempAl(:,:,:)
   159                               ! $ \theta (t+\Delta t) $ 温位 ; Potential temp.
   160    real(DP), allocatable :: xyz_PTempNs(:,:,:)
   161                               ! $ \theta (t) $ 温位 ; Potential temp.
   162    real(DP), allocatable :: xyz_PTempAs(:,:,:)
   163                               ! $ \theta (t+\Delta t) $ 温位 ; Potential temp.
   164    real(DP), allocatable :: xyz_CDensBl(:,:,:)
   165                               ! $ \theta (t-\Delta t) $ 温位 ; Potential temp.
   166    real(DP), allocatable :: xyz_CDensNl(:,:,:)
   167                               ! $ \theta (t) $ 温位 ; Potential temp.
   168    real(DP), allocatable :: xyz_CDensAl(:,:,:)
   169                               ! $ \theta (t+\Delta t) $ 温位 ; Potential temp.
   170    real(DP), allocatable :: xyz_CDensNs(:,:,:)
   171                               ! $ \theta (t) $ 温位 ; Potential temp.
   172    real(DP), allocatable :: xyz_CDensAs(:,:,:)
   173                               ! $ \theta (t+\Delta t) $ 温位 ; Potential temp.
   174    real(DP), allocatable :: xyz_KmBl(:,:,:)
   175                               ! $ Km (t-\Delta t) $ 乱流拡散係数
   176                               ! Turbulent diffusion coeff.
   177    real(DP), allocatable :: xyz_KmNl(:,:,:)
   178                               ! $ K_m (t) $ 乱流拡散係数
   179                               ! Turbulent diffusion coeff.
   180    real(DP), allocatable :: xyz_KmAl(:,:,:)
   181                               ! $ K_m (t+\Delta t) $ 乱流拡散係数
   182                               ! Turbulent diffusion coeff.
   183    real(DP), allocatable :: xyz_KhBl(:,:,:)
   184                               ! $ K_h (t-\Delta t) $ 乱流拡散係数
   185                               ! Turbulent diffusion coeff.
   186    real(DP), allocatable :: xyz_KhNl(:,:,:)
   187                               ! $ K_h (t) $ 乱流拡散係数
   188                               ! Turbulent diffusion coeff.
   189    real(DP), allocatable :: xyz_KhAl(:,:,:)
   190                               ! $ K_h (t+\Delta t) $ 乱流拡散係数
   191                               ! Turbulent diffusion coeff.
   192    real(DP), allocatable :: xyzf_QMixBl(:,:,:,:)
   193                               ! $ q (t-\Delta t) $ 湿潤量の混合比
   194                               ! Mixing ratio of moist variables.
   195    real(DP), allocatable :: xyzf_QMixNl(:,:,:,:)
   196                               ! $ q (t) $ 湿潤量の混合比
   197                               ! Mixing ratio of moist variables
   198    real(DP), allocatable :: xyzf_QMixAl(:,:,:,:) !
   199                               ! $ q (t+\Delta t) $ 湿潤量の混合比
   200                               !Mixing ratio of moist variables
   201  
   202    real(DP), allocatable :: pyz_DVelXDtNl(:,:,:)
   203    real(DP), allocatable :: xqz_DVelYDtNl(:,:,:)
   204    real(DP), allocatable :: xyr_DVelZDtNl(:,:,:)
   205    real(DP), allocatable :: xyz_DPTempDtNl(:,:,:)
   206    real(DP), allocatable :: xyz_DExnerDtNl(:,:,:)
   207    real(DP), allocatable :: xyz_DExnerDtNs(:,:,:)
   208    real(DP), allocatable :: xyzf_DQMixDtNl(:,:,:,:)
   209    real(DP), allocatable :: xyz_DKmDtNl(:,:,:)
   210    real(DP), allocatable :: xyz_DCDensDtNl(:,:,:)
   211  
   212    integer :: s, t, tau  ! do ループ変数 ; do loop variable
   213  
   214    integer           :: IDTurbMethod = 0
   215    integer, parameter:: IDTurbMethodKW1978 = 2
   216    integer           :: IDRadMethod = 0
   217    integer, parameter:: IDRadMethodHeatConst = 1
   218    integer, parameter:: IDRadMethodHeatVary  = 2
   219    integer, parameter:: IDRadMethodHeatBalance = 3
   220    integer           :: IDSurfaceMethod = 0
   221    integer, parameter:: IDSurfaceMethodDiff = 1
   222    integer, parameter:: IDSurfaceMethodBulk = 2
   223    integer           :: IDCloudMethod = 0
   224    integer, parameter:: IDCloudMethodK1969 = 1
   225    integer, parameter:: IDCloudMethodMarsCond = 2
   226  
   227  
   228    !------------------------------------------
   229    ! 初期化手続き ; Initialize procedure
   230    !
   231    call MainInit
   232  
   233    !------------------------------------------
   234    ! 時間積分 time integration
   235    !
   236    if (myrank == 0) call MessageNotify( "M", "main", "Time Integration Start" )
   237  
   238    ! CPU 時間計測開始
   239    ! Start CPU time counting
   240    !
   241    call ClocksetLoopStart
   242  
   243    ! 時間発展ループのスタート
   244    !
   245    write(*,*) TimeN, EndTime
   246    do while (TimeN <= EndTime )
   247      write(*,*) "LONG: ", TimeN, TimeA
   248  
   249      !-------------------------------
   250      ! 物理過程: 乱流
   251      !
   252      select case ( IDTurbMethod )
   253  
   254      case ( IDTurbMethodKW1978 )
   255  
   256        ! Km の移流
   257        !
   258        call Dynamics_Km_forcing(               &
   259          & pyz_VelXNl, xqz_VelYNl, xyr_VelZNl, & ! (in)
   260          & xyz_KmBl,    xyz_KmNl,              & ! (in)
   261          & xyz_DKmDtNl                         & ! (inout)
   262          & )
   263  
   264        call turbulence_KW1978_forcing(                      &
   265          &   pyz_VelXBl,  xqz_VelYBl,  xyr_VelZBl,          &!(in)
   266          &   xyz_PTempBl, xyz_ExnerBl, xyzf_QMixBl,         &!(in)
   267          &   xyz_KmBl,    xyz_KhBl,    xyz_CDensBl,         &!(in)
   268          &   pyz_DVelXDtNl, xqz_DVelYDtNl,  xyr_DVelZDtNl,  &!(inout)
   269          &   xyz_DPTempDtNl,xyz_DExnerDtNl, xyzf_DQMixDtNl, &!(inout)
   270          &   xyz_DKmDtNl,   xyz_DCDensDtNl,                 &!(inout)
   271          &   xyz_KmAl, xyz_KhAl                             &!(out)
   272          & )
   273      end select
   274  
   275      !-------------------------------
   276      ! 物理過程: 放射
   277      !
   278      select case (IDRadMethod)
   279  
   280      case (IDRadMethodHeatConst)
   281  
   282        xyz_DPTempDtNl = xyz_DPTempDtNl + xyz_RadHeatConst
     .        if (t867 .gt. 0) then                                             
     .           J1 = and(t867,3)                                               
     .  !CDIR    NODEP                                                          
     .           do t2530 = 1, J1                                               
     .  !CDIR       NODEP                                                       
     .              do t2532 = 1, t869                                          
     .                 xyz_dptempdtnl(t372+t2532-1,t2530-1+t374,t2528+t376) =   
     .       1            xyz_dptempdtnl(t372+t2532-1,t2530-1+t374,t2528+t376)  
     .       2             + xyz_radheatconst(t104+t2532-1,t2530-1+t106,t2528+  
     .       3            t108)                                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2530 = J1 + 1, t867, 4                                     
     .  !CDIR       NODEP                                                       
     .              do t2532 = 1, t869                                          
     .                 xyz_dptempdtnl(t372+t2532-1,t2530-1+t374,t2528+t376) =   
     .       1            xyz_dptempdtnl(t372+t2532-1,t2530-1+t374,t2528+t376)  
     .       2             + xyz_radheatconst(t104+t2532-1,t2530-1+t106,t2528+  
     .       3            t108)                                                 
     .                 xyz_dptempdtnl(t372+t2532-1,t2530+t374,t2528+t376) =     
     .       1            xyz_dptempdtnl(t372+t2532-1,t2530+t374,t2528+t376) +  
     .       2            xyz_radheatconst(t104+t2532-1,t2530+t106,t2528+t108)  
     .                 xyz_dptempdtnl(t372+t2532-1,t2530+1+t374,t2528+t376) =   
     .       1            xyz_dptempdtnl(t372+t2532-1,t2530+1+t374,t2528+t376)  
     .       2             + xyz_radheatconst(t104+t2532-1,t2530+1+t106,t2528+  
     .       3            t108)                                                 
     .                 xyz_dptempdtnl(t372+t2532-1,t2530+2+t374,t2528+t376) =   
     .       1            xyz_dptempdtnl(t372+t2532-1,t2530+2+t374,t2528+t376)  
     .       2             + xyz_radheatconst(t104+t2532-1,t2530+2+t106,t2528+  
     .       3            t108)                                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   283        call HistoryAutoPut(TimeN, 'PTempRad', xyz_RadHeatConst(1:nx,1:ny,1:nz))
   284  
   285      case (IDRadMethodHeatVary)
   286  
   287        xyz_DPTempDtNl = xyz_DPTempDtNl + xyz_RadHeatVary
     .        if (t373 - t374 + 1 .gt. 0) then                                  
     .           J2 = and(t373 - t374 + 1,3)                                    
     .  !CDIR    NODEP                                                          
     .           do t2515 = 1, J2                                               
     .  !CDIR       NODEP                                                       
     .              do t2517 = 1, t371 - t372 + 1                               
     .                 xyz_dptempdtnl(t372+t2517-1,t2515-1+t374,t2513+t376) =   
     .       1            xyz_dptempdtnl(t372+t2517-1,t2515-1+t374,t2513+t376)  
     .       2             + xyz_radheatvary(t93+t2517-1,t2515-1+t95,t2513+t97) 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2515 = J2 + 1, t373 - t374 + 1, 4                          
     .  !CDIR       NODEP                                                       
     .              do t2517 = 1, t371 - t372 + 1                               
     .                 xyz_dptempdtnl(t372+t2517-1,t2515-1+t374,t2513+t376) =   
     .       1            xyz_dptempdtnl(t372+t2517-1,t2515-1+t374,t2513+t376)  
     .       2             + xyz_radheatvary(t93+t2517-1,t2515-1+t95,t2513+t97) 
     .                 xyz_dptempdtnl(t372+t2517-1,t2515+t374,t2513+t376) =     
     .       1            xyz_dptempdtnl(t372+t2517-1,t2515+t374,t2513+t376) +  
     .       2            xyz_radheatvary(t93+t2517-1,t2515+t95,t2513+t97)      
     .                 xyz_dptempdtnl(t372+t2517-1,t2515+1+t374,t2513+t376) =   
     .       1            xyz_dptempdtnl(t372+t2517-1,t2515+1+t374,t2513+t376)  
     .       2             + xyz_radheatvary(t93+t2517-1,t2515+1+t95,t2513+t97) 
     .                 xyz_dptempdtnl(t372+t2517-1,t2515+2+t374,t2513+t376) =   
     .       1            xyz_dptempdtnl(t372+t2517-1,t2515+2+t374,t2513+t376)  
     .       2             + xyz_radheatvary(t93+t2517-1,t2515+2+t95,t2513+t97) 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   288        call HistoryAutoPut(TimeN, 'PTempRad', xyz_RadHeatVary(1:nx,1:ny,1:nz))
   289  
   290      case (IDRadMethodHeatBalance)
   291        call radiation_heatbalance_forcing( &
   292          &   xyz_ExnerNl, xyz_PTempNl, & !(in)
   293          &   xyz_DPTempDtNl, xyz_DExnerDtNl  & !(inout)
   294          & )
   295  
   296      end select
   297  
   298      !--------------------------------
   299      ! 境界からの熱・運動量輸送
   300      !
   301      select case (IDSurfaceMethod)
   302  
   303      case (IDSurfaceMethodDiff)
   304        call Surfaceflux_Diff_forcing(   &
   305          &   xyz_PTempNl, xyzf_QMixNl, & !(in)
   306          &   xyz_DPTempDtNl, xyzf_DQMixDtNl   & !(out)
   307          & )
   308  
   309      case (IDSurfaceMethodBulk)
   310        call Surfaceflux_Bulk_forcing( &
   311          &   pyz_VelXNl, xqz_VelYNl, xyz_PTempNl, &!(in)
   312          &   xyz_ExnerNl, xyzf_QMixNl,            &!(in)
   313          &   pyz_DVelXDtNl, xqz_DVelYDtNl,        &!(inout)
   314          &   xyz_DPTempDtNl, xyzf_DQMixDtNl       &!(inout)
   315          & )
   316      end select
   317  
   318  
   319      !-----------------------------------------
   320      ! 凝結過程
   321      !
   322      !
   323      select case (IDCloudMethod)
   324      case (IDCloudMethodK1969)
   325        call CloudPhys_K1969_FallRain( &
   326          &   xyzf_QMixNl,       & !(in)
   327          &   xyzf_DQMixDtNl     & !(inout)
   328          & )
   329      end select
   330  
   331      !-----------------------------------------
   332      ! 移流拡散.
   333      ! Advection and diffusion
   334      !
   335      call Dynamics_Long_forcing(       &
   336        &   pyz_VelXBl,  pyz_VelXNl,    & ! (in)
   337        &   xqz_VelYBl,  xqz_VelYNl,    & ! (in)
   338        &   xyr_VelZBl,  xyr_VelZNl,    & ! (in)
   339        &   xyz_PTempBl, xyz_PTempNl,   & ! (in)
   340        &   xyzf_QMixBl, xyzf_QMixNl,   & ! (in) mixing ratio  [kg/kg]
   341        &   xyz_CDensBl, xyz_CDensNl,   & ! (in) Cloud density [kg/m^-3]
   342        &   pyz_DVelXDtNl,              & ! (inout)
   343        &   xqz_DVelYDtNl,              & ! (inout)
   344        &   xyr_DVelZDtNl,              & ! (inout)
   345        &   xyz_DPTempDtNl,             & ! (inout)
   346        &   xyzf_DQMixDtNl,             & ! (inout)
   347        &   xyz_DCDensDtNl,             & ! (inout)
   348        &   xyz_PTempAl,                & ! (out)
   349        &   xyzf_QMixAl                 & ! (out)
   350        & )
   351  
   352      !------------------------------------------
   353      ! 凝結過程
   354      !
   355      select case (IDCloudMethod)
   356      case (IDCloudMethodK1969)
   357        call Cloudphys_K1969_forcing(   &
   358          &   xyz_ExnerNl,              &!(in)
   359          &   xyz_PTempAl, xyzf_QMixAl  &!(inout)
   360          & )
   361      end select
   362  
   363      ! 短い時間ステップの初期値作成.
   364      ! Initial values set up for time integration with short time step.
   365      !
   366      pyz_VelXNs  = pyz_VelXBl
     .        if (t591 - t592 + 1 .gt. 0) then                                  
     .           J3 = and(t591 - t592 + 1,3)                                    
     .  !CDIR    NODEP                                                          
     .           do t2002 = 1, J3                                               
     .  !CDIR       NODEP                                                       
     .              do t2004 = 1, t589 - t590 + 1                               
     .                 pyz_velxns(t590+t2004-1,t2002-1+t592,t2000+t594) =       
     .       1            pyz_velxbl(t568+t2004-1,t2002-1+t570,t2000+t572)      
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2002 = J3 + 1, t591 - t592 + 1, 4                          
     .  !CDIR       NODEP                                                       
     .              do t2004 = 1, t589 - t590 + 1                               
     .                 pyz_velxns(t590+t2004-1,t2002-1+t592,t2000+t594) =       
     .       1            pyz_velxbl(t568+t2004-1,t2002-1+t570,t2000+t572)      
     .                 pyz_velxns(t590+t2004-1,t2002+t592,t2000+t594) =         
     .       1            pyz_velxbl(t568+t2004-1,t2002+t570,t2000+t572)        
     .                 pyz_velxns(t590+t2004-1,t2002+1+t592,t2000+t594) =       
     .       1            pyz_velxbl(t568+t2004-1,t2002+1+t570,t2000+t572)      
     .                 pyz_velxns(t590+t2004-1,t2002+2+t592,t2000+t594) =       
     .       1            pyz_velxbl(t568+t2004-1,t2002+2+t570,t2000+t572)      
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   367      xqz_VelYNs  = xqz_VelYBl
     .        if (t646 - t647 + 1 .gt. 0) then                                  
     .           J4 = and(t646 - t647 + 1,3)                                    
     .  !CDIR    NODEP                                                          
     .           do t2014 = 1, J4                                               
     .  !CDIR       NODEP                                                       
     .              do t2016 = 1, t644 - t645 + 1                               
     .                 xqz_velyns(t645+t2016-1,t2014-1+t647,t2012+t649) =       
     .       1            xqz_velybl(t623+t2016-1,t2014-1+t625,t2012+t627)      
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2014 = J4 + 1, t646 - t647 + 1, 4                          
     .  !CDIR       NODEP                                                       
     .              do t2016 = 1, t644 - t645 + 1                               
     .                 xqz_velyns(t645+t2016-1,t2014-1+t647,t2012+t649) =       
     .       1            xqz_velybl(t623+t2016-1,t2014-1+t625,t2012+t627)      
     .                 xqz_velyns(t645+t2016-1,t2014+t647,t2012+t649) =         
     .       1            xqz_velybl(t623+t2016-1,t2014+t625,t2012+t627)        
     .                 xqz_velyns(t645+t2016-1,t2014+1+t647,t2012+t649) =       
     .       1            xqz_velybl(t623+t2016-1,t2014+1+t625,t2012+t627)      
     .                 xqz_velyns(t645+t2016-1,t2014+2+t647,t2012+t649) =       
     .       1            xqz_velybl(t623+t2016-1,t2014+2+t625,t2012+t627)      
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   368      xyr_VelZNs  = xyr_VelZBl
     .        if (t701 - t702 + 1 .gt. 0) then                                  
     .           J5 = and(t701 - t702 + 1,3)                                    
     .  !CDIR    NODEP                                                          
     .           do t2026 = 1, J5                                               
     .  !CDIR       NODEP                                                       
     .              do t2028 = 1, t699 - t700 + 1                               
     .                 xyr_velzns(t700+t2028-1,t2026-1+t702,t2024+t704) =       
     .       1            xyr_velzbl(t678+t2028-1,t2026-1+t680,t2024+t682)      
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2026 = J5 + 1, t701 - t702 + 1, 4                          
     .  !CDIR       NODEP                                                       
     .              do t2028 = 1, t699 - t700 + 1                               
     .                 xyr_velzns(t700+t2028-1,t2026-1+t702,t2024+t704) =       
     .       1            xyr_velzbl(t678+t2028-1,t2026-1+t680,t2024+t682)      
     .                 xyr_velzns(t700+t2028-1,t2026+t702,t2024+t704) =         
     .       1            xyr_velzbl(t678+t2028-1,t2026+t680,t2024+t682)        
     .                 xyr_velzns(t700+t2028-1,t2026+1+t702,t2024+t704) =       
     .       1            xyr_velzbl(t678+t2028-1,t2026+1+t680,t2024+t682)      
     .                 xyr_velzns(t700+t2028-1,t2026+2+t702,t2024+t704) =       
     .       1            xyr_velzbl(t678+t2028-1,t2026+2+t680,t2024+t682)      
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   369      xyz_ExnerNs = xyz_ExnerBl
     .        if (t503 - t504 + 1 .gt. 0) then                                  
     .           J6 = and(t503 - t504 + 1,3)                                    
     .  !CDIR    NODEP                                                          
     .           do t2038 = 1, J6                                               
     .  !CDIR       NODEP                                                       
     .              do t2040 = 1, t501 - t502 + 1                               
     .                 xyz_exnerns(t502+t2040-1,t2038-1+t504,t2036+t506) =      
     .       1            xyz_exnerbl(t480+t2040-1,t2038-1+t482,t2036+t484)     
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2038 = J6 + 1, t503 - t504 + 1, 4                          
     .  !CDIR       NODEP                                                       
     .              do t2040 = 1, t501 - t502 + 1                               
     .                 xyz_exnerns(t502+t2040-1,t2038-1+t504,t2036+t506) =      
     .       1            xyz_exnerbl(t480+t2040-1,t2038-1+t482,t2036+t484)     
     .                 xyz_exnerns(t502+t2040-1,t2038+t504,t2036+t506) =        
     .       1            xyz_exnerbl(t480+t2040-1,t2038+t482,t2036+t484)       
     .                 xyz_exnerns(t502+t2040-1,t2038+1+t504,t2036+t506) =      
     .       1            xyz_exnerbl(t480+t2040-1,t2038+1+t482,t2036+t484)     
     .                 xyz_exnerns(t502+t2040-1,t2038+2+t504,t2036+t506) =      
     .       1            xyz_exnerbl(t480+t2040-1,t2038+2+t482,t2036+t484)     
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   370      xyz_PTempNs = xyz_PTempBl
     .        if (t183 - t184 + 1 .gt. 0) then                                  
     .           J7 = and(t183 - t184 + 1,3)                                    
     .  !CDIR    NODEP                                                          
     .           do t2050 = 1, J7                                               
     .  !CDIR       NODEP                                                       
     .              do t2052 = 1, t181 - t182 + 1                               
     .                 xyz_ptempns(t182+t2052-1,t2050-1+t184,t2048+t186) =      
     .       1            xyz_ptempbl(t160+t2052-1,t2050-1+t162,t2048+t164)     
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2050 = J7 + 1, t183 - t184 + 1, 4                          
     .  !CDIR       NODEP                                                       
     .              do t2052 = 1, t181 - t182 + 1                               
     .                 xyz_ptempns(t182+t2052-1,t2050-1+t184,t2048+t186) =      
     .       1            xyz_ptempbl(t160+t2052-1,t2050-1+t162,t2048+t164)     
     .                 xyz_ptempns(t182+t2052-1,t2050+t184,t2048+t186) =        
     .       1            xyz_ptempbl(t160+t2052-1,t2050+t162,t2048+t164)       
     .                 xyz_ptempns(t182+t2052-1,t2050+1+t184,t2048+t186) =      
     .       1            xyz_ptempbl(t160+t2052-1,t2050+1+t162,t2048+t164)     
     .                 xyz_ptempns(t182+t2052-1,t2050+2+t184,t2048+t186) =      
     .       1            xyz_ptempbl(t160+t2052-1,t2050+2+t162,t2048+t164)     
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   371      xyz_CDensNs = xyz_CDensBl
     .        if (t271 - t272 + 1 .gt. 0) then                                  
     .           J8 = and(t271 - t272 + 1,3)                                    
     .  !CDIR    NODEP                                                          
     .           do t2062 = 1, J8                                               
     .  !CDIR       NODEP                                                       
     .              do t2064 = 1, t269 - t270 + 1                               
     .                 xyz_cdensns(t270+t2064-1,t2062-1+t272,t2060+t274) =      
     .       1            xyz_cdensbl(t248+t2064-1,t2062-1+t250,t2060+t252)     
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2062 = J8 + 1, t271 - t272 + 1, 4                          
     .  !CDIR       NODEP                                                       
     .              do t2064 = 1, t269 - t270 + 1                               
     .                 xyz_cdensns(t270+t2064-1,t2062-1+t272,t2060+t274) =      
     .       1            xyz_cdensbl(t248+t2064-1,t2062-1+t250,t2060+t252)     
     .                 xyz_cdensns(t270+t2064-1,t2062+t272,t2060+t274) =        
     .       1            xyz_cdensbl(t248+t2064-1,t2062+t250,t2060+t252)       
     .                 xyz_cdensns(t270+t2064-1,t2062+1+t272,t2060+t274) =      
     .       1            xyz_cdensbl(t248+t2064-1,t2062+1+t250,t2060+t252)     
     .                 xyz_cdensns(t270+t2064-1,t2062+2+t272,t2060+t274) =      
     .       1            xyz_cdensbl(t248+t2064-1,t2062+2+t250,t2060+t252)     
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   372  
   373      ! 短い時間ステップの時間積分. オイラー法を利用.
   374      ! Time integration with short time step.
   375      !
   376      Euler: do tau = 1, NstepShort
   377  !      write(*,*) "SHORT", tau
   378  
   379        ! 火星計算の場合. 凝結量の評価はここで行う.
   380        !
   381        select case (IDCloudMethod)
   382        case (IDCloudMethodMarsCond)
   383  
   384          call cloudphys_marscond_forcing(  &
   385            &   xyz_PTempNs,         &  !(in) 温位
   386            &   xyz_ExnerNs,         &  !(in) エクスナー関数
   387            &   xyz_CDensNs,         &  !(in)
   388            &   xyz_DPTempDtNl,      &  !(in)
   389            &   xyz_DExnerDtNl,      &  !(in)
   390            &   xyz_DCDensDtNl,      &  !(in)
   391            &   xyz_PTempAs,         &  !(out) 温位
   392            &   xyz_CDensAs,         &  !(out) 雲密度
   393            &   xyz_DExnerDtNs       &  !(out)
   394            & )
   395  
   396        end select
   397  
   398        ! 陽解法: 速度 u, v の計算.
   399        ! Time integration horizontal velocity (u).
   400        !
   401        call Dynamics_Short_forcing(         &
   402          &   pyz_VelXNs,          & ! (in)
   403          &   xqz_VelYNs,          & ! (in)
   404          &   xyr_VelZNs,          & ! (in)
   405          &   xyz_ExnerNs,         & ! (in)
   406          &   pyz_DVelXDtNl,       & ! (in)
   407          &   xqz_DVelYDtNl,       & ! (in)
   408          &   xyr_DVelZDtNl,       & ! (in)
   409          &   xyz_DExnerDtNs,      & ! (in)
   410          &   pyz_VelXAs,          & ! (out)
   411          &   xqz_VelYAs,          & ! (out)
   412          &   xyr_VelZAs,          & ! (out)
   413          &   xyz_ExnerAs          & ! (out)
   414          & )
   415  
   416        ! 短い時間ステップのループを回すための処置
   417        ! Renew prognostic variables for next short time step integration.
   418        !
   419        xyz_ExnerNs  = xyz_ExnerAs
     .        if (t503 - t504 + 1 .gt. 0) then                                  
     .           J9 = and(t503 - t504 + 1,3)                                    
     .  !CDIR    NODEP                                                          
     .           do t2074 = 1, J9                                               
     .  !CDIR       NODEP                                                       
     .              do t2076 = 1, t501 - t502 + 1                               
     .                 xyz_exnerns(t502+t2076-1,t2074-1+t504,t2072+t506) =      
     .       1            xyz_exneras(t469+t2076-1,t2074-1+t471,t2072+t473)     
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2074 = J9 + 1, t503 - t504 + 1, 4                          
     .  !CDIR       NODEP                                                       
     .              do t2076 = 1, t501 - t502 + 1                               
     .                 xyz_exnerns(t502+t2076-1,t2074-1+t504,t2072+t506) =      
     .       1            xyz_exneras(t469+t2076-1,t2074-1+t471,t2072+t473)     
     .                 xyz_exnerns(t502+t2076-1,t2074+t504,t2072+t506) =        
     .       1            xyz_exneras(t469+t2076-1,t2074+t471,t2072+t473)       
     .                 xyz_exnerns(t502+t2076-1,t2074+1+t504,t2072+t506) =      
     .       1            xyz_exneras(t469+t2076-1,t2074+1+t471,t2072+t473)     
     .                 xyz_exnerns(t502+t2076-1,t2074+2+t504,t2072+t506) =      
     .       1            xyz_exneras(t469+t2076-1,t2074+2+t471,t2072+t473)     
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   420        pyz_VelXNs   = pyz_VelXAs
     .        if (t591 - t592 + 1 .gt. 0) then                                  
     .           J10 = and(t591 - t592 + 1,3)                                   
     .  !CDIR    NODEP                                                          
     .           do t2086 = 1, J10                                              
     .  !CDIR       NODEP                                                       
     .              do t2088 = 1, t589 - t590 + 1                               
     .                 pyz_velxns(t590+t2088-1,t2086-1+t592,t2084+t594) =       
     .       1            pyz_velxas(t557+t2088-1,t2086-1+t559,t2084+t561)      
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2086 = J10 + 1, t591 - t592 + 1, 4                         
     .  !CDIR       NODEP                                                       
     .              do t2088 = 1, t589 - t590 + 1                               
     .                 pyz_velxns(t590+t2088-1,t2086-1+t592,t2084+t594) =       
     .       1            pyz_velxas(t557+t2088-1,t2086-1+t559,t2084+t561)      
     .                 pyz_velxns(t590+t2088-1,t2086+t592,t2084+t594) =         
     .       1            pyz_velxas(t557+t2088-1,t2086+t559,t2084+t561)        
     .                 pyz_velxns(t590+t2088-1,t2086+1+t592,t2084+t594) =       
     .       1            pyz_velxas(t557+t2088-1,t2086+1+t559,t2084+t561)      
     .                 pyz_velxns(t590+t2088-1,t2086+2+t592,t2084+t594) =       
     .       1            pyz_velxas(t557+t2088-1,t2086+2+t559,t2084+t561)      
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   421        xqz_VelYNs   = xqz_VelYAs
     .        if (t646 - t647 + 1 .gt. 0) then                                  
     .           J11 = and(t646 - t647 + 1,3)                                   
     .  !CDIR    NODEP                                                          
     .           do t2098 = 1, J11                                              
     .  !CDIR       NODEP                                                       
     .              do t2100 = 1, t644 - t645 + 1                               
     .                 xqz_velyns(t645+t2100-1,t2098-1+t647,t2096+t649) =       
     .       1            xqz_velyas(t612+t2100-1,t2098-1+t614,t2096+t616)      
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2098 = J11 + 1, t646 - t647 + 1, 4                         
     .  !CDIR       NODEP                                                       
     .              do t2100 = 1, t644 - t645 + 1                               
     .                 xqz_velyns(t645+t2100-1,t2098-1+t647,t2096+t649) =       
     .       1            xqz_velyas(t612+t2100-1,t2098-1+t614,t2096+t616)      
     .                 xqz_velyns(t645+t2100-1,t2098+t647,t2096+t649) =         
     .       1            xqz_velyas(t612+t2100-1,t2098+t614,t2096+t616)        
     .                 xqz_velyns(t645+t2100-1,t2098+1+t647,t2096+t649) =       
     .       1            xqz_velyas(t612+t2100-1,t2098+1+t614,t2096+t616)      
     .                 xqz_velyns(t645+t2100-1,t2098+2+t647,t2096+t649) =       
     .       1            xqz_velyas(t612+t2100-1,t2098+2+t614,t2096+t616)      
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   422        xyr_VelZNs   = xyr_VelZAs
     .        if (t701 - t702 + 1 .gt. 0) then                                  
     .           J12 = and(t701 - t702 + 1,3)                                   
     .  !CDIR    NODEP                                                          
     .           do t2110 = 1, J12                                              
     .  !CDIR       NODEP                                                       
     .              do t2112 = 1, t699 - t700 + 1                               
     .                 xyr_velzns(t700+t2112-1,t2110-1+t702,t2108+t704) =       
     .       1            xyr_velzas(t667+t2112-1,t2110-1+t669,t2108+t671)      
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2110 = J12 + 1, t701 - t702 + 1, 4                         
     .  !CDIR       NODEP                                                       
     .              do t2112 = 1, t699 - t700 + 1                               
     .                 xyr_velzns(t700+t2112-1,t2110-1+t702,t2108+t704) =       
     .       1            xyr_velzas(t667+t2112-1,t2110-1+t669,t2108+t671)      
     .                 xyr_velzns(t700+t2112-1,t2110+t702,t2108+t704) =         
     .       1            xyr_velzas(t667+t2112-1,t2110+t669,t2108+t671)        
     .                 xyr_velzns(t700+t2112-1,t2110+1+t702,t2108+t704) =       
     .       1            xyr_velzas(t667+t2112-1,t2110+1+t669,t2108+t671)      
     .                 xyr_velzns(t700+t2112-1,t2110+2+t702,t2108+t704) =       
     .       1            xyr_velzas(t667+t2112-1,t2110+2+t669,t2108+t671)      
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   423        xyz_PTempNs  = xyz_PTempAs
     .        if (t183 - t184 + 1 .gt. 0) then                                  
     .           J13 = and(t183 - t184 + 1,3)                                   
     .  !CDIR    NODEP                                                          
     .           do t2122 = 1, J13                                              
     .  !CDIR       NODEP                                                       
     .              do t2124 = 1, t181 - t182 + 1                               
     .                 xyz_ptempns(t182+t2124-1,t2122-1+t184,t2120+t186) =      
     .       1            xyz_ptempas(t149+t2124-1,t2122-1+t151,t2120+t153)     
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2122 = J13 + 1, t183 - t184 + 1, 4                         
     .  !CDIR       NODEP                                                       
     .              do t2124 = 1, t181 - t182 + 1                               
     .                 xyz_ptempns(t182+t2124-1,t2122-1+t184,t2120+t186) =      
     .       1            xyz_ptempas(t149+t2124-1,t2122-1+t151,t2120+t153)     
     .                 xyz_ptempns(t182+t2124-1,t2122+t184,t2120+t186) =        
     .       1            xyz_ptempas(t149+t2124-1,t2122+t151,t2120+t153)       
     .                 xyz_ptempns(t182+t2124-1,t2122+1+t184,t2120+t186) =      
     .       1            xyz_ptempas(t149+t2124-1,t2122+1+t151,t2120+t153)     
     .                 xyz_ptempns(t182+t2124-1,t2122+2+t184,t2120+t186) =      
     .       1            xyz_ptempas(t149+t2124-1,t2122+2+t151,t2120+t153)     
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   424        xyz_CDensNs  = xyz_CDensAs
     .        if (t271 - t272 + 1 .gt. 0) then                                  
     .           J14 = and(t271 - t272 + 1,3)                                   
     .  !CDIR    NODEP                                                          
     .           do t2134 = 1, J14                                              
     .  !CDIR       NODEP                                                       
     .              do t2136 = 1, t269 - t270 + 1                               
     .                 xyz_cdensns(t270+t2136-1,t2134-1+t272,t2132+t274) =      
     .       1            xyz_cdensas(t237+t2136-1,t2134-1+t239,t2132+t241)     
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2134 = J14 + 1, t271 - t272 + 1, 4                         
     .  !CDIR       NODEP                                                       
     .              do t2136 = 1, t269 - t270 + 1                               
     .                 xyz_cdensns(t270+t2136-1,t2134-1+t272,t2132+t274) =      
     .       1            xyz_cdensas(t237+t2136-1,t2134-1+t239,t2132+t241)     
     .                 xyz_cdensns(t270+t2136-1,t2134+t272,t2132+t274) =        
     .       1            xyz_cdensas(t237+t2136-1,t2134+t239,t2132+t241)       
     .                 xyz_cdensns(t270+t2136-1,t2134+1+t272,t2132+t274) =      
     .       1            xyz_cdensas(t237+t2136-1,t2134+1+t239,t2132+t241)     
     .                 xyz_cdensns(t270+t2136-1,t2134+2+t272,t2132+t274) =      
     .       1            xyz_cdensas(t237+t2136-1,t2134+2+t239,t2132+t241)     
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   425        xyz_DExnerDtNs = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t2144 = 1, (xyz_dexnerdtns.DSC.U3 - xyz_dexnerdtns.DSC.L3 + 1)*
     .       1   (xyz_dexnerdtns.DSC.U2 - xyz_dexnerdtns.DSC.L2 + 1)*(          
     .       2   xyz_dexnerdtns.DSC.U1 - xyz_dexnerdtns.DSC.L1 + 1)             
     .           xyz_dexnerdtns(xyz_dexnerdtns.DSC.L1+t2144-1,                  
     .       1      xyz_dexnerdtns.DSC.L2,xyz_dexnerdtns.DSC.L3) =              
     .       2      0.0000000000000000e+000                                     
     .        end do                                                            
   426  
   427      end do Euler
   428  
   429      ! 最終的な短い時間ステップでの値を長い時間ステップでの値とみなす
   430      ! Renew prognostic variables for next long time step integration.
   431      !
   432      xyz_ExnerAl  = xyz_ExnerAs
     .        if (xyz_exneral.DSC.U2 - t460 + 1 .gt. 0) then                    
     .           J15 = and(xyz_exneral.DSC.U2 - t460 + 1,3)                     
     .  !CDIR    NODEP                                                          
     .           do t2155 = 1, J15                                              
     .  !CDIR       NODEP                                                       
     .              do t2157 = 1, xyz_exneral.DSC.U1 - t458 + 1                 
     .                 xyz_exneral(t458+t2157-1,t2155-1+t460,t2153+t462) =      
     .       1            xyz_exneras(t469+t2157-1,t2155-1+t471,t2153+t473)     
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2155 = J15 + 1, xyz_exneral.DSC.U2 - t460 + 1, 4           
     .  !CDIR       NODEP                                                       
     .              do t2157 = 1, xyz_exneral.DSC.U1 - t458 + 1                 
     .                 xyz_exneral(t458+t2157-1,t2155-1+t460,t2153+t462) =      
     .       1            xyz_exneras(t469+t2157-1,t2155-1+t471,t2153+t473)     
     .                 xyz_exneral(t458+t2157-1,t2155+t460,t2153+t462) =        
     .       1            xyz_exneras(t469+t2157-1,t2155+t471,t2153+t473)       
     .                 xyz_exneral(t458+t2157-1,t2155+1+t460,t2153+t462) =      
     .       1            xyz_exneras(t469+t2157-1,t2155+1+t471,t2153+t473)     
     .                 xyz_exneral(t458+t2157-1,t2155+2+t460,t2153+t462) =      
     .       1            xyz_exneras(t469+t2157-1,t2155+2+t471,t2153+t473)     
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   433      pyz_VelXAl   = pyz_VelXAs
     .        if (pyz_velxal.DSC.U2 - t548 + 1 .gt. 0) then                     
     .           J16 = and(pyz_velxal.DSC.U2 - t548 + 1,3)                      
     .  !CDIR    NODEP                                                          
     .           do t2167 = 1, J16                                              
     .  !CDIR       NODEP                                                       
     .              do t2169 = 1, pyz_velxal.DSC.U1 - t546 + 1                  
     .                 pyz_velxal(t546+t2169-1,t2167-1+t548,t2165+t550) =       
     .       1            pyz_velxas(t557+t2169-1,t2167-1+t559,t2165+t561)      
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2167 = J16 + 1, pyz_velxal.DSC.U2 - t548 + 1, 4            
     .  !CDIR       NODEP                                                       
     .              do t2169 = 1, pyz_velxal.DSC.U1 - t546 + 1                  
     .                 pyz_velxal(t546+t2169-1,t2167-1+t548,t2165+t550) =       
     .       1            pyz_velxas(t557+t2169-1,t2167-1+t559,t2165+t561)      
     .                 pyz_velxal(t546+t2169-1,t2167+t548,t2165+t550) =         
     .       1            pyz_velxas(t557+t2169-1,t2167+t559,t2165+t561)        
     .                 pyz_velxal(t546+t2169-1,t2167+1+t548,t2165+t550) =       
     .       1            pyz_velxas(t557+t2169-1,t2167+1+t559,t2165+t561)      
     .                 pyz_velxal(t546+t2169-1,t2167+2+t548,t2165+t550) =       
     .       1            pyz_velxas(t557+t2169-1,t2167+2+t559,t2165+t561)      
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   434      xqz_VelYAl   = xqz_VelYAs
     .        if (xqz_velyal.DSC.U2 - t603 + 1 .gt. 0) then                     
     .           J17 = and(xqz_velyal.DSC.U2 - t603 + 1,3)                      
     .  !CDIR    NODEP                                                          
     .           do t2179 = 1, J17                                              
     .  !CDIR       NODEP                                                       
     .              do t2181 = 1, xqz_velyal.DSC.U1 - t601 + 1                  
     .                 xqz_velyal(t601+t2181-1,t2179-1+t603,t2177+t605) =       
     .       1            xqz_velyas(t612+t2181-1,t2179-1+t614,t2177+t616)      
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2179 = J17 + 1, xqz_velyal.DSC.U2 - t603 + 1, 4            
     .  !CDIR       NODEP                                                       
     .              do t2181 = 1, xqz_velyal.DSC.U1 - t601 + 1                  
     .                 xqz_velyal(t601+t2181-1,t2179-1+t603,t2177+t605) =       
     .       1            xqz_velyas(t612+t2181-1,t2179-1+t614,t2177+t616)      
     .                 xqz_velyal(t601+t2181-1,t2179+t603,t2177+t605) =         
     .       1            xqz_velyas(t612+t2181-1,t2179+t614,t2177+t616)        
     .                 xqz_velyal(t601+t2181-1,t2179+1+t603,t2177+t605) =       
     .       1            xqz_velyas(t612+t2181-1,t2179+1+t614,t2177+t616)      
     .                 xqz_velyal(t601+t2181-1,t2179+2+t603,t2177+t605) =       
     .       1            xqz_velyas(t612+t2181-1,t2179+2+t614,t2177+t616)      
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   435      xyr_VelZAl   = xyr_VelZAs
     .        if (xyr_velzal.DSC.U2 - t658 + 1 .gt. 0) then                     
     .           J18 = and(xyr_velzal.DSC.U2 - t658 + 1,3)                      
     .  !CDIR    NODEP                                                          
     .           do t2191 = 1, J18                                              
     .  !CDIR       NODEP                                                       
     .              do t2193 = 1, xyr_velzal.DSC.U1 - t656 + 1                  
     .                 xyr_velzal(t656+t2193-1,t2191-1+t658,t2189+t660) =       
     .       1            xyr_velzas(t667+t2193-1,t2191-1+t669,t2189+t671)      
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2191 = J18 + 1, xyr_velzal.DSC.U2 - t658 + 1, 4            
     .  !CDIR       NODEP                                                       
     .              do t2193 = 1, xyr_velzal.DSC.U1 - t656 + 1                  
     .                 xyr_velzal(t656+t2193-1,t2191-1+t658,t2189+t660) =       
     .       1            xyr_velzas(t667+t2193-1,t2191-1+t669,t2189+t671)      
     .                 xyr_velzal(t656+t2193-1,t2191+t658,t2189+t660) =         
     .       1            xyr_velzas(t667+t2193-1,t2191+t669,t2189+t671)        
     .                 xyr_velzal(t656+t2193-1,t2191+1+t658,t2189+t660) =       
     .       1            xyr_velzas(t667+t2193-1,t2191+1+t669,t2189+t671)      
     .                 xyr_velzal(t656+t2193-1,t2191+2+t658,t2189+t660) =       
     .       1            xyr_velzas(t667+t2193-1,t2191+2+t669,t2189+t671)      
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   436      select case (IDCloudMethod)
   437      case (IDCloudMethodMarsCond)
   438        xyz_PTempAl = xyz_PTempAs
     .        if (xyz_ptempal.DSC.U2 - t140 + 1 .gt. 0) then                    
     .           J19 = and(xyz_ptempal.DSC.U2 - t140 + 1,3)                     
     .  !CDIR    NODEP                                                          
     .           do t2491 = 1, J19                                              
     .  !CDIR       NODEP                                                       
     .              do t2493 = 1, xyz_ptempal.DSC.U1 - t138 + 1                 
     .                 xyz_ptempal(t138+t2493-1,t2491-1+t140,t2489+t142) =      
     .       1            xyz_ptempas(t149+t2493-1,t2491-1+t151,t2489+t153)     
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2491 = J19 + 1, xyz_ptempal.DSC.U2 - t140 + 1, 4           
     .  !CDIR       NODEP                                                       
     .              do t2493 = 1, xyz_ptempal.DSC.U1 - t138 + 1                 
     .                 xyz_ptempal(t138+t2493-1,t2491-1+t140,t2489+t142) =      
     .       1            xyz_ptempas(t149+t2493-1,t2491-1+t151,t2489+t153)     
     .                 xyz_ptempal(t138+t2493-1,t2491+t140,t2489+t142) =        
     .       1            xyz_ptempas(t149+t2493-1,t2491+t151,t2489+t153)       
     .                 xyz_ptempal(t138+t2493-1,t2491+1+t140,t2489+t142) =      
     .       1            xyz_ptempas(t149+t2493-1,t2491+1+t151,t2489+t153)     
     .                 xyz_ptempal(t138+t2493-1,t2491+2+t140,t2489+t142) =      
     .       1            xyz_ptempas(t149+t2493-1,t2491+2+t151,t2489+t153)     
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   439        xyz_CDensAl = xyz_CDensAs
     .        if (xyz_cdensal.DSC.U2 - t228 + 1 .gt. 0) then                    
     .           J20 = and(xyz_cdensal.DSC.U2 - t228 + 1,3)                     
     .  !CDIR    NODEP                                                          
     .           do t2503 = 1, J20                                              
     .  !CDIR       NODEP                                                       
     .              do t2505 = 1, xyz_cdensal.DSC.U1 - t226 + 1                 
     .                 xyz_cdensal(t226+t2505-1,t2503-1+t228,t2501+t230) =      
     .       1            xyz_cdensas(t237+t2505-1,t2503-1+t239,t2501+t241)     
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2503 = J20 + 1, xyz_cdensal.DSC.U2 - t228 + 1, 4           
     .  !CDIR       NODEP                                                       
     .              do t2505 = 1, xyz_cdensal.DSC.U1 - t226 + 1                 
     .                 xyz_cdensal(t226+t2505-1,t2503-1+t228,t2501+t230) =      
     .       1            xyz_cdensas(t237+t2505-1,t2503-1+t239,t2501+t241)     
     .                 xyz_cdensal(t226+t2505-1,t2503+t228,t2501+t230) =        
     .       1            xyz_cdensas(t237+t2505-1,t2503+t239,t2501+t241)       
     .                 xyz_cdensal(t226+t2505-1,t2503+1+t228,t2501+t230) =      
     .       1            xyz_cdensas(t237+t2505-1,t2503+1+t239,t2501+t241)     
     .                 xyz_cdensal(t226+t2505-1,t2503+2+t228,t2501+t230) =      
     .       1            xyz_cdensas(t237+t2505-1,t2503+2+t239,t2501+t241)     
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   440      end select
   441  
   442      !
   443      ! clear tendency
   444      !
   445      pyz_DVelXDtNl = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t2201 = 1, (pyz_dvelxdtnl.DSC.U3 - pyz_dvelxdtnl.DSC.L3 + 1)*( 
     .       1   pyz_dvelxdtnl.DSC.U2 - pyz_dvelxdtnl.DSC.L2 + 1)*(             
     .       2   pyz_dvelxdtnl.DSC.U1 - pyz_dvelxdtnl.DSC.L1 + 1)               
     .           pyz_dvelxdtnl(pyz_dvelxdtnl.DSC.L1+t2201-1,pyz_dvelxdtnl.DSC.L2
     .       1      ,pyz_dvelxdtnl.DSC.L3) = 0.0000000000000000e+000            
     .        end do                                                            
   446      xqz_DVelYDtNl = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t2210 = 1, (xqz_dvelydtnl.DSC.U3 - xqz_dvelydtnl.DSC.L3 + 1)*( 
     .       1   xqz_dvelydtnl.DSC.U2 - xqz_dvelydtnl.DSC.L2 + 1)*(             
     .       2   xqz_dvelydtnl.DSC.U1 - xqz_dvelydtnl.DSC.L1 + 1)               
     .           xqz_dvelydtnl(xqz_dvelydtnl.DSC.L1+t2210-1,xqz_dvelydtnl.DSC.L2
     .       1      ,xqz_dvelydtnl.DSC.L3) = 0.0000000000000000e+000            
     .        end do                                                            
   447      xyr_DVelZDtNl = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t2219 = 1, (xyr_dvelzdtnl.DSC.U3 - xyr_dvelzdtnl.DSC.L3 + 1)*( 
     .       1   xyr_dvelzdtnl.DSC.U2 - xyr_dvelzdtnl.DSC.L2 + 1)*(             
     .       2   xyr_dvelzdtnl.DSC.U1 - xyr_dvelzdtnl.DSC.L1 + 1)               
     .           xyr_dvelzdtnl(xyr_dvelzdtnl.DSC.L1+t2219-1,xyr_dvelzdtnl.DSC.L2
     .       1      ,xyr_dvelzdtnl.DSC.L3) = 0.0000000000000000e+000            
     .        end do                                                            
   448      xyz_DKmDtNl   = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t2228 = 1, (xyz_dkmdtnl.DSC.U3 - xyz_dkmdtnl.DSC.L3 + 1)*(     
     .       1   xyz_dkmdtnl.DSC.U2 - xyz_dkmdtnl.DSC.L2 + 1)*(                 
     .       2   xyz_dkmdtnl.DSC.U1 - xyz_dkmdtnl.DSC.L1 + 1)                   
     .           xyz_dkmdtnl(xyz_dkmdtnl.DSC.L1+t2228-1,xyz_dkmdtnl.DSC.L2,     
     .       1      xyz_dkmdtnl.DSC.L3) = 0.0000000000000000e+000               
     .        end do                                                            
   449      xyz_DPTempDtNl = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t2237=1,(t375-t376+1)*(t373-t374+1)*(t371-t372+1)              
     .           xyz_dptempdtnl(t372+t2237-1,t374,t376) =                       
     .       1      0.0000000000000000e+000                                     
     .        end do                                                            
   450      xyz_DExnerDtNl = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t2246 = 1, (xyz_dexnerdtnl.DSC.U3 - xyz_dexnerdtnl.DSC.L3 + 1)*
     .       1   (xyz_dexnerdtnl.DSC.U2 - xyz_dexnerdtnl.DSC.L2 + 1)*(          
     .       2   xyz_dexnerdtnl.DSC.U1 - xyz_dexnerdtnl.DSC.L1 + 1)             
     .           xyz_dexnerdtnl(xyz_dexnerdtnl.DSC.L1+t2246-1,                  
     .       1      xyz_dexnerdtnl.DSC.L2,xyz_dexnerdtnl.DSC.L3) =              
     .       2      0.0000000000000000e+000                                     
     .        end do                                                            
   451      xyz_DCDensDtNl = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t2255 = 1, (xyz_dcdensdtnl.DSC.U3 - xyz_dcdensdtnl.DSC.L3 + 1)*
     .       1   (xyz_dcdensdtnl.DSC.U2 - xyz_dcdensdtnl.DSC.L2 + 1)*(          
     .       2   xyz_dcdensdtnl.DSC.U1 - xyz_dcdensdtnl.DSC.L1 + 1)             
     .           xyz_dcdensdtnl(xyz_dcdensdtnl.DSC.L1+t2255-1,                  
     .       1      xyz_dcdensdtnl.DSC.L2,xyz_dcdensdtnl.DSC.L3) =              
     .       2      0.0000000000000000e+000                                     
     .        end do                                                            
   452      xyzf_DQMixDtNl = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t2264 = 1, (xyzf_dqmixdtnl.DSC.U4 - xyzf_dqmixdtnl.DSC.L4 + 1)*
     .       1   (xyzf_dqmixdtnl.DSC.U3 - xyzf_dqmixdtnl.DSC.L3 + 1)*(          
     .       2   xyzf_dqmixdtnl.DSC.U2 - xyzf_dqmixdtnl.DSC.L2 + 1)*(           
     .       3   xyzf_dqmixdtnl.DSC.U1 - xyzf_dqmixdtnl.DSC.L1 + 1)             
     .           xyzf_dqmixdtnl(xyzf_dqmixdtnl.DSC.L1+t2264-1,                  
     .       1      xyzf_dqmixdtnl.DSC.L2,xyzf_dqmixdtnl.DSC.L3,                
     .       2      xyzf_dqmixdtnl.DSC.L4) = 0.0000000000000000e+000            
     .        end do                                                            
   453  
   454  
   455      ! 時間フィルタ.
   456      ! Time filter.
   457      !   t = 0 の時はオイラー法でループを回すので適用しない.
   458      !
   459      if (TimeN /= 0.0d0) then
   460        write(*,*) "call AsselinFilter"
   461        call AsselinFilter( &
   462          & pyz_VelXAl,     & ! (in)
   463          & pyz_VelXNl,     & ! (inout)
   464          & pyz_VelXBl      & ! (in)
   465          & )
   466        call AsselinFilter( &
   467          & xqz_VelYAl,     & ! (in)
   468          & xqz_VelYNl,     & ! (inout)
   469          & xqz_VelYBl      & ! (in)
   470          & )
   471        call AsselinFilter( &
   472          & xyr_VelZAl,     & ! (in)
   473          & xyr_VelZNl,     & ! (inout)
   474          & xyr_VelZBl      & ! (in)
   475          & )
   476        call AsselinFilter( &
   477          & xyz_PTempAl,  & ! (in)
   478          & xyz_PTempNl,  & ! (inout)
   479          & xyz_PTempBl   & ! (in)
   480          & )
   481        call AsselinFilter( &
   482          &  xyz_ExnerAl,   & ! (in)
   483          &  xyz_ExnerNl,   & ! (inout)
   484          &  xyz_ExnerBl    & ! (in)
   485          & )
   486        call AsselinFilter( &
   487          & xyz_KmAl,       & ! (in)
   488          & xyz_KmNl,       & ! (inout)
   489          & xyz_KmBl        & ! (in)
   490          & )
   491        call AsselinFilter( &
   492          & xyz_CDensAl,       & ! (in)
   493          & xyz_CDensNl,       & ! (inout)
   494          & xyz_CDensBl        & ! (in)
   495          & )
   496        do s = 1, ncmax
   497          call AsselinFilter(         &
   498            &   xyzf_QMixAl(:,:,:,s), &
   499            &   xyzf_QMixNl(:,:,:,s), &
   500            &   xyzf_QMixBl(:,:,:,s)  &
   501            & )
   502        end do
   503      end if
   504  
   505      !------------------------------------------
   506      ! スポンジ層; sponge layer
   507      !
   508      call SpongeLayer_forcing(                    &
   509        & pyz_VelXBl,  xqz_VelYBl,  xyr_VelZBl,    & !(in)
   510        & xyz_PTempBl, xyz_ExnerBl,                & !(in)
   511        & pyz_VelXAl,  xqz_VelYAl,  xyr_VelZAl,    & !(inout)
   512        & xyz_PTempAl, xyz_ExnerAl              )    !(inout)
   513  
   514      !------------------------------------------
   515      ! 移流に対する CFL 条件のチェック
   516      ! CFL condtion check for advection
   517      !
   518  !!$    call CFLCheckTimeLongVelX( pyz_VelXNl ) !(in)
   519  !!$    call CFLCheckTimeLongVelY( xqz_VelYNl ) !(in)
   520  !!$    call CFLCheckTimeLongVelZ( xyr_VelZNl ) !(in)
   521  
   522      ! ヒストリファイル出力.
   523      ! Out put to history file.
   524      !
   525      xyz_VelXNl = xyz_avr_pyz(pyz_VelXNl)
   526      xyz_VelYNl = xyz_avr_xqz(xqz_VelYNl)
   527      xyz_VelZNl = xyz_avr_xyr(xyr_VelZNl)
   528  
   529      call HistoryAutoPut(TimeN, 'PTemp', xyz_PTempNl(1:nx, 1:ny, 1:nz))
   530      call HistoryAutoPut(TimeN, 'PTempAll', xyz_PTempNl(1:nx, 1:ny, 1:nz) + xyz_PTempBZ(1:nx, 1:ny, 1:nz))
     .        if (ny .gt. 0) then                                               
     .           J21 = and(ny,3)                                                
     .  !CDIR    NODEP                                                          
     .           do t2278 = 1, J21                                              
     .  !CDIR       NODEP                                                       
     .              do t2280 = 1, nx                                            
     .                 %IG27(t2280,t2278,t2276+1) = xyz_ptempnl(t2280,t2278,    
     .       1            t2276+1) + xyz_ptempbz(t2280,t2278,t2276+1)           
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2278 = J21 + 1, ny, 4                                      
     .  !CDIR       NODEP                                                       
     .              do t2280 = 1, nx                                            
     .                 %IG27(t2280,t2278,t2276+1) = xyz_ptempnl(t2280,t2278,    
     .       1            t2276+1) + xyz_ptempbz(t2280,t2278,t2276+1)           
     .                 %IG27(t2280,t2278+1,t2276+1) = xyz_ptempnl(t2280,t2278+1,
     .       1            t2276+1) + xyz_ptempbz(t2280,t2278+1,t2276+1)         
     .                 %IG27(t2280,t2278+2,t2276+1) = xyz_ptempnl(t2280,t2278+2,
     .       1            t2276+1) + xyz_ptempbz(t2280,t2278+2,t2276+1)         
     .                 %IG27(t2280,t2278+3,t2276+1) = xyz_ptempnl(t2280,t2278+3,
     .       1            t2276+1) + xyz_ptempbz(t2280,t2278+3,t2276+1)         
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   531      call HistoryAutoPut(TimeN, 'Exner', xyz_ExnerNl(1:nx, 1:ny, 1:nz))
   532      call HistoryAutoPut(TimeN, 'ExnerAll', xyz_ExnerNl(1:nx, 1:ny, 1:nz) + xyz_ExnerBZ(1:nx, 1:ny, 1:nz))
     .        if (ny .gt. 0) then                                               
     .           J22 = and(ny,3)                                                
     .  !CDIR    NODEP                                                          
     .           do t2293 = 1, J22                                              
     .  !CDIR       NODEP                                                       
     .              do t2295 = 1, nx                                            
     .                 %IG34(t2295,t2293,t2291+1) = xyz_exnernl(t2295,t2293,    
     .       1            t2291+1) + xyz_exnerbz(t2295,t2293,t2291+1)           
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2293 = J22 + 1, ny, 4                                      
     .  !CDIR       NODEP                                                       
     .              do t2295 = 1, nx                                            
     .                 %IG34(t2295,t2293,t2291+1) = xyz_exnernl(t2295,t2293,    
     .       1            t2291+1) + xyz_exnerbz(t2295,t2293,t2291+1)           
     .                 %IG34(t2295,t2293+1,t2291+1) = xyz_exnernl(t2295,t2293+1,
     .       1            t2291+1) + xyz_exnerbz(t2295,t2293+1,t2291+1)         
     .                 %IG34(t2295,t2293+2,t2291+1) = xyz_exnernl(t2295,t2293+2,
     .       1            t2291+1) + xyz_exnerbz(t2295,t2293+2,t2291+1)         
     .                 %IG34(t2295,t2293+3,t2291+1) = xyz_exnernl(t2295,t2293+3,
     .       1            t2291+1) + xyz_exnerbz(t2295,t2293+3,t2291+1)         
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   533      call HistoryAutoPut(TimeN, 'VelX',  xyz_VelXNl(1:nx, 1:ny, 1:nz))
   534      call HistoryAutoPut(TimeN, 'VelY',  xyz_VelYNl(1:nx, 1:ny, 1:nz))
   535      call HistoryAutoPut(TimeN, 'VelZ',  xyz_VelZNl(1:nx, 1:ny, 1:nz))
   536      call HistoryAutoPut(TimeN, 'Km',    xyz_KmNl(1:nx, 1:ny, 1:nz))
   537      call HistoryAutoPut(TimeN, 'Kh',    xyz_KhNl(1:nx, 1:ny, 1:nz))
   538      call HistoryAutoPut(TimeN, 'CDens', xyz_CDensNl(1:nx, 1:ny, 1:nz))
   539      do s = 1, ncmax
   540        call HistoryAutoPut(TimeN, trim(SpcWetSymbol(s)), xyzf_QMixNl(1:nx, 1:ny, 1:nz, s))
   541        call HistoryAutoPut(TimeN, trim(SpcWetSymbol(s))//'All', xyzf_QMixNl(1:nx, 1:ny, 1:nz, s) + xyzf_QMixBZ(1:nx, 1:ny, 1:nz, s))
     .        if (ny .gt. 0) then                                               
     .           J23 = and(ny,3)                                                
     .  !CDIR    NODEP                                                          
     .           do t2308 = 1, J23                                              
     .  !CDIR       NODEP                                                       
     .              do t2310 = 1, nx                                            
     .                 %IG43(t2310,t2308,t2306+1) = xyzf_qmixnl(t2310,t2308,    
     .       1            t2306+1,s) + xyzf_qmixbz(t2310,t2308,t2306+1,s)       
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2308 = J23 + 1, ny, 4                                      
     .  !CDIR       NODEP                                                       
     .              do t2310 = 1, nx                                            
     .                 %IG43(t2310,t2308,t2306+1) = xyzf_qmixnl(t2310,t2308,    
     .       1            t2306+1,s) + xyzf_qmixbz(t2310,t2308,t2306+1,s)       
     .                 %IG43(t2310,t2308+1,t2306+1) = xyzf_qmixnl(t2310,t2308+1,
     .       1            t2306+1,s) + xyzf_qmixbz(t2310,t2308+1,t2306+1,s)     
     .                 %IG43(t2310,t2308+2,t2306+1) = xyzf_qmixnl(t2310,t2308+2,
     .       1            t2306+1,s) + xyzf_qmixbz(t2310,t2308+2,t2306+1,s)     
     .                 %IG43(t2310,t2308+3,t2306+1) = xyzf_qmixnl(t2310,t2308+3,
     .       1            t2306+1,s) + xyzf_qmixbz(t2310,t2308+3,t2306+1,s)     
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   542      end do
   543  
   544      !----------------------------------------------------
   545      ! リスタートファイルの作成
   546      ! Make restartfile.
   547      !
   548      if (mod(t, NstepOutput) == 0) then
   549  
   550        ! ファイル出力
   551        !
   552        call HistoryPut( 't',     TimeN,       rstat)
   553        call HistoryPut( 'VelX',  pyz_VelXNl,  rstat)
   554        call HistoryPut( 'VelY',  xqz_VelYNl,  rstat)
   555        call HistoryPut( 'VelZ',  xyr_VelZNl,  rstat)
   556        call HistoryPut( 'Exner', xyz_ExnerNl, rstat)
   557        call HistoryPut( 'PTemp', xyz_PTempNl, rstat)
   558        call HistoryPut( 'Km',    xyz_KmNl,    rstat)
   559        call HistoryPut( 'Kh',    xyz_KhNl,    rstat)
   560        call HistoryPut( 'CDens', xyz_CDensNl, rstat)
   561        call HistoryPut( 'QMix',  xyzf_QMixNl, rstat)
   562  
   563        call HistoryPut( 't',     TimeA,       rstat)
   564        call HistoryPut( 'VelX',  pyz_VelXAl,  rstat)
   565        call HistoryPut( 'VelY',  xqz_VelYAl,  rstat)
   566        call HistoryPut( 'VelZ',  xyr_VelZAl,  rstat)
   567        call HistoryPut( 'Exner', xyz_ExnerAl, rstat)
   568        call HistoryPut( 'PTemp', xyz_PTempAl, rstat)
   569        call HistoryPut( 'Km',    xyz_KmAl,    rstat)
   570        call HistoryPut( 'Kh',    xyz_KhAl,    rstat)
   571        call HistoryPut( 'CDens', xyz_CDensAl, rstat)
   572        call HistoryPut( 'QMix',  xyzf_QMixAl, rstat)
   573  
   574        ! Show CPU time
   575        !
   576        call ClocksetPredict
   577  
   578      end if
   579  
   580      ! 長い時間ステップのループを回すための処置.
   581      ! Renew prognostic variables for next long time step integration.
   582      !
   583      pyz_VelXBl  = pyz_VelXNl;  pyz_VelXNl  = pyz_VelXAl
     .        if (pyz_velxbl.DSC.U2 - t570 + 1 .gt. 0) then                     
     .           J24 = and(pyz_velxbl.DSC.U2 - t570 + 1,1)                      
     .  !CDIR    NODEP                                                          
     .           do t2323 = 1, J24                                              
     .  !CDIR       NODEP                                                       
     .              do t2325 = 1, pyz_velxbl.DSC.U1 - t568 + 1                  
     .                 pyz_velxbl(t568+t2325-1,t2323-1+t570,t2321+t572) =       
     .       1            pyz_velxnl(pyz_velxnl.DSC.L1+t2325-1,t2323-1+         
     .       2            pyz_velxnl.DSC.L2,t2321+pyz_velxnl.DSC.L3)            
     .                 pyz_velxnl(pyz_velxnl.DSC.L1+t2325-1,t2323-1+            
     .       1            pyz_velxnl.DSC.L2,t2321+pyz_velxnl.DSC.L3) =          
     .       2            pyz_velxal(t546+t2325-1,t2323-1+t548,t2321+t550)      
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2323 = J24 + 1, pyz_velxbl.DSC.U2 - t570 + 1, 2            
     .  !CDIR       NODEP                                                       
     .              do t2325 = 1, pyz_velxbl.DSC.U1 - t568 + 1                  
     .                 pyz_velxbl(t568+t2325-1,t2323-1+t570,t2321+t572) =       
     .       1            pyz_velxnl(pyz_velxnl.DSC.L1+t2325-1,t2323-1+         
     .       2            pyz_velxnl.DSC.L2,t2321+pyz_velxnl.DSC.L3)            
     .                 pyz_velxbl(t568+t2325-1,t2323+t570,t2321+t572) =         
     .       1            pyz_velxnl(pyz_velxnl.DSC.L1+t2325-1,t2323+           
     .       2            pyz_velxnl.DSC.L2,t2321+pyz_velxnl.DSC.L3)            
     .                 pyz_velxnl(pyz_velxnl.DSC.L1+t2325-1,t2323-1+            
     .       1            pyz_velxnl.DSC.L2,t2321+pyz_velxnl.DSC.L3) =          
     .       2            pyz_velxal(t546+t2325-1,t2323-1+t548,t2321+t550)      
     .                 pyz_velxnl(pyz_velxnl.DSC.L1+t2325-1,t2323+              
     .       1            pyz_velxnl.DSC.L2,t2321+pyz_velxnl.DSC.L3) =          
     .       2            pyz_velxal(t546+t2325-1,t2323+t548,t2321+t550)        
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   584      xqz_VelYBl  = xqz_VelYNl;  xqz_VelYNl  = xqz_VelYAl
     .        if (xqz_velybl.DSC.U2 - t625 + 1 .gt. 0) then                     
     .           J25 = and(xqz_velybl.DSC.U2 - t625 + 1,1)                      
     .  !CDIR    NODEP                                                          
     .           do t2341 = 1, J25                                              
     .  !CDIR       NODEP                                                       
     .              do t2343 = 1, xqz_velybl.DSC.U1 - t623 + 1                  
     .                 xqz_velybl(t623+t2343-1,t2341-1+t625,t2339+t627) =       
     .       1            xqz_velynl(xqz_velynl.DSC.L1+t2343-1,t2341-1+         
     .       2            xqz_velynl.DSC.L2,t2339+xqz_velynl.DSC.L3)            
     .                 xqz_velynl(xqz_velynl.DSC.L1+t2343-1,t2341-1+            
     .       1            xqz_velynl.DSC.L2,t2339+xqz_velynl.DSC.L3) =          
     .       2            xqz_velyal(t601+t2343-1,t2341-1+t603,t2339+t605)      
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2341 = J25 + 1, xqz_velybl.DSC.U2 - t625 + 1, 2            
     .  !CDIR       NODEP                                                       
     .              do t2343 = 1, xqz_velybl.DSC.U1 - t623 + 1                  
     .                 xqz_velybl(t623+t2343-1,t2341-1+t625,t2339+t627) =       
     .       1            xqz_velynl(xqz_velynl.DSC.L1+t2343-1,t2341-1+         
     .       2            xqz_velynl.DSC.L2,t2339+xqz_velynl.DSC.L3)            
     .                 xqz_velybl(t623+t2343-1,t2341+t625,t2339+t627) =         
     .       1            xqz_velynl(xqz_velynl.DSC.L1+t2343-1,t2341+           
     .       2            xqz_velynl.DSC.L2,t2339+xqz_velynl.DSC.L3)            
     .                 xqz_velynl(xqz_velynl.DSC.L1+t2343-1,t2341-1+            
     .       1            xqz_velynl.DSC.L2,t2339+xqz_velynl.DSC.L3) =          
     .       2            xqz_velyal(t601+t2343-1,t2341-1+t603,t2339+t605)      
     .                 xqz_velynl(xqz_velynl.DSC.L1+t2343-1,t2341+              
     .       1            xqz_velynl.DSC.L2,t2339+xqz_velynl.DSC.L3) =          
     .       2            xqz_velyal(t601+t2343-1,t2341+t603,t2339+t605)        
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   585      xyr_VelZBl  = xyr_VelZNl;  xyr_VelZNl  = xyr_VelZAl
     .        if (xyr_velzbl.DSC.U2 - t680 + 1 .gt. 0) then                     
     .           J26 = and(xyr_velzbl.DSC.U2 - t680 + 1,1)                      
     .  !CDIR    NODEP                                                          
     .           do t2359 = 1, J26                                              
     .  !CDIR       NODEP                                                       
     .              do t2361 = 1, xyr_velzbl.DSC.U1 - t678 + 1                  
     .                 xyr_velzbl(t678+t2361-1,t2359-1+t680,t2357+t682) =       
     .       1            xyr_velznl(xyr_velznl.DSC.L1+t2361-1,t2359-1+         
     .       2            xyr_velznl.DSC.L2,t2357+xyr_velznl.DSC.L3)            
     .                 xyr_velznl(xyr_velznl.DSC.L1+t2361-1,t2359-1+            
     .       1            xyr_velznl.DSC.L2,t2357+xyr_velznl.DSC.L3) =          
     .       2            xyr_velzal(t656+t2361-1,t2359-1+t658,t2357+t660)      
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2359 = J26 + 1, xyr_velzbl.DSC.U2 - t680 + 1, 2            
     .  !CDIR       NODEP                                                       
     .              do t2361 = 1, xyr_velzbl.DSC.U1 - t678 + 1                  
     .                 xyr_velzbl(t678+t2361-1,t2359-1+t680,t2357+t682) =       
     .       1            xyr_velznl(xyr_velznl.DSC.L1+t2361-1,t2359-1+         
     .       2            xyr_velznl.DSC.L2,t2357+xyr_velznl.DSC.L3)            
     .                 xyr_velzbl(t678+t2361-1,t2359+t680,t2357+t682) =         
     .       1            xyr_velznl(xyr_velznl.DSC.L1+t2361-1,t2359+           
     .       2            xyr_velznl.DSC.L2,t2357+xyr_velznl.DSC.L3)            
     .                 xyr_velznl(xyr_velznl.DSC.L1+t2361-1,t2359-1+            
     .       1            xyr_velznl.DSC.L2,t2357+xyr_velznl.DSC.L3) =          
     .       2            xyr_velzal(t656+t2361-1,t2359-1+t658,t2357+t660)      
     .                 xyr_velznl(xyr_velznl.DSC.L1+t2361-1,t2359+              
     .       1            xyr_velznl.DSC.L2,t2357+xyr_velznl.DSC.L3) =          
     .       2            xyr_velzal(t656+t2361-1,t2359+t658,t2357+t660)        
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   586      xyz_PTempBl = xyz_PTempNl; xyz_PTempNl = xyz_PTempAl
     .        if (xyz_ptempbl.DSC.U2 - t162 + 1 .gt. 0) then                    
     .           J27 = and(xyz_ptempbl.DSC.U2 - t162 + 1,1)                     
     .  !CDIR    NODEP                                                          
     .           do t2377 = 1, J27                                              
     .  !CDIR       NODEP                                                       
     .              do t2379 = 1, xyz_ptempbl.DSC.U1 - t160 + 1                 
     .                 xyz_ptempbl(t160+t2379-1,t2377-1+t162,t2375+t164) =      
     .       1            xyz_ptempnl(t171+t2379-1,t2377-1+t173,t2375+t175)     
     .                 xyz_ptempnl(t171+t2379-1,t2377-1+t173,t2375+t175) =      
     .       1            xyz_ptempal(t138+t2379-1,t2377-1+t140,t2375+t142)     
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2377 = J27 + 1, xyz_ptempbl.DSC.U2 - t162 + 1, 2           
     .  !CDIR       NODEP                                                       
     .              do t2379 = 1, xyz_ptempbl.DSC.U1 - t160 + 1                 
     .                 xyz_ptempbl(t160+t2379-1,t2377-1+t162,t2375+t164) =      
     .       1            xyz_ptempnl(t171+t2379-1,t2377-1+t173,t2375+t175)     
     .                 xyz_ptempbl(t160+t2379-1,t2377+t162,t2375+t164) =        
     .       1            xyz_ptempnl(t171+t2379-1,t2377+t173,t2375+t175)       
     .                 xyz_ptempnl(t171+t2379-1,t2377-1+t173,t2375+t175) =      
     .       1            xyz_ptempal(t138+t2379-1,t2377-1+t140,t2375+t142)     
     .                 xyz_ptempnl(t171+t2379-1,t2377+t173,t2375+t175) =        
     .       1            xyz_ptempal(t138+t2379-1,t2377+t140,t2375+t142)       
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   587      xyz_ExnerBl = xyz_ExnerNl; xyz_ExnerNl = xyz_ExnerAl
     .        if (xyz_exnerbl.DSC.U2 - t482 + 1 .gt. 0) then                    
     .           J28 = and(xyz_exnerbl.DSC.U2 - t482 + 1,1)                     
     .  !CDIR    NODEP                                                          
     .           do t2395 = 1, J28                                              
     .  !CDIR       NODEP                                                       
     .              do t2397 = 1, xyz_exnerbl.DSC.U1 - t480 + 1                 
     .                 xyz_exnerbl(t480+t2397-1,t2395-1+t482,t2393+t484) =      
     .       1            xyz_exnernl(t491+t2397-1,t2395-1+t493,t2393+t495)     
     .                 xyz_exnernl(t491+t2397-1,t2395-1+t493,t2393+t495) =      
     .       1            xyz_exneral(t458+t2397-1,t2395-1+t460,t2393+t462)     
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2395 = J28 + 1, xyz_exnerbl.DSC.U2 - t482 + 1, 2           
     .  !CDIR       NODEP                                                       
     .              do t2397 = 1, xyz_exnerbl.DSC.U1 - t480 + 1                 
     .                 xyz_exnerbl(t480+t2397-1,t2395-1+t482,t2393+t484) =      
     .       1            xyz_exnernl(t491+t2397-1,t2395-1+t493,t2393+t495)     
     .                 xyz_exnerbl(t480+t2397-1,t2395+t482,t2393+t484) =        
     .       1            xyz_exnernl(t491+t2397-1,t2395+t493,t2393+t495)       
     .                 xyz_exnernl(t491+t2397-1,t2395-1+t493,t2393+t495) =      
     .       1            xyz_exneral(t458+t2397-1,t2395-1+t460,t2393+t462)     
     .                 xyz_exnernl(t491+t2397-1,t2395+t493,t2393+t495) =        
     .       1            xyz_exneral(t458+t2397-1,t2395+t460,t2393+t462)       
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   588      xyz_KmBl    = xyz_KmNl;    xyz_KmNl    = xyz_KmAl
     .        if (xyz_kmbl.DSC.U2 - xyz_kmbl.DSC.L2 + 1 .gt. 0) then            
     .           J29 = and(xyz_kmbl.DSC.U2 - xyz_kmbl.DSC.L2 + 1,1)             
     .  !CDIR    NODEP                                                          
     .           do t2413 = 1, J29                                              
     .  !CDIR       NODEP                                                       
     .              do t2415 = 1, xyz_kmbl.DSC.U1 - xyz_kmbl.DSC.L1 + 1         
     .                 xyz_kmbl(xyz_kmbl.DSC.L1+t2415-1,t2413-1+xyz_kmbl.DSC.L2,
     .       1            t2411+xyz_kmbl.DSC.L3) = xyz_kmnl(t215+t2415-1,t2413-1
     .       2            +t217,t2411+t219)                                     
     .                 xyz_kmnl(t215+t2415-1,t2413-1+t217,t2411+t219) = xyz_kmal
     .       1            (xyz_kmal.DSC.L1+t2415-1,t2413-1+xyz_kmal.DSC.L2,t2411
     .       2            +xyz_kmal.DSC.L3)                                     
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2413 = J29 + 1, xyz_kmbl.DSC.U2 - xyz_kmbl.DSC.L2 + 1, 2   
     .  !CDIR       NODEP                                                       
     .              do t2415 = 1, xyz_kmbl.DSC.U1 - xyz_kmbl.DSC.L1 + 1         
     .                 xyz_kmbl(xyz_kmbl.DSC.L1+t2415-1,t2413-1+xyz_kmbl.DSC.L2,
     .       1            t2411+xyz_kmbl.DSC.L3) = xyz_kmnl(t215+t2415-1,t2413-1
     .       2            +t217,t2411+t219)                                     
     .                 xyz_kmbl(xyz_kmbl.DSC.L1+t2415-1,t2413+xyz_kmbl.DSC.L2,  
     .       1            t2411+xyz_kmbl.DSC.L3) = xyz_kmnl(t215+t2415-1,t2413+ 
     .       2            t217,t2411+t219)                                      
     .                 xyz_kmnl(t215+t2415-1,t2413-1+t217,t2411+t219) = xyz_kmal
     .       1            (xyz_kmal.DSC.L1+t2415-1,t2413-1+xyz_kmal.DSC.L2,t2411
     .       2            +xyz_kmal.DSC.L3)                                     
     .                 xyz_kmnl(t215+t2415-1,t2413+t217,t2411+t219) = xyz_kmal( 
     .       1            xyz_kmal.DSC.L1+t2415-1,t2413+xyz_kmal.DSC.L2,t2411+  
     .       2            xyz_kmal.DSC.L3)                                      
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   589      xyz_KhBl    = xyz_KhNl;    xyz_KhNl    = xyz_KhAl
     .        if (xyz_khbl.DSC.U2 - xyz_khbl.DSC.L2 + 1 .gt. 0) then            
     .           J30 = and(xyz_khbl.DSC.U2 - xyz_khbl.DSC.L2 + 1,1)             
     .  !CDIR    NODEP                                                          
     .           do t2431 = 1, J30                                              
     .  !CDIR       NODEP                                                       
     .              do t2433 = 1, xyz_khbl.DSC.U1 - xyz_khbl.DSC.L1 + 1         
     .                 xyz_khbl(xyz_khbl.DSC.L1+t2433-1,t2431-1+xyz_khbl.DSC.L2,
     .       1            t2429+xyz_khbl.DSC.L3) = xyz_khnl(t350+t2433-1,t2431-1
     .       2            +t352,t2429+t354)                                     
     .                 xyz_khnl(t350+t2433-1,t2431-1+t352,t2429+t354) = xyz_khal
     .       1            (xyz_khal.DSC.L1+t2433-1,t2431-1+xyz_khal.DSC.L2,t2429
     .       2            +xyz_khal.DSC.L3)                                     
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2431 = J30 + 1, xyz_khbl.DSC.U2 - xyz_khbl.DSC.L2 + 1, 2   
     .  !CDIR       NODEP                                                       
     .              do t2433 = 1, xyz_khbl.DSC.U1 - xyz_khbl.DSC.L1 + 1         
     .                 xyz_khbl(xyz_khbl.DSC.L1+t2433-1,t2431-1+xyz_khbl.DSC.L2,
     .       1            t2429+xyz_khbl.DSC.L3) = xyz_khnl(t350+t2433-1,t2431-1
     .       2            +t352,t2429+t354)                                     
     .                 xyz_khbl(xyz_khbl.DSC.L1+t2433-1,t2431+xyz_khbl.DSC.L2,  
     .       1            t2429+xyz_khbl.DSC.L3) = xyz_khnl(t350+t2433-1,t2431+ 
     .       2            t352,t2429+t354)                                      
     .                 xyz_khnl(t350+t2433-1,t2431-1+t352,t2429+t354) = xyz_khal
     .       1            (xyz_khal.DSC.L1+t2433-1,t2431-1+xyz_khal.DSC.L2,t2429
     .       2            +xyz_khal.DSC.L3)                                     
     .                 xyz_khnl(t350+t2433-1,t2431+t352,t2429+t354) = xyz_khal( 
     .       1            xyz_khal.DSC.L1+t2433-1,t2431+xyz_khal.DSC.L2,t2429+  
     .       2            xyz_khal.DSC.L3)                                      
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   590      xyz_CDensBl = xyz_CDensNl; xyz_CDensNl = xyz_CDensAl
     .        if (xyz_cdensbl.DSC.U2 - t250 + 1 .gt. 0) then                    
     .           J31 = and(xyz_cdensbl.DSC.U2 - t250 + 1,1)                     
     .  !CDIR    NODEP                                                          
     .           do t2449 = 1, J31                                              
     .  !CDIR       NODEP                                                       
     .              do t2451 = 1, xyz_cdensbl.DSC.U1 - t248 + 1                 
     .                 xyz_cdensbl(t248+t2451-1,t2449-1+t250,t2447+t252) =      
     .       1            xyz_cdensnl(t259+t2451-1,t2449-1+t261,t2447+t263)     
     .                 xyz_cdensnl(t259+t2451-1,t2449-1+t261,t2447+t263) =      
     .       1            xyz_cdensal(t226+t2451-1,t2449-1+t228,t2447+t230)     
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2449 = J31 + 1, xyz_cdensbl.DSC.U2 - t250 + 1, 2           
     .  !CDIR       NODEP                                                       
     .              do t2451 = 1, xyz_cdensbl.DSC.U1 - t248 + 1                 
     .                 xyz_cdensbl(t248+t2451-1,t2449-1+t250,t2447+t252) =      
     .       1            xyz_cdensnl(t259+t2451-1,t2449-1+t261,t2447+t263)     
     .                 xyz_cdensbl(t248+t2451-1,t2449+t250,t2447+t252) =        
     .       1            xyz_cdensnl(t259+t2451-1,t2449+t261,t2447+t263)       
     .                 xyz_cdensnl(t259+t2451-1,t2449-1+t261,t2447+t263) =      
     .       1            xyz_cdensal(t226+t2451-1,t2449-1+t228,t2447+t230)     
     .                 xyz_cdensnl(t259+t2451-1,t2449+t261,t2447+t263) =        
     .       1            xyz_cdensal(t226+t2451-1,t2449+t228,t2447+t230)       
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   591      xyzf_QMixBl = xyzf_QMixNl; xyzf_QMixNl = xyzf_QMixAl
     .        if (t1977 .gt. 0) then                                            
     .           J32 = and(t1977,1)                                             
     .  !CDIR    NODEP                                                          
     .           do t2469 = 1, J32                                              
     .  !CDIR       NODEP                                                       
     .              do t2471 = 1, t1979                                         
     .                 xyzf_qmixbl(t397+t2471-1,t2469-1+t399,t2467+t401,t2465+  
     .       1            t403) = xyzf_qmixnl(t411+t2471-1,t2469-1+t413,t2467+  
     .       2            t415,t2465+t417)                                      
     .                 xyzf_qmixnl(t411+t2471-1,t2469-1+t413,t2467+t415,t2465+  
     .       1            t417) = xyzf_qmixal(t383+t2471-1,t2469-1+t385,t2467+  
     .       2            t387,t2465+xyzf_qmixal.DSC.L4)                        
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t2469 = J32 + 1, t1977, 2                                   
     .  !CDIR       NODEP                                                       
     .              do t2471 = 1, t1979                                         
     .                 xyzf_qmixbl(t397+t2471-1,t2469-1+t399,t2467+t401,t2465+  
     .       1            t403) = xyzf_qmixnl(t411+t2471-1,t2469-1+t413,t2467+  
     .       2            t415,t2465+t417)                                      
     .                 xyzf_qmixbl(t397+t2471-1,t2469+t399,t2467+t401,t2465+t403
     .       1            ) = xyzf_qmixnl(t411+t2471-1,t2469+t413,t2467+t415,   
     .       2            t2465+t417)                                           
     .                 xyzf_qmixnl(t411+t2471-1,t2469-1+t413,t2467+t415,t2465+  
     .       1            t417) = xyzf_qmixal(t383+t2471-1,t2469-1+t385,t2467+  
     .       2            t387,t2465+xyzf_qmixal.DSC.L4)                        
     .                 xyzf_qmixnl(t411+t2471-1,t2469+t413,t2467+t415,t2465+t417
     .       1            ) = xyzf_qmixal(t383+t2471-1,t2469+t385,t2467+t387,   
     .       2            t2465+xyzf_qmixal.DSC.L4)                             
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   592      t = t + 1
   593  
   594      ! 時刻の進行
   595      ! Progress time
   596      !
   597      call TimesetProgress
   598  
   599    end do
   600  
   601    !----------------------------------------------------
   602    ! 出力ファイルのクローズ
   603    ! Close out put files.
   604    !
   605    call HistoryFileio_finalize
   606    call ReStartFileio_finalize
   607  
   608    !----------------------------------------------------
   609    ! MPI END
   610    !
   611    call MPIWrapperFinalize
   612  
   613    !----------------------------------------------------
   614    ! CPU Time
   615    !
   616    call ClocksetLoopStop
   617    call ClocksetClose
   618  
   619  contains
   620  !-----------------------------------------------------------------------
   621    subroutine VariableAllocate
   622      !
   623      !初期化として, 配列を定義し, 値としてゼロを代入する.
   624      !
   625  
   626      !暗黙の型宣言禁止
   627      implicit none
   628  
   629      !配列割り当て
   630      allocate( pyz_VelXBl(imin:imax,jmin:jmax,kmin:kmax) )
   631      allocate( pyz_VelXNl(imin:imax,jmin:jmax,kmin:kmax) )
   632      allocate( xyz_VelXNl(imin:imax,jmin:jmax,kmin:kmax) )
   633      allocate( pyz_VelXAl(imin:imax,jmin:jmax,kmin:kmax) )
   634      allocate( pyz_VelXNs(imin:imax,jmin:jmax,kmin:kmax) )
   635      allocate( pyz_VelXAs(imin:imax,jmin:jmax,kmin:kmax) )
   636  
   637      pyz_VelXBl  = 0.0d0;    pyz_VelXNl  = 0.0d0;    pyz_VelXAl  = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1402 = 1, (pyz_velxbl.DSC.U3 - pyz_velxbl.DSC.L3 + 1)*(       
     .       1   pyz_velxbl.DSC.U2 - pyz_velxbl.DSC.L2 + 1)*(pyz_velxbl.DSC.U1  
     .       2    - pyz_velxbl.DSC.L1 + 1)                                      
     .           pyz_velxbl(pyz_velxbl.DSC.L1+t1402-1,pyz_velxbl.DSC.L2,        
     .       1      pyz_velxbl.DSC.L3) = 0.0000000000000000e+000                
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1411 = 1, (pyz_velxnl.DSC.U3 - pyz_velxnl.DSC.L3 + 1)*(       
     .       1   pyz_velxnl.DSC.U2 - pyz_velxnl.DSC.L2 + 1)*(pyz_velxnl.DSC.U1  
     .       2    - pyz_velxnl.DSC.L1 + 1)                                      
     .           pyz_velxnl(pyz_velxnl.DSC.L1+t1411-1,pyz_velxnl.DSC.L2,        
     .       1      pyz_velxnl.DSC.L3) = 0.0000000000000000e+000                
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1420 = 1, (pyz_velxal.DSC.U3 - pyz_velxal.DSC.L3 + 1)*(       
     .       1   pyz_velxal.DSC.U2 - pyz_velxal.DSC.L2 + 1)*(pyz_velxal.DSC.U1  
     .       2    - pyz_velxal.DSC.L1 + 1)                                      
     .           pyz_velxal(pyz_velxal.DSC.L1+t1420-1,pyz_velxal.DSC.L2,        
     .       1      pyz_velxal.DSC.L3) = 0.0000000000000000e+000                
     .        end do                                                            
   638      pyz_VelXNs  = 0.0d0;    pyz_VelXAs = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1429 = 1, (pyz_velxns.DSC.U3 - pyz_velxns.DSC.L3 + 1)*(       
     .       1   pyz_velxns.DSC.U2 - pyz_velxns.DSC.L2 + 1)*(pyz_velxns.DSC.U1  
     .       2    - pyz_velxns.DSC.L1 + 1)                                      
     .           pyz_velxns(pyz_velxns.DSC.L1+t1429-1,pyz_velxns.DSC.L2,        
     .       1      pyz_velxns.DSC.L3) = 0.0000000000000000e+000                
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1438 = 1, (pyz_velxas.DSC.U3 - pyz_velxas.DSC.L3 + 1)*(       
     .       1   pyz_velxas.DSC.U2 - pyz_velxas.DSC.L2 + 1)*(pyz_velxas.DSC.U1  
     .       2    - pyz_velxas.DSC.L1 + 1)                                      
     .           pyz_velxas(pyz_velxas.DSC.L1+t1438-1,pyz_velxas.DSC.L2,        
     .       1      pyz_velxas.DSC.L3) = 0.0000000000000000e+000                
     .        end do                                                            
   639      xyz_VelXNl  = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1447 = 1, (xyz_velxnl.DSC.U3 - xyz_velxnl.DSC.L3 + 1)*(       
     .       1   xyz_velxnl.DSC.U2 - xyz_velxnl.DSC.L2 + 1)*(xyz_velxnl.DSC.U1  
     .       2    - xyz_velxnl.DSC.L1 + 1)                                      
     .           xyz_velxnl(xyz_velxnl.DSC.L1+t1447-1,xyz_velxnl.DSC.L2,        
     .       1      xyz_velxnl.DSC.L3) = 0.0000000000000000e+000                
     .        end do                                                            
   640  
   641      allocate( xqz_VelYBl(imin:imax,jmin:jmax,kmin:kmax) )
   642      allocate( xqz_VelYNl(imin:imax,jmin:jmax,kmin:kmax) )
   643      allocate( xyz_VelYNl(imin:imax,jmin:jmax,kmin:kmax) )
   644      allocate( xqz_VelYAl(imin:imax,jmin:jmax,kmin:kmax) )
   645      allocate( xqz_VelYNs(imin:imax,jmin:jmax,kmin:kmax) )
   646      allocate( xqz_VelYAs(imin:imax,jmin:jmax,kmin:kmax) )
   647  
   648      xqz_VelYBl  = 0.0d0;    xqz_VelYNl  = 0.0d0;    xqz_VelYAl  = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1456 = 1, (xqz_velybl.DSC.U3 - xqz_velybl.DSC.L3 + 1)*(       
     .       1   xqz_velybl.DSC.U2 - xqz_velybl.DSC.L2 + 1)*(xqz_velybl.DSC.U1  
     .       2    - xqz_velybl.DSC.L1 + 1)                                      
     .           xqz_velybl(xqz_velybl.DSC.L1+t1456-1,xqz_velybl.DSC.L2,        
     .       1      xqz_velybl.DSC.L3) = 0.0000000000000000e+000                
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1465 = 1, (xqz_velynl.DSC.U3 - xqz_velynl.DSC.L3 + 1)*(       
     .       1   xqz_velynl.DSC.U2 - xqz_velynl.DSC.L2 + 1)*(xqz_velynl.DSC.U1  
     .       2    - xqz_velynl.DSC.L1 + 1)                                      
     .           xqz_velynl(xqz_velynl.DSC.L1+t1465-1,xqz_velynl.DSC.L2,        
     .       1      xqz_velynl.DSC.L3) = 0.0000000000000000e+000                
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1474 = 1, (xqz_velyal.DSC.U3 - xqz_velyal.DSC.L3 + 1)*(       
     .       1   xqz_velyal.DSC.U2 - xqz_velyal.DSC.L2 + 1)*(xqz_velyal.DSC.U1  
     .       2    - xqz_velyal.DSC.L1 + 1)                                      
     .           xqz_velyal(xqz_velyal.DSC.L1+t1474-1,xqz_velyal.DSC.L2,        
     .       1      xqz_velyal.DSC.L3) = 0.0000000000000000e+000                
     .        end do                                                            
   649      xqz_VelYNs  = 0.0d0;    xqz_VelYAs = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1483 = 1, (xqz_velyns.DSC.U3 - xqz_velyns.DSC.L3 + 1)*(       
     .       1   xqz_velyns.DSC.U2 - xqz_velyns.DSC.L2 + 1)*(xqz_velyns.DSC.U1  
     .       2    - xqz_velyns.DSC.L1 + 1)                                      
     .           xqz_velyns(xqz_velyns.DSC.L1+t1483-1,xqz_velyns.DSC.L2,        
     .       1      xqz_velyns.DSC.L3) = 0.0000000000000000e+000                
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1492 = 1, (xqz_velyas.DSC.U3 - xqz_velyas.DSC.L3 + 1)*(       
     .       1   xqz_velyas.DSC.U2 - xqz_velyas.DSC.L2 + 1)*(xqz_velyas.DSC.U1  
     .       2    - xqz_velyas.DSC.L1 + 1)                                      
     .           xqz_velyas(xqz_velyas.DSC.L1+t1492-1,xqz_velyas.DSC.L2,        
     .       1      xqz_velyas.DSC.L3) = 0.0000000000000000e+000                
     .        end do                                                            
   650      xyz_VelYNl  = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1501 = 1, (xyz_velynl.DSC.U3 - xyz_velynl.DSC.L3 + 1)*(       
     .       1   xyz_velynl.DSC.U2 - xyz_velynl.DSC.L2 + 1)*(xyz_velynl.DSC.U1  
     .       2    - xyz_velynl.DSC.L1 + 1)                                      
     .           xyz_velynl(xyz_velynl.DSC.L1+t1501-1,xyz_velynl.DSC.L2,        
     .       1      xyz_velynl.DSC.L3) = 0.0000000000000000e+000                
     .        end do                                                            
   651  
   652      allocate( xyr_VelZBl(imin:imax,jmin:jmax,kmin:kmax) )
   653      allocate( xyr_VelZNl(imin:imax,jmin:jmax,kmin:kmax) )
   654      allocate( xyz_VelZNl(imin:imax,jmin:jmax,kmin:kmax) )
   655      allocate( xyr_VelZAl(imin:imax,jmin:jmax,kmin:kmax) )
   656      allocate( xyr_VelZNs(imin:imax,jmin:jmax,kmin:kmax) )
   657      allocate( xyr_VelZAs(imin:imax,jmin:jmax,kmin:kmax) )
   658  
   659      xyr_VelZBl  = 0.0d0;    xyr_VelZNl  = 0.0d0;    xyr_VelZAl  = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1510 = 1, (xyr_velzbl.DSC.U3 - xyr_velzbl.DSC.L3 + 1)*(       
     .       1   xyr_velzbl.DSC.U2 - xyr_velzbl.DSC.L2 + 1)*(xyr_velzbl.DSC.U1  
     .       2    - xyr_velzbl.DSC.L1 + 1)                                      
     .           xyr_velzbl(xyr_velzbl.DSC.L1+t1510-1,xyr_velzbl.DSC.L2,        
     .       1      xyr_velzbl.DSC.L3) = 0.0000000000000000e+000                
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1519 = 1, (xyr_velznl.DSC.U3 - xyr_velznl.DSC.L3 + 1)*(       
     .       1   xyr_velznl.DSC.U2 - xyr_velznl.DSC.L2 + 1)*(xyr_velznl.DSC.U1  
     .       2    - xyr_velznl.DSC.L1 + 1)                                      
     .           xyr_velznl(xyr_velznl.DSC.L1+t1519-1,xyr_velznl.DSC.L2,        
     .       1      xyr_velznl.DSC.L3) = 0.0000000000000000e+000                
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1528 = 1, (xyr_velzal.DSC.U3 - xyr_velzal.DSC.L3 + 1)*(       
     .       1   xyr_velzal.DSC.U2 - xyr_velzal.DSC.L2 + 1)*(xyr_velzal.DSC.U1  
     .       2    - xyr_velzal.DSC.L1 + 1)                                      
     .           xyr_velzal(xyr_velzal.DSC.L1+t1528-1,xyr_velzal.DSC.L2,        
     .       1      xyr_velzal.DSC.L3) = 0.0000000000000000e+000                
     .        end do                                                            
   660      xyr_VelZNs  = 0.0d0;    xyr_VelZAs = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1537 = 1, (xyr_velzns.DSC.U3 - xyr_velzns.DSC.L3 + 1)*(       
     .       1   xyr_velzns.DSC.U2 - xyr_velzns.DSC.L2 + 1)*(xyr_velzns.DSC.U1  
     .       2    - xyr_velzns.DSC.L1 + 1)                                      
     .           xyr_velzns(xyr_velzns.DSC.L1+t1537-1,xyr_velzns.DSC.L2,        
     .       1      xyr_velzns.DSC.L3) = 0.0000000000000000e+000                
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1546 = 1, (xyr_velzas.DSC.U3 - xyr_velzas.DSC.L3 + 1)*(       
     .       1   xyr_velzas.DSC.U2 - xyr_velzas.DSC.L2 + 1)*(xyr_velzas.DSC.U1  
     .       2    - xyr_velzas.DSC.L1 + 1)                                      
     .           xyr_velzas(xyr_velzas.DSC.L1+t1546-1,xyr_velzas.DSC.L2,        
     .       1      xyr_velzas.DSC.L3) = 0.0000000000000000e+000                
     .        end do                                                            
   661      xyz_VelZNl  = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1555 = 1, (xyz_velznl.DSC.U3 - xyz_velznl.DSC.L3 + 1)*(       
     .       1   xyz_velznl.DSC.U2 - xyz_velznl.DSC.L2 + 1)*(xyz_velznl.DSC.U1  
     .       2    - xyz_velznl.DSC.L1 + 1)                                      
     .           xyz_velznl(xyz_velznl.DSC.L1+t1555-1,xyz_velznl.DSC.L2,        
     .       1      xyz_velznl.DSC.L3) = 0.0000000000000000e+000                
     .        end do                                                            
   662  
   663      allocate( xyz_ExnerBl(imin:imax,jmin:jmax,kmin:kmax) )
   664      allocate( xyz_ExnerNl(imin:imax,jmin:jmax,kmin:kmax) )
   665      allocate( xyz_ExnerAl(imin:imax,jmin:jmax,kmin:kmax) )
   666      allocate( xyz_ExnerNs(imin:imax,jmin:jmax,kmin:kmax) )
   667      allocate( xyz_ExnerAs(imin:imax,jmin:jmax,kmin:kmax) )
   668  
   669      xyz_ExnerBl = 0.0d0;    xyz_ExnerNl = 0.0d0;    xyz_ExnerAl = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1564 = 1, (xyz_exnerbl.DSC.U3 - xyz_exnerbl.DSC.L3 + 1)*(     
     .       1   xyz_exnerbl.DSC.U2 - xyz_exnerbl.DSC.L2 + 1)*(                 
     .       2   xyz_exnerbl.DSC.U1 - xyz_exnerbl.DSC.L1 + 1)                   
     .           xyz_exnerbl(xyz_exnerbl.DSC.L1+t1564-1,xyz_exnerbl.DSC.L2,     
     .       1      xyz_exnerbl.DSC.L3) = 0.0000000000000000e+000               
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1573 = 1, (xyz_exnernl.DSC.U3 - xyz_exnernl.DSC.L3 + 1)*(     
     .       1   xyz_exnernl.DSC.U2 - xyz_exnernl.DSC.L2 + 1)*(                 
     .       2   xyz_exnernl.DSC.U1 - xyz_exnernl.DSC.L1 + 1)                   
     .           xyz_exnernl(xyz_exnernl.DSC.L1+t1573-1,xyz_exnernl.DSC.L2,     
     .       1      xyz_exnernl.DSC.L3) = 0.0000000000000000e+000               
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1582 = 1, (xyz_exneral.DSC.U3 - xyz_exneral.DSC.L3 + 1)*(     
     .       1   xyz_exneral.DSC.U2 - xyz_exneral.DSC.L2 + 1)*(                 
     .       2   xyz_exneral.DSC.U1 - xyz_exneral.DSC.L1 + 1)                   
     .           xyz_exneral(xyz_exneral.DSC.L1+t1582-1,xyz_exneral.DSC.L2,     
     .       1      xyz_exneral.DSC.L3) = 0.0000000000000000e+000               
     .        end do                                                            
   670      xyz_ExnerNs = 0.0d0;    xyz_ExnerAs = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1591 = 1, (xyz_exnerns.DSC.U3 - xyz_exnerns.DSC.L3 + 1)*(     
     .       1   xyz_exnerns.DSC.U2 - xyz_exnerns.DSC.L2 + 1)*(                 
     .       2   xyz_exnerns.DSC.U1 - xyz_exnerns.DSC.L1 + 1)                   
     .           xyz_exnerns(xyz_exnerns.DSC.L1+t1591-1,xyz_exnerns.DSC.L2,     
     .       1      xyz_exnerns.DSC.L3) = 0.0000000000000000e+000               
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1600 = 1, (xyz_exneras.DSC.U3 - xyz_exneras.DSC.L3 + 1)*(     
     .       1   xyz_exneras.DSC.U2 - xyz_exneras.DSC.L2 + 1)*(                 
     .       2   xyz_exneras.DSC.U1 - xyz_exneras.DSC.L1 + 1)                   
     .           xyz_exneras(xyz_exneras.DSC.L1+t1600-1,xyz_exneras.DSC.L2,     
     .       1      xyz_exneras.DSC.L3) = 0.0000000000000000e+000               
     .        end do                                                            
   671  
   672      allocate( xyz_PTempBl(imin:imax,jmin:jmax,kmin:kmax) )
   673      allocate( xyz_PTempNl(imin:imax,jmin:jmax,kmin:kmax) )
   674      allocate( xyz_PTempAl(imin:imax,jmin:jmax,kmin:kmax) )
   675      allocate( xyz_PTempNs(imin:imax,jmin:jmax,kmin:kmax) )
   676      allocate( xyz_PTempAs(imin:imax,jmin:jmax,kmin:kmax) )
   677  
   678      xyz_PTempBl = 0.0d0;  xyz_PTempNl = 0.0d0;  xyz_PTempAl = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1609 = 1, (xyz_ptempbl.DSC.U3 - xyz_ptempbl.DSC.L3 + 1)*(     
     .       1   xyz_ptempbl.DSC.U2 - xyz_ptempbl.DSC.L2 + 1)*(                 
     .       2   xyz_ptempbl.DSC.U1 - xyz_ptempbl.DSC.L1 + 1)                   
     .           xyz_ptempbl(xyz_ptempbl.DSC.L1+t1609-1,xyz_ptempbl.DSC.L2,     
     .       1      xyz_ptempbl.DSC.L3) = 0.0000000000000000e+000               
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1618 = 1, (xyz_ptempnl.DSC.U3 - xyz_ptempnl.DSC.L3 + 1)*(     
     .       1   xyz_ptempnl.DSC.U2 - xyz_ptempnl.DSC.L2 + 1)*(                 
     .       2   xyz_ptempnl.DSC.U1 - xyz_ptempnl.DSC.L1 + 1)                   
     .           xyz_ptempnl(xyz_ptempnl.DSC.L1+t1618-1,xyz_ptempnl.DSC.L2,     
     .       1      xyz_ptempnl.DSC.L3) = 0.0000000000000000e+000               
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1627 = 1, (xyz_ptempal.DSC.U3 - xyz_ptempal.DSC.L3 + 1)*(     
     .       1   xyz_ptempal.DSC.U2 - xyz_ptempal.DSC.L2 + 1)*(                 
     .       2   xyz_ptempal.DSC.U1 - xyz_ptempal.DSC.L1 + 1)                   
     .           xyz_ptempal(xyz_ptempal.DSC.L1+t1627-1,xyz_ptempal.DSC.L2,     
     .       1      xyz_ptempal.DSC.L3) = 0.0000000000000000e+000               
     .        end do                                                            
   679      xyz_PTempNs = 0.0d0;  xyz_PTempAs = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1636 = 1, (xyz_ptempns.DSC.U3 - xyz_ptempns.DSC.L3 + 1)*(     
     .       1   xyz_ptempns.DSC.U2 - xyz_ptempns.DSC.L2 + 1)*(                 
     .       2   xyz_ptempns.DSC.U1 - xyz_ptempns.DSC.L1 + 1)                   
     .           xyz_ptempns(xyz_ptempns.DSC.L1+t1636-1,xyz_ptempns.DSC.L2,     
     .       1      xyz_ptempns.DSC.L3) = 0.0000000000000000e+000               
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1645 = 1, (xyz_ptempas.DSC.U3 - xyz_ptempas.DSC.L3 + 1)*(     
     .       1   xyz_ptempas.DSC.U2 - xyz_ptempas.DSC.L2 + 1)*(                 
     .       2   xyz_ptempas.DSC.U1 - xyz_ptempas.DSC.L1 + 1)                   
     .           xyz_ptempas(xyz_ptempas.DSC.L1+t1645-1,xyz_ptempas.DSC.L2,     
     .       1      xyz_ptempas.DSC.L3) = 0.0000000000000000e+000               
     .        end do                                                            
   680  
   681      allocate( xyz_CDensBl(imin:imax,jmin:jmax,kmin:kmax) )
   682      allocate( xyz_CDensNl(imin:imax,jmin:jmax,kmin:kmax) )
   683      allocate( xyz_CDensAl(imin:imax,jmin:jmax,kmin:kmax) )
   684      allocate( xyz_CDensNs(imin:imax,jmin:jmax,kmin:kmax) )
   685      allocate( xyz_CDensAs(imin:imax,jmin:jmax,kmin:kmax) )
   686  
   687      xyz_CDensBl = 0.0d0;  xyz_CDensNl = 0.0d0;  xyz_CDensAl = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1654 = 1, (xyz_cdensbl.DSC.U3 - xyz_cdensbl.DSC.L3 + 1)*(     
     .       1   xyz_cdensbl.DSC.U2 - xyz_cdensbl.DSC.L2 + 1)*(                 
     .       2   xyz_cdensbl.DSC.U1 - xyz_cdensbl.DSC.L1 + 1)                   
     .           xyz_cdensbl(xyz_cdensbl.DSC.L1+t1654-1,xyz_cdensbl.DSC.L2,     
     .       1      xyz_cdensbl.DSC.L3) = 0.0000000000000000e+000               
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1663 = 1, (xyz_cdensnl.DSC.U3 - xyz_cdensnl.DSC.L3 + 1)*(     
     .       1   xyz_cdensnl.DSC.U2 - xyz_cdensnl.DSC.L2 + 1)*(                 
     .       2   xyz_cdensnl.DSC.U1 - xyz_cdensnl.DSC.L1 + 1)                   
     .           xyz_cdensnl(xyz_cdensnl.DSC.L1+t1663-1,xyz_cdensnl.DSC.L2,     
     .       1      xyz_cdensnl.DSC.L3) = 0.0000000000000000e+000               
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1672 = 1, (xyz_cdensal.DSC.U3 - xyz_cdensal.DSC.L3 + 1)*(     
     .       1   xyz_cdensal.DSC.U2 - xyz_cdensal.DSC.L2 + 1)*(                 
     .       2   xyz_cdensal.DSC.U1 - xyz_cdensal.DSC.L1 + 1)                   
     .           xyz_cdensal(xyz_cdensal.DSC.L1+t1672-1,xyz_cdensal.DSC.L2,     
     .       1      xyz_cdensal.DSC.L3) = 0.0000000000000000e+000               
     .        end do                                                            
   688      xyz_CDensNs = 0.0d0;  xyz_CDensAs = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1681 = 1, (xyz_cdensns.DSC.U3 - xyz_cdensns.DSC.L3 + 1)*(     
     .       1   xyz_cdensns.DSC.U2 - xyz_cdensns.DSC.L2 + 1)*(                 
     .       2   xyz_cdensns.DSC.U1 - xyz_cdensns.DSC.L1 + 1)                   
     .           xyz_cdensns(xyz_cdensns.DSC.L1+t1681-1,xyz_cdensns.DSC.L2,     
     .       1      xyz_cdensns.DSC.L3) = 0.0000000000000000e+000               
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1690 = 1, (xyz_cdensas.DSC.U3 - xyz_cdensas.DSC.L3 + 1)*(     
     .       1   xyz_cdensas.DSC.U2 - xyz_cdensas.DSC.L2 + 1)*(                 
     .       2   xyz_cdensas.DSC.U1 - xyz_cdensas.DSC.L1 + 1)                   
     .           xyz_cdensas(xyz_cdensas.DSC.L1+t1690-1,xyz_cdensas.DSC.L2,     
     .       1      xyz_cdensas.DSC.L3) = 0.0000000000000000e+000               
     .        end do                                                            
   689  
   690      allocate( xyz_KmBl(imin:imax,jmin:jmax,kmin:kmax) )
   691      allocate( xyz_KmNl(imin:imax,jmin:jmax,kmin:kmax) )
   692      allocate( xyz_KmAl(imin:imax,jmin:jmax,kmin:kmax) )
   693  
   694      xyz_KmBl    = 0.0d0;    xyz_KmNl    = 0.0d0;    xyz_KmAl    = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1699 = 1, (xyz_kmbl.DSC.U3 - xyz_kmbl.DSC.L3 + 1)*(           
     .       1   xyz_kmbl.DSC.U2 - xyz_kmbl.DSC.L2 + 1)*(xyz_kmbl.DSC.U1 -      
     .       2   xyz_kmbl.DSC.L1 + 1)                                           
     .           xyz_kmbl(xyz_kmbl.DSC.L1+t1699-1,xyz_kmbl.DSC.L2,              
     .       1      xyz_kmbl.DSC.L3) = 0.0000000000000000e+000                  
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1708 = 1, (xyz_kmnl.DSC.U3 - xyz_kmnl.DSC.L3 + 1)*(           
     .       1   xyz_kmnl.DSC.U2 - xyz_kmnl.DSC.L2 + 1)*(xyz_kmnl.DSC.U1 -      
     .       2   xyz_kmnl.DSC.L1 + 1)                                           
     .           xyz_kmnl(xyz_kmnl.DSC.L1+t1708-1,xyz_kmnl.DSC.L2,              
     .       1      xyz_kmnl.DSC.L3) = 0.0000000000000000e+000                  
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1717 = 1, (xyz_kmal.DSC.U3 - xyz_kmal.DSC.L3 + 1)*(           
     .       1   xyz_kmal.DSC.U2 - xyz_kmal.DSC.L2 + 1)*(xyz_kmal.DSC.U1 -      
     .       2   xyz_kmal.DSC.L1 + 1)                                           
     .           xyz_kmal(xyz_kmal.DSC.L1+t1717-1,xyz_kmal.DSC.L2,              
     .       1      xyz_kmal.DSC.L3) = 0.0000000000000000e+000                  
     .        end do                                                            
   695  
   696      allocate( xyz_KhBl(imin:imax,jmin:jmax,kmin:kmax) )
   697      allocate( xyz_KhNl(imin:imax,jmin:jmax,kmin:kmax) )
   698      allocate( xyz_KhAl(imin:imax,jmin:jmax,kmin:kmax) )
   699  
   700      xyz_KhBl    = 0.0d0;    xyz_KhNl    = 0.0d0;    xyz_KhAl    = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1726 = 1, (xyz_khbl.DSC.U3 - xyz_khbl.DSC.L3 + 1)*(           
     .       1   xyz_khbl.DSC.U2 - xyz_khbl.DSC.L2 + 1)*(xyz_khbl.DSC.U1 -      
     .       2   xyz_khbl.DSC.L1 + 1)                                           
     .           xyz_khbl(xyz_khbl.DSC.L1+t1726-1,xyz_khbl.DSC.L2,              
     .       1      xyz_khbl.DSC.L3) = 0.0000000000000000e+000                  
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1735 = 1, (xyz_khnl.DSC.U3 - xyz_khnl.DSC.L3 + 1)*(           
     .       1   xyz_khnl.DSC.U2 - xyz_khnl.DSC.L2 + 1)*(xyz_khnl.DSC.U1 -      
     .       2   xyz_khnl.DSC.L1 + 1)                                           
     .           xyz_khnl(xyz_khnl.DSC.L1+t1735-1,xyz_khnl.DSC.L2,              
     .       1      xyz_khnl.DSC.L3) = 0.0000000000000000e+000                  
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1744 = 1, (xyz_khal.DSC.U3 - xyz_khal.DSC.L3 + 1)*(           
     .       1   xyz_khal.DSC.U2 - xyz_khal.DSC.L2 + 1)*(xyz_khal.DSC.U1 -      
     .       2   xyz_khal.DSC.L1 + 1)                                           
     .           xyz_khal(xyz_khal.DSC.L1+t1744-1,xyz_khal.DSC.L2,              
     .       1      xyz_khal.DSC.L3) = 0.0000000000000000e+000                  
     .        end do                                                            
   701  
   702      allocate( xyzf_QMixBl(imin:imax,jmin:jmax,kmin:kmax,ncmax) )
   703      allocate( xyzf_QMixNl(imin:imax,jmin:jmax,kmin:kmax,ncmax) )
   704      allocate( xyzf_QMixAl(imin:imax,jmin:jmax,kmin:kmax,ncmax) )
   705  
   706      xyzf_QMixBl = 0.0d0;   xyzf_QMixNl = 0.0d0;   xyzf_QMixAl = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1753 = 1, (xyzf_qmixbl.DSC.U4 - xyzf_qmixbl.DSC.L4 + 1)*(     
     .       1   xyzf_qmixbl.DSC.U3 - xyzf_qmixbl.DSC.L3 + 1)*(                 
     .       2   xyzf_qmixbl.DSC.U2 - xyzf_qmixbl.DSC.L2 + 1)*(                 
     .       3   xyzf_qmixbl.DSC.U1 - xyzf_qmixbl.DSC.L1 + 1)                   
     .           xyzf_qmixbl(xyzf_qmixbl.DSC.L1+t1753-1,xyzf_qmixbl.DSC.L2,     
     .       1      xyzf_qmixbl.DSC.L3,xyzf_qmixbl.DSC.L4) =                    
     .       2      0.0000000000000000e+000                                     
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1765 = 1, (xyzf_qmixnl.DSC.U4 - xyzf_qmixnl.DSC.L4 + 1)*(     
     .       1   xyzf_qmixnl.DSC.U3 - xyzf_qmixnl.DSC.L3 + 1)*(                 
     .       2   xyzf_qmixnl.DSC.U2 - xyzf_qmixnl.DSC.L2 + 1)*(                 
     .       3   xyzf_qmixnl.DSC.U1 - xyzf_qmixnl.DSC.L1 + 1)                   
     .           xyzf_qmixnl(xyzf_qmixnl.DSC.L1+t1765-1,xyzf_qmixnl.DSC.L2,     
     .       1      xyzf_qmixnl.DSC.L3,xyzf_qmixnl.DSC.L4) =                    
     .       2      0.0000000000000000e+000                                     
     .        end do                                                            
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1777 = 1, (xyzf_qmixal.DSC.U4 - xyzf_qmixal.DSC.L4 + 1)*(     
     .       1   xyzf_qmixal.DSC.U3 - xyzf_qmixal.DSC.L3 + 1)*(                 
     .       2   xyzf_qmixal.DSC.U2 - xyzf_qmixal.DSC.L2 + 1)*(                 
     .       3   xyzf_qmixal.DSC.U1 - xyzf_qmixal.DSC.L1 + 1)                   
     .           xyzf_qmixal(xyzf_qmixal.DSC.L1+t1777-1,xyzf_qmixal.DSC.L2,     
     .       1      xyzf_qmixal.DSC.L3,xyzf_qmixal.DSC.L4) =                    
     .       2      0.0000000000000000e+000                                     
     .        end do                                                            
   707  
   708      allocate( pyz_DVelXDtNl(imin:imax,jmin:jmax,kmin:kmax) )
   709      allocate( xqz_DVelYDtNl(imin:imax,jmin:jmax,kmin:kmax) )
   710      allocate( xyr_DVelZDtNl(imin:imax,jmin:jmax,kmin:kmax) )
   711      allocate( xyz_DKmDtNl(imin:imax,jmin:jmax,kmin:kmax) )
   712      allocate( xyz_DPTempDtNl(imin:imax,jmin:jmax,kmin:kmax) )
   713      allocate( xyz_DExnerDtNl(imin:imax,jmin:jmax,kmin:kmax) )
   714      allocate( xyz_DExnerDtNs(imin:imax,jmin:jmax,kmin:kmax) )
   715      allocate( xyz_DCDensDtNl(imin:imax,jmin:jmax,kmin:kmax) )
   716      allocate( xyzf_DQMixDtNl(imin:imax,jmin:jmax,kmin:kmax,ncmax) )
   717  
   718      pyz_DVelXDtNl = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1789 = 1, (pyz_dvelxdtnl.DSC.U3 - pyz_dvelxdtnl.DSC.L3 + 1)*( 
     .       1   pyz_dvelxdtnl.DSC.U2 - pyz_dvelxdtnl.DSC.L2 + 1)*(             
     .       2   pyz_dvelxdtnl.DSC.U1 - pyz_dvelxdtnl.DSC.L1 + 1)               
     .           pyz_dvelxdtnl(pyz_dvelxdtnl.DSC.L1+t1789-1,pyz_dvelxdtnl.DSC.L2
     .       1      ,pyz_dvelxdtnl.DSC.L3) = 0.0000000000000000e+000            
     .        end do                                                            
   719      xqz_DVelYDtNl = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1798 = 1, (xqz_dvelydtnl.DSC.U3 - xqz_dvelydtnl.DSC.L3 + 1)*( 
     .       1   xqz_dvelydtnl.DSC.U2 - xqz_dvelydtnl.DSC.L2 + 1)*(             
     .       2   xqz_dvelydtnl.DSC.U1 - xqz_dvelydtnl.DSC.L1 + 1)               
     .           xqz_dvelydtnl(xqz_dvelydtnl.DSC.L1+t1798-1,xqz_dvelydtnl.DSC.L2
     .       1      ,xqz_dvelydtnl.DSC.L3) = 0.0000000000000000e+000            
     .        end do                                                            
   720      xyr_DVelZDtNl = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1807 = 1, (xyr_dvelzdtnl.DSC.U3 - xyr_dvelzdtnl.DSC.L3 + 1)*( 
     .       1   xyr_dvelzdtnl.DSC.U2 - xyr_dvelzdtnl.DSC.L2 + 1)*(             
     .       2   xyr_dvelzdtnl.DSC.U1 - xyr_dvelzdtnl.DSC.L1 + 1)               
     .           xyr_dvelzdtnl(xyr_dvelzdtnl.DSC.L1+t1807-1,xyr_dvelzdtnl.DSC.L2
     .       1      ,xyr_dvelzdtnl.DSC.L3) = 0.0000000000000000e+000            
     .        end do                                                            
   721      xyz_DKmDtNl   = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1816 = 1, (xyz_dkmdtnl.DSC.U3 - xyz_dkmdtnl.DSC.L3 + 1)*(     
     .       1   xyz_dkmdtnl.DSC.U2 - xyz_dkmdtnl.DSC.L2 + 1)*(                 
     .       2   xyz_dkmdtnl.DSC.U1 - xyz_dkmdtnl.DSC.L1 + 1)                   
     .           xyz_dkmdtnl(xyz_dkmdtnl.DSC.L1+t1816-1,xyz_dkmdtnl.DSC.L2,     
     .       1      xyz_dkmdtnl.DSC.L3) = 0.0000000000000000e+000               
     .        end do                                                            
   722      xyz_DPTempDtNl = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1825 = 1, (xyz_dptempdtnl.DSC.U3 - xyz_dptempdtnl.DSC.L3 + 1)*
     .       1   (xyz_dptempdtnl.DSC.U2 - xyz_dptempdtnl.DSC.L2 + 1)*(          
     .       2   xyz_dptempdtnl.DSC.U1 - xyz_dptempdtnl.DSC.L1 + 1)             
     .           xyz_dptempdtnl(xyz_dptempdtnl.DSC.L1+t1825-1,                  
     .       1      xyz_dptempdtnl.DSC.L2,xyz_dptempdtnl.DSC.L3) =              
     .       2      0.0000000000000000e+000                                     
     .        end do                                                            
   723      xyz_DExnerDtNl = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1834 = 1, (xyz_dexnerdtnl.DSC.U3 - xyz_dexnerdtnl.DSC.L3 + 1)*
     .       1   (xyz_dexnerdtnl.DSC.U2 - xyz_dexnerdtnl.DSC.L2 + 1)*(          
     .       2   xyz_dexnerdtnl.DSC.U1 - xyz_dexnerdtnl.DSC.L1 + 1)             
     .           xyz_dexnerdtnl(xyz_dexnerdtnl.DSC.L1+t1834-1,                  
     .       1      xyz_dexnerdtnl.DSC.L2,xyz_dexnerdtnl.DSC.L3) =              
     .       2      0.0000000000000000e+000                                     
     .        end do                                                            
   724      xyz_DExnerDtNs = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1843 = 1, (xyz_dexnerdtns.DSC.U3 - xyz_dexnerdtns.DSC.L3 + 1)*
     .       1   (xyz_dexnerdtns.DSC.U2 - xyz_dexnerdtns.DSC.L2 + 1)*(          
     .       2   xyz_dexnerdtns.DSC.U1 - xyz_dexnerdtns.DSC.L1 + 1)             
     .           xyz_dexnerdtns(xyz_dexnerdtns.DSC.L1+t1843-1,                  
     .       1      xyz_dexnerdtns.DSC.L2,xyz_dexnerdtns.DSC.L3) =              
     .       2      0.0000000000000000e+000                                     
     .        end do                                                            
   725      xyz_DCDensDtNl = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1852 = 1, (xyz_dcdensdtnl.DSC.U3 - xyz_dcdensdtnl.DSC.L3 + 1)*
     .       1   (xyz_dcdensdtnl.DSC.U2 - xyz_dcdensdtnl.DSC.L2 + 1)*(          
     .       2   xyz_dcdensdtnl.DSC.U1 - xyz_dcdensdtnl.DSC.L1 + 1)             
     .           xyz_dcdensdtnl(xyz_dcdensdtnl.DSC.L1+t1852-1,                  
     .       1      xyz_dcdensdtnl.DSC.L2,xyz_dcdensdtnl.DSC.L3) =              
     .       2      0.0000000000000000e+000                                     
     .        end do                                                            
   726      xyzf_DQMixDtNl = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1861 = 1, (xyzf_dqmixdtnl.DSC.U4 - xyzf_dqmixdtnl.DSC.L4 + 1)*
     .       1   (xyzf_dqmixdtnl.DSC.U3 - xyzf_dqmixdtnl.DSC.L3 + 1)*(          
     .       2   xyzf_dqmixdtnl.DSC.U2 - xyzf_dqmixdtnl.DSC.L2 + 1)*(           
     .       3   xyzf_dqmixdtnl.DSC.U1 - xyzf_dqmixdtnl.DSC.L1 + 1)             
     .           xyzf_dqmixdtnl(xyzf_dqmixdtnl.DSC.L1+t1861-1,                  
     .       1      xyzf_dqmixdtnl.DSC.L2,xyzf_dqmixdtnl.DSC.L3,                
     .       2      xyzf_dqmixdtnl.DSC.L4) = 0.0000000000000000e+000            
     .        end do                                                            
   727  
   728      ! 時間ループの初期化
   729      !
   730      t = 0
   731  
   732    end subroutine VariableAllocate
   733  
   734    !-----------------------------------------------------------------------
   735    subroutine MainInit
   736  
   737      implicit none
   738  
   739      character(STRING) :: cfgfile
   740                               ! NAMELIST ファイル名 ; NAMELIST fine name
   741  
   742      ! MPI
   743      !
   744      call MPIWrapperInit
   745  
   746      ! 時間計測
   747      !
   748      call ClocksetInit
   749      call ClocksetPreStart
   750  
   751      ! NAMELIST ファイル名の読み込み
   752      ! Loading NAMELIST file.
   753      !
   754      call argset_init( cfgfile ) !(out)
   755  
   756      ! NAMELIST ファイル名のモジュールへの登録
   757      ! Loading NAMELIST file.
   758      !
   759      call NmlutilInit( cfgfile ) !(in)
   760  
   761      ! 時間積分の初期化
   762      ! Initialization of time integration.
   763      !
   764      call timeset_init
   765  
   766      ! 格子点情報の初期化
   767      ! Initialization of grid arrangement.
   768      !
   769      call gridset_init
   770  
   771      ! 化学計算ルーチンの初期化
   772      ! Initialization of chemical routines.
   773      !
   774      call chemcalc_init
   775  
   776      ! 定数の情報の初期化
   777      ! Initialization of constant variables.
   778      !
   779      call constants_init
   780  
   781      ! 軸の情報の初期化
   782      ! Initialization of axis variables.
   783      !
   784      call axesset_init
   785  
   786      ! I/O ファイル名の初期化
   787      ! Initialization of output file name.
   788      !
   789      call fileset_init
   790  
   791      ! 湿潤過程共有変数の初期化
   792      ! Initialization of common variables for moist process.
   793      !
   794      call composition_init
   795  
   796      ! ヒストリーファイル・リスタートファイルの初期化
   797      ! Initialize restart & history files.
   798      !
   799      call HistoryFileio_init
   800      call ReStartFileio_init
   801  
   802      ! 数値摩擦係数の初期化
   803      ! Initialization of numerical friction coefficient.
   804      !
   805      call Damping_Init
   806  
   807      ! 内部変数の初期化
   808      ! Initialization of internal variables.
   809      !
   810      call VariableAllocate
   811  
   812      ! 初期値の代入
   813      ! * ReStartFile が設定されている場合にはファイルを読み込む.
   814      !   設定されていない場合にはデフォルトの基本場と擾乱場を作る.
   815      !
   816      ! Initial value set up.
   817      ! * Read restartfile if it is specified. If not, make default basic
   818      !   state and disturbance.
   819      !
   820      if (myrank == 0) call MessageNotify( "M", "main", "Initial value setup." )
   821  
   822      ! 基本場, 擾乱場の初期値を netCDF ファイルから取得する.
   823      !
   824      call ReStartFileio_BZ_Get
   825      call ReStartFileio_Var_Get(     &
   826        & pyz_VelXBl,  pyz_VelXNl,    & ! (out)
   827        & xqz_VelYBl,  xqz_VelYNl,    & ! (out)
   828        & xyr_VelZBl,  xyr_VelZNl,    & ! (out)
   829        & xyz_PTempBl, xyz_PTempNl,   & ! (out)
   830        & xyz_ExnerBl, xyz_ExnerNl,   & ! (out)
   831        & xyzf_QMixBl, xyzf_QMixNl,   & ! (out)
   832        & xyz_KmBl,    xyz_KmNl,      & ! (out)
   833        & xyz_KhBl,    xyz_KhNl,      & ! (out)
   834        & xyz_CDensBl, xyz_CDensNl    & ! (out)
   835        & )
   836  
   837      ! 力学モジュールの初期化
   838      ! Initialization of dynamical modules
   839      !
   840      call Dynamics_init
   841  
   842      ! 負の湿潤量の補填計算の初期化
   843      ! Initialization of negative moist value correction.
   844      !
   845      call FillNegative_Init
   846  
   847      ! 物理過程の設定
   848      !
   849      call deepconv_main
   850  
   851      !-------------------------------------------------------------
   852      ! 基本場のファイル出力
   853      !
   854      call HistoryPut( 'DensBZ',   xyz_DensBZ     , rstat)
   855      call HistoryPut( 'ExnerBZ',  xyz_ExnerBZ    , rstat)
   856      call HistoryPut( 'PTempBZ',  xyz_PTempBZ  , rstat)
   857      call HistoryPut( 'VelSoundBZ', xyz_VelSoundBZ , rstat)
   858      call HistoryPut( 'TempBZ',    xyz_TempBZ     , rstat)
   859      call HistoryPut( 'PressBZ',   xyz_PressBZ    , rstat)
   860      call HistoryPut( 'QMixBZ',    xyzf_QMixBZ  , rstat)
   861      call HistoryPut( 'EffMolWtBZ', xyz_EffMolWtBZ, rstat)
   862  
   863      ! 音波に対する CFL 条件のチェック
   864      ! CFL condtion check for sound wave.
   865      !
   866      call CFLCheckTimeShort( &
   867        & xyz_VelSoundBZ   & ! (in)
   868        & )
   869  
   870      ! CPU time
   871      !
   872      call ClocksetPreStop
   873  
   874    end subroutine MainInit
   875  
   876  
   877    subroutine deepconv_main
   878  
   879      use dc_message,    only: MessageNotify
   880      use dc_iounit,     only : FileOpen
   881  
   882      implicit none
   883  
   884      integer  :: unit     !装置番号
   885      character(STRING)  :: FlagTurbMethod     = ""
   886      character(STRING)  :: FlagRadMethod      = ""
   887      character(STRING)  :: FlagCloudMethod = ""
   888      character(STRING)  :: FlagSurfaceMethod = ""
   889  
   890      NAMELIST /deepconv_main_nml / &
   891        & FlagTurbMethod,           &
   892        & FlagRadMethod,            &
   893        & FlagCloudMethod,       &
   894        & FlagSurfaceMethod
   895  
   896      ! デフォルト値の設定
   897      ! Default values settings
   898      !
   899      FlagTurbMethod    = "Nothing"
   900  !!$    FlagTurbMethod    = "KW1978"
   901  
   902      FlagRadMethod     = "Nothing"
   903  !!$    FlagRadMethod     = "HeatConst"
   904  !!$    FlagRadMethod     = "HeatVary"
   905  !!$    FlagRadMethod     = "HeatBalance"
   906  
   907      FlagSurfaceMethod = "Nothing"
   908  !!$    FlagSurfaceMethod = "Diff"
   909  !!$    FlagSurfaceMethod = "Bulk"
   910  
   911      FlagCloudMethod   = "Nothing"
   912  !!$    FlagCloudMethod   = "K1969"
   913  !!$    FlagCloudMethod   = "MarsCond"
   914  
   915  
   916      call FileOpen(unit, file=namelist_filename, mode='r')
   917      read(unit, NML=deepconv_main_nml)
   918      close(unit)
   919  
   920      select case ( FlagTurbMethod )
   921      case ( "Nothing" )
   922      case ( "KW1978" )
   923        IDTurbMethod = IDTurbMethodKW1978
   924        call turbulence_kw1978_init
   925      case default
   926        call MessageNotify( 'E', prog_name, &
   927          & 'FlagTurbMethod=<%c> is not supported.', &
   928          & c1 = trim(FlagTurbMethod) )
   929      end select
   930  
   931      select case ( FlagRadMethod )
   932      case ( "Nothing" )
   933      case ( "HeatConst" )
   934        IDRadMethod = IDRadMethodHeatConst
   935        call Radiation_Simple_init
   936      case ( "HeatVary" )
   937        IDRadMethod = IDRadMethodHeatVary
   938        call Radiation_Simple_init
   939      case ( "HeatBalance" )
   940        IDRadMethod = IDRadMethodHeatBalance
   941        call radiation_heatbalance_init
   942      case default
   943        call MessageNotify( 'E', prog_name, &
   944          & 'FlagRadMethod=<%c> is not supported.', &
   945          & c1 = trim(FlagRadMethod) )
   946      end select
   947  
   948      select case ( FlagSurfaceMethod )
   949      case ( "Nothing" )
   950      case ( "Diff" )
   951        IDSurfaceMethod = IDSurfaceMethodDiff
   952        call Surfaceflux_Diff_init
   953      case ( "Bulk" )
   954        IDSurfaceMethod = IDSurfaceMethodBulk
   955        call Surfaceflux_Bulk_init
   956      case default
   957        call MessageNotify( 'E', prog_name, &
   958          & 'FlagSurfaceMethod=<%c> is not supported.', &
   959          & c1 = trim(FlagSurfaceMethod) )
   960      end select
   961  
   962      select case ( FlagCloudMethod )
   963      case ( "Nothing" )
   964      case ( "K1969" )
   965        IDCloudMethod = IDCloudMethodK1969
   966        call cloudphys_K1969_init
   967      case ( "MarsCond" )
   968        IDCloudMethod = IDCloudMethodMarsCond
   969        call cloudphys_marscond_init
   970      case default
   971        call MessageNotify( 'E', prog_name, &
   972          & 'FlagCloudMethod=<%c> is not supported.', &
   973          & c1 = trim(FlagCloudMethod) )
   974      end select
   975  
   976      if (myrank == 0) then
   977        call MessageNotify( "M", "main", "FlagTurbMethod    = %c", c1=trim(FlagTurbMethod))
   978        call MessageNotify( "M", "main", "IDTurbMethod      = %d", i=(/IDTurbMethod/))
   979        call MessageNotify( "M", "main", "FlagRadMethod     = %c", c1=trim(FlagRadMethod))
   980        call MessageNotify( "M", "main", "IDRadMethod       = %d", i=(/IDRadMethod/))
   981        call MessageNotify( "M", "main", "FlagSurfaceMethod = %c", c1=trim(FlagSurfaceMethod))
   982        call MessageNotify( "M", "main", "IDSurfaceMethod   = %d", i=(/IDSurfaceMethod/))
   983        call MessageNotify( "M", "main", "FlagCloudMethod   = %c", c1=trim(FlagCloudMethod))
   984        call MessageNotify( "M", "main", "IDCloudMethod     = %d", i=(/IDCloudMethod/))
   985      end if
   986  
   987    end subroutine deepconv_main
   988  
   989  
   990  end program deepconv_arare
Linux  R2.6.5-7.282-sn2 FORTRAN90/SX         Rev.360        Tue Oct 11 12:35:41 2011
FILE NAME: arare.f90
PROGRAM NAME: deepconv_arare
FORMAT LIST

  LINE    LOOP     FORTRAN STATEMENT

     1:            != deepconv/arare 湿潤大気対流計算用主プログラム (三次元版)
     2:            !
     3:            != deepconv/arare main program for moist atmospheric convection (3D)
     4:            !
     5:            ! Authors::   杉山耕一朗(SUGIYAMA Ko-ichiro), ODAKA Masatsugu
     6:            ! Version::   $Id: arare.f90,v 1.26 2011-10-06 04:06:02 yot Exp $
     7:            ! Tag Name::  $Name: arare5-20111010 $
     8:            ! Copyright:: Copyright (C) GFD Dennou Club, 2007. All rights reserved.
     9:            ! License::   See COPYRIGHT[link:../../COPYRIGHT]
    10:            !
    11:            
    12:            program deepconv_arare
    13:              !
    14:              ! 非静力学モデル deepconv/arare 湿潤大気対流計算用主プログラム (三次元版)
    15:              !
    16:            
    17:              ! モジュール引用  use statement 
    18:              !
    19:            
    20:              ! gtool5 関連 
    21:              ! gtool5 modules
    22:              !
    23:              use dc_types,      only: STRING, DP
    24:              use dc_message,    only: MessageNotify
    25:              use gtool_history, only: HistoryPut
    26:              use gtool_historyauto, only: HistoryAutoPut
    27:            
    28:              ! 初期設定モジュール
    29:              ! Initialize module
    30:              !
    31:              use mpi_wrapper, only : MPIWrapperInit, MPIWrapperFinalize, myrank
    32:              use argset,   only: argset_init
    33:              use clockset, only: ClocksetInit, ClocksetClose, ClocksetPredict, &
    34:                &                 ClockSetPreStart, ClockSetLoopStart, ClockSetPreStop, ClockSetLoopStop
    35:              use gridset,  only: gridset_init, imin, imax, jmin, jmax, kmin, kmax, nx, ny, nz, ncmax
    36:              use timeset,  only: timeset_init, TimesetProgress, &
    37:                &                 TimeA, TimeN, TimeB, NstepShort, NstepOutput, &
    38:                &                 EndTime, RestartTime, &
    39:                &                 DelTimeLong, DelTimeShort, DelTimeOutput
    40:              use axesset,  only: axesset_init, xyz_avr_pyz, xyz_avr_xqz, xyz_avr_xyr
    41:              use constants,only: constants_init
    42:              use composition, only: composition_init, SpcWetSymbol
    43:              use fileset,  only: fileset_init
    44:              use basicset, only: xyzf_QMixBZ, xyz_DensBZ, xyz_EffMolWtBZ, &
    45:                &                 xyz_PTempBZ, xyz_TempBZ, xyz_PressBZ, &
    46:                &                 xyz_VelSoundBZ, xyz_ExnerBZ 
    47:              use ChemCalc, only: ChemCalc_init
    48:              use namelist_util, only: NmlutilInit, namelist_filename
    49:            
    50:              ! 下請けモジュール
    51:              ! Utility modules
    52:              !
    53:              use cflcheck, only : CFLCheckTimeShort, &
    54:                &                  CFLCheckTimeLongVelX, &
    55:                &                  CFLCheckTimeLongVelY, &
    56:                &                  CFLCheckTimeLongVelZ
    57:              use timefilter, only : AsselinFilter
    58:              use damping, only: Damping_init, SpongeLayer_forcing
    59:            
    60:              ! 力学過程計算用関数モジュール
    61:              ! Dynamical processes module
    62:              !
    63:              use DynamicsHEVI, only: Dynamics_Init,  &
    64:                &                      Dynamics_Long_forcing, Dynamics_Short_forcing, Dynamics_Km_forcing
    65:              use fillnegative,only: FillNegative_init
    66:            
    67:              ! 乱流拡散計算用モジュール
    68:              ! Turbulent diffusion module
    69:              !
    70:              use Turbulence_kw1978,  only: Turbulence_kw1978_Init, Turbulence_KW1978_forcing
    71:            
    72:              ! 放射強制計算用モジュール
    73:              ! Radiative forceing module
    74:              !
    75:              use Radiation_simple,  only: Radiation_simple_init, xyz_RadHeatConst, xyz_RadHeatVary
    76:              use radiation_heatbalance, only: Radiation_heatbalance_init, Radiation_heatbalance_forcing
    77:            
    78:              ! 境界からのフラックス計算用モジュール
    79:              ! Surface flux module
    80:              !
    81:              use Surfaceflux_Diff, only: Surfaceflux_Diff_init, Surfaceflux_Diff_forcing
    82:              use Surfaceflux_Bulk, only: Surfaceflux_Bulk_init, Surfaceflux_Bulk_forcing
    83:            
    84:              ! 湿潤過程計算用モジュール
    85:              ! Moist processes modules
    86:              !
    87:              use Cloudphys_K1969, only: Cloudphys_K1969_Init, Cloudphys_K1969_forcing, &
    88:                &                        Cloudphys_K1969_FallRain
    89:              use Cloudphys_marscond, only: cloudphys_marscond_Init, cloudphys_marscond_forcing
    90:            
    91:            
    92:              ! ファイル入出力モジュール
    93:              ! File I/O module
    94:              !
    95:              use RestartFileIO, only : ReStartFileio_init, ReStartFileio_Finalize, &
    96:                &                       ReStartFileio_BZ_Get, ReStartFileio_Var_Get, rstat
    97:              use HistoryFileIO, only: HistoryFileio_init, HistoryFileio_Finalize
    98:              
    99:              implicit none
   100:            
   101:              ! 内部変数
   102:              ! Internal variables
   103:              !
   104:              character(*), parameter:: prog_name = 'arare'
   105:                                        ! 主プログラム名.
   106:                                        ! Main program name
   107:            
   108:              real(DP), allocatable :: pyz_VelXBl(:,:,:)    
   109:                                         ! $ u (t-\Delta t) $ 東西風 ; zonal wind
   110:              real(DP), allocatable :: pyz_VelXNl(:,:,:)    
   111:                                         ! $ u (t) $          東西風 ; zonal wind
   112:              real(DP), allocatable :: xyz_VelXNl(:,:,:)    
   113:                                         ! $ u (t) $          東西風 ; zonal wind
   114:              real(DP), allocatable :: pyz_VelXAl(:,:,:)    
   115:                                         ! $ u (t+\Delta t) $ 東西風 ; zonal wind
   116:              real(DP), allocatable :: pyz_VelXNs(:,:,:)    
   117:                                         ! $ u (\tau) $ 東西風 ; zonal wind
   118:              real(DP), allocatable :: pyz_VelXAs(:,:,:)    
   119:                                         ! $ u (\tau +\Delta \tau) $ 東西風 ; zonal wind
   120:              real(DP), allocatable :: xqz_VelYBl(:,:,:)    
   121:                                         ! $ v (t-\Delta t) $ 南北風 ; meridonal wind
   122:              real(DP), allocatable :: xqz_VelYNl(:,:,:)    
   123:                                         ! $ v (t) $ 南北風 ; meridonal wind
   124:              real(DP), allocatable :: xyz_VelYNl(:,:,:)    
   125:                                         ! $ v (t) $ 南北風 ; meridonal wind
   126:              real(DP), allocatable :: xqz_VelYAl(:,:,:)    
   127:                                         ! $ v (t+\Delta t) $ 南北風 ; meridonal wind
   128:              real(DP), allocatable :: xqz_VelYNs(:,:,:)   
   129:                                         ! $ v (\tau -\tau) $ 南北風 ; meridonal wind
   130:              real(DP), allocatable :: xqz_VelYAs(:,:,:)
   131:                                         ! $ v (\tau) $ 南北風 ; meridonal wind
   132:              real(DP), allocatable :: xyr_VelZBl(:,:,:)    
   133:                                         ! $ w (t-\Delta t) $ 鉛直風 ; vertical wind
   134:              real(DP), allocatable :: xyr_VelZNl(:,:,:)    
   135:                                         ! $ w (t) $ 鉛直風 ; vertical wind
   136:              real(DP), allocatable :: xyz_VelZNl(:,:,:)    
   137:                                         ! $ w (t) $ 鉛直風 ; vertical wind
   138:              real(DP), allocatable :: xyr_VelZAl(:,:,:)    
   139:                                         ! $ w (t+\Delta t) $ 鉛直風 ; vertical wind
   140:              real(DP), allocatable :: xyr_VelZNs(:,:,:)    
   141:                                         ! $ w (\tau) $ 鉛直風 ; vertical wind
   142:              real(DP), allocatable :: xyr_VelZAs(:,:,:) 
   143:                                         ! $ w (\tau +\Delta \tau)  鉛直風 ; vertical wind
   144:              real(DP), allocatable :: xyz_ExnerBl(:,:,:)   
   145:                                         ! $ \pi (t-\Delta t) $ 圧力関数 ; Exner function
   146:              real(DP), allocatable :: xyz_ExnerNl(:,:,:)   
   147:                                         ! $ \pi (t) $ 圧力関数 ; Exner function
   148:              real(DP), allocatable :: xyz_ExnerAl(:,:,:)
   149:                                         ! $ \pi (t+\Delta t) $ 圧力関数 ; Exner function
   150:              real(DP), allocatable :: xyz_ExnerNs(:,:,:)   
   151:                                         ! $ \pi (\tau -\Delta \tau) $ 圧力関数 ; Exner function
   152:              real(DP), allocatable :: xyz_ExnerAs(:,:,:)   
   153:                                         ! $ \pi (\tau) $ 圧力関数 ; Exner function
   154:              real(DP), allocatable :: xyz_PTempBl(:,:,:) 
   155:                                         ! $ \theta (t-\Delta t) $ 温位 ; Potential temp.
   156:              real(DP), allocatable :: xyz_PTempNl(:,:,:) 
   157:                                         ! $ \theta (t) $ 温位 ; Potential temp.
   158:              real(DP), allocatable :: xyz_PTempAl(:,:,:) 
   159:                                         ! $ \theta (t+\Delta t) $ 温位 ; Potential temp.
   160:              real(DP), allocatable :: xyz_PTempNs(:,:,:) 
   161:                                         ! $ \theta (t) $ 温位 ; Potential temp.
   162:              real(DP), allocatable :: xyz_PTempAs(:,:,:) 
   163:                                         ! $ \theta (t+\Delta t) $ 温位 ; Potential temp.
   164:              real(DP), allocatable :: xyz_CDensBl(:,:,:) 
   165:                                         ! $ \theta (t-\Delta t) $ 温位 ; Potential temp.
   166:              real(DP), allocatable :: xyz_CDensNl(:,:,:) 
   167:                                         ! $ \theta (t) $ 温位 ; Potential temp.
   168:              real(DP), allocatable :: xyz_CDensAl(:,:,:) 
   169:                                         ! $ \theta (t+\Delta t) $ 温位 ; Potential temp.
   170:              real(DP), allocatable :: xyz_CDensNs(:,:,:) 
   171:                                         ! $ \theta (t) $ 温位 ; Potential temp.
   172:              real(DP), allocatable :: xyz_CDensAs(:,:,:) 
   173:                                         ! $ \theta (t+\Delta t) $ 温位 ; Potential temp.
   174:              real(DP), allocatable :: xyz_KmBl(:,:,:)
   175:                                         ! $ Km (t-\Delta t) $ 乱流拡散係数 
   176:                                         ! Turbulent diffusion coeff. 
   177:              real(DP), allocatable :: xyz_KmNl(:,:,:)
   178:                                         ! $ K_m (t) $ 乱流拡散係数 
   179:                                         ! Turbulent diffusion coeff. 
   180:              real(DP), allocatable :: xyz_KmAl(:,:,:)
   181:                                         ! $ K_m (t+\Delta t) $ 乱流拡散係数 
   182:                                         ! Turbulent diffusion coeff. 
   183:              real(DP), allocatable :: xyz_KhBl(:,:,:)      
   184:                                         ! $ K_h (t-\Delta t) $ 乱流拡散係数
   185:                                         ! Turbulent diffusion coeff. 
   186:              real(DP), allocatable :: xyz_KhNl(:,:,:)
   187:                                         ! $ K_h (t) $ 乱流拡散係数 
   188:                                         ! Turbulent diffusion coeff. 
   189:              real(DP), allocatable :: xyz_KhAl(:,:,:)
   190:                                         ! $ K_h (t+\Delta t) $ 乱流拡散係数
   191:                                         ! Turbulent diffusion coeff. 
   192:              real(DP), allocatable :: xyzf_QMixBl(:,:,:,:) 
   193:                                         ! $ q (t-\Delta t) $ 湿潤量の混合比
   194:                                         ! Mixing ratio of moist variables.
   195:              real(DP), allocatable :: xyzf_QMixNl(:,:,:,:) 
   196:                                         ! $ q (t) $ 湿潤量の混合比 
   197:                                         ! Mixing ratio of moist variables
   198:              real(DP), allocatable :: xyzf_QMixAl(:,:,:,:) ! 
   199:                                         ! $ q (t+\Delta t) $ 湿潤量の混合比 
   200:                                         !Mixing ratio of moist variables
   201:            
   202:              real(DP), allocatable :: pyz_DVelXDtNl(:,:,:)
   203:              real(DP), allocatable :: xqz_DVelYDtNl(:,:,:)
   204:              real(DP), allocatable :: xyr_DVelZDtNl(:,:,:)
   205:              real(DP), allocatable :: xyz_DPTempDtNl(:,:,:)
   206:              real(DP), allocatable :: xyz_DExnerDtNl(:,:,:)
   207:              real(DP), allocatable :: xyz_DExnerDtNs(:,:,:)
   208:              real(DP), allocatable :: xyzf_DQMixDtNl(:,:,:,:)
   209:              real(DP), allocatable :: xyz_DKmDtNl(:,:,:)
   210:              real(DP), allocatable :: xyz_DCDensDtNl(:,:,:)
   211:              
   212:              integer :: s, t, tau  ! do ループ変数 ; do loop variable 
   213:            
   214:              integer           :: IDTurbMethod = 0
   215:              integer, parameter:: IDTurbMethodKW1978 = 2
   216:              integer           :: IDRadMethod = 0
   217:              integer, parameter:: IDRadMethodHeatConst = 1
   218:              integer, parameter:: IDRadMethodHeatVary  = 2
   219:              integer, parameter:: IDRadMethodHeatBalance = 3
   220:              integer           :: IDSurfaceMethod = 0
   221:              integer, parameter:: IDSurfaceMethodDiff = 1
   222:              integer, parameter:: IDSurfaceMethodBulk = 2
   223:              integer           :: IDCloudMethod = 0
   224:              integer, parameter:: IDCloudMethodK1969 = 1
   225:              integer, parameter:: IDCloudMethodMarsCond = 2
   226:            
   227:            
   228:              !------------------------------------------
   229:              ! 初期化手続き ; Initialize procedure 
   230:              !
   231:              call MainInit
   232:            
   233:              !------------------------------------------
   234:              ! 時間積分 time integration 
   235:              !
   236:              if (myrank == 0) call MessageNotify( "M", "main", "Time Integration Start" )
   237:            
   238:              ! CPU 時間計測開始
   239:              ! Start CPU time counting 
   240:              !
   241:              call ClocksetLoopStart
   242:              
   243:              ! 時間発展ループのスタート
   244:              !
   245:              write(*,*) TimeN, EndTime
   246: +------>     do while (TimeN <= EndTime ) 
   247: |              write(*,*) "LONG: ", TimeN, TimeA
   248: |              
   249: |              !-------------------------------
   250: |              ! 物理過程: 乱流
   251: |              !
   252: |              select case ( IDTurbMethod )
   253: |                
   254: |              case ( IDTurbMethodKW1978 )
   255: |          
   256: |                ! Km の移流
   257: |                !
   258: |                call Dynamics_Km_forcing(               &
   259: |                  & pyz_VelXNl, xqz_VelYNl, xyr_VelZNl, & ! (in)
   260: |                  & xyz_KmBl,    xyz_KmNl,              & ! (in)
   261: |                  & xyz_DKmDtNl                         & ! (inout)
   262: |                  & )
   263: |          
   264: |                call turbulence_KW1978_forcing(                      &
   265: |                  &   pyz_VelXBl,  xqz_VelYBl,  xyr_VelZBl,          &!(in)
   266: |                  &   xyz_PTempBl, xyz_ExnerBl, xyzf_QMixBl,         &!(in)
   267: |                  &   xyz_KmBl,    xyz_KhBl,    xyz_CDensBl,         &!(in)
   268: |                  &   pyz_DVelXDtNl, xqz_DVelYDtNl,  xyr_DVelZDtNl,  &!(inout)
   269: |                  &   xyz_DPTempDtNl,xyz_DExnerDtNl, xyzf_DQMixDtNl, &!(inout)
   270: |                  &   xyz_DKmDtNl,   xyz_DCDensDtNl,                 &!(inout)
   271: |                  &   xyz_KmAl, xyz_KhAl                             &!(out)
   272: |                  & )
   273: |              end select
   274: |              
   275: |              !-------------------------------
   276: |              ! 物理過程: 放射
   277: |              !
   278: |              select case (IDRadMethod)
   279: |                
   280: |              case (IDRadMethodHeatConst)
   281: |          
   282: |++V===          xyz_DPTempDtNl = xyz_DPTempDtNl + xyz_RadHeatConst
   283: |                call HistoryAutoPut(TimeN, 'PTempRad', xyz_RadHeatConst(1:nx,1:ny,1:nz))
   284: |          
   285: |              case (IDRadMethodHeatVary)
   286: |          
   287: |++V===          xyz_DPTempDtNl = xyz_DPTempDtNl + xyz_RadHeatVary
   288: |                call HistoryAutoPut(TimeN, 'PTempRad', xyz_RadHeatVary(1:nx,1:ny,1:nz))
   289: |          
   290: |              case (IDRadMethodHeatBalance)
   291: |                call radiation_heatbalance_forcing( &
   292: |                  &   xyz_ExnerNl, xyz_PTempNl, & !(in)
   293: |                  &   xyz_DPTempDtNl, xyz_DExnerDtNl  & !(inout)
   294: |                  & )
   295: |          
   296: |              end select
   297: |          
   298: |              !--------------------------------
   299: |              ! 境界からの熱・運動量輸送
   300: |              !
   301: |              select case (IDSurfaceMethod)
   302: |          
   303: |              case (IDSurfaceMethodDiff)
   304: |                call Surfaceflux_Diff_forcing(   &
   305: |                  &   xyz_PTempNl, xyzf_QMixNl, & !(in)
   306: |                  &   xyz_DPTempDtNl, xyzf_DQMixDtNl   & !(out)
   307: |                  & )
   308: |               
   309: |              case (IDSurfaceMethodBulk)
   310: |                call Surfaceflux_Bulk_forcing( &
   311: |                  &   pyz_VelXNl, xqz_VelYNl, xyz_PTempNl, &!(in)
   312: |                  &   xyz_ExnerNl, xyzf_QMixNl,            &!(in)
   313: |                  &   pyz_DVelXDtNl, xqz_DVelYDtNl,        &!(inout)
   314: |                  &   xyz_DPTempDtNl, xyzf_DQMixDtNl       &!(inout)
   315: |                  & )
   316: |              end select
   317: |          
   318: |          
   319: |              !-----------------------------------------
   320: |              ! 凝結過程
   321: |              ! 
   322: |              !
   323: |              select case (IDCloudMethod)
   324: |              case (IDCloudMethodK1969)
   325: |                call CloudPhys_K1969_FallRain( & 
   326: |                  &   xyzf_QMixNl,       & !(in)
   327: |                  &   xyzf_DQMixDtNl     & !(inout)
   328: |                  & )
   329: |              end select
   330: |          
   331: |              !-----------------------------------------
   332: |              ! 移流拡散.
   333: |              ! Advection and diffusion
   334: |              !
   335: |              call Dynamics_Long_forcing(       &
   336: |                &   pyz_VelXBl,  pyz_VelXNl,    & ! (in)
   337: |                &   xqz_VelYBl,  xqz_VelYNl,    & ! (in)
   338: |                &   xyr_VelZBl,  xyr_VelZNl,    & ! (in)
   339: |                &   xyz_PTempBl, xyz_PTempNl,   & ! (in) 
   340: |                &   xyzf_QMixBl, xyzf_QMixNl,   & ! (in) mixing ratio  [kg/kg]
   341: |                &   xyz_CDensBl, xyz_CDensNl,   & ! (in) Cloud density [kg/m^-3]
   342: |                &   pyz_DVelXDtNl,              & ! (inout)
   343: |                &   xqz_DVelYDtNl,              & ! (inout)
   344: |                &   xyr_DVelZDtNl,              & ! (inout)
   345: |                &   xyz_DPTempDtNl,             & ! (inout)
   346: |                &   xyzf_DQMixDtNl,             & ! (inout)
   347: |                &   xyz_DCDensDtNl,             & ! (inout)
   348: |                &   xyz_PTempAl,                & ! (out)
   349: |                &   xyzf_QMixAl                 & ! (out)
   350: |                & )
   351: |          
   352: |              !------------------------------------------
   353: |              ! 凝結過程
   354: |              ! 
   355: |              select case (IDCloudMethod)
   356: |              case (IDCloudMethodK1969)
   357: |                call Cloudphys_K1969_forcing(   &
   358: |                  &   xyz_ExnerNl,              &!(in)
   359: |                  &   xyz_PTempAl, xyzf_QMixAl  &!(inout)
   360: |                  & )
   361: |              end select
   362: |          
   363: |              ! 短い時間ステップの初期値作成.
   364: |              ! Initial values set up for time integration with short time step.
   365: |              !
   366: |++V===        pyz_VelXNs  = pyz_VelXBl
   367: |++V===        xqz_VelYNs  = xqz_VelYBl
   368: |++V===        xyr_VelZNs  = xyr_VelZBl
   369: |++V===        xyz_ExnerNs = xyz_ExnerBl
   370: |++V===        xyz_PTempNs = xyz_PTempBl
   371: |++V===        xyz_CDensNs = xyz_CDensBl
   372: |          
   373: |              ! 短い時間ステップの時間積分. オイラー法を利用.
   374: |              ! Time integration with short time step.
   375: |              !
   376: |+----->       Euler: do tau = 1, NstepShort
   377: ||         !      write(*,*) "SHORT", tau
   378: ||         
   379: ||               ! 火星計算の場合. 凝結量の評価はここで行う. 
   380: ||               ! 
   381: ||               select case (IDCloudMethod)
   382: ||               case (IDCloudMethodMarsCond)
   383: ||         
   384: ||                 call cloudphys_marscond_forcing(  &
   385: ||                   &   xyz_PTempNs,         &  !(in) 温位
   386: ||                   &   xyz_ExnerNs,         &  !(in) エクスナー関数
   387: ||                   &   xyz_CDensNs,         &  !(in) 
   388: ||                   &   xyz_DPTempDtNl,      &  !(in)    
   389: ||                   &   xyz_DExnerDtNl,      &  !(in)    
   390: ||                   &   xyz_DCDensDtNl,      &  !(in)    
   391: ||                   &   xyz_PTempAs,         &  !(out) 温位
   392: ||                   &   xyz_CDensAs,         &  !(out) 雲密度
   393: ||                   &   xyz_DExnerDtNs       &  !(out) 
   394: ||                   & )
   395: ||         
   396: ||               end select
   397: ||         
   398: ||               ! 陽解法: 速度 u, v の計算.
   399: ||               ! Time integration horizontal velocity (u).
   400: ||               !
   401: ||               call Dynamics_Short_forcing(         &
   402: ||                 &   pyz_VelXNs,          & ! (in)
   403: ||                 &   xqz_VelYNs,          & ! (in)
   404: ||                 &   xyr_VelZNs,          & ! (in)
   405: ||                 &   xyz_ExnerNs,         & ! (in)
   406: ||                 &   pyz_DVelXDtNl,       & ! (in)
   407: ||                 &   xqz_DVelYDtNl,       & ! (in)
   408: ||                 &   xyr_DVelZDtNl,       & ! (in)
   409: ||                 &   xyz_DExnerDtNs,      & ! (in)
   410: ||                 &   pyz_VelXAs,          & ! (out)
   411: ||                 &   xqz_VelYAs,          & ! (out)
   412: ||                 &   xyr_VelZAs,          & ! (out)
   413: ||                 &   xyz_ExnerAs          & ! (out)
   414: ||                 & )
   415: ||               
   416: ||               ! 短い時間ステップのループを回すための処置
   417: ||               ! Renew prognostic variables for next short time step integration.
   418: ||               !
   419: ||++V==          xyz_ExnerNs  = xyz_ExnerAs
   420: ||++V==          pyz_VelXNs   = pyz_VelXAs
   421: ||++V==          xqz_VelYNs   = xqz_VelYAs
   422: ||++V==          xyr_VelZNs   = xyr_VelZAs
   423: ||++V==          xyz_PTempNs  = xyz_PTempAs
   424: ||++V==          xyz_CDensNs  = xyz_CDensAs
   425: ||W++==          xyz_DExnerDtNs = 0.0d0
   426: ||         
   427: |+-----        end do Euler
   428: |              
   429: |              ! 最終的な短い時間ステップでの値を長い時間ステップでの値とみなす
   430: |              ! Renew prognostic variables for next long time step integration.
   431: |              !
   432: |++V===        xyz_ExnerAl  = xyz_ExnerAs
   433: |++V===        pyz_VelXAl   = pyz_VelXAs
   434: |++V===        xqz_VelYAl   = xqz_VelYAs
   435: |++V===        xyr_VelZAl   = xyr_VelZAs
   436: |              select case (IDCloudMethod)
   437: |              case (IDCloudMethodMarsCond)
   438: |++V===          xyz_PTempAl = xyz_PTempAs
   439: |++V===          xyz_CDensAl = xyz_CDensAs
   440: |              end select
   441: |             
   442: |              !
   443: |              ! clear tendency
   444: |              !
   445: |WWW===        pyz_DVelXDtNl = 0.0d0
   446: |WWW===        xqz_DVelYDtNl = 0.0d0
   447: |WW*===        xyr_DVelZDtNl = 0.0d0
   448: |***===        xyz_DKmDtNl   = 0.0d0
   449: |***===        xyz_DPTempDtNl = 0.0d0
   450: |***===        xyz_DExnerDtNl = 0.0d0
   451: |***===        xyz_DCDensDtNl = 0.0d0
   452: |****==        xyzf_DQMixDtNl = 0.0d0
   453: |          
   454: |          
   455: |              ! 時間フィルタ. 
   456: |              ! Time filter. 
   457: |              !   t = 0 の時はオイラー法でループを回すので適用しない. 
   458: |              !
   459: |              if (TimeN /= 0.0d0) then 
   460: |                write(*,*) "call AsselinFilter"
   461: |                call AsselinFilter( &
   462: |                  & pyz_VelXAl,     & ! (in)
   463: |                  & pyz_VelXNl,     & ! (inout)
   464: |                  & pyz_VelXBl      & ! (in)
   465: |                  & )
   466: |                call AsselinFilter( &
   467: |                  & xqz_VelYAl,     & ! (in)
   468: |                  & xqz_VelYNl,     & ! (inout)
   469: |                  & xqz_VelYBl      & ! (in)
   470: |                  & )
   471: |                call AsselinFilter( &
   472: |                  & xyr_VelZAl,     & ! (in)
   473: |                  & xyr_VelZNl,     & ! (inout)
   474: |                  & xyr_VelZBl      & ! (in)
   475: |                  & )
   476: |                call AsselinFilter( &
   477: |                  & xyz_PTempAl,  & ! (in)
   478: |                  & xyz_PTempNl,  & ! (inout)
   479: |                  & xyz_PTempBl   & ! (in)
   480: |                  & )
   481: |                call AsselinFilter( &
   482: |                  &  xyz_ExnerAl,   & ! (in)
   483: |                  &  xyz_ExnerNl,   & ! (inout)
   484: |                  &  xyz_ExnerBl    & ! (in)
   485: |                  & )         
   486: |                call AsselinFilter( &
   487: |                  & xyz_KmAl,       & ! (in)
   488: |                  & xyz_KmNl,       & ! (inout)
   489: |                  & xyz_KmBl        & ! (in)
   490: |                  & )
   491: |                call AsselinFilter( &
   492: |                  & xyz_CDensAl,       & ! (in)
   493: |                  & xyz_CDensNl,       & ! (inout)
   494: |                  & xyz_CDensBl        & ! (in)
   495: |                  & )
   496: |+----->         do s = 1, ncmax
   497: ||                 call AsselinFilter(         &
   498: ||                   &   xyzf_QMixAl(:,:,:,s), &
   499: ||                   &   xyzf_QMixNl(:,:,:,s), &
   500: ||                   &   xyzf_QMixBl(:,:,:,s)  &
   501: ||                   & )
   502: |+-----          end do
   503: |              end if
   504: |          
   505: |              !------------------------------------------
   506: |              ! スポンジ層; sponge layer
   507: |              ! 
   508: |              call SpongeLayer_forcing(                    &
   509: |                & pyz_VelXBl,  xqz_VelYBl,  xyr_VelZBl,    & !(in)
   510: |                & xyz_PTempBl, xyz_ExnerBl,                & !(in)
   511: |                & pyz_VelXAl,  xqz_VelYAl,  xyr_VelZAl,    & !(inout)
   512: |                & xyz_PTempAl, xyz_ExnerAl              )    !(inout)
   513: |             
   514: |              !------------------------------------------
   515: |              ! 移流に対する CFL 条件のチェック 
   516: |              ! CFL condtion check for advection
   517: |              !
   518: |          !!$    call CFLCheckTimeLongVelX( pyz_VelXNl ) !(in)
   519: |          !!$    call CFLCheckTimeLongVelY( xqz_VelYNl ) !(in)
   520: |          !!$    call CFLCheckTimeLongVelZ( xyr_VelZNl ) !(in)
   521: |          
   522: |              ! ヒストリファイル出力.
   523: |              ! Out put to history file.
   524: |              !
   525: |              xyz_VelXNl = xyz_avr_pyz(pyz_VelXNl)
   526: |              xyz_VelYNl = xyz_avr_xqz(xqz_VelYNl)
   527: |              xyz_VelZNl = xyz_avr_xyr(xyr_VelZNl)
   528: |              
   529: |              call HistoryAutoPut(TimeN, 'PTemp', xyz_PTempNl(1:nx, 1:ny, 1:nz))
   530: |++V===        call HistoryAutoPut(TimeN, 'PTempAll', xyz_PTempNl(1:nx, 1:ny, 1:nz) + xyz_PTempBZ(1:nx, 1:ny, 1:nz))
   531: |              call HistoryAutoPut(TimeN, 'Exner', xyz_ExnerNl(1:nx, 1:ny, 1:nz))
   532: |++V===        call HistoryAutoPut(TimeN, 'ExnerAll', xyz_ExnerNl(1:nx, 1:ny, 1:nz) + xyz_ExnerBZ(1:nx, 1:ny, 1:nz))
   533: |              call HistoryAutoPut(TimeN, 'VelX',  xyz_VelXNl(1:nx, 1:ny, 1:nz))
   534: |              call HistoryAutoPut(TimeN, 'VelY',  xyz_VelYNl(1:nx, 1:ny, 1:nz))
   535: |              call HistoryAutoPut(TimeN, 'VelZ',  xyz_VelZNl(1:nx, 1:ny, 1:nz))
   536: |              call HistoryAutoPut(TimeN, 'Km',    xyz_KmNl(1:nx, 1:ny, 1:nz))
   537: |              call HistoryAutoPut(TimeN, 'Kh',    xyz_KhNl(1:nx, 1:ny, 1:nz))
   538: |              call HistoryAutoPut(TimeN, 'CDens', xyz_CDensNl(1:nx, 1:ny, 1:nz))
   539: |+----->       do s = 1, ncmax
   540: ||               call HistoryAutoPut(TimeN, trim(SpcWetSymbol(s)), xyzf_QMixNl(1:nx, 1:ny, 1:nz, s))
   541: ||++V==          call HistoryAutoPut(TimeN, trim(SpcWetSymbol(s))//'All', xyzf_QMixNl(1:nx, 1:ny, 1:nz, s) + xyzf_QMixBZ(1:nx, 1:ny, 1:nz, s))
   542: |+-----        end do
   543: |              
   544: |              !----------------------------------------------------
   545: |              ! リスタートファイルの作成
   546: |              ! Make restartfile.
   547: |              !    
   548: |              if (mod(t, NstepOutput) == 0) then 
   549: |          
   550: |                ! ファイル出力
   551: |                !
   552: |                call HistoryPut( 't',     TimeN,       rstat)
   553: |                call HistoryPut( 'VelX',  pyz_VelXNl,  rstat)
   554: |                call HistoryPut( 'VelY',  xqz_VelYNl,  rstat)
   555: |                call HistoryPut( 'VelZ',  xyr_VelZNl,  rstat)
   556: |                call HistoryPut( 'Exner', xyz_ExnerNl, rstat)
   557: |                call HistoryPut( 'PTemp', xyz_PTempNl, rstat)
   558: |                call HistoryPut( 'Km',    xyz_KmNl,    rstat)
   559: |                call HistoryPut( 'Kh',    xyz_KhNl,    rstat)
   560: |                call HistoryPut( 'CDens', xyz_CDensNl, rstat)
   561: |                call HistoryPut( 'QMix',  xyzf_QMixNl, rstat)    
   562: |          
   563: |                call HistoryPut( 't',     TimeA,       rstat)
   564: |                call HistoryPut( 'VelX',  pyz_VelXAl,  rstat)
   565: |                call HistoryPut( 'VelY',  xqz_VelYAl,  rstat)
   566: |                call HistoryPut( 'VelZ',  xyr_VelZAl,  rstat)
   567: |                call HistoryPut( 'Exner', xyz_ExnerAl, rstat)
   568: |                call HistoryPut( 'PTemp', xyz_PTempAl, rstat)
   569: |                call HistoryPut( 'Km',    xyz_KmAl,    rstat)
   570: |                call HistoryPut( 'Kh',    xyz_KhAl,    rstat)
   571: |                call HistoryPut( 'CDens', xyz_CDensAl, rstat)
   572: |                call HistoryPut( 'QMix',  xyzf_QMixAl, rstat) 
   573: |          
   574: |                ! Show CPU time 
   575: |                ! 
   576: |                call ClocksetPredict
   577: |                
   578: |              end if
   579: |          
   580: |              ! 長い時間ステップのループを回すための処置.
   581: |              ! Renew prognostic variables for next long time step integration.
   582: |              !
   583: |**V===        pyz_VelXBl  = pyz_VelXNl;  pyz_VelXNl  = pyz_VelXAl
   584: |**V===        xqz_VelYBl  = xqz_VelYNl;  xqz_VelYNl  = xqz_VelYAl
   585: |**V===        xyr_VelZBl  = xyr_VelZNl;  xyr_VelZNl  = xyr_VelZAl
   586: |**V===        xyz_PTempBl = xyz_PTempNl; xyz_PTempNl = xyz_PTempAl
   587: |**V===        xyz_ExnerBl = xyz_ExnerNl; xyz_ExnerNl = xyz_ExnerAl
   588: |**V===        xyz_KmBl    = xyz_KmNl;    xyz_KmNl    = xyz_KmAl
   589: |**V===        xyz_KhBl    = xyz_KhNl;    xyz_KhNl    = xyz_KhAl
   590: |**V===        xyz_CDensBl = xyz_CDensNl; xyz_CDensNl = xyz_CDensAl
   591: |***V==        xyzf_QMixBl = xyzf_QMixNl; xyzf_QMixNl = xyzf_QMixAl
   592: |              t = t + 1
   593: |          
   594: |              ! 時刻の進行
   595: |              ! Progress time
   596: |              !
   597: |              call TimesetProgress
   598: |          
   599: +------      end do
   600:            
   601:              !----------------------------------------------------
   602:              ! 出力ファイルのクローズ
   603:              ! Close out put files.
   604:              !
   605:              call HistoryFileio_finalize
   606:              call ReStartFileio_finalize
   607:            
   608:              !----------------------------------------------------
   609:              ! MPI END
   610:              !
   611:              call MPIWrapperFinalize
   612:            
   613:              !----------------------------------------------------
   614:              ! CPU Time
   615:              ! 
   616:              call ClocksetLoopStop
   617:              call ClocksetClose
   618:              
   619:            contains
   620:            !-----------------------------------------------------------------------
   621:              subroutine VariableAllocate
   622:                !
   623:                !初期化として, 配列を定義し, 値としてゼロを代入する.
   624:                !
   625:            
   626:                !暗黙の型宣言禁止
   627:                implicit none
   628:            
   629:                !配列割り当て
   630:                allocate( pyz_VelXBl(imin:imax,jmin:jmax,kmin:kmax) )
   631:                allocate( pyz_VelXNl(imin:imax,jmin:jmax,kmin:kmax) )
   632:                allocate( xyz_VelXNl(imin:imax,jmin:jmax,kmin:kmax) )
   633:                allocate( pyz_VelXAl(imin:imax,jmin:jmax,kmin:kmax) )
   634:                allocate( pyz_VelXNs(imin:imax,jmin:jmax,kmin:kmax) )
   635:                allocate( pyz_VelXAs(imin:imax,jmin:jmax,kmin:kmax) )
   636:            
   637: WWW====        pyz_VelXBl  = 0.0d0;    pyz_VelXNl  = 0.0d0;    pyz_VelXAl  = 0.0d0
   638: WWW====        pyz_VelXNs  = 0.0d0;    pyz_VelXAs = 0.0d0    
   639: WWW====        xyz_VelXNl  = 0.0d0
   640:            
   641:                allocate( xqz_VelYBl(imin:imax,jmin:jmax,kmin:kmax) )
   642:                allocate( xqz_VelYNl(imin:imax,jmin:jmax,kmin:kmax) )
   643:                allocate( xyz_VelYNl(imin:imax,jmin:jmax,kmin:kmax) )
   644:                allocate( xqz_VelYAl(imin:imax,jmin:jmax,kmin:kmax) )
   645:                allocate( xqz_VelYNs(imin:imax,jmin:jmax,kmin:kmax) )
   646:                allocate( xqz_VelYAs(imin:imax,jmin:jmax,kmin:kmax) )
   647:            
   648: WWW====        xqz_VelYBl  = 0.0d0;    xqz_VelYNl  = 0.0d0;    xqz_VelYAl  = 0.0d0
   649: WWW====        xqz_VelYNs  = 0.0d0;    xqz_VelYAs = 0.0d0    
   650: WWW====        xyz_VelYNl  = 0.0d0
   651:            
   652:                allocate( xyr_VelZBl(imin:imax,jmin:jmax,kmin:kmax) )
   653:                allocate( xyr_VelZNl(imin:imax,jmin:jmax,kmin:kmax) )
   654:                allocate( xyz_VelZNl(imin:imax,jmin:jmax,kmin:kmax) )
   655:                allocate( xyr_VelZAl(imin:imax,jmin:jmax,kmin:kmax) )
   656:                allocate( xyr_VelZNs(imin:imax,jmin:jmax,kmin:kmax) )
   657:                allocate( xyr_VelZAs(imin:imax,jmin:jmax,kmin:kmax) )
   658:            
   659: WWW====        xyr_VelZBl  = 0.0d0;    xyr_VelZNl  = 0.0d0;    xyr_VelZAl  = 0.0d0
   660: WWW====        xyr_VelZNs  = 0.0d0;    xyr_VelZAs = 0.0d0
   661: ***====        xyz_VelZNl  = 0.0d0
   662:            
   663:                allocate( xyz_ExnerBl(imin:imax,jmin:jmax,kmin:kmax) )
   664:                allocate( xyz_ExnerNl(imin:imax,jmin:jmax,kmin:kmax) )
   665:                allocate( xyz_ExnerAl(imin:imax,jmin:jmax,kmin:kmax) )
   666:                allocate( xyz_ExnerNs(imin:imax,jmin:jmax,kmin:kmax) )
   667:                allocate( xyz_ExnerAs(imin:imax,jmin:jmax,kmin:kmax) )
   668:            
   669: ***====        xyz_ExnerBl = 0.0d0;    xyz_ExnerNl = 0.0d0;    xyz_ExnerAl = 0.0d0
   670: ***====        xyz_ExnerNs = 0.0d0;    xyz_ExnerAs = 0.0d0
   671:            
   672:                allocate( xyz_PTempBl(imin:imax,jmin:jmax,kmin:kmax) )
   673:                allocate( xyz_PTempNl(imin:imax,jmin:jmax,kmin:kmax) )
   674:                allocate( xyz_PTempAl(imin:imax,jmin:jmax,kmin:kmax) )
   675:                allocate( xyz_PTempNs(imin:imax,jmin:jmax,kmin:kmax) )
   676:                allocate( xyz_PTempAs(imin:imax,jmin:jmax,kmin:kmax) )
   677:            
   678: ***====        xyz_PTempBl = 0.0d0;  xyz_PTempNl = 0.0d0;  xyz_PTempAl = 0.0d0
   679: ***====        xyz_PTempNs = 0.0d0;  xyz_PTempAs = 0.0d0
   680:            
   681:                allocate( xyz_CDensBl(imin:imax,jmin:jmax,kmin:kmax) )
   682:                allocate( xyz_CDensNl(imin:imax,jmin:jmax,kmin:kmax) )
   683:                allocate( xyz_CDensAl(imin:imax,jmin:jmax,kmin:kmax) )
   684:                allocate( xyz_CDensNs(imin:imax,jmin:jmax,kmin:kmax) )
   685:                allocate( xyz_CDensAs(imin:imax,jmin:jmax,kmin:kmax) )
   686:            
   687: ***====        xyz_CDensBl = 0.0d0;  xyz_CDensNl = 0.0d0;  xyz_CDensAl = 0.0d0
   688: ***====        xyz_CDensNs = 0.0d0;  xyz_CDensAs = 0.0d0
   689:            
   690:                allocate( xyz_KmBl(imin:imax,jmin:jmax,kmin:kmax) )
   691:                allocate( xyz_KmNl(imin:imax,jmin:jmax,kmin:kmax) )
   692:                allocate( xyz_KmAl(imin:imax,jmin:jmax,kmin:kmax) )
   693:            
   694: ***====        xyz_KmBl    = 0.0d0;    xyz_KmNl    = 0.0d0;    xyz_KmAl    = 0.0d0
   695:            
   696:                allocate( xyz_KhBl(imin:imax,jmin:jmax,kmin:kmax) )
   697:                allocate( xyz_KhNl(imin:imax,jmin:jmax,kmin:kmax) )
   698:                allocate( xyz_KhAl(imin:imax,jmin:jmax,kmin:kmax) )
   699:            
   700: ***====        xyz_KhBl    = 0.0d0;    xyz_KhNl    = 0.0d0;    xyz_KhAl    = 0.0d0
   701:            
   702:                allocate( xyzf_QMixBl(imin:imax,jmin:jmax,kmin:kmax,ncmax) )
   703:                allocate( xyzf_QMixNl(imin:imax,jmin:jmax,kmin:kmax,ncmax) )
   704:                allocate( xyzf_QMixAl(imin:imax,jmin:jmax,kmin:kmax,ncmax) )
   705:            
   706: ****===        xyzf_QMixBl = 0.0d0;   xyzf_QMixNl = 0.0d0;   xyzf_QMixAl = 0.0d0
   707:            
   708:                allocate( pyz_DVelXDtNl(imin:imax,jmin:jmax,kmin:kmax) )
   709:                allocate( xqz_DVelYDtNl(imin:imax,jmin:jmax,kmin:kmax) )
   710:                allocate( xyr_DVelZDtNl(imin:imax,jmin:jmax,kmin:kmax) )
   711:                allocate( xyz_DKmDtNl(imin:imax,jmin:jmax,kmin:kmax) )
   712:                allocate( xyz_DPTempDtNl(imin:imax,jmin:jmax,kmin:kmax) )
   713:                allocate( xyz_DExnerDtNl(imin:imax,jmin:jmax,kmin:kmax) )
   714:                allocate( xyz_DExnerDtNs(imin:imax,jmin:jmax,kmin:kmax) )
   715:                allocate( xyz_DCDensDtNl(imin:imax,jmin:jmax,kmin:kmax) )
   716:                allocate( xyzf_DQMixDtNl(imin:imax,jmin:jmax,kmin:kmax,ncmax) )
   717:            
   718: ***====        pyz_DVelXDtNl = 0.0d0
   719: ***====        xqz_DVelYDtNl = 0.0d0
   720: ***====        xyr_DVelZDtNl = 0.0d0
   721: ***====        xyz_DKmDtNl   = 0.0d0
   722: ***====        xyz_DPTempDtNl = 0.0d0
   723: ***====        xyz_DExnerDtNl = 0.0d0
   724: ***====        xyz_DExnerDtNs = 0.0d0
   725: ***====        xyz_DCDensDtNl = 0.0d0
   726: ****===        xyzf_DQMixDtNl = 0.0d0
   727:            
   728:                ! 時間ループの初期化
   729:                !
   730:                t = 0
   731:            
   732:              end subroutine VariableAllocate
   733:              
   734:              !-----------------------------------------------------------------------
   735:              subroutine MainInit
   736:                
   737:                implicit none
   738:            
   739:                character(STRING) :: cfgfile
   740:                                         ! NAMELIST ファイル名 ; NAMELIST fine name
   741:            
   742:                ! MPI
   743:                !
   744:                call MPIWrapperInit
   745:            
   746:                ! 時間計測
   747:                !
   748:                call ClocksetInit
   749:                call ClocksetPreStart
   750:                
   751:                ! NAMELIST ファイル名の読み込み
   752:                ! Loading NAMELIST file.
   753:                !
   754:                call argset_init( cfgfile ) !(out)
   755:            
   756:                ! NAMELIST ファイル名のモジュールへの登録
   757:                ! Loading NAMELIST file.
   758:                !
   759:                call NmlutilInit( cfgfile ) !(in)
   760:                
   761:                ! 時間積分の初期化
   762:                ! Initialization of time integration.
   763:                !
   764:                call timeset_init
   765:            
   766:                ! 格子点情報の初期化
   767:                ! Initialization of grid arrangement.
   768:                !
   769:                call gridset_init
   770:                
   771:                ! 化学計算ルーチンの初期化
   772:                ! Initialization of chemical routines.
   773:                !
   774:                call chemcalc_init
   775:                
   776:                ! 定数の情報の初期化
   777:                ! Initialization of constant variables.
   778:                !
   779:                call constants_init
   780:            
   781:                ! 軸の情報の初期化
   782:                ! Initialization of axis variables.
   783:                !
   784:                call axesset_init
   785:                
   786:                ! I/O ファイル名の初期化
   787:                ! Initialization of output file name. 
   788:                !
   789:                call fileset_init
   790:                
   791:                ! 湿潤過程共有変数の初期化
   792:                ! Initialization of common variables for moist process.
   793:                !
   794:                call composition_init
   795:            
   796:                ! ヒストリーファイル・リスタートファイルの初期化
   797:                ! Initialize restart & history files.
   798:                !
   799:                call HistoryFileio_init
   800:                call ReStartFileio_init
   801:            
   802:                ! 数値摩擦係数の初期化
   803:                ! Initialization of numerical friction coefficient.
   804:                !
   805:                call Damping_Init
   806:               
   807:                ! 内部変数の初期化
   808:                ! Initialization of internal variables.
   809:                !
   810:                call VariableAllocate
   811:            
   812:                ! 初期値の代入 
   813:                ! * ReStartFile が設定されている場合にはファイルを読み込む. 
   814:                !   設定されていない場合にはデフォルトの基本場と擾乱場を作る. 
   815:                !
   816:                ! Initial value set up.
   817:                ! * Read restartfile if it is specified. If not, make default basic
   818:                !   state and disturbance.
   819:                !
   820:                if (myrank == 0) call MessageNotify( "M", "main", "Initial value setup." )
   821:            
   822:                ! 基本場, 擾乱場の初期値を netCDF ファイルから取得する.
   823:                ! 
   824:                call ReStartFileio_BZ_Get
   825:                call ReStartFileio_Var_Get(     &
   826:                  & pyz_VelXBl,  pyz_VelXNl,    & ! (out)
   827:                  & xqz_VelYBl,  xqz_VelYNl,    & ! (out)
   828:                  & xyr_VelZBl,  xyr_VelZNl,    & ! (out)
   829:                  & xyz_PTempBl, xyz_PTempNl,   & ! (out)
   830:                  & xyz_ExnerBl, xyz_ExnerNl,   & ! (out)
   831:                  & xyzf_QMixBl, xyzf_QMixNl,   & ! (out)
   832:                  & xyz_KmBl,    xyz_KmNl,      & ! (out)
   833:                  & xyz_KhBl,    xyz_KhNl,      & ! (out)
   834:                  & xyz_CDensBl, xyz_CDensNl    & ! (out)
   835:                  & )
   836:                
   837:                ! 力学モジュールの初期化
   838:                ! Initialization of dynamical modules
   839:                !
   840:                call Dynamics_init
   841:                
   842:                ! 負の湿潤量の補填計算の初期化
   843:                ! Initialization of negative moist value correction.
   844:                !
   845:                call FillNegative_Init
   846:               
   847:                ! 物理過程の設定
   848:                !
   849:                call deepconv_main
   850:            
   851:                !-------------------------------------------------------------
   852:                ! 基本場のファイル出力
   853:                !
   854:                call HistoryPut( 'DensBZ',   xyz_DensBZ     , rstat)
   855:                call HistoryPut( 'ExnerBZ',  xyz_ExnerBZ    , rstat)
   856:                call HistoryPut( 'PTempBZ',  xyz_PTempBZ  , rstat)
   857:                call HistoryPut( 'VelSoundBZ', xyz_VelSoundBZ , rstat)
   858:                call HistoryPut( 'TempBZ',    xyz_TempBZ     , rstat)
   859:                call HistoryPut( 'PressBZ',   xyz_PressBZ    , rstat)
   860:                call HistoryPut( 'QMixBZ',    xyzf_QMixBZ  , rstat)
   861:                call HistoryPut( 'EffMolWtBZ', xyz_EffMolWtBZ, rstat)
   862:                
   863:                ! 音波に対する CFL 条件のチェック
   864:                ! CFL condtion check for sound wave.
   865:                !
   866:                call CFLCheckTimeShort( &
   867:                  & xyz_VelSoundBZ   & ! (in)
   868:                  & )
   869:                
   870:                ! CPU time
   871:                !
   872:                call ClocksetPreStop
   873:                
   874:              end subroutine MainInit
   875:              
   876:            
   877:              subroutine deepconv_main
   878:            
   879:                use dc_message,    only: MessageNotify
   880:                use dc_iounit,     only : FileOpen    
   881:            
   882:                implicit none
   883:            
   884:                integer  :: unit     !装置番号
   885:                character(STRING)  :: FlagTurbMethod     = ""
   886:                character(STRING)  :: FlagRadMethod      = ""
   887:                character(STRING)  :: FlagCloudMethod = ""
   888:                character(STRING)  :: FlagSurfaceMethod = ""
   889:            
   890:                NAMELIST /deepconv_main_nml / &
   891:                  & FlagTurbMethod,           &
   892:                  & FlagRadMethod,            &
   893:                  & FlagCloudMethod,       &
   894:                  & FlagSurfaceMethod
   895:            
   896:                ! デフォルト値の設定
   897:                ! Default values settings
   898:                !
   899:                FlagTurbMethod    = "Nothing"
   900:            !!$    FlagTurbMethod    = "KW1978"
   901:            
   902:                FlagRadMethod     = "Nothing"
   903:            !!$    FlagRadMethod     = "HeatConst"
   904:            !!$    FlagRadMethod     = "HeatVary"
   905:            !!$    FlagRadMethod     = "HeatBalance"
   906:            
   907:                FlagSurfaceMethod = "Nothing"
   908:            !!$    FlagSurfaceMethod = "Diff"
   909:            !!$    FlagSurfaceMethod = "Bulk"
   910:            
   911:                FlagCloudMethod   = "Nothing"
   912:            !!$    FlagCloudMethod   = "K1969"
   913:            !!$    FlagCloudMethod   = "MarsCond"
   914:            
   915:            
   916:                call FileOpen(unit, file=namelist_filename, mode='r')
   917:                read(unit, NML=deepconv_main_nml)
   918:                close(unit)
   919:            
   920:                select case ( FlagTurbMethod )
   921:                case ( "Nothing" )
   922:                case ( "KW1978" )
   923:                  IDTurbMethod = IDTurbMethodKW1978 
   924:                  call turbulence_kw1978_init
   925:                case default
   926:                  call MessageNotify( 'E', prog_name, &
   927:                    & 'FlagTurbMethod=<%c> is not supported.', &
   928:                    & c1 = trim(FlagTurbMethod) )
   929:                end select
   930:            
   931:                select case ( FlagRadMethod )
   932:                case ( "Nothing" )
   933:                case ( "HeatConst" )
   934:                  IDRadMethod = IDRadMethodHeatConst 
   935:                  call Radiation_Simple_init
   936:                case ( "HeatVary" )
   937:                  IDRadMethod = IDRadMethodHeatVary
   938:                  call Radiation_Simple_init
   939:                case ( "HeatBalance" )
   940:                  IDRadMethod = IDRadMethodHeatBalance
   941:                  call radiation_heatbalance_init
   942:                case default
   943:                  call MessageNotify( 'E', prog_name, &
   944:                    & 'FlagRadMethod=<%c> is not supported.', &
   945:                    & c1 = trim(FlagRadMethod) )
   946:                end select
   947:            
   948:                select case ( FlagSurfaceMethod )
   949:                case ( "Nothing" )
   950:                case ( "Diff" )
   951:                  IDSurfaceMethod = IDSurfaceMethodDiff
   952:                  call Surfaceflux_Diff_init
   953:                case ( "Bulk" )
   954:                  IDSurfaceMethod = IDSurfaceMethodBulk
   955:                  call Surfaceflux_Bulk_init
   956:                case default
   957:                  call MessageNotify( 'E', prog_name, &
   958:                    & 'FlagSurfaceMethod=<%c> is not supported.', &
   959:                    & c1 = trim(FlagSurfaceMethod) )
   960:                end select
   961:            
   962:                select case ( FlagCloudMethod )
   963:                case ( "Nothing" )
   964:                case ( "K1969" )
   965:                  IDCloudMethod = IDCloudMethodK1969
   966:                  call cloudphys_K1969_init
   967:                case ( "MarsCond" )
   968:                  IDCloudMethod = IDCloudMethodMarsCond
   969:                  call cloudphys_marscond_init
   970:                case default
   971:                  call MessageNotify( 'E', prog_name, &
   972:                    & 'FlagCloudMethod=<%c> is not supported.', &
   973:                    & c1 = trim(FlagCloudMethod) )
   974:                end select
   975:            
   976:                if (myrank == 0) then 
   977:                  call MessageNotify( "M", "main", "FlagTurbMethod    = %c", c1=trim(FlagTurbMethod))
   978:                  call MessageNotify( "M", "main", "IDTurbMethod      = %d", i=(/IDTurbMethod/))
   979:                  call MessageNotify( "M", "main", "FlagRadMethod     = %c", c1=trim(FlagRadMethod))
   980:                  call MessageNotify( "M", "main", "IDRadMethod       = %d", i=(/IDRadMethod/))
   981:                  call MessageNotify( "M", "main", "FlagSurfaceMethod = %c", c1=trim(FlagSurfaceMethod))
   982:                  call MessageNotify( "M", "main", "IDSurfaceMethod   = %d", i=(/IDSurfaceMethod/))
   983:                  call MessageNotify( "M", "main", "FlagCloudMethod   = %c", c1=trim(FlagCloudMethod))
   984:                  call MessageNotify( "M", "main", "IDCloudMethod     = %d", i=(/IDCloudMethod/))
   985:                end if
   986:            
   987:              end subroutine deepconv_main
   988:            
   989:                  
   990:            end program deepconv_arare
