Skip to content

Commit 1bf6236

Browse files
committed
Merge remote-tracking branch 'origin/master' into develop
2 parents 541fa56 + 6233639 commit 1bf6236

18 files changed

+470
-166
lines changed

README

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
WRF Model Version 4.4.1
1+
WRF Model Version 4.4.2
22

33
https://www2.mmm.ucar.edu/wrf/users/
44

Registry/registry.noahmp

+3-3
Original file line numberDiff line numberDiff line change
@@ -202,9 +202,9 @@ state real soilenergy ij - 1 - hd=(interp_mask_land_fie
202202
state real snowenergy ij - 1 - hd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "snowenergy" "energy content in snow relative to 273.16" "kJ/m2"
203203

204204
state real acc_ssoil ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acc_ssoil" "accumulated SSOIL between dt_soil" "W/m2"
205-
state real acc_qinsur ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acc_qinsur" "accumulated QINSUR between dt_soil" "mm/s"
206-
state real acc_qseva ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acc_qseva" "accumulated QSEVA between dt_soil" "mm/s"
207-
state real acc_etrani ilj - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acc_etrani" "accumulated ETRANI between dt_soil" "mm/s"
205+
state real acc_qinsur ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acc_qinsur" "accumulated QINSUR between dt_soil" "m/s*dt_soil/dt_noahmp"
206+
state real acc_qseva ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acc_qseva" "accumulated QSEVA between dt_soil" "m/s*dt_soil/dt_noahmp"
207+
state real acc_etrani ilj - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acc_etrani" "accumulated ETRANI between dt_soil" "m/s*dt_soil/dt_noahmp"
208208
state real aceflxb ij - 1 - rhd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "aceflxb " "accumulated bottom soil heat flux" "kJ/m2"
209209
state real eflxbxy ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "eflxbxy " "bottom soil heat flux" "W/m2"
210210
state real acc_dwaterxy ij - 1 - rd=(interp_mask_land_field:lu_index)u=(copy_fcnm) "acc_dwater" "accumulated canopy,snow,soil water change between dt_soil" "mm"

external/RSL_LITE/rsl_bcast.c

+20-20
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,26 @@ static destroy_par_info ( p )
8080
if ( p != NULL ) RSL_FREE( p ) ;
8181
}
8282

83+
static destroy_list( list, dfcn )
84+
rsl_list_t ** list ; /* pointer to pointer to list */
85+
int (*dfcn)() ; /* pointer to function for destroying
86+
the data field of the list */
87+
{
88+
rsl_list_t *p, *trash ;
89+
if ( list == NULL ) return(0) ;
90+
if ( *list == NULL ) return(0) ;
91+
for ( p = *list ; p != NULL ; )
92+
{
93+
if ( dfcn != NULL ) (*dfcn)( p->data ) ;
94+
trash = p ;
95+
p = p->next ;
96+
RSL_FREE( trash ) ;
97+
}
98+
*list = NULL ;
99+
return(0) ;
100+
}
101+
102+
83103
static rsl_list_t *Xlist, *Xp, *Xprev ;
84104
static rsl_list_t *stage ;
85105
static int stage_len = 0 ; /* 96/3/15 */
@@ -726,23 +746,3 @@ rsl_lite_from_peerpoint_msg ( len_p, buf )
726746

727747
/********************************************/
728748

729-
destroy_list( list, dfcn )
730-
rsl_list_t ** list ; /* pointer to pointer to list */
731-
int (*dfcn)() ; /* pointer to function for destroying
732-
the data field of the list */
733-
{
734-
rsl_list_t *p, *trash ;
735-
if ( list == NULL ) return(0) ;
736-
if ( *list == NULL ) return(0) ;
737-
for ( p = *list ; p != NULL ; )
738-
{
739-
if ( dfcn != NULL ) (*dfcn)( p->data ) ;
740-
trash = p ;
741-
p = p->next ;
742-
RSL_FREE( trash ) ;
743-
}
744-
*list = NULL ;
745-
return(0) ;
746-
}
747-
748-
/********************************************/

external/RSL_LITE/rsl_lite.h

+1
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@
165165

166166
char * buffer_for_proc ( int P, int size, int code ) ;
167167
void * rsl_malloc( char * f, int l, int s ) ;
168+
void rsl_free( char ** p ) ;
168169
typedef int * int_p ;
169170

