This subroutine computes grid-scale condensation and evaporation of cloud condensate. More...
local_name | standard_name | long_name | units | rank | type | kind | intent | optional |
---|---|---|---|---|---|---|---|---|
im | horizontal_loop_extent | horizontal loop extent | count | 0 | integer | in | F | |
ix | horizontal_dimension | horizontal dimension | count | 0 | integer | in | F | |
km | vertical_dimension | vertical layer dimension | count | 0 | integer | in | F | |
dt | time_step_for_physics | physics time step | s | 0 | real | kind_phys | in | F |
dtf | time_step_for_dynamics | dynamics time step | s | 0 | real | kind_phys | in | F |
prsl | air_pressure | layer mean air pressure | Pa | 2 | real | kind_phys | in | F |
ps | surface_air_pressure | surface pressure | Pa | 1 | real | kind_phys | in | F |
q | water_vapor_specific_humidity_updated_by_physics | water vapor specific humidity | kg kg-1 | 2 | real | kind_phys | inout | F |
clw1 | cloud_ice_specific_humidity | cloud ice specific humidity | kg kg-1 | 2 | real | kind_phys | in | F |
clw2 | cloud_liquid_water_specific_humidity | cloud water specific humidity | kg kg-1 | 2 | real | kind_phys | in | F |
cwm | cloud_condensed_water_specific_humidity_updated_by_physics | cloud condensed water specific humidity | kg kg-1 | 2 | real | kind_phys | out | F |
t | air_temperature_updated_by_physics | layer mean air temperature | K | 2 | real | kind_phys | inout | F |
tp | air_temperature_two_time_steps_back | air temperature two time steps back | K | 2 | real | kind_phys | inout | F |
qp | water_vapor_specific_humidity_two_time_steps_back | water vapor specific humidity two time steps back | kg kg-1 | 2 | real | kind_phys | inout | F |
psp | surface_air_pressure_two_time_steps_back | surface air pressure two time steps back | Pa | 1 | real | kind_phys | inout | F |
tp1 | air_temperature_at_previous_time_step | air temperature at previous time step | K | 2 | real | kind_phys | inout | F |
qp1 | water_vapor_specific_humidity_at_previous_time_step | water vapor specific humidity at previous time step | kg kg-1 | 2 | real | kind_phys | inout | F |
psp1 | surface_air_pressure_at_previous_time_step | surface air surface pressure at previous time step | Pa | 1 | real | kind_phys | inout | F |
u | critical_relative_humidity | critical relative humidity | frac | 2 | real | kind_phys | in | F |
lprnt | flag_print | flag for printing diagnostics to output | flag | 0 | logical | in | F | |
ipr | horizontal_index_of_printed_column | horizontal index of printed column | index | 0 | integer | in | F | |
errmsg | error_message | error message for error handling in CCPP | none | 0 | character | len=* | out | F |
errflg | error_flag | error flag for error handling in CCPP | flag | 0 | integer | out | F |
Functions/Subroutines | |
subroutine | zhaocarr_gscond::zhaocarr_gscond_run (im, ix, km, dt, dtf, prsl, ps, q, clw1, clw2, cwm, t, tp, qp, psp , tp1, qp1, psp1, u, lprnt, ipr, errmsg, errflg) |
subroutine zhaocarr_gscond::zhaocarr_gscond_run | ( | integer, intent(in) | im, |
integer, intent(in) | ix, | ||
integer, intent(in) | km, | ||
real(kind=kind_phys), intent(in) | dt, | ||
real(kind=kind_phys), intent(in) | dtf, | ||
real(kind=kind_phys), dimension(ix,km), intent(in) | prsl, | ||
real(kind=kind_phys), dimension(im), intent(in) | ps, | ||
real(kind=kind_phys), dimension(ix,km), intent(inout) | q, | ||
real(kind=kind_phys), dimension(ix,km), intent(in) | clw1, | ||
real(kind=kind_phys), dimension(ix,km), intent(in) | clw2, | ||
real(kind=kind_phys), dimension(ix,km), intent(out) | cwm, | ||
real(kind=kind_phys), dimension(ix,km), intent(inout) | t, | ||
real(kind=kind_phys), dimension(ix,km), intent(inout) | tp, | ||
real(kind=kind_phys), dimension(ix,km), intent(inout) | qp, | ||
real(kind=kind_phys), dimension(im), intent(inout) | psp, | ||
real(kind=kind_phys), dimension(ix,km), intent(inout) | tp1, | ||
real(kind=kind_phys), dimension(ix,km), intent(inout) | qp1, | ||
real(kind=kind_phys), dimension(im), intent(inout) | psp1, | ||
real(kind=kind_phys), dimension(im,km), intent(in) | u, | ||
logical, intent(in) | lprnt, | ||
integer, intent(in) | ipr, | ||
character(len=*), intent(out) | errmsg, | ||
integer, intent(out) | errflg | ||
) |
\[ A_{t}=(t-tp)/dt \]
\[ A_{q}=(q-qp)/dt \]
\[ A_{p}=(prsl-\frac{prsl}{ps} \times psp)/dt \]
\[ b=1-\left ( \frac{f_{s}-f}{f_{s}-u} \right )^{1/2} \]
for \(f>u\); and \(b=0\) for \(f<u\). where \(f_{s}=1.0\) is the relative humidity in a cloud region and \(u\) ,which is an input parameter accounts for the effects of subgrid-scale variations in moisture on large-scale condensation. Since both temperature and moisture may vary at scales smaller than the model grid scale, it is possible for condensation to occur before the grid-average relative humidity reaches 100%. Therefore \(u\) needs to be less than 1.0 to account for the subgrid-scale variation of temperature and moisture fields and allow subgrid-scale condensation.\[ q_{0}=uq_{s} \]
\[ E_{c}=\frac{q_{0}-q}{dt} \]
\[ E_{c}=\frac{q_{s}}{dt}(u-f) \]
where \(dt\) is the time step for precipitation calculation in the model. It is a simplified version of a higher-order cloud evaporation algorithm ( [76]). In the case where all clouds will evaporate before \(u\) is reached, the following equation is used:\[ E_{c}=\frac{cwm}{dt} \]
\[ C_{g}=\frac{M-q_{s}f_{t}}{1+(f\epsilon L^{2}q_{s}/RC_{p}T^{2})}+E_{c} \]
where\[ M=A_{q}-\frac{f\epsilon Lq_{s}}{RT^{2}}A_{t}+\frac{fq_{s}}{p}A_{p} \]
To close the system, an equation for the relative humidity tendency \(f_{t}\) was derived by [80] using the hypothesis that the quantity \(M+E_{c}\) is divided into one part, \(bM\),which condenses in the already cloudy portion of a grid square, and another part, \((1-b)M+E_{c}\),which is used to increase the relative humidity of the cloud-free portion and the cloudiness in the square. The equation is written as\[ f_{t}=\frac{2(1-b)(f_{s}-u)[(1-b)M+E_{c}]}{2q_{s}(1-b)(f_{s}-u)+cwm/b} \]
\[ cwm=cwm+(C_{g}-E_{c})\times dt \]
\[ q=q-(C_{g}-E_{c})\times dt \]
\[ t=t+\frac{L}{C_{p}}(C_{g}-E_{c})\times dt \]