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

  LINE  LEVEL( NO.): DIAGNOSTIC MESSAGE

   141  vec  (   3): Unvectorized loop.
   217  vec  (   4): Vectorized array expression.
   217  vec  (   4): Vectorized array expression.
   218  opt  (  11): Fused array assignments. :line 218 - 237
   218  vec  (   4): Vectorized array expression.
   239  vec  (   3): Unvectorized loop.
   240  opt  (  11): Fused array assignments. :line 240 - 263
   240  vec  (   4): Vectorized array expression.
   268  vec  (   4): Vectorized array expression.
   268  vec  (   4): Vectorized array expression.
   309  vec  (   4): Vectorized array expression.
   309  vec  (   4): Vectorized array expression.
   310  vec  (   4): Vectorized array expression.
   310  vec  (   4): Vectorized array expression.
   322  opt  (  11): Fused array assignments. :line 322 - 324
   322  vec  (   4): Vectorized array expression.
   322  vec  (   4): Vectorized array expression.
   325  opt  (  11): Fused array assignments. :line 325 - 327
   325  vec  (   4): Vectorized array expression.
   325  vec  (   4): Vectorized array expression.
   328  vec  (   4): Vectorized array expression.
   329  vec  (   4): Vectorized array expression.
   331  vec  (   3): Unvectorized loop.
   335  opt  (  11): Fused array assignments. :line 335 - 356
   335  vec  (   4): Vectorized array expression.
   335  vec  (   4): Vectorized array expression.
   360  vec  (   4): Vectorized array expression.
   360  vec  (   4): Vectorized array expression.
   372  vec  (   4): Vectorized array expression.
   373  vec  (   4): Vectorized array expression.
   374  vec  (   4): Vectorized array expression.
   377  opt  (  11): Fused array assignments. :line 377 - 407
   377  vec  (   4): Vectorized array expression.
   415  vec  (   4): Vectorized array expression.
   415  vec  (   4): Vectorized array expression.
   416  opt  (  11): Fused array assignments. :line 416 - 420
   416  vec  (   4): Vectorized array expression.
   416  vec  (   4): Vectorized array expression.
   416  vec  (   4): Vectorized array expression.
   416  vec  (   4): Vectorized array expression.
   416  vec  (   4): Vectorized array expression.
   421  vec  (   4): Vectorized array expression.
   421  vec  (   4): Vectorized array expression.
   426  vec  (   4): Vectorized array expression.
   426  vec  (   4): Vectorized array expression.
   427  vec  (   4): Vectorized array expression.
   427  vec  (   4): Vectorized array expression.
   429  vec  (   4): Vectorized array expression.
   429  vec  (   4): Vectorized array expression.
   430  vec  (   3): Unvectorized loop.
   431  vec  (   4): Vectorized array expression.
   431  vec  (   4): Vectorized array expression.
   468  opt  (  11): Fused array assignments. :line 468 - 471
   468  vec  (   4): Vectorized array expression.
   468  vec  (   4): Vectorized array expression.
   472  vec  (   3): Unvectorized loop.
   474  vec  (   4): Vectorized array expression.
   474  vec  (   4): Vectorized array expression.
   477  vec  (   4): Vectorized array expression.
   477  vec  (   4): Vectorized array expression.
   477  vec  (   4): Vectorized array expression.
   477  vec  (   4): Vectorized array expression.
   485  vec  (   3): Unvectorized loop.
   486  vec  (   4): Vectorized array expression.
   490  vec  (   4): Vectorized array expression.
   491  vec  (   3): Unvectorized loop.
   492  vec  (   4): Vectorized array expression.
   492  vec  (   4): Vectorized array expression.
   499  vec  (   4): Vectorized array expression.
   499  vec  (   4): Vectorized array expression.
   501  vec  (   3): Unvectorized loop.
