9 |
! "regr_pr_av" stands for "regrid pressure averaging". |
! "regr_pr_av" stands for "regrid pressure averaging". |
10 |
! This function regrids a 2D latitude -- pressure variable to the |
! This function regrids a 2D latitude -- pressure variable to the |
11 |
! LMDZ 3D grid. |
! LMDZ 3D grid. |
12 |
|
! The target horizontal LMDZ grid is the "scalar" grid: "rlonv", "rlatu". |
13 |
|
! The target vertical LMDZ grid is the grid of layer boundaries. |
14 |
! We assume that the variable is already on the LMDZ "rlatu" latitude grid. |
! We assume that the variable is already on the LMDZ "rlatu" latitude grid. |
15 |
! There only remains to regrid in pressure at each horizontal |
! There only remains to regrid in pressure at each horizontal |
16 |
! position. |
! position. |
17 |
! The input variable does not depend on longitude, but the pressure |
! The input variable does not depend on longitude, but the pressure |
18 |
! at LMDZ mid-layers does. |
! at LMDZ layers does. |
19 |
! Therefore, the values on the LMDZ grid do depend on longitude. |
! Therefore, the values on the LMDZ grid do depend on longitude. |
|
! The target horizontal LMDZ grid is the "scalar" grid: "rlonv", "rlatu". |
|
|
! The target vertical LMDZ grid is the grid of mid-layers. |
|
20 |
! The variable is regridded by averaging. |
! The variable is regridded by averaging. |
21 |
|
|
22 |
use dimens_m, only: iim, jjm, llm |
use dimens_m, only: iim, jjm, llm |
23 |
use nrutil, only: assert |
use nrutil, only: assert |
24 |
use regr1_step_av_m, only: regr1_step_av |
use regr1_step_av_m, only: regr1_step_av |
25 |
use pressure_m, only: p3d |
use pressure_var, only: p3d |
26 |
|
|
27 |
real, intent(in):: v(:, :) |
real, intent(in):: v(:, :) |
28 |
! ("v(j, l)" is at latitude "rlatu(j)" and for pressure interval |
! ("v(j, l)" is at latitude "rlatu(j)" and for pressure interval |
35 |
real regr_pr_av(iim + 1, jjm + 1, llm) |
real regr_pr_av(iim + 1, jjm + 1, llm) |
36 |
! (variable adapted to the LMDZ grid |
! (variable adapted to the LMDZ grid |
37 |
! "regr_pr_av(i, j, l)" is at longitude "rlonv(i)", latitude |
! "regr_pr_av(i, j, l)" is at longitude "rlonv(i)", latitude |
38 |
! "rlatu(j)" and pressure level "pls(i, j, l)") |
! "rlatu(j)" and in pressure interval "[p3d(i, j, l+1), p3d(i, j, l)]") |
39 |
|
|
40 |
! Variables local to the procedure: |
! Variables local to the procedure: |
41 |
integer i, j |
integer i, j |
82 |
! "regr_pr_int" stands for "regrid pressure interpolation". |
! "regr_pr_int" stands for "regrid pressure interpolation". |
83 |
! This function regrids a 2D latitude -- pressure variable to the |
! This function regrids a 2D latitude -- pressure variable to the |
84 |
! LMDZ 3D grid. |
! LMDZ 3D grid. |
85 |
|
! The target horizontal LMDZ grid is the "scalar" grid: "rlonv", "rlatu". |
86 |
|
! The target vertical LMDZ grid is the grid of mid-layers. |
87 |
! We assume that the variable is already on the LMDZ latitude grid. |
! We assume that the variable is already on the LMDZ latitude grid. |
88 |
! There only remains to regrid in pressure at each horizontal |
! There only remains to regrid in pressure at each horizontal |
89 |
! position. |
! position. |
90 |
! The input variable does not depend on longitude, but the pressure |
! The input variable does not depend on longitude, but the pressure |
91 |
! at LMDZ mid-layers does. |
! at LMDZ mid-layers does. |
92 |
! Therefore, the values on the LMDZ grid do depend on longitude. |
! Therefore, the values on the LMDZ grid do depend on longitude. |
|
! The target horizontal LMDZ grid is the "scalar" grid: "rlonv", "rlatu". |
|
|
! The target vertical LMDZ grid is the grid of mid-layers. |
|
93 |
! The variable is regridded by interpolation. |
! The variable is regridded by interpolation. |
94 |
|
|
95 |
use dimens_m, only: iim, jjm, llm |
use dimens_m, only: iim, jjm, llm |
96 |
use nrutil, only: assert |
use nrutil, only: assert |
97 |
use regr1_lint_m, only: regr1_lint |
use regr1_lint_m, only: regr1_lint |
98 |
use pressure_m, only: pls |
use pressure_var, only: pls |
99 |
|
|
100 |
real, intent(in):: v(:, :) |
real, intent(in):: v(:, :) |
101 |
! ("v(j, l)" is at latitude "rlatu(j)" and pressure level "press_in(l)".) |
! ("v(j, l)" is at latitude "rlatu(j)" and pressure level "press_in(l)".) |