37 USE yomhook
,ONLY : lhook, dr_hook
38 USE parkind1
,ONLY : jprb
44 REAL,
DIMENSION(:,:),
INTENT(IN) :: pdg
45 REAL,
DIMENSION(:,:),
INTENT(IN) :: ptg
46 REAL,
DIMENSION(:),
INTENT(OUT) :: palt
47 REAL,
DIMENSION(:),
INTENT(OUT) :: pflt
51 REAL,
DIMENSION(SIZE(PDG,1),SIZE(PDG,2)) :: znode
52 INTEGER,
DIMENSION(SIZE(PDG,1)) :: iup_alt, idown_alt
53 INTEGER,
DIMENSION(SIZE(PDG,1)) :: iup_flt, idown_flt
55 REAL :: ztg_up, ztg_down
57 REAL :: zalt, zflt, zslope
59 INTEGER :: ji, jl, ini, inl
61 REAL(KIND=JPRB) :: zhook_handle
65 IF (lhook) CALL dr_hook(
'COMPUT_COLD_LAYERS_THICK',0,zhook_handle)
77 znode(:,1)=0.5*pdg(:,1)
78 WHERE(ptg(:,1)>xtt.AND.ptg(:,2)<=xtt.AND.ptg(:,3)<=xtt)
82 WHERE(ptg(:,1)<xtt.AND.ptg(:,2)>=xtt.AND.ptg(:,3)>=xtt)
91 znode(ji,jl)=0.5*(pdg(ji,jl)+pdg(ji,jl-1))
92 IF(ptg(ji,jl-1)>xtt.AND.ptg(ji,jl)>xtt.AND.ptg(ji,jl+1)<=xtt)
THEN
96 IF(ptg(ji,jl-1)<xtt.AND.ptg(ji,jl)<xtt.AND.ptg(ji,jl+1)>=xtt)
THEN
105 znode(:,inl)=0.5*(pdg(:,inl)+pdg(:,inl-1))
106 WHERE(ptg(:,inl)>xtt)idown_alt(:)=nundef
107 WHERE(ptg(:,inl)<xtt)idown_flt(:)=nundef
112 IF(idown_alt(ji)>0.AND.idown_alt(ji)<=inl)
THEN
113 ztg_up = ptg(ji,iup_alt(ji))
114 ztg_down = ptg(ji,idown_alt(ji))
115 zup = znode(ji,iup_alt(ji))
116 zdown = znode(ji,idown_alt(ji))
117 zslope = (zup-zdown)/(ztg_up-ztg_down)
118 palt(ji) = zdown+(xtt-ztg_down)*zslope
122 IF(idown_flt(ji)>0.AND.idown_flt(ji)<=inl)
THEN
123 ztg_up = ptg(ji,iup_flt(ji))
124 ztg_down = ptg(ji,idown_flt(ji))
125 zup = znode(ji,iup_flt(ji))
126 zdown = znode(ji,idown_flt(ji))
127 zslope = (zup-zdown)/(ztg_up-ztg_down)
128 pflt(ji) = zdown+(xtt-ztg_down)*zslope
133 IF (lhook) CALL dr_hook(
'COMPUT_COLD_LAYERS_THICK',1,zhook_handle)
subroutine comput_cold_layers_thick(PDG, PTG, PALT, PFLT)