9 USE modi_def_var_netcdf
27 CHARACTER(LEN=*),
DIMENSION(:),
INTENT(IN) :: HSELECT
28 INTEGER,
INTENT(IN) :: KFILE_ID
31 CHARACTER(LEN=100),
DIMENSION(1) :: YATT_TITLE3
32 CHARACTER(LEN=100),
DIMENSION(11) :: YATT_TITLE2
33 CHARACTER(LEN=100),
DIMENSION(3) :: YATT_TITLE, YATT
34 CHARACTER(LEN=100) :: YCOMMENT
35 REAL,
DIMENSION(11) :: ZATT
36 REAL,
DIMENSION(1,2) :: ZATT2D
38 REAL,
DIMENSION(:),
ALLOCATABLE :: ZLATP, ZLATP2
39 REAL,
DIMENSION(:),
ALLOCATABLE :: ZDX, ZDY, ZX, ZY
41 REAL,
DIMENSION(2) :: ZLAT2
42 REAL,
DIMENSION(1) :: ZLAT1, ZLON1, ZX1, ZY1, ZX2, ZY2
43 REAL :: ZLAT0, ZLON0, ZX0, ZY0, ZRPK, ZBETA, ZLATOR, ZLONOR, ZSIN, &
44 ZLONCEN, ZLATCEN, ZCODIL, ZRESX, ZRESY, ZLONMIN, ZLONMAX, &
45 ZLATMIN, ZLATMAX, ZDX0, ZDY0
47 INTEGER,
DIMENSION(:),
ALLOCATABLE :: INLOPA
48 INTEGER,
DIMENSION(1) :: IDIMID1
49 INTEGER,
DIMENSION(0) :: IDIMID
50 INTEGER :: ILAMBERT, IL, IRESP, IVAR_ID, IIMAX, IJMAX, JJ, INLATI
51 INTEGER :: IIL, IIH, IJL, IJH, JRET, ICPT, ISIZE
53 REAL(KIND=JPRB) :: ZHOOK_HANDLE
57 yatt_title(1) =
"grid_mapping_name" 59 SELECT CASE(ug%G%CGRID)
64 ALLOCATE(zx(il),zy(il))
65 ALLOCATE(zdx(il),zdy(il))
67 px=zx,py=zy,pdx=zdx,pdy=zdy)
73 IF ( abs(zrpk)==1 )
THEN 74 yatt(1) =
"polar_stereographic" 78 yatt(1) =
"lambert_conformal_conic" 85 yatt_title2(isize) =
'earth_radius' 86 zatt(isize) = 6371229.
89 IF ( yatt(1)==
"polar_stereographic" )
THEN 90 yatt_title2(isize) =
"straight_vertical_longitude_from_pole" 92 yatt_title2(isize) =
"longitude_of_central_meridian" 97 yatt_title2(isize) =
"latitude_of_projection_origin" 98 IF (yatt(1)==
"mercator")
THEN 109 CALL xy_conf_proj(zlat0,zlon0,zrpk,0.,zlator,zlonor,zx2,zy2,zlat1,zlon1)
111 yatt_title2(isize) =
"false_easting" 112 zatt(isize) = nint((zx2(1)-zx1(1))*100.)/100.
114 yatt_title2(isize) =
"false_northing" 115 zatt(isize) = nint((zy2(1)-zy1(1))*100.)/100.
118 yatt_title2(isize) =
"rotation" 123 yatt_title2(isize) =
"x_resolution" 126 yatt_title2(isize) =
"y_resolution" 130 zsin = sin(zlat0*(
xpi/180.))
131 IF (abs(zrpk)==1.OR.zrpk==0..OR.nint(zsin*100.)==nint(zrpk*100.))
THEN 134 yatt_title2(isize) =
'standard_parallel' 137 CALL def_var_netcdf(hselect,kfile_id,
"Projection_Type",
"",idimid,&
138 yatt_title(1:1),yatt(1:1),ivar_id,nf90_int,hatt_title2=yatt_title2(1:isize),&
139 patt_float=zatt(1:isize))
143 yatt_title3(1) =
"standard_parallel" 144 zatt2d(1,1) = asin(zrpk)*(180./
xpi)
145 zatt2d(1,2) = 2*zlat0-asin(zrpk)*(180./
xpi)
147 CALL def_var_netcdf(hselect,kfile_id,
"Projection_Type",
"",idimid,&
148 yatt_title(1:1),yatt(1:1),ivar_id,nf90_int,hatt_title2=yatt_title2(1:isize),&
149 patt_float=zatt(1:isize),hatt_title3=yatt_title3(1:1),patt_float2d=zatt2d(1:1,:))
156 yatt(1) =
"gauss_grid" 158 CALL get_gridtype_gauss(ug%XGRID_FULL_PAR,plapo=zlat0,plopo=zlon0,kl=il,knlati=inlati)
159 ALLOCATE(inlopa(inlati))
161 ALLOCATE(zlatp2(inlati))
166 IF ( zlatp(jj)/=zlatp(jj-1) )
THEN 168 zlatp2(icpt) = zlatp(jj)
173 yatt_title(2) =
"latitudes" 174 yatt_title(3) =
"lon_number_by_lat" 175 yatt(2) =
"var: gauss_latitudes" 176 yatt(3) =
"var: lon_number_by_lat" 179 yatt_title2(1) =
'earth_radius' 182 yatt_title2(2) =
"dilatation_coef" 185 yatt_title2(3) =
"pole_lon" 186 yatt_title2(4) =
"pole_lat" 187 zatt(3) = nint(zlon0*100.)/100.
188 zatt(4) = nint(zlat0*100.)/100.
190 CALL def_var_netcdf(hselect,kfile_id,
"Projection_Type",
"",idimid,&
191 yatt_title(1:3),yatt(1:3),ivar_id,nf90_int,hatt_title2=yatt_title2(1:4),&
192 patt_float=zatt(1:4))
196 jret = nf90_inq_dimid(kfile_id,
"latitude",idimid1(1))
197 CALL def_var_netcdf(hselect,kfile_id,
"gauss_latitudes",
"",idimid1,&
198 yatt_title(1:1),yatt(1:1),ivar_id,nf90_double)
199 CALL def_var_netcdf(hselect,kfile_id,
"lon_number_by_lat",
"",idimid1,&
200 yatt_title(1:1),yatt(1:1),ivar_id,nf90_int)
201 jret = nf90_enddef(kfile_id)
202 jret = nf90_inq_varid(kfile_id,
"gauss_latitudes", ivar_id)
203 jret = nf90_put_var(kfile_id, ivar_id, zlatp2)
204 jret = nf90_inq_varid(kfile_id,
"lon_number_by_lat", ivar_id)
205 jret = nf90_put_var(kfile_id, ivar_id, inlopa)
206 jret = nf90_redef(kfile_id)
208 DEALLOCATE(zlatp2,inlopa)
213 yatt(1) =
"cartesian" 216 ALLOCATE(zdx(il),zdy(il))
225 yatt_title2(isize) =
"x_resolution" 228 yatt_title2(isize) =
"y_resolution" 232 CALL def_var_netcdf(hselect,kfile_id,
"Projection_Type",
"",idimid,&
233 yatt_title(1:1),yatt(1:1),ivar_id,nf90_int,hatt_title2=yatt_title2(1:isize),&
234 patt_float=zatt(1:isize))
239 yatt(1) =
"latitude_longitude" 242 plonmax=zlonmax,platmin=zlatmin,platmax=zlatmax)
243 ALLOCATE(zx(il),zy(il))
247 zresx = abs(zx(1)-zx(2))
248 iimax = nint((zlonmax-zlonmin)/zresx)
250 zresy = abs(zy(1)-zy(iimax+1))
252 zresy = zlatmax - zlatmin
255 zresx = zlonmax - zlonmin
256 zresy = zlatmax - zlatmin
261 yatt_title2(1) =
'earth_radius' 267 yatt_title2(isize) =
"x_resolution" 270 yatt_title2(isize) =
"y_resolution" 274 CALL def_var_netcdf(hselect,kfile_id,
"Projection_Type",
"",idimid,&
275 yatt_title(1:1),yatt(1:1),ivar_id,nf90_int,hatt_title2=yatt_title2(1:isize),&
276 patt_float=zatt(1:isize))
281 yatt(1) =
"rotated_latitude_longitude" 284 kl=il,klon=iimax,klat=ijmax,pdlon=zdx0,pdlat=zdy0)
287 yatt_title2(1) =
'earth_radius' 290 yatt_title2(2) =
"grid_north_pole_longitude" 291 yatt_title2(3) =
"grid_north_pole_latitude" 301 yatt_title2(isize) =
"x_resolution" 304 yatt_title2(isize) =
"y_resolution" 308 CALL def_var_netcdf(hselect,kfile_id,
"Projection_Type",
"",idimid,&
309 yatt_title(1:1),yatt(1:1),ivar_id,nf90_int,&
310 hatt_title2=yatt_title2(1:isize),patt_float=zatt(1:isize))
315 yatt(1) =
"latitude_longitude" 318 yatt_title2(1) =
'earth_radius' 321 CALL def_var_netcdf(hselect,kfile_id,
"Projection_Type",
"",idimid,&
322 yatt_title(1:1),yatt(1:1),ivar_id,nf90_int,&
323 hatt_title2=yatt_title2(1:1),patt_float=zatt(1:1))
329 kdimx=iimax,kdimy=ijmax)
333 yatt(1) =
"latitude_longitude" 335 CALL def_var_netcdf(hselect,kfile_id,
"Projection_Type",
"",idimid,&
336 yatt_title(1:1),yatt(1:1),ivar_id,nf90_int)
342 ALLOCATE(zx(iimax),zy(ijmax))
345 SELECT CASE(ilambert)
349 zlat2(2) = 50.39088033333
356 zlat2(1) = 45.88935133333
357 zlat2(2) = 47.68760866666
364 zlat2(1) = 43.19290816666
365 zlat2(2) = 44.96513966666
372 zlat2(1) = 41.55623266666
373 zlat2(2) = 42.76726466666
380 zlat2(1) = 45.88935133333
381 zlat2(2) = 47.68760866666
396 yatt_title(1) =
"grid_mapping_name" 397 yatt(1) =
"lambert_conformal_conic" 398 yatt_title(2) =
"ellipsoid" 399 IF (ilambert==6)
THEN 408 yatt_title2(isize) =
"longitude_of_central_meridian" 412 yatt_title2(isize) =
"latitude_of_projection_origin" 417 CALL xy_ign(ilambert,zx2,zy2,zlat1,zlon1)
421 yatt_title2(isize) =
"false_easting" 422 zatt(isize) = zx2(1)-zx1(1)
424 yatt_title2(isize) =
"false_northing" 425 zatt(isize) = zy2(1)-zy1(1)
427 yatt_title3(1) =
"standard_parallel" 428 zatt2d(1,:) = zlat2(:)
430 IF (all(zdx(2:)==zdx(1)))
THEN 432 yatt_title2(isize) =
"x_resolution" 435 IF (all(zdy(2:)==zdy(1)))
THEN 437 yatt_title2(isize) =
"y_resolution" 441 CALL def_var_netcdf(hselect,kfile_id,
"Projection_Type",
"",idimid,&
442 yatt_title(1:2),yatt(1:2),ivar_id,nf90_int,hatt_title2=yatt_title2(1:isize),&
443 patt_float=zatt(1:isize),hatt_title3=yatt_title3(1:1),patt_float2d=zatt2d(1:1,:))
445 DEALLOCATE(zx,zy,zdx,zdy)
451 CALL abor1_sfx(
"OL_WRITE_PROJ: PROJECTION "//ug%G%CGRID//
" NOT DEFINED")
subroutine get_gridtype_ign(PGRID_PAR, KLAMBERT, KL, PX, PY, PDX, PDY, KDIMX, KDIMY, PXALL, PYALL)
subroutine xy_ign(KLAMBERT, PX, PY, PLAT, PLON)
subroutine xy_conf_proj(PLAT0, PLON0, PRPK, PBETA, PLATOR, PLONOR, PX, PY, PLAT, PLON)
subroutine ol_write_proj(HSELECT, KFILE_ID, UG)
subroutine abor1_sfx(YTEXT)
subroutine get_gridtype_lonlat_reg(PGRID_PAR, PLONMIN, PLONMAX, PLATMIN, PLATMAX, KLON, KLAT, KL, PLON, PLAT)
subroutine get_gridtype_lonlat_rot(PGRID_PAR,
subroutine def_var_netcdf(HSELECT, KFILE_ID, HNAME, HLONG_NAME, KDIM_ID, H
subroutine get_gridtype_conf_proj(PGRID_PAR, PLAT0, PLON0, PRPK, PBETA
subroutine get_gridtype_gauss(PGRID_PAR, KNLATI, PLAPO, PLOPO, PCODIL, KNLOPA, KL, PLAT, PLON, PLAT_XY, PLON_XY, PMESH_SIZE, PLONINF, PLATINF, PLONSUP, PLATSUP)
subroutine get_gridtype_cartesian(PGRID_PAR, PLAT0, PLON0,