Merge remote-tracking branch 'origin/release-v4.5.2'
[WRF.git] / var / da / da_grid_definitions / da_ref_height.inc
blobfc870be3ddc8ab2cc8c34bb8056fb72989f21e3c
1 subroutine da_ref_height(pres, ref_height)
3    !---------------------------------------------------------------------------
4    ! Purpose: To calculate the height from the reference pressure
5    !---------------------------------------------------------------------------
7    implicit none
9    real, intent(in)  :: pres
10    real, intent(out) :: ref_height
12    real              :: aa, bb, cc
13    real              :: p0iso, ziso
15    real, parameter   :: rovg = gas_constant/gravity
17    if (trace_use) call da_trace_entry("da_ref_height")
19    aa = 0.5 * rovg * base_lapse
20    bb = rovg * t0
22    cc = log(pres/base_pres)
23    ref_height = -(bb + aa * cc) * cc
25    if (base_temp > 0.0) then
26       p0iso=base_pres*exp((base_temp-t0)/base_lapse)
27       cc=log(p0iso/base_pres)
28       ziso=-(aa*cc+bb)*cc
30       if (ref_height > ziso) then
31          ref_height=ziso+rovg*base_temp*log(p0iso/pres)
32       end if
33    end if
35    if (trace_use) call da_trace_exit("da_ref_height")
37 end subroutine da_ref_height