23 kappa, ptop, delp, pe, pk, pkz, peln )
26 integer,
intent(in) :: is, ie, js, je, isd, ied, jsd, jed, npz
27 real,
intent(in) :: kappa, ptop
28 real,
intent(in) :: delp(isd:ied, jsd:jed, npz)
29 real,
intent(out) :: pe(is-1:ie+1, npz+1, js-1:je+1)
30 real,
intent(out) :: pk(is:ie, js:je, npz+1)
31 real,
intent(out) :: peln(is:ie, npz+1, js:je)
32 real,
intent(out) :: pkz(is:ie, js:je, npz)
40 pe(i, k, j) = pe(i, k-1, j) + delp(i, j, k-1)
48 peln(i, k, j) = log(pe(i, k, j))
56 pk(i, j, k) = exp(kappa*peln(i, k, j))
64 pkz(i, j, k) = (pk(i, j, k+1)-pk(i, j, k))/(kappa*(peln(i, k+1, j)-peln(i, k, j)))
72 kappa, ptop, delp, delp_tl, &
73 pe, pe_tl, pk, pk_tl, pkz, pkz_tl, peln, peln_tl )
76 integer,
intent(in) :: is, ie, js, je, isd, ied, jsd, jed, npz
77 real,
intent(in) :: kappa, ptop
78 real,
intent(in) :: delp(isd:ied, jsd:jed, npz)
79 real,
intent(in) :: delp_tl(isd:ied, jsd:jed, npz)
80 real,
intent(out) :: pe(is-1:ie+1, npz+1, js-1:je+1)
81 real,
intent(out) :: pe_tl(is-1:ie+1, npz+1, js-1:je+1)
82 real,
intent(out) :: pk(is:ie, js:je, npz+1)
83 real,
intent(out) :: pk_tl(is:ie, js:je, npz+1)
84 real,
intent(out) :: peln(is:ie, npz+1, js:je)
85 real,
intent(out) :: peln_tl(is:ie, npz+1, js:je)
86 real,
intent(out) :: pkz(is:ie, js:je, npz)
87 real,
intent(out) :: pkz_tl(is:ie, js:je, npz)
96 pe_tl(i, k, j) = pe_tl(i, k-1, j) + delp_tl(i, j, k-1)
97 pe(i, k, j) = pe(i, k-1, j) + delp(i, j, k-1)
106 peln_tl(i, k, j) = pe_tl(i, k, j)/pe(i, k, j)
107 peln(i, k, j) = log(pe(i, k, j))
116 pk_tl(i, j, k) = kappa*peln_tl(i, k, j)*exp(kappa*peln(i, k, j))
117 pk(i, j, k) = exp(kappa*peln(i, k, j))
126 pkz_tl(i, j, k) = ((pk_tl(i, j, k+1)-pk_tl(i, j, k))*kappa*(peln(i, k+1, j)-peln(i, k, j)) &
127 -(pk(i, j, k+1)-pk(i, j, k))*kappa*(peln_tl(i, k+1, j)-peln_tl(i, k, j))) &
128 /(kappa*(peln(i, k+1, j)-peln(i, k, j)))**2
129 pkz(i, j, k) = (pk(i, j, k+1)-pk(i, j, k))/(kappa*(peln(i, k+1, j)-peln(i, k, j)))
137 kappa, ptop, delp, delp_ad, &
138 pe, pe_ad, pk, pk_ad, pkz, pkz_ad, peln, peln_ad)
141 integer,
intent(in) :: is, ie, js, je, isd, ied, jsd, jed, npz
142 real,
intent(in) :: kappa, ptop
143 real,
intent(in) :: delp(isd:ied, jsd:jed, npz)
144 real,
intent(inout) :: delp_ad(isd:ied, jsd:jed, npz)
145 real,
intent(in) :: pe(is-1:ie+1, npz+1, js-1:je+1)
146 real,
intent(inout) :: pe_ad(is-1:ie+1, npz+1, js-1:je+1)
147 real,
intent(in) :: pk(is:ie, js:je, npz+1)
148 real,
intent(inout) :: pk_ad(is:ie, js:je, npz+1)
149 real,
intent(in) :: peln(is:ie, npz+1, js:je)
150 real,
intent(inout) :: peln_ad(is:ie, npz+1, js:je)
151 real,
intent(in) :: pkz(is:ie, js:je, npz)
152 real,
intent(inout) :: pkz_ad(is:ie, js:je, npz)
154 real :: temp_tj1, temp_ad1, temp_ad2
159 temp_tj1 = kappa*(peln(i, k+1, j)-peln(i, k, j))
160 temp_ad1 = pkz_ad(i, j, k)/temp_tj1
161 temp_ad2 = -((pk(i, j, k+1)-pk(i, j, k))*kappa*temp_ad1/temp_tj1)
162 pk_ad(i, j, k+1) = pk_ad(i, j, k+1) + temp_ad1
163 pk_ad(i, j, k) = pk_ad(i, j, k) - temp_ad1
164 peln_ad(i, k+1, j) = peln_ad(i, k+1, j) + temp_ad2
165 peln_ad(i, k, j) = peln_ad(i, k, j) - temp_ad2
166 pkz_ad(i, j, k) = 0.0
174 peln_ad(i, k, j) = peln_ad(i, k, j) + exp(kappa*peln(i, k, j))*kappa*pk_ad(i, j, k)
183 pe_ad(i, k, j) = pe_ad(i, k, j) + peln_ad(i, k, j)/pe(i, k, j)
184 peln_ad(i, k, j) = 0.0
192 pe_ad(i, k-1, j) = pe_ad(i, k-1, j) + pe_ad(i, k, j)
193 delp_ad(i, j, k-1) = delp_ad(i, j, k-1) + pe_ad(i, k, j)
subroutine compute_fv3_pressures(is, ie, js, je, isd, ied, jsd, jed, npz, kappa, ptop, delp, pe, pk, pkz, peln)
real, parameter, public mapl_kappa
Variable transforms on pressure variables for fv3 Daniel Holdaway, NASA/JCSDA.
subroutine compute_fv3_pressures_bwd(is, ie, js, je, isd, ied, jsd, jed, npz, kappa, ptop, delp, delp_ad, pe, pe_ad, pk, pk_ad, pkz, pkz_ad, peln, peln_ad)
subroutine compute_fv3_pressures_tlm(is, ie, js, je, isd, ied, jsd, jed, npz, kappa, ptop, delp, delp_tl, pe, pe_tl, pk, pk_tl, pkz, pkz_tl, peln, peln_tl)