170171
#define INDEX_2(A,B,NB) ( (B) + (A)*(NB) )

inc/version_decl

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
CHARACTER (LEN=*), PARAMETER :: release_version = 'V4.4.1'
1+
CHARACTER (LEN=*), PARAMETER :: release_version = 'V4.4.2'

phys/module_diag_functions.F

+15-22
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,6 @@ FUNCTION calc_rh ( p, t, qv ) result ( rh )
5353

5454
END FUNCTION calc_rh
5555

56-
57-
5856
!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!!!
5957
!~
6058
!~ Name:
@@ -111,8 +109,6 @@ FUNCTION Theta ( t, p )
111109

112110
END FUNCTION Theta
113111

114-
115-
116112
!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!!!
117113
!~
118114
!~ Name:
@@ -500,7 +496,6 @@ FUNCTION Buoyancy ( nz, tk, rh, p, hgt, sfc, cape, cin, zlfc, plfc, lidx, &
500496
INTEGER :: i, j, k !~ Dummy iterator
501497
INTEGER :: lfclev !~ Level of LFC
502498
INTEGER :: ellev !~ Level of EL. Modified by Zhixiao.
503-
INTEGER :: lcllev !~ Level of LCL. Modified by Zhixiao.
504499
INTEGER :: prcl !~ Internal parcel type indicator
505500
INTEGER :: mlev !~ Level for ML calculation
506501
INTEGER :: lyrcnt !~ Number of layers in mean layer
@@ -628,17 +623,6 @@ FUNCTION Buoyancy ( nz, tk, rh, p, hgt, sfc, cape, cin, zlfc, plfc, lidx, &
628623
tlclK = TLCL ( tK(srclev), rh(srclev) )
629624
plcl = p(srclev) * ( (tlclK/tK(srclev))**(Cp/Rd) )
630625

631-
!Add caculation for LCL. Modified by Zhixiao
632-
lcllev = -1 !Modified by Zhixiao
633-
flag=.false. !Modified by Zhixiao
634-
DO k=sfc,nz !zhixiao search the layer of LCL
635-
IF (p (k) <= plcl) THEN !Modified by Zhixiao
636-
lcllev=k !Modified by Zhixiao
637-
flag=.true. !Modified by Zhixiao
638-
END IF !Modified by Zhixiao
639-
IF (flag) EXIT !Modified by Zhixiao
640-
END DO !Modified by Zhixiao
641-
flag=.false. !Modified by Zhixiao
642626
!~ Now lift the parcel
643627
! -------------------
644628

@@ -759,7 +743,6 @@ FUNCTION Buoyancy ( nz, tk, rh, p, hgt, sfc, cape, cin, zlfc, plfc, lidx, &
759743
ellev = -1 !Modified by Zhixiao
760744
DO k = sfc, nz !Modified by Zhixiao
761745
!~ LFC is defiend as the highest level when negative buyancy turns postive.
762-
! Let us ignore the lower LFCs, and keep the highest LFC as the final result
763746
! -----------------------------------
764747
IF ( .not. flag .and. buoy (k) > REAL (0) .and. p (k) <= plcl ) THEN !Modified by Zhixiao
765748
flag = .true.
@@ -772,15 +755,25 @@ FUNCTION Buoyancy ( nz, tk, rh, p, hgt, sfc, cape, cin, zlfc, plfc, lidx, &
772755
ellev = k !Modified by Zhixiao
773756
END IF
774757
END IF
758+
! When buoy turns negative again, reset LFC flag and keep the highest LFC as the effective output
759+
IF (buoy (k) < REAL (0) .and. flag) THEN
760+
flag = .false.
761+
END IF
775762
END DO
776763
IF (ellev >= 0) THEN !Modified by Zhixiao
777764
pel = p(ellev) !Modified by Zhixiao
778765
CIN=REAL ( 0 ) !Modified by Zhixiao
779-
DO k = sfc+1, nz !Modified by Zhixiao
780-
! CAPE and CIN is defined as integrated positive and negative buoyant energy between LCL and EL, respectively. Modified by Zhixiao
781-
IF ( p (k) <= plcl .and. p (k) >= pel) THEN !Modified by Zhixiao
782-
CAPE = CAPE + MAX ( buoy (k), 0.0 ) * ( hgt (k) - hgt (k-1) ) !Modified by Zhixiao
783-
CIN = CIN + MIN ( buoy (k), 0.0 ) * ( hgt (k) - hgt (k-1) ) !Modified by Zhixiao
766+
DO k = sfc+1, nz
767+
! Make CAPE and CIN consistent with AMS definition
768+
! https://glossary.ametsoc.org/wiki/Convective_available_potential_energy
769+
! https://glossary.ametsoc.org/wiki/Convective_inhibition
770+
IF ( p (k) <= plcl .and. p (k) > plfc) THEN !Modified by Zhixiao
771+
! CIN is the vertically integrated negative buoyant energy between LCL and LFC
772+
CIN = CIN + MIN ( buoy (k), 0.0 ) * ( hgt (k) - hgt (k-1) )
773+
END IF
774+
IF ( p (k) <= plfc .and. p (k) > pel) THEN !Modified by Zhixiao
775+
! CAPE is the vertically integrated positive buoyant energy between LFC and EL
776+
CAPE = CAPE + MAX ( buoy (k), 0.0 ) * ( hgt (k) - hgt (k-1) )
784777
END IF !Modified by Zhixiao
785778
END DO !Modified by Zhixiao
786779
END IF !Modified by Zhixiao

phys/module_sf_sfclay.F

+2-5
Original file line numberDiff line numberDiff line change
@@ -138,14 +138,12 @@ SUBROUTINE SFCLAY(U3D,V3D,T3D,QV3D,P3D,dz8w, &
138138
XLAND, &
139139
TSK
140140
141-
!
142141
REAL, DIMENSION( ims:ime, jms:jme ) , &
143142
INTENT(INOUT) :: REGIME, &
144143
HFX, &
145144
QFX, &
146145
LH, &
147146
MOL,RMOL
148-
!m the following 5 are change to memory size
149147
!
150148
REAL, DIMENSION( ims:ime, jms:jme ) , &
151149
INTENT(INOUT) :: GZ1OZ0,WSPD,BR, &
@@ -326,13 +324,12 @@ SUBROUTINE SFCLAY1D(J,UX,VX,T1D,QV1D,P1D,dz8w1d, &
326324
327325
REAL, DIMENSION( ims:ime ) , &
328326
INTENT(INOUT) :: &
329-
QGH
327+
QSFC,QGH
330328
331329
REAL, DIMENSION( ims:ime ) , &
332330
INTENT(OUT) :: U10,V10, &
333-
TH2,T2,Q2,QSFC,LH
331+
TH2,T2,Q2,LH
334332
335-
336333
REAL, INTENT(IN ) :: CP,G,ROVCP,R,XLV
337334
338335
REAL, DIMENSION( its:ite ), INTENT(IN ) :: DX

phys/module_sf_sfclayrev.F

+4-5
Original file line numberDiff line numberDiff line change
@@ -143,15 +143,14 @@ SUBROUTINE SFCLAYREV(U3D,V3D,T3D,QV3D,P3D,dz8w, &
143143
V10, &
144144
TH2, &
145145
T2, &
146-
Q2, &
147-
QSFC
146+
Q2
148147
149-
!
150148
REAL, DIMENSION( ims:ime, jms:jme ) , &
151149
INTENT(INOUT) :: REGIME, &
152150
HFX, &
153151
QFX, &
154152
LH, &
153+
QSFC, &
155154
MOL,RMOL
156155
!m the following 5 are change to memory size
157156
!
@@ -320,11 +319,11 @@ SUBROUTINE SFCLAYREV1D(J,UX,VX,T1D,QV1D,P1D,dz8w1d, &
320319
321320
REAL, DIMENSION( ims:ime ) , &
322321
INTENT(INOUT) :: &
323-
QGH
322+
QSFC,QGH
324323
325324
REAL, DIMENSION( ims:ime ) , &
326325
INTENT(OUT) :: U10,V10, &
327-
TH2,T2,Q2,QSFC,LH
326+
TH2,T2,Q2,LH
328327
329328
330329
REAL, INTENT(IN ) :: CP,G,ROVCP,R,XLV,DX

0 commit comments

Comments
 (0)