Radiation Scheme in CCPP
module_bfmicrophysics.f File Reference

Go to the source code of this file.

Modules

module  module_microphysics
 

Functions/Subroutines

subroutine module_microphysics::gsmconst (DTPG, mype, first)
 
subroutine module_microphysics::my_growth_rates (DTPH)
 
subroutine module_microphysics::ice_lookup
 
subroutine module_microphysics::rain_lookup
 
subroutine module_microphysics::gsmcolumn (ARAING, ASNOWG, DTPG, I_index, J_index,
 
real function condense (PP, QW, RHgrd, TK, WV)
 
real function deposit (PP, RHgrd, Tdum, WVdum)
 
subroutine module_microphysics::rsipath (im, ix, ix2, levs, prsl, prsi, t, q, clw
 
subroutine module_microphysics::rsipath2
 This subroutine is a modified version of ferrier's original "rsipath" subprogram. It computes layer's cloud liquid, ice, rain, and snow water condensate path and the partical effective radius for liquid droplet, rain drop, and snow flake. More...
 

Variables

real, private module_microphysics::abfr
 
real, private module_microphysics::cbfr
 
real, private module_microphysics::ciacw
 
real, private module_microphysics::ciacr
 
real, private module_microphysics::c_n0r0
 
integer, private module_microphysics::mic_step
 
integer, parameter, private module_microphysics::my_t1 =1
 
integer, parameter, private module_microphysics::my_t2 =35
 
real, dimension(my_t1:my_t2), private module_microphysics::my_growth
 
real, parameter, private module_microphysics::dmimin =.05e-3
 
real, parameter, private module_microphysics::dmimax =1.e-3
 
integer, parameter, private module_microphysics::mdimin =XMImin
 
integer, parameter, private module_microphysics::mdimax =XMImax
 
real, parameter, private module_microphysics::dmrmin =.05e-3
 
real, parameter, private module_microphysics::dmrmax =.45e-3
 
integer, parameter, private module_microphysics::mdrmin =XMRmin
 
integer, parameter, private module_microphysics::mdrmax =XMRmax
 
integer, parameter, private module_microphysics::indexsmin =100
 
real, parameter, private module_microphysics::rerainmin =1.5*XMRmin
 
integer, parameter, private module_microphysics::nrime =40
 
real, dimension(2:9, 0:nrime), private module_microphysics::vel_rf
 
integer, parameter module_microphysics::itlo =-60
 
integer, parameter module_microphysics::ithi =40
 
integer, dimension(itlo:ithi, 4) module_microphysics::nstats
 
real, dimension(itlo:ithi, 5) module_microphysics::qmax
 
real, dimension(itlo:ithi, 22) module_microphysics::qtot
 
real, parameter, private module_microphysics::thom =T_ICE
 
real, parameter, private module_microphysics::tnw =50.
 
real, parameter, private module_microphysics::toler =1.0E-20
 

Function/Subroutine Documentation

real function gsmcolumn::condense ( real  PP,
real  QW,
real  RHgrd,
real  TK,
real  WV 
)

Definition at line 2521 of file module_bfmicrophysics.f.

Referenced by module_microphysics::gsmcolumn().

2521 !
2522  implicit none
2523 !
2524 !---------------------------------------------------------------------------------
2525 !------ The Asai (1965) algorithm takes into consideration the release of ------
2526 !------ latent heat in increasing the temperature & in increasing the ------
2527 !------ saturation mixing ratio (following the Clausius-Clapeyron eqn.). ------
2528 !---------------------------------------------------------------------------------
2529 !
2530  real pp, qw, rhgrd, tk, wv
2531  INTEGER, PARAMETER :: high_pres=kind_phys
2532 ! INTEGER, PARAMETER :: HIGH_PRES=Selected_Real_Kind(15)
2533  REAL (KIND=HIGH_PRES), PARAMETER :: &
2534  & RHLIMIT=.001, RHLIMIT1=-RHLIMIT
2535  REAL, PARAMETER :: rcp=1./cp, rcprv=rcp/rv
2536  REAL (KIND=HIGH_PRES) :: cond, ssat, wcdum, tsq
2537  real wvdum, tdum, xlv, xlv1, xlv2, ws, dwv, esw, rfac
2538 !
2539 !-----------------------------------------------------------------------
2540 !
2541 !--- LV (T) is from Bolton (JAS, 1980)
2542 !
2543 ! XLV=3.148E6-2370.*TK
2544 ! XLV1=XLV*RCP
2545 ! XLV2=XLV*XLV*RCPRV
2546 !
2547  tdum = tk
2548  wvdum = wv
2549  wcdum = qw
2550  esw = min(pp, fpvsl(tdum)) ! Saturation vapor press w/r/t water
2551 ! WS = RHgrd*EPS*ESW/(PP-ESW) ! Saturation mixing ratio w/r/t water
2552  ws = rhgrd*eps*esw/(pp+epsm1*esw) ! Saturation specific hum w/r/t water
2553  dwv = wvdum - ws ! Deficit grid-scale specific humidity
2554  ssat = dwv / ws ! Supersaturation ratio
2555  condense = 0.
2556  rfac = 0.5 ! converges faster with 0.5
2557  DO WHILE ((ssat < rhlimit1 .AND. wcdum > epsq) &
2558  & .OR. ssat > rhlimit)
2559 !
2560  xlv = 3.148e6-2370.*tdum
2561  xlv1 = xlv*rcp
2562  xlv2 = xlv*xlv*rcprv
2563 !
2564 ! COND = DWV/(1.+XLV2*WS/(Tdum*Tdum)) ! Asai (1965, J. Japan)
2565  tsq = tdum*tdum
2566  cond = rfac*dwv*tsq/(tsq+xlv2*ws) ! Asai (1965, J. Japan)
2567 ! COND = DWV*tsq/(tsq+XLV2*WS) ! Asai (1965, J. Japan)
2568  cond = max(cond, -wcdum) ! Limit cloud water evaporation
2569  tdum = tdum+xlv1*cond ! Updated temperature
2570  wvdum = wvdum-cond ! Updated water vapor mixing ratio
2571  wcdum = wcdum+cond ! Updated cloud water mixing ratio
2572  condense = condense + cond ! Total cloud water condensation
2573  esw = min(pp, fpvsl(tdum)) ! Updated saturation vapor press w/r/t water
2574 ! WS = RHgrd*EPS*ESW/(PP-ESW) ! Updated saturation mixing ratio w/r/t water
2575  ws = rhgrd*eps*esw/(pp+epsm1*esw) ! Updated saturation mixing ratio w/r/t water
2576  dwv = wvdum-ws ! Deficit grid-scale water vapor mixing ratio
2577  ssat = dwv / ws ! Grid-scale supersaturation ratio
2578  rfac = 1.0
2579  ENDDO
2580 
real function condense(PP, QW, RHgrd, TK, WV)

Here is the caller graph for this function:

real function gsmcolumn::deposit ( real  PP,
real  RHgrd,
real  Tdum,
real  WVdum 
)

Definition at line 2588 of file module_bfmicrophysics.f.

Referenced by module_microphysics::gsmcolumn().

2588 !
2589  implicit none
2590 !
2591 !--- Also uses the Asai (1965) algorithm, but uses a different target
2592 ! vapor pressure for the adjustment
2593 !
2594  REAL pp, rhgrd, tdum, wvdum
2595  INTEGER, PARAMETER :: high_pres=kind_phys
2596 ! INTEGER, PARAMETER :: HIGH_PRES=Selected_Real_Kind(15)
2597  REAL (KIND=HIGH_PRES), PARAMETER :: rhlimit=.001, &
2598  & RHLIMIT1=-RHLIMIT
2599  real, PARAMETER :: rcp=1./cp, rcprv=rcp/rv, xls=hvap+hfus &
2600  &, xls1=xls*rcp, xls2=xls*xls*rcprv
2601  REAL (KIND=HIGH_PRES) :: dep, ssat
2602  real esi, ws, dwv
2603 !
2604 !-----------------------------------------------------------------------
2605 !
2606  esi=min(pp, fpvsi(tdum)) ! Saturation vapor press w/r/t ice
2607 ! WS=RHgrd*EPS*ESI/(PP-ESI) ! Saturation mixing ratio
2608  ws=rhgrd*eps*esi/(pp+epsm1*esi) ! Saturation mixing ratio
2609  dwv=wvdum-ws ! Deficit grid-scale water vapor mixing ratio
2610  ssat=dwv/ws ! Supersaturation ratio
2611  deposit=0.
2612  DO WHILE (ssat > rhlimit .OR. ssat < rhlimit1)
2613  !
2614  !--- Note that XLVS2=LS*LV/(CP*RV)=LV*WS/(RV*T*T)*(LS/CP*DEP1),
2615  ! where WS is the saturation mixing ratio following Clausius-
2616  ! Clapeyron (see Asai,1965; Young,1993,p.405)
2617  !
2618  dep=dwv/(1.+xls2*ws/(tdum*tdum)) ! Asai (1965, J. Japan)
2619  tdum=tdum+xls1*dep ! Updated temperature
2620  wvdum=wvdum-dep ! Updated ice mixing ratio
2621  deposit=deposit+dep ! Total ice deposition
2622  esi=min(pp, fpvsi(tdum)) ! Updated saturation vapor press w/r/t ice
2623 ! WS=RHgrd*EPS*ESI/(PP-ESI) ! Updated saturation mixing ratio w/r/t ice
2624  ws=rhgrd*eps*esi/(pp+epsm1*esi) ! Updated saturation mixing ratio w/r/t ice
2625  dwv=wvdum-ws ! Deficit grid-scale water vapor mixing ratio
2626  ssat=dwv/ws ! Grid-scale supersaturation ratio
2627  ENDDO
2628  END FUNCTION deposit
2629 !
real function deposit(PP, RHgrd, Tdum, WVdum)

Here is the caller graph for this function: