34 INTEGER,
INTENT(IN) :: KDIM_FULL
35 REAL,
DIMENSION(:),
INTENT(IN)::PZS
36 REAL,
DIMENSION(:),
INTENT(OUT)::PSSO_SLOPE
56 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZMAP
57 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZZS
58 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZSSO_SLOPE
59 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZZS_XY
60 REAL,
DIMENSION(:,:),
ALLOCATABLE :: ZZSL
61 REAL,
DIMENSION(:),
ALLOCATABLE :: ZXHAT
62 REAL,
DIMENSION(:),
ALLOCATABLE :: ZYHAT
65 REAL,
DIMENSION(:),
ALLOCATABLE :: ZDX
66 REAL,
DIMENSION(:),
ALLOCATABLE :: ZDY
68 REAL,
DIMENSION(:),
ALLOCATABLE :: ZZS0
69 REAL,
DIMENSION(:),
ALLOCATABLE :: ZSSO_SLOPE0
72 REAL,
PARAMETER :: XPI=4.*atan(1.)
73 INTEGER,
PARAMETER :: JPHEXT = 1
75 INTEGER :: IIB, IIE, IJB, IJE
91 CALL get_grid_dim(ug%G%CGRID,
SIZE(ug%XGRID_FULL_PAR),ug%XGRID_FULL_PAR,grect,ix,iy)
104 CALL get_mesh_dim(ug%G%CGRID,
SIZE(ug%XGRID_FULL_PAR),ix*iy,ug%XGRID_FULL_PAR,zdx,zdy,ug%G%XMESH_SIZE)
110 ALLOCATE(zzs0(kdim_full))
115 IF (
SIZE(zzs0) /= ix * iy)
RETURN 123 ALLOCATE(zzsl(innx,inny))
127 zzs(jx,jy) = zzs0( jx + (jy-1)*ix )
133 zzsl(2:innx-1,2:inny-1) = zzs(:,:)
134 zzsl(1,:) = zzsl(2,:)
135 zzsl(innx,:) = zzsl(innx-1,:)
136 zzsl(:,1) = zzsl(:,2)
137 zzsl(:,inny) = zzsl(:,inny-1)
145 ALLOCATE(zzs_xy(innx,inny))
147 zzs_xy(2:innx,2:inny) = 0.25*( zzsl(2:innx,2:inny) + zzsl(1:innx-1,2:inny) &
148 + zzsl(2:innx,1:inny-1) + zzsl(1:innx-1,1:inny-1) )
150 zzs_xy(1,:) = zzs_xy(2,:)
151 zzs_xy(:,1) = zzs_xy(:,2)
157 ALLOCATE(zxhat(innx))
158 ALLOCATE(zyhat(inny))
161 zxhat(jx) = zdx(1)*jx
164 zyhat(jy) = zdy(1)*jy
176 ALLOCATE(zmap(innx,inny))
178 ALLOCATE(zsso_slope(ix,iy))
197 zdzsdx=( 2.* zzsl(ji,jj) &
198 - (zzs_xy(ji,jj)+zzs_xy(ji,jj+1)) ) &
199 / (zxhat(ji+1)-zxhat(ji)) * zmap(ji,jj)
200 zdzsdy=( zzs_xy(ji,jj+1) - zzs_xy(ji,jj) ) &
201 / (zyhat(jj+1)-zyhat(jj)) * zmap(ji,jj)
203 zdzsdx=( zzs_xy(ji+1,jj+1) -zzs_xy(ji,jj+1)) &
204 / (zxhat(ji+1)-zxhat(ji)) * zmap(ji,jj)
205 zdzsdy=( (zzs_xy(ji+1,jj+1)+zzs_xy(ji,jj+1)) &
206 - 2.* zzsl(ji,jj) ) &
207 / (zyhat(jj+1)-zyhat(jj)) * zmap(ji,jj)
209 zdzsdx=( (zzs_xy(ji+1,jj)+zzs_xy(ji+1,jj+1)) &
210 - 2.* zzsl(ji,jj) ) &
211 / (zxhat(ji+1)-zxhat(ji)) * zmap(ji,jj)
212 zdzsdy=( zzs_xy(ji+1,jj+1) - zzs_xy(ji+1,jj) ) &
213 / (zyhat(jj+1)-zyhat(jj)) * zmap(ji,jj)
215 zdzsdx=( zzs_xy(ji+1,jj) - zzs_xy(ji,jj) ) &
216 / (zxhat(ji+1)-zxhat(ji)) * zmap(ji,jj)
217 zdzsdy=( 2.* zzsl(ji,jj) &
218 - (zzs_xy(ji+1,jj)+zzs_xy(ji,jj)) ) &
219 / (zyhat(jj+1)-zyhat(jj)) * zmap(ji,jj)
224 zdzsdx=min(2.0,max(-2.0,zdzsdx))
225 zdzsdy=min(2.0,max(-2.0,zdzsdy))
228 zsurf=zsurf+0.25*sqrt(1. + zdzsdx**2 + zdzsdy**2)
233 zsso_slope(ji-jphext,jj-jphext)=sqrt(zsurf**2-1)
242 ALLOCATE(zsso_slope0(kdim_full))
246 zsso_slope0( jx + (jy-1)*ix )=zsso_slope(jx,jy)
252 DEALLOCATE(zsso_slope0)
subroutine get_grid_dim(HGRID, KGRID_PAR, PGRID_PAR, ORECT, KDIM1, KDIM
subroutine explicit_slope(UG, KDIM_FULL, PZS, PSSO_SLOPE)
subroutine get_mesh_dim(HGRID, KGRID_PAR, KL, PGRID_PAR, PDX, PDY, PMESH