1 | !-------------------------------------------------------------------------- |
---|
2 | !---------------------------- remap_eta ---------------------------------- |
---|
3 | ! IN : rhodz, mass_dak, mass_dbk |
---|
4 | ! TMP : mass_col, cur_lev, new_rhodz_cum |
---|
5 | ! OUT : rhodz, old_rhodz, eta |
---|
6 | !$OMP DO SCHEDULE(STATIC) |
---|
7 | DO ij=1,primal_num |
---|
8 | rhodz_cum(1,ij)=0. |
---|
9 | cur_lev(ij)=1 |
---|
10 | eta(1,ij)=1. |
---|
11 | new_rhodz_cum(ij)=0. |
---|
12 | DO l = 1,llm |
---|
13 | rhodz_cum(l+1,ij) = rhodz_cum(l,ij) + rhodz(l,ij) |
---|
14 | END DO |
---|
15 | mass_col(ij) = rhodz_cum(llm+1,ij) |
---|
16 | DO l = 1,llm |
---|
17 | old_rhodz(l,ij) = rhodz(l,ij) |
---|
18 | rhodz(l,ij) = mass_dak(l,ij) + mass_col(ij)*mass_dbk(l,ij) |
---|
19 | rhodz_cum_target = new_rhodz_cum(ij) + rhodz(l,ij) |
---|
20 | DO level = cur_lev(ij), llm |
---|
21 | rhodz_cum_levp1 = rhodz_cum(level+1,ij) |
---|
22 | IF(rhodz_cum_target<=rhodz_cum_levp1) EXIT |
---|
23 | END DO |
---|
24 | IF(level>llm) level=llm |
---|
25 | rhodz_cum_lev = rhodz_cum(level,ij) |
---|
26 | ! now rhodz_cum_lev <= rhodz_cum_target <= rhodz_cum_levp1 |
---|
27 | cur_lev(ij) = level |
---|
28 | new_rhodz_cum(ij) = rhodz_cum_target |
---|
29 | eta(l+1,ij) = level + (rhodz_cum_target-rhodz_cum_lev)/(rhodz_cum_levp1-rhodz_cum_lev) |
---|
30 | END DO |
---|
31 | END DO |
---|
32 | !$OMP END DO |
---|
33 | !---------------------------- remap_eta ---------------------------------- |
---|
34 | !-------------------------------------------------------------------------- |
---|