[686] | 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 | !-------------------------------------------------------------------------- |
---|