Linux  R2.6.5-7.282-sn2 FORTRAN90/SX         Rev.360        Tue Oct 11 12:35:16 2011
FILE NAME: cloudphys_k1969.f90
PROGRAM NAME: cloudphys_k1969
TRANSFORMATION LIST

  LINE                   FORTRAN STATEMENT

     1  != Module cloudphys_k1969
     2  !
     3  ! Authors::   杉山耕一朗(SUGIYAMA Ko-ichiro), 小高正嗣 (ODAKA Masatsugu), 高橋芳幸 (YOSHIYUKI Takahashi)
     4  ! Version::   $Id: cloudphys_k1969.f90,v 1.15 2011-10-10 15:43:00 yot Exp $
     5  ! Tag Name::  $Name: arare5-20111010 $
     6  ! Copyright:: Copyright (C) GFD Dennou Club, 2006. All rights reserved.
     7  ! License::   See COPYRIGHT[link:../../COPYRIGHT]
     8  !
     9  !== Overview
    10  !
    11  !暖かい雨のバルク法を用いた, 水蒸気と雨, 雲と雨の混合比の変換係数を求める.
    12  !   * 中島健介 (1994) で利用した定式をそのまま利用.
    13  !
    14  !== Error Handling
    15  !
    16  !== Bugs
    17  !
    18  !== Note
    19  !
    20  !== Future Plans
    21  !
    22  !
    23  
    24  module cloudphys_k1969
    25    !
    26    !暖かい雨のバルク法を用いた, 水蒸気と雨, 雲と雨の混合比の変換係数を求める.
    27    !   * 中島健介 (1994) で利用した定式をそのまま利用.
    28    !
    29  
    30    !モジュール読み込み
    31    use dc_types,   only : DP, STRING
    32    use dc_iounit,  only : FileOpen
    33    use dc_message, only : MessageNotify
    34    use gtool_historyauto, only: HistoryAutoAddVariable, HistoryAutoPut
    35  
    36    use mpi_wrapper,only: myrank
    37    use timeset, only:  DelTimeLong, TimeN
    38    use gridset, only : imin,              &!x 方向の配列の下限
    39      &                 imax,              &!x 方向の配列の上限
    40      &                 jmin,              &!y 方向の配列の上限
    41      &                 jmax,              &!y 方向の配列の上限
    42      &                 kmin,              &!z 方向の配列の下限
    43      &                 kmax,              &!z 方向の配列の上限
    44      &                 nx, ny, nz, ncmax      !物理領域の大きさ
    45    use constants,only: PressBasis,        &!温位の基準圧力
    46      &                 CpDry,             &!乾燥成分の比熱
    47      &                 MolWtDry,          &!
    48      &                 GasRDry             !乾燥成分の気体定数
    49    use basicset, only: xyz_DensBZ,        &!基本場の密度
    50      &                 xyz_PTempBZ,       &!基本場の温位
    51      &                 xyz_ExnerBZ,       &!基本場の無次元圧力
    52      &                 xyzf_QMixBZ         !基本場の混合比
    53    use composition, only:                    &
    54      &                 MolWtWet,          &!
    55      &                 SpcWetID,          &!
    56      &                 SpcWetSymbol,      &!
    57      &                 CondNum,           &!凝結過程の数
    58      &                 IdxCG,             &!凝結過程(蒸気)の配列添え字
    59      &                 IdxCC,             &!凝結過程(雲)の配列添え字
    60      &                 IdxCR,             &!凝結過程(雲)の配列添え字
    61      &                 CloudNum,          &!雲の数
    62      &                 RainNum,           &!雨の数
    63      &                 IdxC,              &!雲の配列添え字
    64      &                 IdxR,              &!雨の配列添え字
    65      &                 IdxNH3,            &!NH3(蒸気)の配列添え字
    66      &                 IdxH2S,            &!H2S(蒸気)の配列添え字
    67      &                 IdxNH4SHr           !NH4SH(雨)の配列添え字
    68    use axesset, only : xyr_avr_xyz
    69    use xyz_deriv_module,only : xyz_dz_xyr
    70    use ChemCalc,  only : xyz_SvapPress, xyz_LatentHeat, ReactHeatNH4SH, xyz_DelQMixNH4SH
    71    use MoistAdjust, only: MoistAdjustSvapPress, MoistAdjustNH4SH
    72    use setmargin, only: SetMargin_xyzf, SetMargin_xyz
    73    use namelist_util, only: namelist_filename
    74    use setmargin,only: SetMargin_xyz, SetMargin_xyzf
    75  
    76    !暗黙の型宣言禁止
    77    implicit none
    78  
    79    !属性の指定
    80    private
    81  
    82    !関数を public にする
    83    public Cloudphys_K1969_Init
    84    public Cloudphys_K1969_forcing
    85    public Cloudphys_K1969_FallRain
    86  
    87    real(DP), save :: FactorJ      = 1.0d0 !雲物理過程のパラメータ
    88                                           !木星では 3.0d0
    89                                           !地球では 1.0d0 とする
    90    real(DP), save :: AutoConvTime = 1.0d3 !併合成長の時定数 [sec]
    91    real(DP), save :: QMixCr       = 1.0d-3
    92                                           !併合成長を生じる臨界混合比 [kg/kg]
    93  
    94  contains
    95  
    96  !!!=================================================================================!!!
    97    subroutine Cloudphys_K1969_Init
    98  
    99      !暗黙の型宣言禁止
   100      implicit none
   101  
   102      !内部変数
   103      integer  :: unit    !装置番号
   104      integer  :: l
   105      character(STRING) :: Planet = ""
   106  
   107      !-----------------------------------------------------------
   108      ! NAMELIST から情報を取得
   109      !-----------------------------------------------------------
   110      ! NAMELIST から情報を取得
   111      NAMELIST /cloudphys_k1969_nml/ Planet, FactorJ, AutoConvTime, QMixCr
   112  
   113      call FileOpen(unit, file=namelist_filename, mode='r')
   114      read(unit, NML=cloudphys_k1969_nml)
   115      close(unit)
   116  
   117      if (trim(Planet) == "Earth") then
   118        FactorJ = 1.0d0
   119      elseif (trim(Planet) == "Jupiter") then
   120        FactorJ = 3.0d0
   121      end if
   122  
   123      if (myrank == 0) then
   124        call MessageNotify( "M", &
   125          &  "Cloudphys_K1969_Init", "Planet = %c",  c1=trim(Planet))
   126        call MessageNotify( "M", &
   127          &  "Cloudphys_K1969_Init", "FactorJ = %f",  d=(/FactorJ/) )
   128        call MessageNotify( "M", &
   129          &  "Cloudphys_K1969_Init", "AutoConvTime = %f",  d=(/AutoConvTime/) )
   130        call MessageNotify( "M", &
   131          &  "Cloudphys_K1969_Init", "QMixCr = %f",  d=(/QMixCr/) )
   132      end if
   133  
   134      call HistoryAutoAddVariable(  &
   135        & varname='PTempCond',&
   136        & dims=(/'x','y','z','t'/),     &
   137        & longname='Latent heat term of potential temperature', &
   138        & units='K.s-1',    &
   139        & xtype='float')
   140  
   141      do l = 1, ncmax
   142        call HistoryAutoAddVariable(  &
   143          & varname=trim(SpcWetSymbol(l))//'_Cond', &
   144          & dims=(/'x','y','z','t'/),     &
   145          & longname='Condensation term of '          &
   146          &           //trim(SpcWetSymbol(l))//' mixing ratio',  &
   147          & units='kg.kg-1.s-1',    &
   148          & xtype='float')
   149  
   150        call HistoryAutoAddVariable(  &
   151          & varname=trim(SpcWetSymbol(l))//'_Fall', &
   152          & dims=(/'x','y','z','t'/),     &
   153          & longname='Fall Rain term of '          &
   154          &           //trim(SpcWetSymbol(l))//' mixing ratio',  &
   155          & units='kg.kg-1.s-1',    &
   156          & xtype='float')
   157  
   158        call HistoryAutoAddVariable(  &
   159          & varname=trim(SpcWetSymbol(l))//'_FallFluxAtLB', &
   160          & dims=(/'x','y','t'/),     &
   161          & longname='Falling Rain Flux '          &
   162          &           //trim(SpcWetSymbol(l)),  &
   163          & units='kg.m-2.s-1',    &
   164          & xtype='float')
   165      end do
   166  
   167    end subroutine Cloudphys_K1969_Init
   168  !!!=================================================================================!!!
   169  
   170    subroutine Cloudphys_K1969_forcing(xyz_ExnerNl, xyz_PTempAl, xyzf_QMixAl)
   171  
   172      implicit none
   173  
   174      real(DP), intent(in)           :: xyz_ExnerNl(imin:imax, jmin:jmax, kmin:kmax)
   175      real(DP), intent(inout)        :: xyz_PTempAl(imin:imax, jmin:jmax, kmin:kmax)
   176      real(DP), intent(inout)        :: xyzf_QMixAl(imin:imax, jmin:jmax, kmin:kmax, ncmax)
   177      real(DP)                       :: xyz_PTempOrig(imin:imax, jmin:jmax, kmin:kmax)
   178      real(DP)                       :: xyz_PTempWork(imin:imax, jmin:jmax, kmin:kmax)
   179      real(DP)                       :: xyz_DelPTemp(imin:imax, jmin:jmax, kmin:kmax)
   180      real(DP)                       :: xyz_Del(imin:imax, jmin:jmax, kmin:kmax)
   181      real(DP)                       :: xyzf_QMixOrig(imin:imax, jmin:jmax, kmin:kmax, ncmax)
   182      real(DP)                       :: xyzf_QMixWork(imin:imax, jmin:jmax, kmin:kmax, ncmax)
   183      real(DP)                       :: xyzf_DelQMix(imin:imax, jmin:jmax, kmin:kmax, ncmax)
   184      real(DP)                       :: xyzf_Del(imin:imax, jmin:jmax, kmin:kmax, ncmax)
   185      real(DP)                       :: DelTime
   186      integer                        :: l, s
   187  
   188      real(DP)             :: xyzf_Cloud2Rain(imin:imax,jmin:jmax,kmin:kmax, ncmax)
   189                                            !雲から雨への変換量
   190      real(DP)             :: xyz_AutoConv(imin:imax,jmin:jmax,kmin:kmax)
   191                                            !飽和混合比
   192      real(DP)             :: xyz_Collect(imin:imax,jmin:jmax,kmin:kmax)
   193                                            !規格化された潜熱
   194  
   195      real(DP)             :: xyzf_QMixAll(imin:imax,jmin:jmax,kmin:kmax, ncmax)
   196                                            !混合比の擾乱成分 + 平均成分
   197      real(DP)             :: xyz_TempAll(imin:imax,jmin:jmax,kmin:kmax)
   198                                            !温度の擾乱成分 + 平均成分
   199      real(DP)             :: xyz_PressAll(imin:imax,jmin:jmax,kmin:kmax)
   200                                            !全圧
   201      real(DP)             :: xyz_ExnerAll(imin:imax,jmin:jmax,kmin:kmax)
   202      real(DP)             :: xyz_NonSaturate(imin:imax,jmin:jmax,kmin:kmax)
   203                                            !未飽和度(飽和混合比と蒸気の混合比の差)
   204      real(DP)             :: xyzf_Rain2Gas(imin:imax,jmin:jmax,kmin:kmax, ncmax)
   205      real(DP)             :: xyzf_Rain2GasNH4SH(imin:imax,jmin:jmax,kmin:kmax, ncmax)
   206      real(DP)             :: xyzf_DelPTemp(imin:imax,jmin:jmax,kmin:kmax, ncmax)
   207      real(DP)             :: xyz_DelPTempNH4SH(imin:imax,jmin:jmax,kmin:kmax)
   208  
   209      !-----------------------------------------
   210      ! 時間刻み幅. Leap-frog なので, 2 \del t
   211      !
   212      DelTime = 2.0d0 * DelTimeLong
   213  
   214      !------------------------------------------
   215      ! 初期値を保管 Store Initial Value
   216      !
   217      xyz_PTempOrig = xyz_PTempAl
     .        if (xyz_ptemporig.DSC.U2 + 1 - xyz_ptemporig.DSC.L2 .gt. 0) then  
     .           J1 = and(xyz_ptemporig.DSC.U2 + 1 - xyz_ptemporig.DSC.L2,3)    
     .  !CDIR    NODEP                                                          
     .           do t1154 = 1, J1                                               
     .  !CDIR       NODEP                                                       
     .              do t1156 = 1, xyz_ptemporig.DSC.U1 + 1 -                    
     .       1         xyz_ptemporig.DSC.L1                                     
     .                 xyz_ptemporig(xyz_ptemporig.DSC.L1+t1156-1,t1154-1+      
     .       1            xyz_ptemporig.DSC.L2,t1152+xyz_ptemporig.DSC.L3) =    
     .       2            xyz_ptempal(t353+t1156-1,t1154-1+t355,t1152+t357)     
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t1154 = J1 + 1, xyz_ptemporig.DSC.U2 + 1 -                  
     .       1      xyz_ptemporig.DSC.L2, 4                                     
     .  !CDIR       NODEP                                                       
     .              do t1156 = 1, xyz_ptemporig.DSC.U1 + 1 -                    
     .       1         xyz_ptemporig.DSC.L1                                     
     .                 xyz_ptemporig(xyz_ptemporig.DSC.L1+t1156-1,t1154-1+      
     .       1            xyz_ptemporig.DSC.L2,t1152+xyz_ptemporig.DSC.L3) =    
     .       2            xyz_ptempal(t353+t1156-1,t1154-1+t355,t1152+t357)     
     .                 xyz_ptemporig(xyz_ptemporig.DSC.L1+t1156-1,t1154+        
     .       1            xyz_ptemporig.DSC.L2,t1152+xyz_ptemporig.DSC.L3) =    
     .       2            xyz_ptempal(t353+t1156-1,t1154+t355,t1152+t357)       
     .                 xyz_ptemporig(xyz_ptemporig.DSC.L1+t1156-1,t1154+1+      
     .       1            xyz_ptemporig.DSC.L2,t1152+xyz_ptemporig.DSC.L3) =    
     .       2            xyz_ptempal(t353+t1156-1,t1154+1+t355,t1152+t357)     
     .                 xyz_ptemporig(xyz_ptemporig.DSC.L1+t1156-1,t1154+2+      
     .       1            xyz_ptemporig.DSC.L2,t1152+xyz_ptemporig.DSC.L3) =    
     .       2            xyz_ptempal(t353+t1156-1,t1154+2+t355,t1152+t357)     
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   218      xyzf_QMixOrig  = xyzf_QMixAl
     .  !CDIR NODEP                                                             
     .        do t1170 = 1, xyzf_qmixorig.DSC.U1 + 1 - xyzf_qmixorig.DSC.L1     
     .           xyzf_qmixorig(xyzf_qmixorig.DSC.L1+t1170-1,t1168+              
     .       1      xyzf_qmixorig.DSC.L2,t1166+xyzf_qmixorig.DSC.L3,t1164+1) =  
     .       2      xyzf_qmixal(t363+t1170-1,t1168+t365,t1166+t367,t1164+1)     
     .           xyzf_qmixwork(xyzf_qmixwork.DSC.L1+t1170-1,t1168+              
     .       1      xyzf_qmixwork.DSC.L2,t1166+xyzf_qmixwork.DSC.L3,t1164+1) =  
     .       2      xyzf_qmixal(t363+t1170-1,t1168+t365,t1166+t367,t1164+1)     
     .           xyzf_qmixall(xyzf_qmixall.DSC.L1+t1170-1,t1168+                
     .       1      xyzf_qmixall.DSC.L2,t1166+xyzf_qmixall.DSC.L3,t1164+1) =    
     .       2      max(9.99999999999999e-061,xyzf_qmixal(t363+t1170-1,t1168+   
     .       3      t365,t1166+t367,t1164+1)+xyzf_qmixbz(t23+t1170-1,t1168+t25, 
     .       4      t1166+t27,t1164+t29))                                       
     .           xyzf_cloud2rain(xyzf_cloud2rain.DSC.L1+t1170-1,t1168+          
     .       1      xyzf_cloud2rain.DSC.L2,t1166+xyzf_cloud2rain.DSC.L3,t1164+1)
     .       2       = 0.0000000000000000e+000                                  
     .        end do                                                            
   219  
   220      !------------------------------------------
   221      ! 暖かい雨のパラメタリゼーション.
   222      ! * 雲<-->雨 の変換を行う.
   223      !
   224      ! Warm rain parameterization.
   225      ! * Conversion from cloud to rain.
   226  
   227      !これまでの値を作業配列に保管
   228      ! Previous values are stored to work area.
   229      !
   230      xyzf_QMixWork = xyzf_QMixAl
   231  
   232      !雨への変化量を計算
   233      ! Conversion values are calculated.
   234      !
   235      xyzf_QMixAll = max( 1.0d-60, xyzf_QMixAl + xyzf_QMixBZ )
   236  
   237      xyzf_Cloud2Rain = 0.0d0
   238  
   239      do s = 1, CloudNum
   240        xyz_AutoConv = 0.0d0
     .  !CDIR NODEP                                                             
     .        do t1208 = 1, xyz_autoconv.DSC.U1 + 1 - xyz_autoconv.DSC.L1       
     .           xyz_autoconv(xyz_autoconv.DSC.L1+t1208-1,t1206+                
     .       1      xyz_autoconv.DSC.L2,t1204+xyz_autoconv.DSC.L3) =            
     .       2      0.0000000000000000e+000                                     
     .           xyz_collect(xyz_collect.DSC.L1+t1208-1,t1206+xyz_collect.DSC.L2
     .       1      ,t1204+xyz_collect.DSC.L3) = 0.0000000000000000e+000        
     .           xyz_autoconv(xyz_autoconv.DSC.L1+t1208-1,t1206+                
     .       1      xyz_autoconv.DSC.L2,t1204+xyz_autoconv.DSC.L3) = deltime/   
     .       2      autoconvtime*max(9.99999999999999e-061,xyzf_qmixall(        
     .       3      xyzf_qmixall.DSC.L1+t1208-1,t1206+xyzf_qmixall.DSC.L2,t1204+
     .       4      xyzf_qmixall.DSC.L3,idxc(s))-qmixcr)                        
     .           xyz_collect(xyz_collect.DSC.L1+t1208-1,t1206+xyz_collect.DSC.L2
     .       1      ,t1204+xyz_collect.DSC.L3) = deltime*2.20000000000000e+000* 
     .       2      factorj*xyzf_qmixall(xyzf_qmixall.DSC.L1+t1208-1,t1206+     
     .       3      xyzf_qmixall.DSC.L2,t1204+xyzf_qmixall.DSC.L3,idxc(s))*(    
     .       4      xyzf_qmixall(xyzf_qmixall.DSC.L1+t1208-1,t1206+             
     .       5      xyzf_qmixall.DSC.L2,t1204+xyzf_qmixall.DSC.L3,idxr(s))*     
     .       6      xyz_densbz(t12+t1208-1,t1206+t14,t1204+t16))**              
     .       7      8.75000000000000e-001                                       
     .           xyzf_cloud2rain(xyzf_cloud2rain.DSC.L1+t1208-1,t1206+          
     .       1      xyzf_cloud2rain.DSC.L2,t1204+xyzf_cloud2rain.DSC.L3,idxc(s))
     .       2       = -min(xyzf_qmixall(xyzf_qmixall.DSC.L1+t1208-1,t1206+     
     .       3      xyzf_qmixall.DSC.L2,t1204+xyzf_qmixall.DSC.L3,idxc(s)),     
     .       4      xyz_autoconv(xyz_autoconv.DSC.L1+t1208-1,t1206+             
     .       5      xyz_autoconv.DSC.L2,t1204+xyz_autoconv.DSC.L3)+xyz_collect( 
     .       6      xyz_collect.DSC.L1+t1208-1,t1206+xyz_collect.DSC.L2,t1204+  
     .       7      xyz_collect.DSC.L3))                                        
     .           xyzf_cloud2rain(xyzf_cloud2rain.DSC.L1+t1208-1,t1206+          
     .       1      xyzf_cloud2rain.DSC.L2,t1204+xyzf_cloud2rain.DSC.L3,idxr(s))
     .       2       = -xyzf_cloud2rain(xyzf_cloud2rain.DSC.L1+t1208-1,t1206+   
     .       3      xyzf_cloud2rain.DSC.L2,t1204+xyzf_cloud2rain.DSC.L3,idxc(s))
     .        end do                                                            
   241        xyz_Collect  = 0.0d0
   242  
   243        !併合成長
   244        !
   245        xyz_AutoConv =                                             &
   246          & DelTime / AutoConvTime                                 &
   247          & * max( 1.0d-60, ( xyzf_QMixAll(:,:,:,IdxC(s)) - QMixCr) )
   248  
   249        !衝突合体成長
   250        !
   251        xyz_Collect =                                                 &
   252          &  DelTime                                                  &
   253          &  * 2.2d0 * FactorJ * xyzf_QMixAll(:,:,:,IdxC(s))          &
   254          &  * (xyzf_QMixAll(:,:,:,IdxR(s)) * xyz_DensBZ) ** 0.875d0
   255  
   256        !雲の変換量: 併合成長と合体衝突の和
   257        !  元々の変化量を上限値として設定する. 負の値となる.
   258        !
   259        xyzf_Cloud2Rain(:,:,:,IdxC(s)) =                       &
   260          & - min( xyzf_QMixAll(:,:,:,IdxC(s)), ( xyz_AutoConv + xyz_Collect ) )
   261  
   262        !雨の変換量. 符号は雲の変換量とは反対.
   263        xyzf_Cloud2Rain(:,:,:,IdxR(s)) = - xyzf_Cloud2Rain(:,:,:,IdxC(s))
   264      end do
   265  
   266      ! 変化量を足し込む
   267      !
   268      xyzf_QMixAl = xyzf_QMixWork + xyzf_Cloud2Rain
     .        if (xyzf_qmixwork.DSC.U2 + 1 - xyzf_qmixwork.DSC.L2 .gt. 0) then  
     .           J2 = and(xyzf_qmixwork.DSC.U2 + 1 - xyzf_qmixwork.DSC.L2,3)    
     .  !CDIR    NODEP                                                          
     .           do t1256 = 1, J2                                               
     .  !CDIR       NODEP                                                       
     .              do t1258 = 1, xyzf_qmixwork.DSC.U1 + 1 -                    
     .       1         xyzf_qmixwork.DSC.L1                                     
     .                 xyzf_qmixal(t363+t1258-1,t1256-1+t365,t1254+t367,t1252+1)
     .       1             = xyzf_qmixwork(xyzf_qmixwork.DSC.L1+t1258-1,t1256-1+
     .       2            xyzf_qmixwork.DSC.L2,t1254+xyzf_qmixwork.DSC.L3,t1252+
     .       3            1) + xyzf_cloud2rain(xyzf_cloud2rain.DSC.L1+t1258-1,  
     .       4            t1256-1+xyzf_cloud2rain.DSC.L2,t1254+                 
     .       5            xyzf_cloud2rain.DSC.L3,t1252+1)                       
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t1256 = J2 + 1, xyzf_qmixwork.DSC.U2 + 1 -                  
     .       1      xyzf_qmixwork.DSC.L2, 4                                     
     .  !CDIR       NODEP                                                       
     .              do t1258 = 1, xyzf_qmixwork.DSC.U1 + 1 -                    
     .       1         xyzf_qmixwork.DSC.L1                                     
     .                 xyzf_qmixal(t363+t1258-1,t1256-1+t365,t1254+t367,t1252+1)
     .       1             = xyzf_qmixwork(xyzf_qmixwork.DSC.L1+t1258-1,t1256-1+
     .       2            xyzf_qmixwork.DSC.L2,t1254+xyzf_qmixwork.DSC.L3,t1252+
     .       3            1) + xyzf_cloud2rain(xyzf_cloud2rain.DSC.L1+t1258-1,  
     .       4            t1256-1+xyzf_cloud2rain.DSC.L2,t1254+                 
     .       5            xyzf_cloud2rain.DSC.L3,t1252+1)                       
     .                 xyzf_qmixal(t363+t1258-1,t1256+t365,t1254+t367,t1252+1)  
     .       1             = xyzf_qmixwork(xyzf_qmixwork.DSC.L1+t1258-1,t1256+  
     .       2            xyzf_qmixwork.DSC.L2,t1254+xyzf_qmixwork.DSC.L3,t1252+
     .       3            1) + xyzf_cloud2rain(xyzf_cloud2rain.DSC.L1+t1258-1,  
     .       4            t1256+xyzf_cloud2rain.DSC.L2,t1254+                   
     .       5            xyzf_cloud2rain.DSC.L3,t1252+1)                       
     .                 xyzf_qmixal(t363+t1258-1,t1256+1+t365,t1254+t367,t1252+1)
     .       1             = xyzf_qmixwork(xyzf_qmixwork.DSC.L1+t1258-1,t1256+1+
     .       2            xyzf_qmixwork.DSC.L2,t1254+xyzf_qmixwork.DSC.L3,t1252+
     .       3            1) + xyzf_cloud2rain(xyzf_cloud2rain.DSC.L1+t1258-1,  
     .       4            t1256+1+xyzf_cloud2rain.DSC.L2,t1254+                 
     .       5            xyzf_cloud2rain.DSC.L3,t1252+1)                       
     .                 xyzf_qmixal(t363+t1258-1,t1256+2+t365,t1254+t367,t1252+1)
     .       1             = xyzf_qmixwork(xyzf_qmixwork.DSC.L1+t1258-1,t1256+2+
     .       2            xyzf_qmixwork.DSC.L2,t1254+xyzf_qmixwork.DSC.L3,t1252+
     .       3            1) + xyzf_cloud2rain(xyzf_cloud2rain.DSC.L1+t1258-1,  
     .       4            t1256+2+xyzf_cloud2rain.DSC.L2,t1254+                 
     .       5            xyzf_cloud2rain.DSC.L3,t1252+1)                       
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   269  
   270      ! Set Margin
   271      !
   272      call SetMargin_xyzf(xyzf_QMixAl)
   273  
   274      !-------------------------------------------
   275      ! 湿潤飽和調節
   276      ! * 蒸気<-->雲の変換を行う.
   277      !
   278      ! Moist adjustment.
   279      ! * Conversion from vapor to cloud.
   280      !
   281      call MoistAdjustSvapPress(   &
   282        & xyz_ExnerNl,             & ! (in)
   283        & xyz_PTempAl,             & ! (inout)
   284        & xyzf_QMixAl              & ! (inout)
   285        & )
   286      if (IdxNH4SHr /= 0) then
   287        call MoistAdjustNH4SH(     &
   288          & xyz_ExnerNl,           & !(in)
   289          & xyz_PTempAl,           & !(inout)
   290          & xyzf_QMixAl            & !(inout)
   291          & )
   292      end if
   293  
   294      ! Set Margin
   295      !
   296      call SetMargin_xyz(xyz_PTempAl)
   297      call SetMargin_xyzf(xyzf_QMixAl)
   298  
   299      !-------------------------------------------
   300      ! 暖かい雨のパラメタリゼーション.
   301      ! * 蒸気<-->雨 の変換を行う
   302      !
   303      ! Warm rain parameterization.
   304      ! * Conversion from rain to vapor.
   305  
   306      !これまでの値を作業配列に保管
   307      ! Previous values are stored to work area.
   308      !
   309      xyz_PTempWork = xyz_PTempAl
     .        if (xyz_ptempwork.DSC.U2 + 1 - xyz_ptempwork.DSC.L2 .gt. 0) then  
     .           J3 = and(xyz_ptempwork.DSC.U2 + 1 - xyz_ptempwork.DSC.L2,3)    
     .  !CDIR    NODEP                                                          
     .           do t1274 = 1, J3                                               
     .  !CDIR       NODEP                                                       
     .              do t1276 = 1, xyz_ptempwork.DSC.U1 + 1 -                    
     .       1         xyz_ptempwork.DSC.L1                                     
     .                 xyz_ptempwork(xyz_ptempwork.DSC.L1+t1276-1,t1274-1+      
     .       1            xyz_ptempwork.DSC.L2,t1272+xyz_ptempwork.DSC.L3) =    
     .       2            xyz_ptempal(t353+t1276-1,t1274-1+t355,t1272+t357)     
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t1274 = J3 + 1, xyz_ptempwork.DSC.U2 + 1 -                  
     .       1      xyz_ptempwork.DSC.L2, 4                                     
     .  !CDIR       NODEP                                                       
     .              do t1276 = 1, xyz_ptempwork.DSC.U1 + 1 -                    
     .       1         xyz_ptempwork.DSC.L1                                     
     .                 xyz_ptempwork(xyz_ptempwork.DSC.L1+t1276-1,t1274-1+      
     .       1            xyz_ptempwork.DSC.L2,t1272+xyz_ptempwork.DSC.L3) =    
     .       2            xyz_ptempal(t353+t1276-1,t1274-1+t355,t1272+t357)     
     .                 xyz_ptempwork(xyz_ptempwork.DSC.L1+t1276-1,t1274+        
     .       1            xyz_ptempwork.DSC.L2,t1272+xyz_ptempwork.DSC.L3) =    
     .       2            xyz_ptempal(t353+t1276-1,t1274+t355,t1272+t357)       
     .                 xyz_ptempwork(xyz_ptempwork.DSC.L1+t1276-1,t1274+1+      
     .       1            xyz_ptempwork.DSC.L2,t1272+xyz_ptempwork.DSC.L3) =    
     .       2            xyz_ptempal(t353+t1276-1,t1274+1+t355,t1272+t357)     
     .                 xyz_ptempwork(xyz_ptempwork.DSC.L1+t1276-1,t1274+2+      
     .       1            xyz_ptempwork.DSC.L2,t1272+xyz_ptempwork.DSC.L3) =    
     .       2            xyz_ptempal(t353+t1276-1,t1274+2+t355,t1272+t357)     
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   310      xyzf_QMixWork  = xyzf_QMixAl
     .        if (xyzf_qmixwork.DSC.U2 + 1 - xyzf_qmixwork.DSC.L2 .gt. 0) then  
     .           J4 = and(xyzf_qmixwork.DSC.U2 + 1 - xyzf_qmixwork.DSC.L2,3)    
     .  !CDIR    NODEP                                                          
     .           do t1288 = 1, J4                                               
     .  !CDIR       NODEP                                                       
     .              do t1290 = 1, xyzf_qmixwork.DSC.U1 + 1 -                    
     .       1         xyzf_qmixwork.DSC.L1                                     
     .                 xyzf_qmixwork(xyzf_qmixwork.DSC.L1+t1290-1,t1288-1+      
     .       1            xyzf_qmixwork.DSC.L2,t1286+xyzf_qmixwork.DSC.L3,t1284+
     .       2            1) = xyzf_qmixal(t363+t1290-1,t1288-1+t365,t1286+t367,
     .       3            t1284+1)                                              
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t1288 = J4 + 1, xyzf_qmixwork.DSC.U2 + 1 -                  
     .       1      xyzf_qmixwork.DSC.L2, 4                                     
     .  !CDIR       NODEP                                                       
     .              do t1290 = 1, xyzf_qmixwork.DSC.U1 + 1 -                    
     .       1         xyzf_qmixwork.DSC.L1                                     
     .                 xyzf_qmixwork(xyzf_qmixwork.DSC.L1+t1290-1,t1288-1+      
     .       1            xyzf_qmixwork.DSC.L2,t1286+xyzf_qmixwork.DSC.L3,t1284+
     .       2            1) = xyzf_qmixal(t363+t1290-1,t1288-1+t365,t1286+t367,
     .       3            t1284+1)                                              
     .                 xyzf_qmixwork(xyzf_qmixwork.DSC.L1+t1290-1,t1288+        
     .       1            xyzf_qmixwork.DSC.L2,t1286+xyzf_qmixwork.DSC.L3,t1284+
     .       2            1) = xyzf_qmixal(t363+t1290-1,t1288+t365,t1286+t367,  
     .       3            t1284+1)                                              
     .                 xyzf_qmixwork(xyzf_qmixwork.DSC.L1+t1290-1,t1288+1+      
     .       1            xyzf_qmixwork.DSC.L2,t1286+xyzf_qmixwork.DSC.L3,t1284+
     .       2            1) = xyzf_qmixal(t363+t1290-1,t1288+1+t365,t1286+t367,
     .       3            t1284+1)                                              
     .                 xyzf_qmixwork(xyzf_qmixwork.DSC.L1+t1290-1,t1288+2+      
     .       1            xyzf_qmixwork.DSC.L2,t1286+xyzf_qmixwork.DSC.L3,t1284+
     .       2            1) = xyzf_qmixal(t363+t1290-1,t1288+2+t365,t1286+t367,
     .       3            t1284+1)                                              
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   311  
   312      ! 雨から蒸気への混合比変化を求める
   313      ! * 温位の計算において, 混合比変化が必要となるため,
   314      !   混合比変化を 1 つの配列として用意する.
   315      !
   316      ! Conversion values are calculated.
   317      !
   318  
   319      !温度, 圧力, 混合比の全量を求める
   320      !擾乱成分と平均成分の足し算
   321      !
   322      xyz_ExnerAll  = xyz_ExnerNl + xyz_ExnerBZ
     .        if (jmax + 1 - jmin .gt. 0) then                                  
     .           J5 = and(jmax + 1 - jmin,1)                                    
     .  !CDIR    NODEP                                                          
     .           do t1302 = 1, J5                                               
     .  !CDIR       NODEP                                                       
     .              do t1304 = 1, imax + 1 - imin                               
     .                 xyz_exnerall(xyz_exnerall.DSC.L1+t1304-1,t1302-1+        
     .       1            xyz_exnerall.DSC.L2,t1300+xyz_exnerall.DSC.L3) =      
     .       2            xyz_exnernl(t343+t1304-1,t1302-1+t345,t1300+t347) +   
     .       3            xyz_exnerbz(xyz_exnerbz.DSC.L1+t1304-1,t1302-1+       
     .       4            xyz_exnerbz.DSC.L2,t1300+xyz_exnerbz.DSC.L3)          
     .                 xyz_tempall(xyz_tempall.DSC.L1+t1304-1,t1302-1+          
     .       1            xyz_tempall.DSC.L2,t1300+xyz_tempall.DSC.L3) = (      
     .       2            xyz_ptempal(t353+t1304-1,t1302-1+t355,t1300+t357)+    
     .       3            xyz_ptempbz(xyz_ptempbz.DSC.L1+t1304-1,t1302-1+       
     .       4            xyz_ptempbz.DSC.L2,t1300+xyz_ptempbz.DSC.L3))*(       
     .       5            xyz_exnernl(t343+t1304-1,t1302-1+t345,t1300+t347)+    
     .       6            xyz_exnerbz(xyz_exnerbz.DSC.L1+t1304-1,t1302-1+       
     .       7            xyz_exnerbz.DSC.L2,t1300+xyz_exnerbz.DSC.L3))         
     .                 xyz_pressall(xyz_pressall.DSC.L1+t1304-1,t1302-1+        
     .       1            xyz_pressall.DSC.L2,t1300+xyz_pressall.DSC.L3) =      
     .       2            pressbasis*(xyz_exnernl(t343+t1304-1,t1302-1+t345,    
     .       3            t1300+t347)+xyz_exnerbz(xyz_exnerbz.DSC.L1+t1304-1,   
     .       4            t1302-1+xyz_exnerbz.DSC.L2,t1300+xyz_exnerbz.DSC.L3)) 
     .       5            **(cpdry/gasrdry)                                     
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t1302 = J5 + 1, jmax + 1 - jmin, 2                          
     .  !CDIR       NODEP                                                       
     .              do t1304 = 1, imax + 1 - imin                               
     .                 xyz_exnerall(xyz_exnerall.DSC.L1+t1304-1,t1302-1+        
     .       1            xyz_exnerall.DSC.L2,t1300+xyz_exnerall.DSC.L3) =      
     .       2            xyz_exnernl(t343+t1304-1,t1302-1+t345,t1300+t347) +   
     .       3            xyz_exnerbz(xyz_exnerbz.DSC.L1+t1304-1,t1302-1+       
     .       4            xyz_exnerbz.DSC.L2,t1300+xyz_exnerbz.DSC.L3)          
     .                 xyz_exnerall(xyz_exnerall.DSC.L1+t1304-1,t1302+          
     .       1            xyz_exnerall.DSC.L2,t1300+xyz_exnerall.DSC.L3) =      
     .       2            xyz_exnernl(t343+t1304-1,t1302+t345,t1300+t347) +     
     .       3            xyz_exnerbz(xyz_exnerbz.DSC.L1+t1304-1,t1302+         
     .       4            xyz_exnerbz.DSC.L2,t1300+xyz_exnerbz.DSC.L3)          
     .                 xyz_tempall(xyz_tempall.DSC.L1+t1304-1,t1302-1+          
     .       1            xyz_tempall.DSC.L2,t1300+xyz_tempall.DSC.L3) = (      
     .       2            xyz_ptempal(t353+t1304-1,t1302-1+t355,t1300+t357)+    
     .       3            xyz_ptempbz(xyz_ptempbz.DSC.L1+t1304-1,t1302-1+       
     .       4            xyz_ptempbz.DSC.L2,t1300+xyz_ptempbz.DSC.L3))*(       
     .       5            xyz_exnernl(t343+t1304-1,t1302-1+t345,t1300+t347)+    
     .       6            xyz_exnerbz(xyz_exnerbz.DSC.L1+t1304-1,t1302-1+       
     .       7            xyz_exnerbz.DSC.L2,t1300+xyz_exnerbz.DSC.L3))         
     .                 xyz_tempall(xyz_tempall.DSC.L1+t1304-1,t1302+            
     .       1            xyz_tempall.DSC.L2,t1300+xyz_tempall.DSC.L3) = (      
     .       2            xyz_ptempal(t353+t1304-1,t1302+t355,t1300+t357)+      
     .       3            xyz_ptempbz(xyz_ptempbz.DSC.L1+t1304-1,t1302+         
     .       4            xyz_ptempbz.DSC.L2,t1300+xyz_ptempbz.DSC.L3))*(       
     .       5            xyz_exnernl(t343+t1304-1,t1302+t345,t1300+t347)+      
     .       6            xyz_exnerbz(xyz_exnerbz.DSC.L1+t1304-1,t1302+         
     .       7            xyz_exnerbz.DSC.L2,t1300+xyz_exnerbz.DSC.L3))         
     .                 xyz_pressall(xyz_pressall.DSC.L1+t1304-1,t1302-1+        
     .       1            xyz_pressall.DSC.L2,t1300+xyz_pressall.DSC.L3) =      
     .       2            pressbasis*(xyz_exnernl(t343+t1304-1,t1302-1+t345,    
     .       3            t1300+t347)+xyz_exnerbz(xyz_exnerbz.DSC.L1+t1304-1,   
     .       4            t1302-1+xyz_exnerbz.DSC.L2,t1300+xyz_exnerbz.DSC.L3)) 
     .       5            **(cpdry/gasrdry)                                     
     .                 xyz_pressall(xyz_pressall.DSC.L1+t1304-1,t1302+          
     .       1            xyz_pressall.DSC.L2,t1300+xyz_pressall.DSC.L3) =      
     .       2            pressbasis*(xyz_exnernl(t343+t1304-1,t1302+t345,t1300+
     .       3            t347)+xyz_exnerbz(xyz_exnerbz.DSC.L1+t1304-1,t1302+   
     .       4            xyz_exnerbz.DSC.L2,t1300+xyz_exnerbz.DSC.L3))**(cpdry/
     .       5            gasrdry)                                              
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   323      xyz_TempAll   = ( xyz_PTempAl + xyz_PTempBZ ) * ( xyz_ExnerNl + xyz_ExnerBZ )
   324      xyz_PressAll  = PressBasis * ((xyz_ExnerNl + xyz_ExnerBZ) ** (CpDry / GasRDry))
   325      xyzf_QMixAll = max( 1.0d-60, xyzf_QMixAl + xyzf_QMixBZ )
     .        if (jmax + 1 - jmin .gt. 0) then                                  
     .           J6 = and(jmax + 1 - jmin,1)                                    
     .  !CDIR    NODEP                                                          
     .           do t1343 = 1, J6                                               
     .  !CDIR       NODEP                                                       
     .              do t1345 = 1, imax + 1 - imin                               
     .                 xyzf_qmixall(xyzf_qmixall.DSC.L1+t1345-1,t1343-1+        
     .       1            xyzf_qmixall.DSC.L2,t1341+xyzf_qmixall.DSC.L3,t1339+1)
     .       2             = max(9.99999999999999e-061,xyzf_qmixal(t363+t1345-1,
     .       3            t1343-1+t365,t1341+t367,t1339+1)+xyzf_qmixbz(t23+t1345
     .       4            -1,t1343-1+t25,t1341+t27,t1339+t29))                  
     .                 xyzf_rain2gas(xyzf_rain2gas.DSC.L1+t1345-1,t1343-1+      
     .       1            xyzf_rain2gas.DSC.L2,t1341+xyzf_rain2gas.DSC.L3,t1339+
     .       2            1) = 0.0000000000000000e+000                          
     .                 xyzf_rain2gasnh4sh(xyzf_rain2gasnh4sh.DSC.L1+t1345-1,    
     .       1            t1343-1+xyzf_rain2gasnh4sh.DSC.L2,t1341+              
     .       2            xyzf_rain2gasnh4sh.DSC.L3,t1339+1) =                  
     .       3            0.0000000000000000e+000                               
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t1343 = J6 + 1, jmax + 1 - jmin, 2                          
     .  !CDIR       NODEP                                                       
     .              do t1345 = 1, imax + 1 - imin                               
     .                 xyzf_qmixall(xyzf_qmixall.DSC.L1+t1345-1,t1343-1+        
     .       1            xyzf_qmixall.DSC.L2,t1341+xyzf_qmixall.DSC.L3,t1339+1)
     .       2             = max(9.99999999999999e-061,xyzf_qmixal(t363+t1345-1,
     .       3            t1343-1+t365,t1341+t367,t1339+1)+xyzf_qmixbz(t23+t1345
     .       4            -1,t1343-1+t25,t1341+t27,t1339+t29))                  
     .                 xyzf_qmixall(xyzf_qmixall.DSC.L1+t1345-1,t1343+          
     .       1            xyzf_qmixall.DSC.L2,t1341+xyzf_qmixall.DSC.L3,t1339+1)
     .       2             = max(9.99999999999999e-061,xyzf_qmixal(t363+t1345-1,
     .       3            t1343+t365,t1341+t367,t1339+1)+xyzf_qmixbz(t23+t1345-1
     .       4            ,t1343+t25,t1341+t27,t1339+t29))                      
     .                 xyzf_rain2gas(xyzf_rain2gas.DSC.L1+t1345-1,t1343-1+      
     .       1            xyzf_rain2gas.DSC.L2,t1341+xyzf_rain2gas.DSC.L3,t1339+
     .       2            1) = 0.0000000000000000e+000                          
     .                 xyzf_rain2gas(xyzf_rain2gas.DSC.L1+t1345-1,t1343+        
     .       1            xyzf_rain2gas.DSC.L2,t1341+xyzf_rain2gas.DSC.L3,t1339+
     .       2            1) = 0.0000000000000000e+000                          
     .                 xyzf_rain2gasnh4sh(xyzf_rain2gasnh4sh.DSC.L1+t1345-1,    
     .       1            t1343-1+xyzf_rain2gasnh4sh.DSC.L2,t1341+              
     .       2            xyzf_rain2gasnh4sh.DSC.L3,t1339+1) =                  
     .       3            0.0000000000000000e+000                               
     .                 xyzf_rain2gasnh4sh(xyzf_rain2gasnh4sh.DSC.L1+t1345-1,    
     .       1            t1343+xyzf_rain2gasnh4sh.DSC.L2,t1341+                
     .       2            xyzf_rain2gasnh4sh.DSC.L3,t1339+1) =                  
     .       3            0.0000000000000000e+000                               
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   326      xyzf_Rain2Gas = 0.0d0
   327      xyzf_Rain2GasNH4SH = 0.0d0
   328      xyz_NonSaturate = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1367 = 1, (xyz_nonsaturate.DSC.U3 + 1 - xyz_nonsaturate.DSC.L3
     .       1   )*(xyz_nonsaturate.DSC.U2 + 1 - xyz_nonsaturate.DSC.L2)*(      
     .       2   xyz_nonsaturate.DSC.U1 + 1 - xyz_nonsaturate.DSC.L1)           
     .           xyz_nonsaturate(xyz_nonsaturate.DSC.L1+t1367-1,                
     .       1      xyz_nonsaturate.DSC.L2,xyz_nonsaturate.DSC.L3) =            
     .       2      0.0000000000000000e+000                                     
     .        end do                                                            
   329      xyzf_DelPTemp = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1376 = 1, xyzf_delptemp.DSC.U4*(xyzf_delptemp.DSC.U3 + 1 -    
     .       1   xyzf_delptemp.DSC.L3)*(xyzf_delptemp.DSC.U2 + 1 -              
     .       2   xyzf_delptemp.DSC.L2)*(xyzf_delptemp.DSC.U1 + 1 -              
     .       3   xyzf_delptemp.DSC.L1)                                          
     .           xyzf_delptemp(xyzf_delptemp.DSC.L1+t1376-1,xyzf_delptemp.DSC.L2
     .       1      ,xyzf_delptemp.DSC.L3,1) = 0.0000000000000000e+000          
     .        end do                                                            
   330  
   331      do s = 1, CondNum
   332        !飽和蒸気圧と混合比の差(飽和度)を計算.
   333        !  雨から蒸気への変換量は飽和度に比例する.
   334        !
   335        xyz_NonSaturate =                                         &
     .        if (%0007ec.DSC.U2 - %0007ec.DSC.L2 + 1 .gt. 0) then              
     .           J7 = and(%0007ec.DSC.U2 - %0007ec.DSC.L2 + 1,1)                
     .  !CDIR    NODEP                                                          
     .           do t1390 = 1, J7                                               
     .  !CDIR       NODEP                                                       
     .              do t1392 = 1, %0007ec.DSC.U1 + 1 - %0007ec.DSC.L1           
     .                 xyz_nonsaturate(xyz_nonsaturate.DSC.L1+t1392-1,t1390-1+  
     .       1            xyz_nonsaturate.DSC.L2,t1388+xyz_nonsaturate.DSC.L3)  
     .       2             = max(9.99999999999999e-061,%0007ec(%0007ec.DSC.L1+  
     .       3            t1392-1,t1390-1+%0007ec.DSC.L2,t1388+%0007ec.DSC.L3)* 
     .       4            molwtwet(idxcg(s))/(molwtdry*xyz_pressall(            
     .       5            xyz_pressall.DSC.L1+t1392-1,t1390-1+                  
     .       6            xyz_pressall.DSC.L2,t1388+xyz_pressall.DSC.L3))-      
     .       7            xyzf_qmixall(xyzf_qmixall.DSC.L1+t1392-1,t1390-1+     
     .       8            xyzf_qmixall.DSC.L2,t1388+xyzf_qmixall.DSC.L3,idxcg(s)
     .       9            ))                                                    
     .                 xyzf_rain2gas(xyzf_rain2gas.DSC.L1+t1392-1,t1390-1+      
     .       1            xyzf_rain2gas.DSC.L2,t1388+xyzf_rain2gas.DSC.L3,idxcr(
     .       2            s)) = -min(deltime*4.85000000000000e-002*factorj*     
     .       3            xyz_nonsaturate(xyz_nonsaturate.DSC.L1+t1392-1,t1390-1
     .       4            +xyz_nonsaturate.DSC.L2,t1388+xyz_nonsaturate.DSC.L3)*
     .       5            (xyzf_qmixall(xyzf_qmixall.DSC.L1+t1392-1,t1390-1+    
     .       6            xyzf_qmixall.DSC.L2,t1388+xyzf_qmixall.DSC.L3,idxcr(s)
     .       7            )*xyz_densbz(t12+t1392-1,t1390-1+t14,t1388+t16))**    
     .       8            6.50000000000000e-001,xyzf_qmixall(xyzf_qmixall.DSC.L1
     .       9            +t1392-1,t1390-1+xyzf_qmixall.DSC.L2,t1388+           
     .       .            xyzf_qmixall.DSC.L3,idxcr(s)))                        
     .                 xyzf_rain2gas(xyzf_rain2gas.DSC.L1+t1392-1,t1390-1+      
     .       1            xyzf_rain2gas.DSC.L2,t1388+xyzf_rain2gas.DSC.L3,idxcg(
     .       2            s)) = -xyzf_rain2gas(xyzf_rain2gas.DSC.L1+t1392-1,    
     .       3            t1390-1+xyzf_rain2gas.DSC.L2,t1388+                   
     .       4            xyzf_rain2gas.DSC.L3,idxcr(s))                        
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t1390 = J7 + 1, %0007ec.DSC.U2 - %0007ec.DSC.L2 + 1, 2      
     .              D1 = molwtwet(idxcg(s))                                     
     .  !CDIR       NODEP                                                       
     .              do t1392 = 1, %0007ec.DSC.U1 + 1 - %0007ec.DSC.L1           
     .                 xyz_nonsaturate(xyz_nonsaturate.DSC.L1+t1392-1,t1390-1+  
     .       1            xyz_nonsaturate.DSC.L2,t1388+xyz_nonsaturate.DSC.L3)  
     .       2             = max(9.99999999999999e-061,%0007ec(%0007ec.DSC.L1+  
     .       3            t1392-1,t1390-1+%0007ec.DSC.L2,t1388+%0007ec.DSC.L3)* 
     .       4            D1/(molwtdry*xyz_pressall(xyz_pressall.DSC.L1+t1392-1,
     .       5            t1390-1+xyz_pressall.DSC.L2,t1388+xyz_pressall.DSC.L3)
     .       6            )-xyzf_qmixall(xyzf_qmixall.DSC.L1+t1392-1,t1390-1+   
     .       7            xyzf_qmixall.DSC.L2,t1388+xyzf_qmixall.DSC.L3,idxcg(s)
     .       8            ))                                                    
     .                 xyz_nonsaturate(xyz_nonsaturate.DSC.L1+t1392-1,t1390+    
     .       1            xyz_nonsaturate.DSC.L2,t1388+xyz_nonsaturate.DSC.L3)  
     .       2             = max(9.99999999999999e-061,%0007ec(%0007ec.DSC.L1+  
     .       3            t1392-1,t1390+%0007ec.DSC.L2,t1388+%0007ec.DSC.L3)*D1/
     .       4            (molwtdry*xyz_pressall(xyz_pressall.DSC.L1+t1392-1,   
     .       5            t1390+xyz_pressall.DSC.L2,t1388+xyz_pressall.DSC.L3))-
     .       6            xyzf_qmixall(xyzf_qmixall.DSC.L1+t1392-1,t1390+       
     .       7            xyzf_qmixall.DSC.L2,t1388+xyzf_qmixall.DSC.L3,idxcg(s)
     .       8            ))                                                    
     .                 xyzf_rain2gas(xyzf_rain2gas.DSC.L1+t1392-1,t1390-1+      
     .       1            xyzf_rain2gas.DSC.L2,t1388+xyzf_rain2gas.DSC.L3,idxcr(
     .       2            s)) = -min(deltime*4.85000000000000e-002*factorj*     
     .       3            xyz_nonsaturate(xyz_nonsaturate.DSC.L1+t1392-1,t1390-1
     .       4            +xyz_nonsaturate.DSC.L2,t1388+xyz_nonsaturate.DSC.L3)*
     .       5            (xyzf_qmixall(xyzf_qmixall.DSC.L1+t1392-1,t1390-1+    
     .       6            xyzf_qmixall.DSC.L2,t1388+xyzf_qmixall.DSC.L3,idxcr(s)
     .       7            )*xyz_densbz(t12+t1392-1,t1390-1+t14,t1388+t16))**    
     .       8            6.50000000000000e-001,xyzf_qmixall(xyzf_qmixall.DSC.L1
     .       9            +t1392-1,t1390-1+xyzf_qmixall.DSC.L2,t1388+           
     .       .            xyzf_qmixall.DSC.L3,idxcr(s)))                        
     .                 xyzf_rain2gas(xyzf_rain2gas.DSC.L1+t1392-1,t1390+        
     .       1            xyzf_rain2gas.DSC.L2,t1388+xyzf_rain2gas.DSC.L3,idxcr(
     .       2            s)) = -min(deltime*4.85000000000000e-002*factorj*     
     .       3            xyz_nonsaturate(xyz_nonsaturate.DSC.L1+t1392-1,t1390+ 
     .       4            xyz_nonsaturate.DSC.L2,t1388+xyz_nonsaturate.DSC.L3)*(
     .       5            xyzf_qmixall(xyzf_qmixall.DSC.L1+t1392-1,t1390+       
     .       6            xyzf_qmixall.DSC.L2,t1388+xyzf_qmixall.DSC.L3,idxcr(s)
     .       7            )*xyz_densbz(t12+t1392-1,t1390+t14,t1388+t16))**      
     .       8            6.50000000000000e-001,xyzf_qmixall(xyzf_qmixall.DSC.L1
     .       9            +t1392-1,t1390+xyzf_qmixall.DSC.L2,t1388+             
     .       .            xyzf_qmixall.DSC.L3,idxcr(s)))                        
     .                 xyzf_rain2gas(xyzf_rain2gas.DSC.L1+t1392-1,t1390-1+      
     .       1            xyzf_rain2gas.DSC.L2,t1388+xyzf_rain2gas.DSC.L3,idxcg(
     .       2            s)) = -xyzf_rain2gas(xyzf_rain2gas.DSC.L1+t1392-1,    
     .       3            t1390-1+xyzf_rain2gas.DSC.L2,t1388+                   
     .       4            xyzf_rain2gas.DSC.L3,idxcr(s))                        
     .                 xyzf_rain2gas(xyzf_rain2gas.DSC.L1+t1392-1,t1390+        
     .       1            xyzf_rain2gas.DSC.L2,t1388+xyzf_rain2gas.DSC.L3,idxcg(
     .       2            s)) = -xyzf_rain2gas(xyzf_rain2gas.DSC.L1+t1392-1,    
     .       3            t1390+xyzf_rain2gas.DSC.L2,t1388+xyzf_rain2gas.DSC.L3,
     .       4            idxcr(s))                                             
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   336          & max(                                                  &
   337          &   1.0d-60,                                              &
   338          &   xyz_SvapPress(SpcWetID(IdxCC(s)), xyz_TempAll)      &
   339          &     * MolWtWet(IdxCG(s)) / ( MolWtDry * xyz_PressAll) &
   340          &     - xyzf_QMixAll(:,:,:,IdxCG(s))                    &
   341          &    )
   342  
   343        !雨の変換量
   344        !  元々の雨粒の混合比以上に蒸発が生じないように上限値を設定
   345        !
   346        xyzf_Rain2Gas(:,:,:,IdxCR(s)) =                                    &
   347          & - min(                                                         &
   348          &    DelTime * 4.85d-2 * FactorJ * xyz_NonSaturate               &
   349          &     * ( xyzf_QMixAll(:,:,:,IdxCR(s)) * xyz_DensBZ )** 0.65d0,  &
   350          &    xyzf_QMixAll(:,:,:,IdxCR(s))                                &
   351          &   )
   352  
   353        !蒸気の変換量
   354        !  雨粒の変換量とは符号が逆となる
   355        !
   356        xyzf_Rain2Gas(:,:,:,IdxCG(s)) = - xyzf_Rain2Gas(:,:,:,IdxCR(s))
   357  
   358        ! xyzf_DelQMix を元に潜熱を計算
   359        !
   360        xyzf_DelPTemp(:,:,:,s) =                               &
     .        if (%000830.DSC.U2 - %000830.DSC.L2 + 1 .gt. 0) then              
     .           J8 = and(%000830.DSC.U2 - %000830.DSC.L2 + 1,3)                
     .  !CDIR    NODEP                                                          
     .           do t1429 = 1, J8                                               
     .  !CDIR       NODEP                                                       
     .              do t1431 = 1, %000830.DSC.U1 + 1 - %000830.DSC.L1           
     .                 xyzf_delptemp(xyzf_delptemp.DSC.L1+t1431-1,t1429-1+      
     .       1            xyzf_delptemp.DSC.L2,t1427+xyzf_delptemp.DSC.L3,s) =  
     .       2            %000830(%000830.DSC.L1+t1431-1,t1429-1+%000830.DSC.L2,
     .       3            t1427+%000830.DSC.L3)*xyzf_rain2gas(                  
     .       4            xyzf_rain2gas.DSC.L1+t1431-1,t1429-1+                 
     .       5            xyzf_rain2gas.DSC.L2,t1427+xyzf_rain2gas.DSC.L3,idxcr(
     .       6            s))/(xyz_exnerall(xyz_exnerall.DSC.L1+t1431-1,t1429-1+
     .       7            xyz_exnerall.DSC.L2,t1427+xyz_exnerall.DSC.L3)*cpdry) 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t1429 = J8 + 1, %000830.DSC.U2 - %000830.DSC.L2 + 1, 4      
     .  !CDIR       NODEP                                                       
     .              do t1431 = 1, %000830.DSC.U1 + 1 - %000830.DSC.L1           
     .                 xyzf_delptemp(xyzf_delptemp.DSC.L1+t1431-1,t1429-1+      
     .       1            xyzf_delptemp.DSC.L2,t1427+xyzf_delptemp.DSC.L3,s) =  
     .       2            %000830(%000830.DSC.L1+t1431-1,t1429-1+%000830.DSC.L2,
     .       3            t1427+%000830.DSC.L3)*xyzf_rain2gas(                  
     .       4            xyzf_rain2gas.DSC.L1+t1431-1,t1429-1+                 
     .       5            xyzf_rain2gas.DSC.L2,t1427+xyzf_rain2gas.DSC.L3,idxcr(
     .       6            s))/(xyz_exnerall(xyz_exnerall.DSC.L1+t1431-1,t1429-1+
     .       7            xyz_exnerall.DSC.L2,t1427+xyz_exnerall.DSC.L3)*cpdry) 
     .                 xyzf_delptemp(xyzf_delptemp.DSC.L1+t1431-1,t1429+        
     .       1            xyzf_delptemp.DSC.L2,t1427+xyzf_delptemp.DSC.L3,s) =  
     .       2            %000830(%000830.DSC.L1+t1431-1,t1429+%000830.DSC.L2,  
     .       3            t1427+%000830.DSC.L3)*xyzf_rain2gas(                  
     .       4            xyzf_rain2gas.DSC.L1+t1431-1,t1429+                   
     .       5            xyzf_rain2gas.DSC.L2,t1427+xyzf_rain2gas.DSC.L3,idxcr(
     .       6            s))/(xyz_exnerall(xyz_exnerall.DSC.L1+t1431-1,t1429+  
     .       7            xyz_exnerall.DSC.L2,t1427+xyz_exnerall.DSC.L3)*cpdry) 
     .                 xyzf_delptemp(xyzf_delptemp.DSC.L1+t1431-1,t1429+1+      
     .       1            xyzf_delptemp.DSC.L2,t1427+xyzf_delptemp.DSC.L3,s) =  
     .       2            %000830(%000830.DSC.L1+t1431-1,t1429+1+%000830.DSC.L2,
     .       3            t1427+%000830.DSC.L3)*xyzf_rain2gas(                  
     .       4            xyzf_rain2gas.DSC.L1+t1431-1,t1429+1+                 
     .       5            xyzf_rain2gas.DSC.L2,t1427+xyzf_rain2gas.DSC.L3,idxcr(
     .       6            s))/(xyz_exnerall(xyz_exnerall.DSC.L1+t1431-1,t1429+1+
     .       7            xyz_exnerall.DSC.L2,t1427+xyz_exnerall.DSC.L3)*cpdry) 
     .                 xyzf_delptemp(xyzf_delptemp.DSC.L1+t1431-1,t1429+2+      
     .       1            xyzf_delptemp.DSC.L2,t1427+xyzf_delptemp.DSC.L3,s) =  
     .       2            %000830(%000830.DSC.L1+t1431-1,t1429+2+%000830.DSC.L2,
     .       3            t1427+%000830.DSC.L3)*xyzf_rain2gas(                  
     .       4            xyzf_rain2gas.DSC.L1+t1431-1,t1429+2+                 
     .       5            xyzf_rain2gas.DSC.L2,t1427+xyzf_rain2gas.DSC.L3,idxcr(
     .       6            s))/(xyz_exnerall(xyz_exnerall.DSC.L1+t1431-1,t1429+2+
     .       7            xyz_exnerall.DSC.L2,t1427+xyz_exnerall.DSC.L3)*cpdry) 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   361          & xyz_LatentHeat( SpcWetID(IdxCR(s)), xyz_TempAll )   &
   362          &  * xyzf_Rain2Gas(:,:,:,IdxCR(s))                    &
   363          &  / (xyz_ExnerAll * CpDry)
   364  
   365      end do
   366  
   367      !飽和蒸気圧と混合比の差(飽和度)を計算.
   368      !  雨から蒸気への変換量は飽和度に比例する.
   369      !  未飽和度を求めたいので, マイナスをかけ算している
   370      !  (DelQMixNH4SH は, NH4SH が増加する方向, すなわち飽和度を正としている)
   371      !
   372      xyz_NonSaturate    = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1445 = 1, (xyz_nonsaturate.DSC.U3 + 1 - xyz_nonsaturate.DSC.L3
     .       1   )*(xyz_nonsaturate.DSC.U2 + 1 - xyz_nonsaturate.DSC.L2)*(      
     .       2   xyz_nonsaturate.DSC.U1 + 1 - xyz_nonsaturate.DSC.L1)           
     .           xyz_nonsaturate(xyz_nonsaturate.DSC.L1+t1445-1,                
     .       1      xyz_nonsaturate.DSC.L2,xyz_nonsaturate.DSC.L3) =            
     .       2      0.0000000000000000e+000                                     
     .        end do                                                            
   373      xyzf_Rain2GasNH4SH = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1454 = 1, xyzf_rain2gasnh4sh.DSC.U4*(xyzf_rain2gasnh4sh.DSC.U3
     .       1    + 1 - xyzf_rain2gasnh4sh.DSC.L3)*(xyzf_rain2gasnh4sh.DSC.U2 + 
     .       2   1 - xyzf_rain2gasnh4sh.DSC.L2)*(xyzf_rain2gasnh4sh.DSC.U1 + 1  
     .       3    - xyzf_rain2gasnh4sh.DSC.L1)                                  
     .           xyzf_rain2gasnh4sh(xyzf_rain2gasnh4sh.DSC.L1+t1454-1,          
     .       1      xyzf_rain2gasnh4sh.DSC.L2,xyzf_rain2gasnh4sh.DSC.L3,1) =    
     .       2      0.0000000000000000e+000                                     
     .        end do                                                            
   374      xyz_DelPTempNH4SH  = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t1466 = 1, (xyz_delptempnh4sh.DSC.U3 + 1 -                     
     .       1   xyz_delptempnh4sh.DSC.L3)*(xyz_delptempnh4sh.DSC.U2 + 1 -      
     .       2   xyz_delptempnh4sh.DSC.L2)*(xyz_delptempnh4sh.DSC.U1 + 1 -      
     .       3   xyz_delptempnh4sh.DSC.L1)                                      
     .           xyz_delptempnh4sh(xyz_delptempnh4sh.DSC.L1+t1466-1,            
     .       1      xyz_delptempnh4sh.DSC.L2,xyz_delptempnh4sh.DSC.L3) =        
     .       2      0.0000000000000000e+000                                     
     .        end do                                                            
   375  
   376      if (IdxNH4SHr /= 0) then
   377        xyz_NonSaturate =                                                 &
     .        D2 = molwtwet(idxnh3)/molwtwet(idxnh4shr)                         
     .        D3 = molwtwet(idxh2s)/molwtwet(idxnh4shr)                         
     .  !CDIR NODEP                                                             
     .        do t1602 = 1, %000864.DSC.U1 + 1 - %000864.DSC.L1                 
     .           xyz_nonsaturate(xyz_nonsaturate.DSC.L1+t1602-1,t1600+          
     .       1      xyz_nonsaturate.DSC.L2,t1598+xyz_nonsaturate.DSC.L3) = max( 
     .       2      9.99999999999999e-061,(-%000864(%000864.DSC.L1+t1602-1,t1600
     .       3      +%000864.DSC.L2,t1598+%000864.DSC.L3)))                     
     .           xyzf_rain2gasnh4sh(xyzf_rain2gasnh4sh.DSC.L1+t1602-1,t1600+    
     .       1      xyzf_rain2gasnh4sh.DSC.L2,t1598+xyzf_rain2gasnh4sh.DSC.L3,  
     .       2      idxnh4shr) = -min(deltime*4.85000000000000e-002*factorj*    
     .       3      xyz_nonsaturate(xyz_nonsaturate.DSC.L1+t1602-1,t1600+       
     .       4      xyz_nonsaturate.DSC.L2,t1598+xyz_nonsaturate.DSC.L3)*(      
     .       5      xyzf_qmixall(xyzf_qmixall.DSC.L1+t1602-1,t1600+             
     .       6      xyzf_qmixall.DSC.L2,t1598+xyzf_qmixall.DSC.L3,idxnh4shr)*   
     .       7      xyz_densbz(t12+t1602-1,t1600+t14,t1598+t16))**              
     .       8      6.50000000000000e-001,xyzf_qmixall(xyzf_qmixall.DSC.L1+t1602
     .       9      -1,t1600+xyzf_qmixall.DSC.L2,t1598+xyzf_qmixall.DSC.L3,     
     .       .      idxnh4shr))                                                 
     .           xyzf_rain2gasnh4sh(xyzf_rain2gasnh4sh.DSC.L1+t1602-1,t1600+    
     .       1      xyzf_rain2gasnh4sh.DSC.L2,t1598+xyzf_rain2gasnh4sh.DSC.L3,  
     .       2      idxnh3) = -xyzf_rain2gasnh4sh(xyzf_rain2gasnh4sh.DSC.L1+    
     .       3      t1602-1,t1600+xyzf_rain2gasnh4sh.DSC.L2,t1598+              
     .       4      xyzf_rain2gasnh4sh.DSC.L3,idxnh4shr)*D2                     
     .           xyzf_rain2gasnh4sh(xyzf_rain2gasnh4sh.DSC.L1+t1602-1,t1600+    
     .       1      xyzf_rain2gasnh4sh.DSC.L2,t1598+xyzf_rain2gasnh4sh.DSC.L3,  
     .       2      idxh2s) = -xyzf_rain2gasnh4sh(xyzf_rain2gasnh4sh.DSC.L1+    
     .       3      t1602-1,t1600+xyzf_rain2gasnh4sh.DSC.L2,t1598+              
     .       4      xyzf_rain2gasnh4sh.DSC.L3,idxnh4shr)*D3                     
     .           xyz_delptempnh4sh(xyz_delptempnh4sh.DSC.L1+t1602-1,t1600+      
     .       1      xyz_delptempnh4sh.DSC.L2,t1598+xyz_delptempnh4sh.DSC.L3) =  
     .       2      reactheatnh4sh*xyzf_rain2gasnh4sh(xyzf_rain2gasnh4sh.DSC.L1+
     .       3      t1602-1,t1600+xyzf_rain2gasnh4sh.DSC.L2,t1598+              
     .       4      xyzf_rain2gasnh4sh.DSC.L3,idxnh4shr)/(xyz_exnerall(         
     .       5      xyz_exnerall.DSC.L1+t1602-1,t1600+xyz_exnerall.DSC.L2,t1598+
     .       6      xyz_exnerall.DSC.L3)*cpdry)                                 
     .        end do                                                            
   378          & max(                                                          &
   379          &  1.0d-60,                                                       &
   380          &   - xyz_DelQMixNH4SH(                                         &
   381          &       xyz_TempAll, xyz_PressAll,                              &
   382          &       xyzf_QMixAll(:,:,:,IdxNH3), xyzf_QMixAll(:,:,:,IdxH2S), &
   383          &       MolWtWet(IdxNH3), MolWtWet(IdxH2S)                      &
   384          &     )                                                         &
   385          &  )
   386  
   387        !雨の変換量
   388        !  元々の雨粒の混合比以上に蒸発が生じないように上限値を設定
   389        !
   390        xyzf_Rain2GasNH4SH(:,:,:,IdxNH4SHr) =                              &
   391          & - min(                                                         &
   392          &     DelTime * 4.85d-2 * FactorJ * xyz_NonSaturate              &
   393          &      * (xyzf_QMixAll(:,:,:,IdxNH4SHr) * xyz_DensBZ) ** 0.65d0, &
   394          &     xyzf_QMixAll(:,:,:,IdxNH4SHr)                              &
   395          &    )
   396  
   397        !蒸気の変換量
   398        !  雨粒の変換量とは符号が逆となる
   399        !
   400        xyzf_Rain2GasNH4SH(:,:,:,IdxNH3) =                           &
   401          & - xyzf_Rain2GasNH4SH(:,:,:,IdxNH4SHr) * MolWtWet(IdxNH3) &
   402          &   / MolWtWet(IdxNH4SHr)
   403        xyzf_Rain2GasNH4SH(:,:,:,IdxH2S) =                           &
   404          & - xyzf_Rain2GasNH4SH(:,:,:,IdxNH4SHr) * MolWtWet(IdxH2S) &
   405          &   / MolWtWet(IdxNH4SHr)
   406  
   407        xyz_DelPTempNH4SH                                          &
   408          & = ReactHeatNH4SH * xyzf_Rain2GasNH4SH(:,:,:,IdxNH4SHr) &
   409          &    / (xyz_ExnerAll * CpDry)
   410  
   411      end if
   412  
   413      !変化量を足し算
   414      !
   415      xyzf_DelQMix = xyzf_Rain2Gas + xyzf_Rain2GasNH4SH
     .        if (xyzf_rain2gas.DSC.U2 + 1 - xyzf_rain2gas.DSC.L2 .gt. 0) then  
     .           J9 = and(xyzf_rain2gas.DSC.U2 + 1 - xyzf_rain2gas.DSC.L2,3)    
     .  !CDIR    NODEP                                                          
     .           do t1479 = 1, J9                                               
     .  !CDIR       NODEP                                                       
     .              do t1481 = 1, xyzf_rain2gas.DSC.U1 + 1 -                    
     .       1         xyzf_rain2gas.DSC.L1                                     
     .                 xyzf_delqmix(xyzf_delqmix.DSC.L1+t1481-1,t1479-1+        
     .       1            xyzf_delqmix.DSC.L2,t1477+xyzf_delqmix.DSC.L3,t1475+1)
     .       2             = xyzf_rain2gas(xyzf_rain2gas.DSC.L1+t1481-1,t1479-1+
     .       3            xyzf_rain2gas.DSC.L2,t1477+xyzf_rain2gas.DSC.L3,t1475+
     .       4            1) + xyzf_rain2gasnh4sh(xyzf_rain2gasnh4sh.DSC.L1+    
     .       5            t1481-1,t1479-1+xyzf_rain2gasnh4sh.DSC.L2,t1477+      
     .       6            xyzf_rain2gasnh4sh.DSC.L3,t1475+1)                    
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t1479 = J9 + 1, xyzf_rain2gas.DSC.U2 + 1 -                  
     .       1      xyzf_rain2gas.DSC.L2, 4                                     
     .  !CDIR       NODEP                                                       
     .              do t1481 = 1, xyzf_rain2gas.DSC.U1 + 1 -                    
     .       1         xyzf_rain2gas.DSC.L1                                     
     .                 xyzf_delqmix(xyzf_delqmix.DSC.L1+t1481-1,t1479-1+        
     .       1            xyzf_delqmix.DSC.L2,t1477+xyzf_delqmix.DSC.L3,t1475+1)
     .       2             = xyzf_rain2gas(xyzf_rain2gas.DSC.L1+t1481-1,t1479-1+
     .       3            xyzf_rain2gas.DSC.L2,t1477+xyzf_rain2gas.DSC.L3,t1475+
     .       4            1) + xyzf_rain2gasnh4sh(xyzf_rain2gasnh4sh.DSC.L1+    
     .       5            t1481-1,t1479-1+xyzf_rain2gasnh4sh.DSC.L2,t1477+      
     .       6            xyzf_rain2gasnh4sh.DSC.L3,t1475+1)                    
     .                 xyzf_delqmix(xyzf_delqmix.DSC.L1+t1481-1,t1479+          
     .       1            xyzf_delqmix.DSC.L2,t1477+xyzf_delqmix.DSC.L3,t1475+1)
     .       2             = xyzf_rain2gas(xyzf_rain2gas.DSC.L1+t1481-1,t1479+  
     .       3            xyzf_rain2gas.DSC.L2,t1477+xyzf_rain2gas.DSC.L3,t1475+
     .       4            1) + xyzf_rain2gasnh4sh(xyzf_rain2gasnh4sh.DSC.L1+    
     .       5            t1481-1,t1479+xyzf_rain2gasnh4sh.DSC.L2,t1477+        
     .       6            xyzf_rain2gasnh4sh.DSC.L3,t1475+1)                    
     .                 xyzf_delqmix(xyzf_delqmix.DSC.L1+t1481-1,t1479+1+        
     .       1            xyzf_delqmix.DSC.L2,t1477+xyzf_delqmix.DSC.L3,t1475+1)
     .       2             = xyzf_rain2gas(xyzf_rain2gas.DSC.L1+t1481-1,t1479+1+
     .       3            xyzf_rain2gas.DSC.L2,t1477+xyzf_rain2gas.DSC.L3,t1475+
     .       4            1) + xyzf_rain2gasnh4sh(xyzf_rain2gasnh4sh.DSC.L1+    
     .       5            t1481-1,t1479+1+xyzf_rain2gasnh4sh.DSC.L2,t1477+      
     .       6            xyzf_rain2gasnh4sh.DSC.L3,t1475+1)                    
     .                 xyzf_delqmix(xyzf_delqmix.DSC.L1+t1481-1,t1479+2+        
     .       1            xyzf_delqmix.DSC.L2,t1477+xyzf_delqmix.DSC.L3,t1475+1)
     .       2             = xyzf_rain2gas(xyzf_rain2gas.DSC.L1+t1481-1,t1479+2+
     .       3            xyzf_rain2gas.DSC.L2,t1477+xyzf_rain2gas.DSC.L3,t1475+
     .       4            1) + xyzf_rain2gasnh4sh(xyzf_rain2gasnh4sh.DSC.L1+    
     .       5            t1481-1,t1479+2+xyzf_rain2gasnh4sh.DSC.L2,t1477+      
     .       6            xyzf_rain2gasnh4sh.DSC.L3,t1475+1)                    
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   416      xyz_DelPTemp = sum(xyzf_DelPTemp, 4) + xyz_DelPTempNH4SH
     .  !CDIR NODEP                                                             
     .        do J16 = 0, xyzf_delptemp.DSC.U1 - xyzf_delptemp.DSC.L1, 9993     
     .           J17 = min0(xyzf_delptemp.DSC.U1 + 1 - xyzf_delptemp.DSC.L1 -   
     .       1      J16,9993)                                                   
     .  !CDIR    NODEP                                                          
     .           do t1032 = 1, J17                                              
     .              D24(t1032) = 0.0000000000000000e+000                        
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t1035 = 1, xyzf_delptemp.DSC.U4                             
     .  !CDIR       NODEP                                                       
     .              do t1032 = 1, J17                                           
     .                 D24(t1032) = D24(t1032) + xyzf_delptemp(t1031+J16+t1032-1
     .       1            ,t1028,t1025,t1035)                                   
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t1032 = 1, J17                                              
     .              %0008c1(J16+t1032,t1029,t1026) = D24(t1032)                 
     .           end do                                                         
     .        end do                                                            
     .        if (xyzf_delptemp.DSC.U2 + 1 - xyzf_delptemp.DSC.L2 .gt. 0) then  
     .           J10 = and(xyzf_delptemp.DSC.U2 + 1 - xyzf_delptemp.DSC.L2,1)   
     .  !CDIR    NODEP                                                          
     .           do t1497 = 1, J10                                              
     .  !CDIR       NODEP                                                       
     .              do t1499 = 1, xyzf_delptemp.DSC.U1 + 1 -                    
     .       1         xyzf_delptemp.DSC.L1                                     
     .                 xyz_delptemp(xyz_delptemp.DSC.L1+t1499-1,t1497-1+        
     .       1            xyz_delptemp.DSC.L2,t1495+xyz_delptemp.DSC.L3) =      
     .       2            %0008c1(t1499,t1497,t1495+1) + xyz_delptempnh4sh(     
     .       3            xyz_delptempnh4sh.DSC.L1+t1499-1,t1497-1+             
     .       4            xyz_delptempnh4sh.DSC.L2,t1495+                       
     .       5            xyz_delptempnh4sh.DSC.L3)                             
     .                 xyz_ptempal(t353+t1499-1,t1497-1+t355,t1495+t357) =      
     .       1            xyz_ptempwork(xyz_ptempwork.DSC.L1+t1499-1,t1497-1+   
     .       2            xyz_ptempwork.DSC.L2,t1495+xyz_ptempwork.DSC.L3) +    
     .       3            xyz_delptemp(xyz_delptemp.DSC.L1+t1499-1,t1497-1+     
     .       4            xyz_delptemp.DSC.L2,t1495+xyz_delptemp.DSC.L3)        
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t1497 = J10 + 1, xyzf_delptemp.DSC.U2 + 1 -                 
     .       1      xyzf_delptemp.DSC.L2, 2                                     
     .  !CDIR       NODEP                                                       
     .              do t1499 = 1, xyzf_delptemp.DSC.U1 + 1 -                    
     .       1         xyzf_delptemp.DSC.L1                                     
     .                 xyz_delptemp(xyz_delptemp.DSC.L1+t1499-1,t1497-1+        
     .       1            xyz_delptemp.DSC.L2,t1495+xyz_delptemp.DSC.L3) =      
     .       2            %0008c1(t1499,t1497,t1495+1) + xyz_delptempnh4sh(     
     .       3            xyz_delptempnh4sh.DSC.L1+t1499-1,t1497-1+             
     .       4            xyz_delptempnh4sh.DSC.L2,t1495+                       
     .       5            xyz_delptempnh4sh.DSC.L3)                             
     .                 xyz_delptemp(xyz_delptemp.DSC.L1+t1499-1,t1497+          
     .       1            xyz_delptemp.DSC.L2,t1495+xyz_delptemp.DSC.L3) =      
     .       2            %0008c1(t1499,t1497+1,t1495+1) + xyz_delptempnh4sh(   
     .       3            xyz_delptempnh4sh.DSC.L1+t1499-1,t1497+               
     .       4            xyz_delptempnh4sh.DSC.L2,t1495+                       
     .       5            xyz_delptempnh4sh.DSC.L3)                             
     .                 xyz_ptempal(t353+t1499-1,t1497-1+t355,t1495+t357) =      
     .       1            xyz_ptempwork(xyz_ptempwork.DSC.L1+t1499-1,t1497-1+   
     .       2            xyz_ptempwork.DSC.L2,t1495+xyz_ptempwork.DSC.L3) +    
     .       3            xyz_delptemp(xyz_delptemp.DSC.L1+t1499-1,t1497-1+     
     .       4            xyz_delptemp.DSC.L2,t1495+xyz_delptemp.DSC.L3)        
     .                 xyz_ptempal(t353+t1499-1,t1497+t355,t1495+t357) =        
     .       1            xyz_ptempwork(xyz_ptempwork.DSC.L1+t1499-1,t1497+     
     .       2            xyz_ptempwork.DSC.L2,t1495+xyz_ptempwork.DSC.L3) +    
     .       3            xyz_delptemp(xyz_delptemp.DSC.L1+t1499-1,t1497+       
     .       4            xyz_delptemp.DSC.L2,t1495+xyz_delptemp.DSC.L3)        
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   417  
   418      ! 温位と混合比の計算. 雨から蒸気への変換分を追加
   419      !
   420      xyz_PTempAl = xyz_PTempWork + xyz_DelPTemp
   421      xyzf_QMixAl = xyzf_QMixWork + xyzf_DelQMix
     .        if (xyzf_qmixwork.DSC.U2 + 1 - xyzf_qmixwork.DSC.L2 .gt. 0) then  
     .           J11 = and(xyzf_qmixwork.DSC.U2 + 1 - xyzf_qmixwork.DSC.L2,3)   
     .  !CDIR    NODEP                                                          
     .           do t1523 = 1, J11                                              
     .  !CDIR       NODEP                                                       
     .              do t1525 = 1, xyzf_qmixwork.DSC.U1 + 1 -                    
     .       1         xyzf_qmixwork.DSC.L1                                     
     .                 xyzf_qmixal(t363+t1525-1,t1523-1+t365,t1521+t367,t1519+1)
     .       1             = xyzf_qmixwork(xyzf_qmixwork.DSC.L1+t1525-1,t1523-1+
     .       2            xyzf_qmixwork.DSC.L2,t1521+xyzf_qmixwork.DSC.L3,t1519+
     .       3            1) + xyzf_delqmix(xyzf_delqmix.DSC.L1+t1525-1,t1523-1+
     .       4            xyzf_delqmix.DSC.L2,t1521+xyzf_delqmix.DSC.L3,t1519+1)
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t1523 = J11 + 1, xyzf_qmixwork.DSC.U2 + 1 -                 
     .       1      xyzf_qmixwork.DSC.L2, 4                                     
     .  !CDIR       NODEP                                                       
     .              do t1525 = 1, xyzf_qmixwork.DSC.U1 + 1 -                    
     .       1         xyzf_qmixwork.DSC.L1                                     
     .                 xyzf_qmixal(t363+t1525-1,t1523-1+t365,t1521+t367,t1519+1)
     .       1             = xyzf_qmixwork(xyzf_qmixwork.DSC.L1+t1525-1,t1523-1+
     .       2            xyzf_qmixwork.DSC.L2,t1521+xyzf_qmixwork.DSC.L3,t1519+
     .       3            1) + xyzf_delqmix(xyzf_delqmix.DSC.L1+t1525-1,t1523-1+
     .       4            xyzf_delqmix.DSC.L2,t1521+xyzf_delqmix.DSC.L3,t1519+1)
     .                 xyzf_qmixal(t363+t1525-1,t1523+t365,t1521+t367,t1519+1)  
     .       1             = xyzf_qmixwork(xyzf_qmixwork.DSC.L1+t1525-1,t1523+  
     .       2            xyzf_qmixwork.DSC.L2,t1521+xyzf_qmixwork.DSC.L3,t1519+
     .       3            1) + xyzf_delqmix(xyzf_delqmix.DSC.L1+t1525-1,t1523+  
     .       4            xyzf_delqmix.DSC.L2,t1521+xyzf_delqmix.DSC.L3,t1519+1)
     .                 xyzf_qmixal(t363+t1525-1,t1523+1+t365,t1521+t367,t1519+1)
     .       1             = xyzf_qmixwork(xyzf_qmixwork.DSC.L1+t1525-1,t1523+1+
     .       2            xyzf_qmixwork.DSC.L2,t1521+xyzf_qmixwork.DSC.L3,t1519+
     .       3            1) + xyzf_delqmix(xyzf_delqmix.DSC.L1+t1525-1,t1523+1+
     .       4            xyzf_delqmix.DSC.L2,t1521+xyzf_delqmix.DSC.L3,t1519+1)
     .                 xyzf_qmixal(t363+t1525-1,t1523+2+t365,t1521+t367,t1519+1)
     .       1             = xyzf_qmixwork(xyzf_qmixwork.DSC.L1+t1525-1,t1523+2+
     .       2            xyzf_qmixwork.DSC.L2,t1521+xyzf_qmixwork.DSC.L3,t1519+
     .       3            1) + xyzf_delqmix(xyzf_delqmix.DSC.L1+t1525-1,t1523+2+
     .       4            xyzf_delqmix.DSC.L2,t1521+xyzf_delqmix.DSC.L3,t1519+1)
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   422  
   423      !------------------------------------------
   424      ! Output
   425      !
   426      xyz_Del  = (xyz_PTempAl - xyz_PTempOrig) / DelTime
     .        if (jmax + 1 - jmin .gt. 0) then                                  
     .           J12 = and(jmax + 1 - jmin,3)                                   
     .  !CDIR    NODEP                                                          
     .           do t1541 = 1, J12                                              
     .              D4 = 1.D0/deltime                                           
     .  !CDIR       NODEP                                                       
     .              do t1543 = 1, imax + 1 - imin                               
     .                 xyz_del(xyz_del.DSC.L1+t1543-1,t1541-1+xyz_del.DSC.L2,   
     .       1            t1539+xyz_del.DSC.L3) = (xyz_ptempal(t353+t1543-1,    
     .       2            t1541-1+t355,t1539+t357)-xyz_ptemporig(               
     .       3            xyz_ptemporig.DSC.L1+t1543-1,t1541-1+                 
     .       4            xyz_ptemporig.DSC.L2,t1539+xyz_ptemporig.DSC.L3))*D4  
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t1541 = J12 + 1, jmax + 1 - jmin, 4                         
     .              D5 = 1.D0/deltime                                           
     .              D6 = 1.D0/deltime                                           
     .              D7 = 1.D0/deltime                                           
     .              D8 = 1.D0/deltime                                           
     .  !CDIR       NODEP                                                       
     .              do t1543 = 1, imax + 1 - imin                               
     .                 xyz_del(xyz_del.DSC.L1+t1543-1,t1541-1+xyz_del.DSC.L2,   
     .       1            t1539+xyz_del.DSC.L3) = (xyz_ptempal(t353+t1543-1,    
     .       2            t1541-1+t355,t1539+t357)-xyz_ptemporig(               
     .       3            xyz_ptemporig.DSC.L1+t1543-1,t1541-1+                 
     .       4            xyz_ptemporig.DSC.L2,t1539+xyz_ptemporig.DSC.L3))*D5  
     .                 xyz_del(xyz_del.DSC.L1+t1543-1,t1541+xyz_del.DSC.L2,t1539
     .       1            +xyz_del.DSC.L3) = (xyz_ptempal(t353+t1543-1,t1541+   
     .       2            t355,t1539+t357)-xyz_ptemporig(xyz_ptemporig.DSC.L1+  
     .       3            t1543-1,t1541+xyz_ptemporig.DSC.L2,t1539+             
     .       4            xyz_ptemporig.DSC.L3))*D6                             
     .                 xyz_del(xyz_del.DSC.L1+t1543-1,t1541+1+xyz_del.DSC.L2,   
     .       1            t1539+xyz_del.DSC.L3) = (xyz_ptempal(t353+t1543-1,    
     .       2            t1541+1+t355,t1539+t357)-xyz_ptemporig(               
     .       3            xyz_ptemporig.DSC.L1+t1543-1,t1541+1+                 
     .       4            xyz_ptemporig.DSC.L2,t1539+xyz_ptemporig.DSC.L3))*D7  
     .                 xyz_del(xyz_del.DSC.L1+t1543-1,t1541+2+xyz_del.DSC.L2,   
     .       1            t1539+xyz_del.DSC.L3) = (xyz_ptempal(t353+t1543-1,    
     .       2            t1541+2+t355,t1539+t357)-xyz_ptemporig(               
     .       3            xyz_ptemporig.DSC.L1+t1543-1,t1541+2+                 
     .       4            xyz_ptemporig.DSC.L2,t1539+xyz_ptemporig.DSC.L3))*D8  
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   427      xyzf_Del = (xyzf_QMixAl - xyzf_QMixOrig) / DelTime
     .        if (jmax + 1 - jmin .gt. 0) then                                  
     .           J13 = and(jmax + 1 - jmin,3)                                   
     .  !CDIR    NODEP                                                          
     .           do t1558 = 1, J13                                              
     .              D9 = 1.D0/deltime                                           
     .  !CDIR       NODEP                                                       
     .              do t1560 = 1, imax + 1 - imin                               
     .                 xyzf_del(xyzf_del.DSC.L1+t1560-1,t1558-1+xyzf_del.DSC.L2,
     .       1            t1556+xyzf_del.DSC.L3,t1554+1) = (xyzf_qmixal(t363+   
     .       2            t1560-1,t1558-1+t365,t1556+t367,t1554+1)-xyzf_qmixorig
     .       3            (xyzf_qmixorig.DSC.L1+t1560-1,t1558-1+                
     .       4            xyzf_qmixorig.DSC.L2,t1556+xyzf_qmixorig.DSC.L3,t1554+
     .       5            1))*D9                                                
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t1558 = J13 + 1, jmax + 1 - jmin, 4                         
     .              D10 = 1.D0/deltime                                          
     .              D11 = 1.D0/deltime                                          
     .              D12 = 1.D0/deltime                                          
     .              D13 = 1.D0/deltime                                          
     .  !CDIR       NODEP                                                       
     .              do t1560 = 1, imax + 1 - imin                               
     .                 xyzf_del(xyzf_del.DSC.L1+t1560-1,t1558-1+xyzf_del.DSC.L2,
     .       1            t1556+xyzf_del.DSC.L3,t1554+1) = (xyzf_qmixal(t363+   
     .       2            t1560-1,t1558-1+t365,t1556+t367,t1554+1)-xyzf_qmixorig
     .       3            (xyzf_qmixorig.DSC.L1+t1560-1,t1558-1+                
     .       4            xyzf_qmixorig.DSC.L2,t1556+xyzf_qmixorig.DSC.L3,t1554+
     .       5            1))*D10                                               
     .                 xyzf_del(xyzf_del.DSC.L1+t1560-1,t1558+xyzf_del.DSC.L2,  
     .       1            t1556+xyzf_del.DSC.L3,t1554+1) = (xyzf_qmixal(t363+   
     .       2            t1560-1,t1558+t365,t1556+t367,t1554+1)-xyzf_qmixorig( 
     .       3            xyzf_qmixorig.DSC.L1+t1560-1,t1558+                   
     .       4            xyzf_qmixorig.DSC.L2,t1556+xyzf_qmixorig.DSC.L3,t1554+
     .       5            1))*D11                                               
     .                 xyzf_del(xyzf_del.DSC.L1+t1560-1,t1558+1+xyzf_del.DSC.L2,
     .       1            t1556+xyzf_del.DSC.L3,t1554+1) = (xyzf_qmixal(t363+   
     .       2            t1560-1,t1558+1+t365,t1556+t367,t1554+1)-xyzf_qmixorig
     .       3            (xyzf_qmixorig.DSC.L1+t1560-1,t1558+1+                
     .       4            xyzf_qmixorig.DSC.L2,t1556+xyzf_qmixorig.DSC.L3,t1554+
     .       5            1))*D12                                               
     .                 xyzf_del(xyzf_del.DSC.L1+t1560-1,t1558+2+xyzf_del.DSC.L2,
     .       1            t1556+xyzf_del.DSC.L3,t1554+1) = (xyzf_qmixal(t363+   
     .       2            t1560-1,t1558+2+t365,t1556+t367,t1554+1)-xyzf_qmixorig
     .       3            (xyzf_qmixorig.DSC.L1+t1560-1,t1558+2+                
     .       4            xyzf_qmixorig.DSC.L2,t1556+xyzf_qmixorig.DSC.L3,t1554+
     .       5            1))*D13                                               
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   428  
   429      call HistoryAutoPut(TimeN, 'PTempCond', xyz_Del(1:nx, 1:ny, 1:nz) / DelTime)
     .        if (ny .gt. 0) then                                               
     .           J14 = and(ny,3)                                                
     .  !CDIR    NODEP                                                          
     .           do t1576 = 1, J14                                              
     .              D14 = 1.D0/deltime                                          
     .  !CDIR       NODEP                                                       
     .              do t1578 = 1, nx                                            
     .                 %IG65(t1578,t1576,t1574+1) = xyz_del(t1578,t1576,t1574+1)
     .       1            *D14                                                  
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t1576 = J14 + 1, ny, 4                                      
     .              D15 = 1.D0/deltime                                          
     .              D16 = 1.D0/deltime                                          
     .              D17 = 1.D0/deltime                                          
     .              D18 = 1.D0/deltime                                          
     .  !CDIR       NODEP                                                       
     .              do t1578 = 1, nx                                            
     .                 %IG65(t1578,t1576,t1574+1) = xyz_del(t1578,t1576,t1574+1)
     .       1            *D15                                                  
     .                 %IG65(t1578,t1576+1,t1574+1) = xyz_del(t1578,t1576+1,    
     .       1            t1574+1)*D16                                          
     .                 %IG65(t1578,t1576+2,t1574+1) = xyz_del(t1578,t1576+2,    
     .       1            t1574+1)*D17                                          
     .                 %IG65(t1578,t1576+3,t1574+1) = xyz_del(t1578,t1576+3,    
     .       1            t1574+1)*D18                                          
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   430      do l = 1, ncmax
   431        call HistoryAutoPut(TimeN, trim(SpcWetSymbol(l))//'_Cond', xyzf_Del(1:nx, 1:ny, 1:nz, l) / DelTime)
     .        if (ny .gt. 0) then                                               
     .           J15 = and(ny,3)                                                
     .  !CDIR    NODEP                                                          
     .           do t1588 = 1, J15                                              
     .              D19 = 1.D0/deltime                                          
     .  !CDIR       NODEP                                                       
     .              do t1590 = 1, nx                                            
     .                 %IG74(t1590,t1588,t1586+1) = xyzf_del(t1590,t1588,t1586+1
     .       1            ,l)*D19                                               
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t1588 = J15 + 1, ny, 4                                      
     .              D20 = 1.D0/deltime                                          
     .              D21 = 1.D0/deltime                                          
     .              D22 = 1.D0/deltime                                          
     .              D23 = 1.D0/deltime                                          
     .  !CDIR       NODEP                                                       
     .              do t1590 = 1, nx                                            
     .                 %IG74(t1590,t1588,t1586+1) = xyzf_del(t1590,t1588,t1586+1
     .       1            ,l)*D20                                               
     .                 %IG74(t1590,t1588+1,t1586+1) = xyzf_del(t1590,t1588+1,   
     .       1            t1586+1,l)*D21                                        
     .                 %IG74(t1590,t1588+2,t1586+1) = xyzf_del(t1590,t1588+2,   
     .       1            t1586+1,l)*D22                                        
     .                 %IG74(t1590,t1588+3,t1586+1) = xyzf_del(t1590,t1588+3,   
     .       1            t1586+1,l)*D23                                        
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   432      end do
   433  
   434      ! Set Margin
   435      !
   436      call SetMargin_xyz(xyz_PTempAl)
   437      call SetMargin_xyzf(xyzf_QMixAl)
   438  
   439    end subroutine Cloudphys_K1969_forcing
   440  
   441  !!!=================================================================================!!!
   442    subroutine CloudPhys_K1969_FallRain(xyzf_QMix, xyzf_DQMixDt )
   443      !
   444      ! 雨粒の落下による移流を求める.
   445      !
   446  
   447      !暗黙の型宣言禁止
   448      implicit none
   449  
   450      !変数定義
   451      real(DP), intent(in) :: xyzf_QMix(imin:imax,jmin:jmax,kmin:kmax, ncmax)
   452                                                   !蒸気混合比(擾乱)
   453      real(DP), intent(inout) :: xyzf_DQMixDt(imin:imax,jmin:jmax,kmin:kmax, ncmax)
   454                                                   !蒸気混合比の変化量
   455      real(DP)  :: xyzf_QMixAll(imin:imax,jmin:jmax,kmin:kmax, ncmax)
   456                                                   !蒸気混合比(擾乱 + 平均場)
   457      real(DP)  :: xyzf_FallRain(imin:imax,jmin:jmax,kmin:kmax, ncmax)
   458                                                   !雨粒の落下効果
   459      real(DP)  :: xyz_VelZRain(imin:imax,jmin:jmax,kmin:kmax)
   460                                                   !雨粒落下速度
   461      real(DP)  :: xyrf_FallRainFlux(imin:imax,jmin:jmax,kmin:kmax, ncmax)
   462                                                   !雨粒落下フラックス
   463      real(DP)  :: xyzf_DQMixDtOrig(imin:imax,jmin:jmax,kmin:kmax, ncmax)
   464                                                   !蒸気混合比の変化量
   465      integer  :: s, l
   466  
   467  
   468      xyzf_QMixAll     = max( 0.0d0, xyzf_QMix + xyzf_QMixBZ )
     .        if (jmax + 1 - jmin .gt. 0) then                                  
     .           J1 = and(jmax + 1 - jmin,1)                                    
     .  !CDIR    NODEP                                                          
     .           do t435 = 1, J1                                                
     .  !CDIR       NODEP                                                       
     .              do t437 = 1, imax + 1 - imin                                
     .                 xyzf_qmixall(xyzf_qmixall.DSC.L1+t437-1,t435-1+          
     .       1            xyzf_qmixall.DSC.L2,t433+xyzf_qmixall.DSC.L3,t431+1)  
     .       2             = max(0.0000000000000000e+000,xyzf_qmix(t123+t437-1, 
     .       3            t435-1+t125,t433+t127,t431+1)+xyzf_qmixbz(            
     .       4            xyzf_qmixbz.DSC.L1+t437-1,t435-1+xyzf_qmixbz.DSC.L2,  
     .       5            t433+xyzf_qmixbz.DSC.L3,t431+xyzf_qmixbz.DSC.L4))     
     .                 xyzf_dqmixdtorig(xyzf_dqmixdtorig.DSC.L1+t437-1,t435-1+  
     .       1            xyzf_dqmixdtorig.DSC.L2,t433+xyzf_dqmixdtorig.DSC.L3, 
     .       2            t431+1) = xyzf_dqmixdt(t135+t437-1,t435-1+t137,t433+  
     .       3            t139,t431+1)                                          
     .                 xyrf_fallrainflux(xyrf_fallrainflux.DSC.L1+t437-1,t435-1+
     .       1            xyrf_fallrainflux.DSC.L2,t433+xyrf_fallrainflux.DSC.L3
     .       2            ,t431+1) = 0.0000000000000000e+000                    
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t435 = J1 + 1, jmax + 1 - jmin, 2                           
     .  !CDIR       NODEP                                                       
     .              do t437 = 1, imax + 1 - imin                                
     .                 xyzf_qmixall(xyzf_qmixall.DSC.L1+t437-1,t435-1+          
     .       1            xyzf_qmixall.DSC.L2,t433+xyzf_qmixall.DSC.L3,t431+1)  
     .       2             = max(0.0000000000000000e+000,xyzf_qmix(t123+t437-1, 
     .       3            t435-1+t125,t433+t127,t431+1)+xyzf_qmixbz(            
     .       4            xyzf_qmixbz.DSC.L1+t437-1,t435-1+xyzf_qmixbz.DSC.L2,  
     .       5            t433+xyzf_qmixbz.DSC.L3,t431+xyzf_qmixbz.DSC.L4))     
     .                 xyzf_qmixall(xyzf_qmixall.DSC.L1+t437-1,t435+            
     .       1            xyzf_qmixall.DSC.L2,t433+xyzf_qmixall.DSC.L3,t431+1)  
     .       2             = max(0.0000000000000000e+000,xyzf_qmix(t123+t437-1, 
     .       3            t435+t125,t433+t127,t431+1)+xyzf_qmixbz(              
     .       4            xyzf_qmixbz.DSC.L1+t437-1,t435+xyzf_qmixbz.DSC.L2,t433
     .       5            +xyzf_qmixbz.DSC.L3,t431+xyzf_qmixbz.DSC.L4))         
     .                 xyzf_dqmixdtorig(xyzf_dqmixdtorig.DSC.L1+t437-1,t435-1+  
     .       1            xyzf_dqmixdtorig.DSC.L2,t433+xyzf_dqmixdtorig.DSC.L3, 
     .       2            t431+1) = xyzf_dqmixdt(t135+t437-1,t435-1+t137,t433+  
     .       3            t139,t431+1)                                          
     .                 xyzf_dqmixdtorig(xyzf_dqmixdtorig.DSC.L1+t437-1,t435+    
     .       1            xyzf_dqmixdtorig.DSC.L2,t433+xyzf_dqmixdtorig.DSC.L3, 
     .       2            t431+1) = xyzf_dqmixdt(t135+t437-1,t435+t137,t433+t139
     .       3            ,t431+1)                                              
     .                 xyrf_fallrainflux(xyrf_fallrainflux.DSC.L1+t437-1,t435-1+
     .       1            xyrf_fallrainflux.DSC.L2,t433+xyrf_fallrainflux.DSC.L3
     .       2            ,t431+1) = 0.0000000000000000e+000                    
     .                 xyrf_fallrainflux(xyrf_fallrainflux.DSC.L1+t437-1,t435+  
     .       1            xyrf_fallrainflux.DSC.L2,t433+xyrf_fallrainflux.DSC.L3
     .       2            ,t431+1) = 0.0000000000000000e+000                    
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   469      xyzf_DQMixDtOrig = xyzf_DQMixDt
   470  
   471      xyrf_FallRainFlux = 0.0d0
   472      do s = 1, RainNum
   473        ! 雨粒終端速度
   474        xyz_VelZRain = - 12.2d0 * FactorJ               &
     .        if (xyzf_qmixall.DSC.U2 + 1 - xyzf_qmixall.DSC.L2 .gt. 0) then    
     .           J2 = and(xyzf_qmixall.DSC.U2 + 1 - xyzf_qmixall.DSC.L2,3)      
     .  !CDIR    NODEP                                                          
     .           do t465 = 1, J2                                                
     .  !CDIR       NODEP                                                       
     .              do t467 = 1, xyzf_qmixall.DSC.U1 + 1 - xyzf_qmixall.DSC.L1  
     .                 xyz_velzrain(xyz_velzrain.DSC.L1+t467-1,t465-1+          
     .       1            xyz_velzrain.DSC.L2,t463+xyz_velzrain.DSC.L3) = -     
     .       2            1.21999999999999e+001*factorj*xyzf_qmixall(           
     .       3            xyzf_qmixall.DSC.L1+t467-1,t465-1+xyzf_qmixall.DSC.L2,
     .       4            t463+xyzf_qmixall.DSC.L3,idxr(s))**                   
     .       5            1.25000000000000e-001                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t465=J2+1,xyzf_qmixall.DSC.U2+1-xyzf_qmixall.DSC.L2,4       
     .  !CDIR       NODEP                                                       
     .              do t467 = 1, xyzf_qmixall.DSC.U1 + 1 - xyzf_qmixall.DSC.L1  
     .                 xyz_velzrain(xyz_velzrain.DSC.L1+t467-1,t465-1+          
     .       1            xyz_velzrain.DSC.L2,t463+xyz_velzrain.DSC.L3) = -     
     .       2            1.21999999999999e+001*factorj*xyzf_qmixall(           
     .       3            xyzf_qmixall.DSC.L1+t467-1,t465-1+xyzf_qmixall.DSC.L2,
     .       4            t463+xyzf_qmixall.DSC.L3,idxr(s))**                   
     .       5            1.25000000000000e-001                                 
     .                 xyz_velzrain(xyz_velzrain.DSC.L1+t467-1,t465+            
     .       1            xyz_velzrain.DSC.L2,t463+xyz_velzrain.DSC.L3) = -     
     .       2            1.21999999999999e+001*factorj*xyzf_qmixall(           
     .       3            xyzf_qmixall.DSC.L1+t467-1,t465+xyzf_qmixall.DSC.L2,  
     .       4            t463+xyzf_qmixall.DSC.L3,idxr(s))**                   
     .       5            1.25000000000000e-001                                 
     .                 xyz_velzrain(xyz_velzrain.DSC.L1+t467-1,t465+1+          
     .       1            xyz_velzrain.DSC.L2,t463+xyz_velzrain.DSC.L3) = -     
     .       2            1.21999999999999e+001*factorj*xyzf_qmixall(           
     .       3            xyzf_qmixall.DSC.L1+t467-1,t465+1+xyzf_qmixall.DSC.L2,
     .       4            t463+xyzf_qmixall.DSC.L3,idxr(s))**                   
     .       5            1.25000000000000e-001                                 
     .                 xyz_velzrain(xyz_velzrain.DSC.L1+t467-1,t465+2+          
     .       1            xyz_velzrain.DSC.L2,t463+xyz_velzrain.DSC.L3) = -     
     .       2            1.21999999999999e+001*factorj*xyzf_qmixall(           
     .       3            xyzf_qmixall.DSC.L1+t467-1,t465+2+xyzf_qmixall.DSC.L2,
     .       4            t463+xyzf_qmixall.DSC.L3,idxr(s))**                   
     .       5            1.25000000000000e-001                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   475          * ( xyzf_QMixAll(:,:,:,IdxR(s)) ** 0.125d0 )
   476  
   477        xyrf_FallRainFlux(:,:,:,IdxR(s)) =              &
     .        if (t268 .gt. 0) then                                             
     .           J3 = and(t268,3)                                               
     .  !CDIR    NODEP                                                          
     .           do t477 = 1, J3                                                
     .  !CDIR       NODEP                                                       
     .              do t479 = 1, xyz_densbz.DSC.U1 - t3 + 1                     
     .                 %IG81(t479,t477,t475+1) = xyz_densbz(t3+t479-1,t477-1+t5,
     .       1            t475+t7)*xyzf_qmixall(xyzf_qmixall.DSC.L1+t479-1,t477-
     .       2            1+xyzf_qmixall.DSC.L2,t475+xyzf_qmixall.DSC.L3,idxr(s)
     .       3            )*xyz_velzrain(xyz_velzrain.DSC.L1+t479-1,t477-1+     
     .       4            xyz_velzrain.DSC.L2,t475+xyz_velzrain.DSC.L3)         
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t477 = J3 + 1, t268, 4                                      
     .  !CDIR       NODEP                                                       
     .              do t479 = 1, xyz_densbz.DSC.U1 - t3 + 1                     
     .                 %IG81(t479,t477,t475+1) = xyz_densbz(t3+t479-1,t477-1+t5,
     .       1            t475+t7)*xyzf_qmixall(xyzf_qmixall.DSC.L1+t479-1,t477-
     .       2            1+xyzf_qmixall.DSC.L2,t475+xyzf_qmixall.DSC.L3,idxr(s)
     .       3            )*xyz_velzrain(xyz_velzrain.DSC.L1+t479-1,t477-1+     
     .       4            xyz_velzrain.DSC.L2,t475+xyz_velzrain.DSC.L3)         
     .                 %IG81(t479,t477+1,t475+1) = xyz_densbz(t3+t479-1,t477+t5,
     .       1            t475+t7)*xyzf_qmixall(xyzf_qmixall.DSC.L1+t479-1,t477+
     .       2            xyzf_qmixall.DSC.L2,t475+xyzf_qmixall.DSC.L3,idxr(s))*
     .       3            xyz_velzrain(xyz_velzrain.DSC.L1+t479-1,t477+         
     .       4            xyz_velzrain.DSC.L2,t475+xyz_velzrain.DSC.L3)         
     .                 %IG81(t479,t477+2,t475+1) = xyz_densbz(t3+t479-1,t477+1+ 
     .       1            t5,t475+t7)*xyzf_qmixall(xyzf_qmixall.DSC.L1+t479-1,  
     .       2            t477+1+xyzf_qmixall.DSC.L2,t475+xyzf_qmixall.DSC.L3,  
     .       3            idxr(s))*xyz_velzrain(xyz_velzrain.DSC.L1+t479-1,t477+
     .       4            1+xyz_velzrain.DSC.L2,t475+xyz_velzrain.DSC.L3)       
     .                 %IG81(t479,t477+3,t475+1) = xyz_densbz(t3+t479-1,t477+2+ 
     .       1            t5,t475+t7)*xyzf_qmixall(xyzf_qmixall.DSC.L1+t479-1,  
     .       2            t477+2+xyzf_qmixall.DSC.L2,t475+xyzf_qmixall.DSC.L3,  
     .       3            idxr(s))*xyz_velzrain(xyz_velzrain.DSC.L1+t479-1,t477+
     .       4            2+xyz_velzrain.DSC.L2,t475+xyz_velzrain.DSC.L3)       
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
     .        if(xyrf_fallrainflux.DSC.U2+1-xyrf_fallrainflux.DSC.L2.gt.0)then  
     .           J4 = and(xyrf_fallrainflux.DSC.U2 + 1 -                        
     .       1      xyrf_fallrainflux.DSC.L2,3)                                 
     .  !CDIR    NODEP                                                          
     .           do t495 = 1, J4                                                
     .  !CDIR       NODEP                                                       
     .              do t497 = 1, xyrf_fallrainflux.DSC.U1 + 1 -                 
     .       1         xyrf_fallrainflux.DSC.L1                                 
     .                 xyrf_fallrainflux(xyrf_fallrainflux.DSC.L1+t497-1,t495-1+
     .       1            xyrf_fallrainflux.DSC.L2,t493+xyrf_fallrainflux.DSC.L3
     .       2            ,idxr(s)) = %000937(%000937.DSC.L1+t497-1,t495-1+     
     .       3            %000937.DSC.L2,t493+%000937.DSC.L3)                   
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t495 = J4 + 1, xyrf_fallrainflux.DSC.U2 + 1 -               
     .       1      xyrf_fallrainflux.DSC.L2, 4                                 
     .  !CDIR       NODEP                                                       
     .              do t497 = 1, xyrf_fallrainflux.DSC.U1 + 1 -                 
     .       1         xyrf_fallrainflux.DSC.L1                                 
     .                 xyrf_fallrainflux(xyrf_fallrainflux.DSC.L1+t497-1,t495-1+
     .       1            xyrf_fallrainflux.DSC.L2,t493+xyrf_fallrainflux.DSC.L3
     .       2            ,idxr(s)) = %000937(%000937.DSC.L1+t497-1,t495-1+     
     .       3            %000937.DSC.L2,t493+%000937.DSC.L3)                   
     .                 xyrf_fallrainflux(xyrf_fallrainflux.DSC.L1+t497-1,t495+  
     .       1            xyrf_fallrainflux.DSC.L2,t493+xyrf_fallrainflux.DSC.L3
     .       2            ,idxr(s)) = %000937(%000937.DSC.L1+t497-1,t495+       
     .       3            %000937.DSC.L2,t493+%000937.DSC.L3)                   
     .                 xyrf_fallrainflux(xyrf_fallrainflux.DSC.L1+t497-1,t495+1+
     .       1            xyrf_fallrainflux.DSC.L2,t493+xyrf_fallrainflux.DSC.L3
     .       2            ,idxr(s)) = %000937(%000937.DSC.L1+t497-1,t495+1+     
     .       3            %000937.DSC.L2,t493+%000937.DSC.L3)                   
     .                 xyrf_fallrainflux(xyrf_fallrainflux.DSC.L1+t497-1,t495+2+
     .       1            xyrf_fallrainflux.DSC.L2,t493+xyrf_fallrainflux.DSC.L3
     .       2            ,idxr(s)) = %000937(%000937.DSC.L1+t497-1,t495+2+     
     .       3            %000937.DSC.L2,t493+%000937.DSC.L3)                   
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   478          &  xyr_avr_xyz(                               &
   479          &               xyz_DensBZ                    &
   480          &               * xyzf_QMixAll(:,:,:,IdxR(s)) &
   481          &               * xyz_VelZRain                &
   482          &              )
   483      end do
   484      ! 上端のフラックスはゼロ
   485      do s = 1, RainNum
   486        xyrf_FallRainFlux(:,:,nz,IdxR(s)) = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t505 = 1, (xyrf_fallrainflux.DSC.U2 + 1 -                      
     .       1   xyrf_fallrainflux.DSC.L2)*(xyrf_fallrainflux.DSC.U1 + 1 -      
     .       2   xyrf_fallrainflux.DSC.L1)                                      
     .           xyrf_fallrainflux(xyrf_fallrainflux.DSC.L1+t505-1,             
     .       1      xyrf_fallrainflux.DSC.L2,nz,idxr(s)) =                      
     .       2      0.0000000000000000e+000                                     
     .        end do                                                            
   487      end do
   488  
   489      ! 雨粒落下による時間変化率
   490      xyzf_FallRain = 0.0d0
     .  !CDIR NODEP                                                             
     .  !CDIR NOASSUME                                                          
     .        do t511 = 1, xyzf_fallrain.DSC.U4*(xyzf_fallrain.DSC.U3 + 1 -     
     .       1   xyzf_fallrain.DSC.L3)*(xyzf_fallrain.DSC.U2 + 1 -              
     .       2   xyzf_fallrain.DSC.L2)*(xyzf_fallrain.DSC.U1 + 1 -              
     .       3   xyzf_fallrain.DSC.L1)                                          
     .           xyzf_fallrain(xyzf_fallrain.DSC.L1+t511-1,xyzf_fallrain.DSC.L2,
     .       1      xyzf_fallrain.DSC.L3,1) = 0.0000000000000000e+000           
     .        end do                                                            
   491      do s = 1, RainNum
   492        xyzf_FallRain(:,:,:,IdxR(s)) =                       &
     .        if (%00095b.DSC.U2 - %00095b.DSC.L2 + 1 .gt. 0) then              
     .           J5 = and(%00095b.DSC.U2 - %00095b.DSC.L2 + 1,3)                
     .  !CDIR    NODEP                                                          
     .           do t525 = 1, J5                                                
     .  !CDIR       NODEP                                                       
     .              do t527 = 1, %00095b.DSC.U1 + 1 - %00095b.DSC.L1            
     .                 xyzf_fallrain(xyzf_fallrain.DSC.L1+t527-1,t525-1+        
     .       1            xyzf_fallrain.DSC.L2,t523+xyzf_fallrain.DSC.L3,idxr(s)
     .       2            ) = -%00095b(%00095b.DSC.L1+t527-1,t525-1+            
     .       3            %00095b.DSC.L2,t523+%00095b.DSC.L3)/xyz_densbz(t3+t527
     .       4            -1,t525-1+t5,t523+t7)                                 
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t525 = J5 + 1, %00095b.DSC.U2 - %00095b.DSC.L2 + 1, 4       
     .  !CDIR       NODEP                                                       
     .              do t527 = 1, %00095b.DSC.U1 + 1 - %00095b.DSC.L1            
     .                 xyzf_fallrain(xyzf_fallrain.DSC.L1+t527-1,t525-1+        
     .       1            xyzf_fallrain.DSC.L2,t523+xyzf_fallrain.DSC.L3,idxr(s)
     .       2            ) = -%00095b(%00095b.DSC.L1+t527-1,t525-1+            
     .       3            %00095b.DSC.L2,t523+%00095b.DSC.L3)/xyz_densbz(t3+t527
     .       4            -1,t525-1+t5,t523+t7)                                 
     .                 xyzf_fallrain(xyzf_fallrain.DSC.L1+t527-1,t525+          
     .       1            xyzf_fallrain.DSC.L2,t523+xyzf_fallrain.DSC.L3,idxr(s)
     .       2            ) = -%00095b(%00095b.DSC.L1+t527-1,t525+%00095b.DSC.L2
     .       3            ,t523+%00095b.DSC.L3)/xyz_densbz(t3+t527-1,t525+t5,   
     .       4            t523+t7)                                              
     .                 xyzf_fallrain(xyzf_fallrain.DSC.L1+t527-1,t525+1+        
     .       1            xyzf_fallrain.DSC.L2,t523+xyzf_fallrain.DSC.L3,idxr(s)
     .       2            ) = -%00095b(%00095b.DSC.L1+t527-1,t525+1+            
     .       3            %00095b.DSC.L2,t523+%00095b.DSC.L3)/xyz_densbz(t3+t527
     .       4            -1,t525+1+t5,t523+t7)                                 
     .                 xyzf_fallrain(xyzf_fallrain.DSC.L1+t527-1,t525+2+        
     .       1            xyzf_fallrain.DSC.L2,t523+xyzf_fallrain.DSC.L3,idxr(s)
     .       2            ) = -%00095b(%00095b.DSC.L1+t527-1,t525+2+            
     .       3            %00095b.DSC.L2,t523+%00095b.DSC.L3)/xyz_densbz(t3+t527
     .       4            -1,t525+2+t5,t523+t7)                                 
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   493          & - xyz_dz_xyr( xyrf_FallRainFlux(:,:,:,IdxR(s)) ) &
   494          & / xyz_DensBZ
   495      end do
   496  
   497  
   498  
   499      xyzf_DQMixDt = xyzf_DQMixDtOrig + xyzf_FallRain
     .        if(xyzf_dqmixdtorig.DSC.U2+1-xyzf_dqmixdtorig.DSC.L2.gt.0)then    
     .           J6=and(xyzf_dqmixdtorig.DSC.U2+1-xyzf_dqmixdtorig.DSC.L2,3)    
     .  !CDIR    NODEP                                                          
     .           do t542 = 1, J6                                                
     .  !CDIR       NODEP                                                       
     .              do t544 = 1, xyzf_dqmixdtorig.DSC.U1 + 1 -                  
     .       1         xyzf_dqmixdtorig.DSC.L1                                  
     .                 xyzf_dqmixdt(t135+t544-1,t542-1+t137,t540+t139,t538+1) = 
     .       1            xyzf_dqmixdtorig(xyzf_dqmixdtorig.DSC.L1+t544-1,t542-1
     .       2            +xyzf_dqmixdtorig.DSC.L2,t540+xyzf_dqmixdtorig.DSC.L3,
     .       3            t538+1) + xyzf_fallrain(xyzf_fallrain.DSC.L1+t544-1,  
     .       4            t542-1+xyzf_fallrain.DSC.L2,t540+xyzf_fallrain.DSC.L3,
     .       5            t538+1)                                               
     .              end do                                                      
     .           end do                                                         
     .  !CDIR    NODEP                                                          
     .           do t542 = J6 + 1, xyzf_dqmixdtorig.DSC.U2 + 1 -                
     .       1      xyzf_dqmixdtorig.DSC.L2, 4                                  
     .  !CDIR       NODEP                                                       
     .              do t544 = 1, xyzf_dqmixdtorig.DSC.U1 + 1 -                  
     .       1         xyzf_dqmixdtorig.DSC.L1                                  
     .                 xyzf_dqmixdt(t135+t544-1,t542-1+t137,t540+t139,t538+1) = 
     .       1            xyzf_dqmixdtorig(xyzf_dqmixdtorig.DSC.L1+t544-1,t542-1
     .       2            +xyzf_dqmixdtorig.DSC.L2,t540+xyzf_dqmixdtorig.DSC.L3,
     .       3            t538+1) + xyzf_fallrain(xyzf_fallrain.DSC.L1+t544-1,  
     .       4            t542-1+xyzf_fallrain.DSC.L2,t540+xyzf_fallrain.DSC.L3,
     .       5            t538+1)                                               
     .                 xyzf_dqmixdt(t135+t544-1,t542+t137,t540+t139,t538+1) =   
     .       1            xyzf_dqmixdtorig(xyzf_dqmixdtorig.DSC.L1+t544-1,t542+ 
     .       2            xyzf_dqmixdtorig.DSC.L2,t540+xyzf_dqmixdtorig.DSC.L3, 
     .       3            t538+1) + xyzf_fallrain(xyzf_fallrain.DSC.L1+t544-1,  
     .       4            t542+xyzf_fallrain.DSC.L2,t540+xyzf_fallrain.DSC.L3,  
     .       5            t538+1)                                               
     .                 xyzf_dqmixdt(t135+t544-1,t542+1+t137,t540+t139,t538+1) = 
     .       1            xyzf_dqmixdtorig(xyzf_dqmixdtorig.DSC.L1+t544-1,t542+1
     .       2            +xyzf_dqmixdtorig.DSC.L2,t540+xyzf_dqmixdtorig.DSC.L3,
     .       3            t538+1) + xyzf_fallrain(xyzf_fallrain.DSC.L1+t544-1,  
     .       4            t542+1+xyzf_fallrain.DSC.L2,t540+xyzf_fallrain.DSC.L3,
     .       5            t538+1)                                               
     .                 xyzf_dqmixdt(t135+t544-1,t542+2+t137,t540+t139,t538+1) = 
     .       1            xyzf_dqmixdtorig(xyzf_dqmixdtorig.DSC.L1+t544-1,t542+2
     .       2            +xyzf_dqmixdtorig.DSC.L2,t540+xyzf_dqmixdtorig.DSC.L3,
     .       3            t538+1) + xyzf_fallrain(xyzf_fallrain.DSC.L1+t544-1,  
     .       4            t542+2+xyzf_fallrain.DSC.L2,t540+xyzf_fallrain.DSC.L3,
     .       5            t538+1)                                               
     .              end do                                                      
     .           end do                                                         
     .        endif                                                             
   500  
   501      do l = 1, ncmax
   502        call HistoryAutoPut(TimeN, trim(SpcWetSymbol(l))//'_Fall', xyzf_FallRain(1:nx, 1:ny, 1:nz, l))
   503        call HistoryAutoPut(TimeN, trim(SpcWetSymbol(l))//'_FallFluxAtLB', xyrf_FallRainFlux(1:nx, 1:ny, 0, l))
   504      end do
   505  
   506      ! SetMargin
   507      !
   508      call SetMargin_xyzf(xyzf_DQMixDt)
   509  
   510    end subroutine CloudPhys_K1969_FallRain
   511  
   512  end module Cloudphys_k1969
Linux  R2.6.5-7.282-sn2 FORTRAN90/SX         Rev.360        Tue Oct 11 12:35:16 2011
FILE NAME: cloudphys_k1969.f90
PROGRAM NAME: cloudphys_k1969
FORMAT LIST

  LINE    LOOP     FORTRAN STATEMENT

     1:            != Module cloudphys_k1969
     2:            !
     3:            ! Authors::   杉山耕一朗(SUGIYAMA Ko-ichiro), 小高正嗣 (ODAKA Masatsugu), 高橋芳幸 (YOSHIYUKI Takahashi)
     4:            ! Version::   $Id: cloudphys_k1969.f90,v 1.15 2011-10-10 15:43:00 yot Exp $
     5:            ! Tag Name::  $Name: arare5-20111010 $
     6:            ! Copyright:: Copyright (C) GFD Dennou Club, 2006. All rights reserved.
     7:            ! License::   See COPYRIGHT[link:../../COPYRIGHT]
     8:            !
     9:            !== Overview
    10:            !
    11:            !暖かい雨のバルク法を用いた, 水蒸気と雨, 雲と雨の混合比の変換係数を求める.
    12:            !   * 中島健介 (1994) で利用した定式をそのまま利用. 
    13:            ! 
    14:            !== Error Handling
    15:            !
    16:            !== Bugs
    17:            !
    18:            !== Note
    19:            !
    20:            !== Future Plans
    21:            !
    22:            !
    23:            
    24:            module cloudphys_k1969
    25:              !
    26:              !暖かい雨のバルク法を用いた, 水蒸気と雨, 雲と雨の混合比の変換係数を求める.
    27:              !   * 中島健介 (1994) で利用した定式をそのまま利用. 
    28:              ! 
    29:              
    30:              !モジュール読み込み
    31:              use dc_types,   only : DP, STRING
    32:              use dc_iounit,  only : FileOpen
    33:              use dc_message, only : MessageNotify
    34:              use gtool_historyauto, only: HistoryAutoAddVariable, HistoryAutoPut
    35:            
    36:              use mpi_wrapper,only: myrank
    37:              use timeset, only:  DelTimeLong, TimeN
    38:              use gridset, only : imin,              &!x 方向の配列の下限
    39:                &                 imax,              &!x 方向の配列の上限
    40:                &                 jmin,              &!y 方向の配列の上限
    41:                &                 jmax,              &!y 方向の配列の上限
    42:                &                 kmin,              &!z 方向の配列の下限
    43:                &                 kmax,              &!z 方向の配列の上限
    44:                &                 nx, ny, nz, ncmax      !物理領域の大きさ
    45:              use constants,only: PressBasis,        &!温位の基準圧力 
    46:                &                 CpDry,             &!乾燥成分の比熱
    47:                &                 MolWtDry,          &!
    48:                &                 GasRDry             !乾燥成分の気体定数 
    49:              use basicset, only: xyz_DensBZ,        &!基本場の密度
    50:                &                 xyz_PTempBZ,       &!基本場の温位
    51:                &                 xyz_ExnerBZ,       &!基本場の無次元圧力
    52:                &                 xyzf_QMixBZ         !基本場の混合比
    53:              use composition, only:                    &
    54:                &                 MolWtWet,          &!
    55:                &                 SpcWetID,          &!
    56:                &                 SpcWetSymbol,      &!
    57:                &                 CondNum,           &!凝結過程の数
    58:                &                 IdxCG,             &!凝結過程(蒸気)の配列添え字
    59:                &                 IdxCC,             &!凝結過程(雲)の配列添え字
    60:                &                 IdxCR,             &!凝結過程(雲)の配列添え字
    61:                &                 CloudNum,          &!雲の数
    62:                &                 RainNum,           &!雨の数
    63:                &                 IdxC,              &!雲の配列添え字
    64:                &                 IdxR,              &!雨の配列添え字
    65:                &                 IdxNH3,            &!NH3(蒸気)の配列添え字
    66:                &                 IdxH2S,            &!H2S(蒸気)の配列添え字
    67:                &                 IdxNH4SHr           !NH4SH(雨)の配列添え字
    68:              use axesset, only : xyr_avr_xyz
    69:              use xyz_deriv_module,only : xyz_dz_xyr
    70:              use ChemCalc,  only : xyz_SvapPress, xyz_LatentHeat, ReactHeatNH4SH, xyz_DelQMixNH4SH
    71:              use MoistAdjust, only: MoistAdjustSvapPress, MoistAdjustNH4SH
    72:              use setmargin, only: SetMargin_xyzf, SetMargin_xyz
    73:              use namelist_util, only: namelist_filename
    74:              use setmargin,only: SetMargin_xyz, SetMargin_xyzf
    75:            
    76:              !暗黙の型宣言禁止
    77:              implicit none
    78:            
    79:              !属性の指定
    80:              private
    81:            
    82:              !関数を public にする
    83:              public Cloudphys_K1969_Init
    84:              public Cloudphys_K1969_forcing
    85:              public Cloudphys_K1969_FallRain
    86:            
    87:              real(DP), save :: FactorJ      = 1.0d0 !雲物理過程のパラメータ
    88:                                                     !木星では 3.0d0
    89:                                                     !地球では 1.0d0 とする
    90:              real(DP), save :: AutoConvTime = 1.0d3 !併合成長の時定数 [sec]
    91:              real(DP), save :: QMixCr       = 1.0d-3 
    92:                                                     !併合成長を生じる臨界混合比 [kg/kg]
    93:            
    94:            contains  
    95:            
    96:            !!!=================================================================================!!!
    97:              subroutine Cloudphys_K1969_Init
    98:            
    99:                !暗黙の型宣言禁止
   100:                implicit none
   101:            
   102:                !内部変数
   103:                integer  :: unit    !装置番号
   104:                integer  :: l
   105:                character(STRING) :: Planet = ""
   106:            
   107:                !-----------------------------------------------------------
   108:                ! NAMELIST から情報を取得
   109:                !-----------------------------------------------------------
   110:                ! NAMELIST から情報を取得
   111:                NAMELIST /cloudphys_k1969_nml/ Planet, FactorJ, AutoConvTime, QMixCr
   112:            
   113:                call FileOpen(unit, file=namelist_filename, mode='r')
   114:                read(unit, NML=cloudphys_k1969_nml)
   115:                close(unit)
   116:            
   117:                if (trim(Planet) == "Earth") then 
   118:                  FactorJ = 1.0d0
   119:                elseif (trim(Planet) == "Jupiter") then 
   120:                  FactorJ = 3.0d0
   121:                end if
   122:            
   123:                if (myrank == 0) then 
   124:                  call MessageNotify( "M", &
   125:                    &  "Cloudphys_K1969_Init", "Planet = %c",  c1=trim(Planet))
   126:                  call MessageNotify( "M", &
   127:                    &  "Cloudphys_K1969_Init", "FactorJ = %f",  d=(/FactorJ/) )
   128:                  call MessageNotify( "M", &
   129:                    &  "Cloudphys_K1969_Init", "AutoConvTime = %f",  d=(/AutoConvTime/) )
   130:                  call MessageNotify( "M", &
   131:                    &  "Cloudphys_K1969_Init", "QMixCr = %f",  d=(/QMixCr/) )
   132:                end if
   133:            
   134:                call HistoryAutoAddVariable(  &
   135:                  & varname='PTempCond',&
   136:                  & dims=(/'x','y','z','t'/),     &
   137:                  & longname='Latent heat term of potential temperature', &
   138:                  & units='K.s-1',    &
   139:                  & xtype='float')
   140:            
   141: +------>       do l = 1, ncmax
   142: |                call HistoryAutoAddVariable(  &
   143: |                  & varname=trim(SpcWetSymbol(l))//'_Cond', & 
   144: |                  & dims=(/'x','y','z','t'/),     &
   145: |                  & longname='Condensation term of '          &
   146: |                  &           //trim(SpcWetSymbol(l))//' mixing ratio',  &
   147: |                  & units='kg.kg-1.s-1',    &
   148: |                  & xtype='float')
   149: |          
   150: |                call HistoryAutoAddVariable(  &
   151: |                  & varname=trim(SpcWetSymbol(l))//'_Fall', & 
   152: |                  & dims=(/'x','y','z','t'/),     &
   153: |                  & longname='Fall Rain term of '          &
   154: |                  &           //trim(SpcWetSymbol(l))//' mixing ratio',  &
   155: |                  & units='kg.kg-1.s-1',    &
   156: |                  & xtype='float')
   157: |          
   158: |                call HistoryAutoAddVariable(  &
   159: |                  & varname=trim(SpcWetSymbol(l))//'_FallFluxAtLB', & 
   160: |                  & dims=(/'x','y','t'/),     &
   161: |                  & longname='Falling Rain Flux '          &
   162: |                  &           //trim(SpcWetSymbol(l)),  &
   163: |                  & units='kg.m-2.s-1',    &
   164: |                  & xtype='float')
   165: +------        end do
   166:                
   167:              end subroutine Cloudphys_K1969_Init
   168:            !!!=================================================================================!!!  
   169:            
   170:              subroutine Cloudphys_K1969_forcing(xyz_ExnerNl, xyz_PTempAl, xyzf_QMixAl)
   171:            
   172:                implicit none
   173:            
   174:                real(DP), intent(in)           :: xyz_ExnerNl(imin:imax, jmin:jmax, kmin:kmax)
   175:                real(DP), intent(inout)        :: xyz_PTempAl(imin:imax, jmin:jmax, kmin:kmax)
   176:                real(DP), intent(inout)        :: xyzf_QMixAl(imin:imax, jmin:jmax, kmin:kmax, ncmax)
   177:                real(DP)                       :: xyz_PTempOrig(imin:imax, jmin:jmax, kmin:kmax)
   178:                real(DP)                       :: xyz_PTempWork(imin:imax, jmin:jmax, kmin:kmax)
   179:                real(DP)                       :: xyz_DelPTemp(imin:imax, jmin:jmax, kmin:kmax)
   180:                real(DP)                       :: xyz_Del(imin:imax, jmin:jmax, kmin:kmax)
   181:                real(DP)                       :: xyzf_QMixOrig(imin:imax, jmin:jmax, kmin:kmax, ncmax)
   182:                real(DP)                       :: xyzf_QMixWork(imin:imax, jmin:jmax, kmin:kmax, ncmax)
   183:                real(DP)                       :: xyzf_DelQMix(imin:imax, jmin:jmax, kmin:kmax, ncmax)
   184:                real(DP)                       :: xyzf_Del(imin:imax, jmin:jmax, kmin:kmax, ncmax)
   185:                real(DP)                       :: DelTime
   186:                integer                        :: l, s
   187:            
   188:                real(DP)             :: xyzf_Cloud2Rain(imin:imax,jmin:jmax,kmin:kmax, ncmax)
   189:                                                      !雲から雨への変換量
   190:                real(DP)             :: xyz_AutoConv(imin:imax,jmin:jmax,kmin:kmax)
   191:                                                      !飽和混合比
   192:                real(DP)             :: xyz_Collect(imin:imax,jmin:jmax,kmin:kmax)
   193:                                                      !規格化された潜熱
   194:            
   195:                real(DP)             :: xyzf_QMixAll(imin:imax,jmin:jmax,kmin:kmax, ncmax)
   196:                                                      !混合比の擾乱成分 + 平均成分
   197:                real(DP)             :: xyz_TempAll(imin:imax,jmin:jmax,kmin:kmax)
   198:                                                      !温度の擾乱成分 + 平均成分
   199:                real(DP)             :: xyz_PressAll(imin:imax,jmin:jmax,kmin:kmax)
   200:                                                      !全圧
   201:                real(DP)             :: xyz_ExnerAll(imin:imax,jmin:jmax,kmin:kmax)
   202:                real(DP)             :: xyz_NonSaturate(imin:imax,jmin:jmax,kmin:kmax)
   203:                                                      !未飽和度(飽和混合比と蒸気の混合比の差)
   204:                real(DP)             :: xyzf_Rain2Gas(imin:imax,jmin:jmax,kmin:kmax, ncmax)
   205:                real(DP)             :: xyzf_Rain2GasNH4SH(imin:imax,jmin:jmax,kmin:kmax, ncmax)
   206:                real(DP)             :: xyzf_DelPTemp(imin:imax,jmin:jmax,kmin:kmax, ncmax)
   207:                real(DP)             :: xyz_DelPTempNH4SH(imin:imax,jmin:jmax,kmin:kmax)
   208:            
   209:                !-----------------------------------------
   210:                ! 時間刻み幅. Leap-frog なので, 2 \del t
   211:                !
   212:                DelTime = 2.0d0 * DelTimeLong
   213:            
   214:                !------------------------------------------
   215:                ! 初期値を保管 Store Initial Value
   216:                !
   217: ++V====        xyz_PTempOrig = xyz_PTempAl
   218: ***V--->       xyzf_QMixOrig  = xyzf_QMixAl    
   219: ||||       
   220: ||||           !------------------------------------------    
   221: ||||           ! 暖かい雨のパラメタリゼーション.
   222: ||||           ! * 雲<-->雨 の変換を行う.
   223: ||||           !
   224: ||||           ! Warm rain parameterization.
   225: ||||           ! * Conversion from cloud to rain.
   226: ||||           
   227: ||||           !これまでの値を作業配列に保管
   228: ||||           ! Previous values are stored to work area.
   229: ||||           !
   230: ||||           xyzf_QMixWork = xyzf_QMixAl
   231: ||||           
   232: ||||           !雨への変化量を計算
   233: ||||           ! Conversion values are calculated.
   234: ||||           !    
   235: ||||           xyzf_QMixAll = max( 1.0d-60, xyzf_QMixAl + xyzf_QMixBZ )
   236: ||||       
   237: ***V---        xyzf_Cloud2Rain = 0.0d0
   238:            
   239: +------>       do s = 1, CloudNum
   240: |**V--->         xyz_AutoConv = 0.0d0
   241: ||||             xyz_Collect  = 0.0d0
   242: ||||             
   243: ||||             !併合成長
   244: ||||             !
   245: ||||             xyz_AutoConv =                                             &
   246: ||||               & DelTime / AutoConvTime                                 &
   247: ||||               & * max( 1.0d-60, ( xyzf_QMixAll(:,:,:,IdxC(s)) - QMixCr) )
   248: ||||       
   249: ||||             !衝突合体成長
   250: ||||             !
   251: ||||             xyz_Collect =                                                 &
   252: ||||               &  DelTime                                                  &
   253: ||||               &  * 2.2d0 * FactorJ * xyzf_QMixAll(:,:,:,IdxC(s))          &
   254: ||||               &  * (xyzf_QMixAll(:,:,:,IdxR(s)) * xyz_DensBZ) ** 0.875d0  
   255: ||||       
   256: ||||             !雲の変換量: 併合成長と合体衝突の和
   257: ||||             !  元々の変化量を上限値として設定する. 負の値となる.
   258: ||||             !
   259: ||||             xyzf_Cloud2Rain(:,:,:,IdxC(s)) =                       &
   260: ||||               & - min( xyzf_QMixAll(:,:,:,IdxC(s)), ( xyz_AutoConv + xyz_Collect ) )
   261: ||||             
   262: ||||             !雨の変換量. 符号は雲の変換量とは反対. 
   263: |**V---          xyzf_Cloud2Rain(:,:,:,IdxR(s)) = - xyzf_Cloud2Rain(:,:,:,IdxC(s)) 
   264: +------        end do
   265:            
   266:                ! 変化量を足し込む
   267:                !
   268: +++V===        xyzf_QMixAl = xyzf_QMixWork + xyzf_Cloud2Rain
   269:            
   270:                ! Set Margin
   271:                !
   272:                call SetMargin_xyzf(xyzf_QMixAl)
   273:            
   274:                !-------------------------------------------
   275:                ! 湿潤飽和調節
   276:                ! * 蒸気<-->雲の変換を行う.
   277:                !
   278:                ! Moist adjustment.
   279:                ! * Conversion from vapor to cloud.
   280:                !
   281:                call MoistAdjustSvapPress(   &
   282:                  & xyz_ExnerNl,             & ! (in)
   283:                  & xyz_PTempAl,             & ! (inout)
   284:                  & xyzf_QMixAl              & ! (inout)
   285:                  & )
   286:                if (IdxNH4SHr /= 0) then 
   287:                  call MoistAdjustNH4SH(     &
   288:                    & xyz_ExnerNl,           & !(in)
   289:                    & xyz_PTempAl,           & !(inout)
   290:                    & xyzf_QMixAl            & !(inout)
   291:                    & )
   292:                end if
   293:            
   294:                ! Set Margin
   295:                !
   296:                call SetMargin_xyz(xyz_PTempAl)
   297:                call SetMargin_xyzf(xyzf_QMixAl)
   298:            
   299:                !-------------------------------------------    
   300:                ! 暖かい雨のパラメタリゼーション.
   301:                ! * 蒸気<-->雨 の変換を行う
   302:                !
   303:                ! Warm rain parameterization.
   304:                ! * Conversion from rain to vapor.
   305:                
   306:                !これまでの値を作業配列に保管
   307:                ! Previous values are stored to work area.
   308:                !
   309: ++V====        xyz_PTempWork = xyz_PTempAl
   310: +++V===        xyzf_QMixWork  = xyzf_QMixAl
   311:                
   312:                ! 雨から蒸気への混合比変化を求める
   313:                ! * 温位の計算において, 混合比変化が必要となるため, 
   314:                !   混合比変化を 1 つの配列として用意する.
   315:                !
   316:                ! Conversion values are calculated.
   317:                !
   318:            
   319:                !温度, 圧力, 混合比の全量を求める
   320:                !擾乱成分と平均成分の足し算
   321:                !
   322: **V---->       xyz_ExnerAll  = xyz_ExnerNl + xyz_ExnerBZ
   323: |||            xyz_TempAll   = ( xyz_PTempAl + xyz_PTempBZ ) * ( xyz_ExnerNl + xyz_ExnerBZ )
   324: **V----        xyz_PressAll  = PressBasis * ((xyz_ExnerNl + xyz_ExnerBZ) ** (CpDry / GasRDry))
   325: ***V--->       xyzf_QMixAll = max( 1.0d-60, xyzf_QMixAl + xyzf_QMixBZ )
   326: ||||           xyzf_Rain2Gas = 0.0d0
   327: ***V---        xyzf_Rain2GasNH4SH = 0.0d0
   328: WW*====        xyz_NonSaturate = 0.0d0
   329: ****===        xyzf_DelPTemp = 0.0d0
   330:            
   331: +------>       do s = 1, CondNum
   332: |                !飽和蒸気圧と混合比の差(飽和度)を計算. 
   333: |                !  雨から蒸気への変換量は飽和度に比例する.
   334: |                !
   335: |**V--->         xyz_NonSaturate =                                         &
   336: ||||               & max(                                                  &
   337: ||||               &   1.0d-60,                                              &
   338: ||||               &   xyz_SvapPress(SpcWetID(IdxCC(s)), xyz_TempAll)      &
   339: ||||               &     * MolWtWet(IdxCG(s)) / ( MolWtDry * xyz_PressAll) &
   340: ||||               &     - xyzf_QMixAll(:,:,:,IdxCG(s))                    &
   341: ||||               &    )
   342: ||||       
   343: ||||             !雨の変換量
   344: ||||             !  元々の雨粒の混合比以上に蒸発が生じないように上限値を設定
   345: ||||             !
   346: ||||             xyzf_Rain2Gas(:,:,:,IdxCR(s)) =                                    &
   347: ||||               & - min(                                                         &
   348: ||||               &    DelTime * 4.85d-2 * FactorJ * xyz_NonSaturate               &
   349: ||||               &     * ( xyzf_QMixAll(:,:,:,IdxCR(s)) * xyz_DensBZ )** 0.65d0,  &
   350: ||||               &    xyzf_QMixAll(:,:,:,IdxCR(s))                                &
   351: ||||               &   ) 
   352: ||||       
   353: ||||             !蒸気の変換量
   354: ||||             !  雨粒の変換量とは符号が逆となる
   355: ||||             !
   356: |**V---          xyzf_Rain2Gas(:,:,:,IdxCG(s)) = - xyzf_Rain2Gas(:,:,:,IdxCR(s)) 
   357: |              
   358: |                ! xyzf_DelQMix を元に潜熱を計算
   359: |                !
   360: |++V===          xyzf_DelPTemp(:,:,:,s) =                               &
   361: |                  & xyz_LatentHeat( SpcWetID(IdxCR(s)), xyz_TempAll )   &
   362: |                  &  * xyzf_Rain2Gas(:,:,:,IdxCR(s))                    &
   363: |                  &  / (xyz_ExnerAll * CpDry) 
   364: |          
   365: +------        end do
   366:            
   367:                !飽和蒸気圧と混合比の差(飽和度)を計算. 
   368:                !  雨から蒸気への変換量は飽和度に比例する.
   369:                !  未飽和度を求めたいので, マイナスをかけ算している
   370:                !  (DelQMixNH4SH は, NH4SH が増加する方向, すなわち飽和度を正としている)
   371:                !
   372: WWW====        xyz_NonSaturate    = 0.0d0
   373: ****===        xyzf_Rain2GasNH4SH = 0.0d0
   374: ***====        xyz_DelPTempNH4SH  = 0.0d0
   375:            
   376:                if (IdxNH4SHr /= 0) then 
   377: **V---->         xyz_NonSaturate =                                                 &
   378: |||                & max(                                                          &
   379: |||                &  1.0d-60,                                                       &
   380: |||                &   - xyz_DelQMixNH4SH(                                         &  
   381: |||                &       xyz_TempAll, xyz_PressAll,                              &
   382: |||                &       xyzf_QMixAll(:,:,:,IdxNH3), xyzf_QMixAll(:,:,:,IdxH2S), &
   383: |||                &       MolWtWet(IdxNH3), MolWtWet(IdxH2S)                      &
   384: |||                &     )                                                         &
   385: |||                &  )
   386: |||        
   387: |||              !雨の変換量
   388: |||              !  元々の雨粒の混合比以上に蒸発が生じないように上限値を設定
   389: |||              !
   390: |||              xyzf_Rain2GasNH4SH(:,:,:,IdxNH4SHr) =                              &
   391: |||                & - min(                                                         &
   392: |||                &     DelTime * 4.85d-2 * FactorJ * xyz_NonSaturate              &
   393: |||                &      * (xyzf_QMixAll(:,:,:,IdxNH4SHr) * xyz_DensBZ) ** 0.65d0, &
   394: |||                &     xyzf_QMixAll(:,:,:,IdxNH4SHr)                              &
   395: |||                &    ) 
   396: |||             
   397: |||              !蒸気の変換量
   398: |||              !  雨粒の変換量とは符号が逆となる
   399: |||              !
   400: |||              xyzf_Rain2GasNH4SH(:,:,:,IdxNH3) =                           &
   401: |||                & - xyzf_Rain2GasNH4SH(:,:,:,IdxNH4SHr) * MolWtWet(IdxNH3) &
   402: |||                &   / MolWtWet(IdxNH4SHr)
   403: |||              xyzf_Rain2GasNH4SH(:,:,:,IdxH2S) =                           &
   404: |||                & - xyzf_Rain2GasNH4SH(:,:,:,IdxNH4SHr) * MolWtWet(IdxH2S) &
   405: |||                &   / MolWtWet(IdxNH4SHr)
   406: |||        
   407: **V----          xyz_DelPTempNH4SH                                          &
   408:                    & = ReactHeatNH4SH * xyzf_Rain2GasNH4SH(:,:,:,IdxNH4SHr) &
   409:                    &    / (xyz_ExnerAll * CpDry)
   410:            
   411:                end if
   412:            
   413:                !変化量を足し算
   414:                !
   415: +++V===        xyzf_DelQMix = xyzf_Rain2Gas + xyzf_Rain2GasNH4SH
   416: +++V--->       xyz_DelPTemp = sum(xyzf_DelPTemp, 4) + xyz_DelPTempNH4SH
   417: |||        
   418: |||            ! 温位と混合比の計算. 雨から蒸気への変換分を追加
   419: |||            !
   420: +++----        xyz_PTempAl = xyz_PTempWork + xyz_DelPTemp
   421: +++V===        xyzf_QMixAl = xyzf_QMixWork + xyzf_DelQMix
   422:            
   423:                !------------------------------------------
   424:                ! Output
   425:                !
   426: ++V====        xyz_Del  = (xyz_PTempAl - xyz_PTempOrig) / DelTime
   427: +++V===        xyzf_Del = (xyzf_QMixAl - xyzf_QMixOrig) / DelTime
   428:            
   429: ++V====        call HistoryAutoPut(TimeN, 'PTempCond', xyz_Del(1:nx, 1:ny, 1:nz) / DelTime)
   430: +------>       do l = 1, ncmax
   431: |++V===          call HistoryAutoPut(TimeN, trim(SpcWetSymbol(l))//'_Cond', xyzf_Del(1:nx, 1:ny, 1:nz, l) / DelTime)
   432: +------        end do
   433:            
   434:                ! Set Margin
   435:                !
   436:                call SetMargin_xyz(xyz_PTempAl)
   437:                call SetMargin_xyzf(xyzf_QMixAl)
   438:            
   439:              end subroutine Cloudphys_K1969_forcing
   440:            
   441:            !!!=================================================================================!!!
   442:              subroutine CloudPhys_K1969_FallRain(xyzf_QMix, xyzf_DQMixDt )
   443:                !
   444:                ! 雨粒の落下による移流を求める. 
   445:                ! 
   446:            
   447:                !暗黙の型宣言禁止
   448:                implicit none
   449:                
   450:                !変数定義
   451:                real(DP), intent(in) :: xyzf_QMix(imin:imax,jmin:jmax,kmin:kmax, ncmax) 
   452:                                                             !蒸気混合比(擾乱)
   453:                real(DP), intent(inout) :: xyzf_DQMixDt(imin:imax,jmin:jmax,kmin:kmax, ncmax) 
   454:                                                             !蒸気混合比の変化量
   455:                real(DP)  :: xyzf_QMixAll(imin:imax,jmin:jmax,kmin:kmax, ncmax)
   456:                                                             !蒸気混合比(擾乱 + 平均場)
   457:                real(DP)  :: xyzf_FallRain(imin:imax,jmin:jmax,kmin:kmax, ncmax)
   458:                                                             !雨粒の落下効果
   459:                real(DP)  :: xyz_VelZRain(imin:imax,jmin:jmax,kmin:kmax)
   460:                                                             !雨粒落下速度
   461:                real(DP)  :: xyrf_FallRainFlux(imin:imax,jmin:jmax,kmin:kmax, ncmax) 
   462:                                                             !雨粒落下フラックス
   463:                real(DP)  :: xyzf_DQMixDtOrig(imin:imax,jmin:jmax,kmin:kmax, ncmax) 
   464:                                                             !蒸気混合比の変化量
   465:                integer  :: s, l
   466:            
   467:            
   468: ***V--->       xyzf_QMixAll     = max( 0.0d0, xyzf_QMix + xyzf_QMixBZ )
   469: ||||           xyzf_DQMixDtOrig = xyzf_DQMixDt
   470: ||||       
   471: ***V---        xyrf_FallRainFlux = 0.0d0
   472: +------>       do s = 1, RainNum
   473: |                ! 雨粒終端速度
   474: |++V===          xyz_VelZRain = - 12.2d0 * FactorJ               &
   475: |                  * ( xyzf_QMixAll(:,:,:,IdxR(s)) ** 0.125d0 )
   476: |          
   477: |++V===          xyrf_FallRainFlux(:,:,:,IdxR(s)) =              &
   478: |                  &  xyr_avr_xyz(                               &
   479: |                  &               xyz_DensBZ                    &
   480: |                  &               * xyzf_QMixAll(:,:,:,IdxR(s)) &
   481: |                  &               * xyz_VelZRain                &
   482: |                  &              )
   483: +------        end do
   484:                ! 上端のフラックスはゼロ
   485: +------>       do s = 1, RainNum
   486: |WW====          xyrf_FallRainFlux(:,:,nz,IdxR(s)) = 0.0d0
   487: +------        end do
   488:            
   489:                ! 雨粒落下による時間変化率
   490: ****===        xyzf_FallRain = 0.0d0
   491: +------>       do s = 1, RainNum
   492: |++V===          xyzf_FallRain(:,:,:,IdxR(s)) =                       &
   493: |                  & - xyz_dz_xyr( xyrf_FallRainFlux(:,:,:,IdxR(s)) ) &
   494: |                  & / xyz_DensBZ
   495: +------        end do
   496:            
   497:            
   498:            
   499: +++V===        xyzf_DQMixDt = xyzf_DQMixDtOrig + xyzf_FallRain
   500:            
   501: +------>       do l = 1, ncmax
   502: |                call HistoryAutoPut(TimeN, trim(SpcWetSymbol(l))//'_Fall', xyzf_FallRain(1:nx, 1:ny, 1:nz, l))
   503: |                call HistoryAutoPut(TimeN, trim(SpcWetSymbol(l))//'_FallFluxAtLB', xyrf_FallRainFlux(1:nx, 1:ny, 0, l))
   504: +------        end do
   505:            
   506:                ! SetMargin
   507:                !
   508:                call SetMargin_xyzf(xyzf_DQMixDt)
   509:            
   510:              end subroutine CloudPhys_K1969_FallRain
   511:              
   512:            end module Cloudphys_k1969
