source: codes/icosagcm/devel/src/kernels_unst/remap_eta.k90 @ 686

Last change on this file since 686 was 686, checked in by dubos, 6 years ago

devel/unstructured : piecewise-constant vertical remapping

File size: 1.4 KB
Line 
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   !--------------------------------------------------------------------------
Note: See TracBrowser for help on using the repository browser.