10 USE yomhook
,ONLY : lhook, dr_hook
11 USE parkind1
,ONLY : jprb
17 REAL,
DIMENSION(:,:),
INTENT(IN) :: pdg1
18 REAL,
DIMENSION(:,:),
INTENT(IN) :: pt1
19 REAL,
DIMENSION(:,:),
INTENT(IN) :: pdg2
20 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pt2
24 REAL,
DIMENSION(SIZE(PDG1,1),SIZE(PDG1,2)) :: zdzg1
25 REAL,
DIMENSION(SIZE(PDG2,1),SIZE(PDG2,2)) :: zsum
27 REAL,
DIMENSION(SIZE(PDG1,1),SIZE(PDG1,2),SIZE(PDG2,2)) :: zwght
28 REAL,
DIMENSION(SIZE(PDG1,1),SIZE(PDG1,2)) :: zsum_wght
32 INTEGER :: ini, inl1, inl2
33 INTEGER :: jl1, jl2, ji
35 REAL(KIND=JPRB) :: zhook_handle
37 IF (lhook) CALL dr_hook(
'VERTICAL_GRID_NAT',0,zhook_handle)
50 zdzg1(:,jl1)=pdg1(:,jl1)-pdg1(:,jl1-1)
57 IF(pt1(ji,jl1)/=xundef)
THEN
59 zwght(ji,jl1,jl2)=min(zdzg1(ji,jl1),max(0.0,pdg2(ji,jl2)-pdg1(ji,jl1)+zdzg1(ji,jl1)))
60 zwght(ji,jl1,jl2)=max(0.0,zwght(ji,jl1,jl2)-zsum_wght(ji,jl1))
62 pt2(ji,jl2)=pt2(ji,jl2)+zwght(ji,jl1,jl2)*pt1(ji,jl1)
63 zsum(ji,jl2)=zsum(ji,jl2)+zwght(ji,jl1,jl2)
65 zsum_wght(ji,jl1)=zsum_wght(ji,jl1)+zwght(ji,jl1,jl2)
74 pt2(:,:)=pt2(:,:)/zsum(:,:)
83 IF(pt2(ji,1)/=xundef.AND.pt2(ji,jl2)==xundef)
THEN
84 pt2(ji,jl2)=pt2(ji,jl2-1)
89 IF (lhook) CALL dr_hook(
'VERTICAL_GRID_NAT',1,zhook_handle)
subroutine vertical_grid_nat(PDG1, PT1, PDG2, PT2)