4 |
|
|
5 |
contains |
contains |
6 |
|
|
7 |
SUBROUTINE cv30_closure(nloc, ncum, nd, icb, inb, pbase, p, ph, tv, buoy, & |
SUBROUTINE cv30_closure(icb, inb, pbase, p, ph, tv, buoy, sig, w0, cape, m) |
|
sig, w0, cape, m) |
|
8 |
|
|
9 |
|
! CLOSURE |
10 |
! Vectorization: S. Bony |
! Vectorization: S. Bony |
11 |
|
|
12 |
use cv30_param_m, only: alpha, beta, dtcrit, minorig, nl |
use cv30_param_m, only: alpha, beta, dtcrit, minorig, nl |
13 |
use cv_thermo_m, only: rrd |
use cv_thermo_m, only: rrd |
14 |
|
USE dimphy, ONLY: klev, klon |
15 |
|
|
16 |
! input: |
! input: |
17 |
integer, intent(in):: ncum, nd, nloc |
integer, intent(in):: icb(:), inb(:) ! (ncum) |
18 |
integer, intent(in):: icb(nloc), inb(nloc) |
real pbase(klon) |
19 |
real pbase(nloc) |
real p(klon, klev), ph(klon, klev+1) |
20 |
real p(nloc, nd), ph(nloc, nd+1) |
real tv(klon, klev), buoy(klon, klev) |
|
real tv(nloc, nd), buoy(nloc, nd) |
|
21 |
|
|
22 |
! input/output: |
! input/output: |
23 |
real sig(nloc, nd), w0(nloc, nd) |
real sig(klon, klev), w0(klon, klev) |
24 |
|
|
25 |
! output: |
! output: |
26 |
real cape(nloc) |
real cape(klon) |
27 |
real m(nloc, nd) |
real m(klon, klev) |
28 |
|
|
29 |
! Local: |
! Local: |
30 |
|
integer ncum |
31 |
integer i, j, k, icbmax |
integer i, j, k, icbmax |
32 |
real deltap, fac, w, amu |
real deltap, fac, w, amu |
33 |
real dtmin(nloc, nd), sigold(nloc, nd) |
real dtmin(klon, klev), sigold(klon, klev) |
34 |
|
|
35 |
!------------------------------------------------------- |
!------------------------------------------------------- |
36 |
|
|
37 |
|
ncum = size(icb) |
38 |
|
|
39 |
! Initialization |
! Initialization |
40 |
|
|
41 |
do k=1, nl |
do k=1, nl |
83 |
|
|
84 |
do k=1, nl-1 |
do k=1, nl-1 |
85 |
do i=1, ncum |
do i=1, ncum |
86 |
if (sig(i, nd) < 1.5.or.sig(i, nd) > 12.0)then |
if (sig(i, klev) < 1.5.or.sig(i, klev) > 12.0)then |
87 |
sig(i, k)=0.0 |
sig(i, k)=0.0 |
88 |
w0(i, k)=0.0 |
w0(i, k)=0.0 |
89 |
endif |
endif |