6 hprogram, kluout, kni, kdim1, hunit1, hunit2, &
7 px, py, kdims, kddim, hname_dim, knpatch)
49 USE modi_get_grid_coord
53 USE yomhook
,ONLY : lhook, dr_hook
54 USE parkind1
,ONLY : jprb
63 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
64 INTEGER,
INTENT(IN) :: kluout
65 INTEGER,
INTENT(IN) :: kni
66 INTEGER,
INTENT(OUT) :: kdim1
67 CHARACTER(LEN=13) ,
DIMENSION(:),
INTENT(OUT) :: hunit1, hunit2
68 REAL,
DIMENSION(:),
POINTER :: px, py
69 INTEGER,
DIMENSION(:),
POINTER :: kdims, kddim
70 CHARACTER(LEN=100),
DIMENSION(:),
POINTER :: hname_dim
71 INTEGER,
OPTIONAL,
INTENT(IN) :: knpatch
73 REAL,
DIMENSION(KNI) :: zxx, zyy
74 CHARACTER(LEN=3) :: ytype
75 INTEGER :: indims, idim2
78 REAL(KIND=JPRB) :: zhook_handle
80 IF (lhook) CALL dr_hook(
'OL_DEFINE_DIM',0,zhook_handle)
85 IF (.NOT.lwrite_coord)
THEN
87 IF ( ug%CGRID.EQ.
'CONF PROJ ' .OR. ug%CGRID.EQ.
'CARTESIAN '&
88 .OR. ug%CGRID.EQ.
'LONLAT REG' .OR. ug%CGRID.EQ.
'IGN' )
THEN
90 IF (ug%CGRID.EQ.
'LONLAT REG') ytype=
'LON'
91 IF (
ASSOCIATED(ug%XGRID_FULL_PAR))
THEN
92 CALL
get_grid_dim(ug%CGRID,ug%NGRID_PAR,ug%XGRID_FULL_PAR,grect,kdim1,idim2)
93 ELSEIF (
ASSOCIATED(ug%XGRID_PAR))
THEN
94 CALL
get_grid_dim(ug%CGRID,ug%NGRID_PAR,ug%XGRID_PAR,grect,kdim1,idim2)
101 IF ( kdim1.NE.0 ) indims = 3
102 IF ( present(knpatch) ) indims = indims + 1
104 ALLOCATE(kdims(indims))
105 ALLOCATE(kddim(indims))
106 ALLOCATE(hname_dim(indims))
108 IF ( kdim1.NE.0 )
THEN
111 IF (ytype.EQ.
'LON')
THEN
114 hunit1(1) =
'degrees_east'
115 hunit2(1) =
'degrees_north'
126 hname_dim(1) =
'Number_of_points'
127 IF (lwrite_coord)
THEN
133 IF (lwrite_coord)
THEN
135 IF (
ASSOCIATED(ug%XGRID_FULL_PAR))
THEN
137 kluout,px=px,py=py,kl=kni,hgrid=ug%CGRID,pgrid_par=ug%XGRID_FULL_PAR)
138 ELSEIF (
ASSOCIATED(ug%XGRID_PAR))
THEN
140 kluout,px=px,py=py,kl=kni,hgrid=ug%CGRID,pgrid_par=ug%XGRID_PAR)
143 ELSEIF ( ug%CGRID.EQ.
'CONF PROJ '.OR. ug%CGRID.EQ.
'CARTESIAN '.OR. &
144 ug%CGRID.EQ.
'LONLAT REG' )
THEN
146 IF (
ASSOCIATED(ug%XGRID_FULL_PAR))
THEN
148 kluout,px=zxx,py=zyy,kl=kni,hgrid=ug%CGRID,pgrid_par=ug%XGRID_FULL_PAR)
149 ELSEIF (
ASSOCIATED(ug%XGRID_PAR))
THEN
151 kluout,px=zxx,py=zyy,kl=kni,hgrid=ug%CGRID,pgrid_par=ug%XGRID_PAR)
154 IF (
ASSOCIATED(px))
THEN
159 IF (
ASSOCIATED(py))
THEN
161 py(j)=zyy((j-1)*(kni/
SIZE(py))+1)
165 ELSEIF(ug%CGRID.EQ.
'IGN ')
THEN
167 IF (
ASSOCIATED(ug%XGRID_FULL_PAR))
THEN
169 ELSEIF (
ASSOCIATED(ug%XGRID_PAR))
THEN
173 IF (.NOT.
ALLOCATED(nmask_ign))
THEN
174 ALLOCATE(nmask_ign(kni))
180 IF((zxx(k)==px(i)).AND.(zyy(k)==py(j)))
THEN
191 IF (present(knpatch))
THEN
192 kdims(indims-1) = knpatch
193 hname_dim(indims-1) =
'Number_of_Tile'
196 IF (hprogram/=
'NOTIME ')
THEN
197 kdims(indims) = nf_unlimited
198 hname_dim(indims) =
'time'
201 hname_dim(indims) =
'char_len'
204 IF (lhook) CALL dr_hook(
'OL_DEFINE_DIM',1,zhook_handle)
subroutine get_grid_dim(HGRID, KGRID_PAR, PGRID_PAR, ORECT, KDIM1, KDIM2)
subroutine get_grid_coord(UG, U, KLUOUT, PX, PY, KL, HGRID, PGRID_PAR)
subroutine ol_define_dim(UG, U, HPROGRAM, KLUOUT, KNI, KDIM1, HUNIT1, HUNIT2, PX, PY, KDIMS, KDDIM, HNAME_DIM, KNPATCH)
subroutine get_gridtype_ign(PGRID_PAR, KLAMBERT, KL, PX, PY, PDX, PDY, KDIMX, KDIMY, PXALL, PYALL)