13 USE yomhook
,ONLY : lhook, dr_hook
14 USE parkind1
,ONLY : jprb
27 kl,plat,plon,plat_xy,plon_xy,pmesh_size , &
28 ploninf,platinf,plonsup,platsup )
52 INTEGER,
INTENT(IN) :: knlati
53 REAL,
INTENT(IN) :: plapo
54 REAL,
INTENT(IN) :: plopo
55 REAL,
INTENT(IN) :: pcodil
56 INTEGER,
DIMENSION(KNLATI),
INTENT(IN) :: knlopa
60 INTEGER,
INTENT(IN) :: kl
61 REAL,
DIMENSION(:),
INTENT(IN) :: plat
62 REAL,
DIMENSION(:),
INTENT(IN) :: plon
63 REAL,
DIMENSION(:),
INTENT(IN) :: plat_xy
64 REAL,
DIMENSION(:),
INTENT(IN) :: plon_xy
65 REAL,
DIMENSION(:),
INTENT(IN) :: pmesh_size
67 REAL,
DIMENSION(:),
INTENT(IN) :: platsup
68 REAL,
DIMENSION(:),
INTENT(IN) :: plonsup
69 REAL,
DIMENSION(:),
INTENT(IN) :: platinf
70 REAL,
DIMENSION(:),
INTENT(IN) :: ploninf
72 REAL,
DIMENSION(:),
POINTER :: pgrid_par
73 REAL(KIND=JPRB) :: zhook_handle
82 IF (lhook) CALL dr_hook(
'MODE_GRIDTYPE_GAUSS:PUT_GRIDTYPE_GAUSS',0,zhook_handle)
83 ALLOCATE(pgrid_par(5+knlati+9*kl))
88 pgrid_par(5:4+knlati)= knlopa(:)
89 pgrid_par(5+knlati) = kl
90 pgrid_par(6+knlati:5+knlati+kl) = plat(:)
91 pgrid_par(6+knlati+kl:5+knlati+2*kl) = plon(:)
92 pgrid_par(6+knlati+2*kl:5+knlati+3*kl) = plat_xy(:)
93 pgrid_par(6+knlati+3*kl:5+knlati+4*kl) = plon_xy(:)
94 pgrid_par(6+knlati+4*kl:5+knlati+5*kl) = pmesh_size(:)
95 pgrid_par(6+knlati+5*kl:5+knlati+6*kl) = ploninf(:)
96 pgrid_par(6+knlati+6*kl:5+knlati+7*kl) = platinf(:)
97 pgrid_par(6+knlati+7*kl:5+knlati+8*kl) = plonsup(:)
98 pgrid_par(6+knlati+8*kl:5+knlati+9*kl) = platsup(:)
99 IF (lhook) CALL dr_hook(
'MODE_GRIDTYPE_GAUSS:PUT_GRIDTYPE_GAUSS',1,zhook_handle)
108 plapo,plopo,pcodil,knlopa,kl, &
109 plat,plon,plat_xy,plon_xy,pmesh_size,&
110 ploninf,platinf,plonsup,platsup )
133 REAL,
DIMENSION(:),
INTENT(IN) :: pgrid_par
134 INTEGER,
INTENT(OUT),
OPTIONAL :: knlati
135 REAL,
INTENT(OUT),
OPTIONAL :: plapo
136 REAL,
INTENT(OUT),
OPTIONAL :: plopo
137 REAL,
INTENT(OUT),
OPTIONAL :: pcodil
138 INTEGER,
DIMENSION(:),
INTENT(OUT),
OPTIONAL :: knlopa
142 INTEGER,
INTENT(OUT),
OPTIONAL :: kl
143 REAL,
DIMENSION(:),
OPTIONAL,
INTENT(OUT) :: plat
144 REAL,
DIMENSION(:),
OPTIONAL,
INTENT(OUT) :: plon
145 REAL,
DIMENSION(:),
OPTIONAL,
INTENT(OUT) :: plat_xy
146 REAL,
DIMENSION(:),
OPTIONAL,
INTENT(OUT) :: plon_xy
147 REAL,
DIMENSION(:),
OPTIONAL,
INTENT(OUT) :: pmesh_size
149 REAL,
DIMENSION(:),
OPTIONAL,
INTENT(OUT) :: platsup
150 REAL,
DIMENSION(:),
OPTIONAL,
INTENT(OUT) :: plonsup
151 REAL,
DIMENSION(:),
OPTIONAL,
INTENT(OUT) :: platinf
152 REAL,
DIMENSION(:),
OPTIONAL,
INTENT(OUT) :: ploninf
160 REAL(KIND=JPRB) :: zhook_handle
162 IF (lhook) CALL dr_hook(
'MODE_GRIDTYPE_GAUSS:GET_GRIDTYPE_GAUSS',0,zhook_handle)
163 IF (present(knlati)) knlati = pgrid_par(1)
164 IF (present(plapo)) plapo = pgrid_par(2)
165 IF (present(plopo)) plopo = pgrid_par(3)
166 IF (present(pcodil)) pcodil = pgrid_par(4)
168 inlati = pgrid_par(1)
170 IF (present(knlopa))
THEN
171 knlopa(:) = pgrid_par(5:4+inlati)
174 il = pgrid_par(5+inlati)
176 IF (present(kl))
THEN
180 IF (present(plat))
THEN
181 IF (
SIZE(plat)/=il)
THEN
182 CALL
abor1_sfx(
'MODE_GRIDTYPE_GAUSS: WRONG SIZE FOR PLAT')
184 plat(:) = pgrid_par(6+inlati:5+inlati+il)
187 IF (present(plon))
THEN
188 IF (
SIZE(plon)/=il)
THEN
189 CALL
abor1_sfx(
'MODE_GRIDTYPE_GAUSS: WRONG SIZE FOR PLON')
191 plon(:) = pgrid_par(6+inlati+il:5+inlati+2*il)
194 IF (present(plat_xy))
THEN
195 IF (
SIZE(plat_xy)/=il)
THEN
196 CALL
abor1_sfx(
'MODE_GRIDTYPE_GAUSS: WRONG SIZE FOR PLAT_XY')
198 plat_xy(:) = pgrid_par(6+inlati+2*il:5+inlati+3*il)
201 IF (present(plon_xy))
THEN
202 IF (
SIZE(plon_xy)/=il)
THEN
203 CALL
abor1_sfx(
'MODE_GRIDTYPE_GAUSS: WRONG SIZE FOR PLON_XY')
205 plon_xy(:) = pgrid_par(6+inlati+3*il:5+inlati+4*il)
208 IF (present(pmesh_size))
THEN
209 IF (
SIZE(pmesh_size)/=il)
THEN
210 CALL
abor1_sfx(
'MODE_GRIDTYPE_GAUSS: WRONG SIZE FOR PMESH_SIZE')
212 pmesh_size(:) = pgrid_par(6+inlati+4*il:5+inlati+5*il)
215 IF (present(ploninf))
THEN
216 IF (
SIZE(ploninf)/=il)
THEN
217 CALL
abor1_sfx(
'MODE_GRIDTYPE_GAUSS: WRONG SIZE FOR PLONINF')
219 ploninf(:) = pgrid_par(6+inlati+5*il:5+inlati+6*il)
222 IF (present(platinf))
THEN
223 IF (
SIZE(platinf)/=il)
THEN
224 CALL
abor1_sfx(
'MODE_GRIDTYPE_GAUSS: WRONG SIZE FOR PLATINF')
226 platinf(:) = pgrid_par(6+inlati+6*il:5+inlati+7*il)
229 IF (present(plonsup))
THEN
230 IF (
SIZE(plonsup)/=il)
THEN
231 CALL
abor1_sfx(
'MODE_GRIDTYPE_GAUSS: WRONG SIZE FOR PLONSUP')
233 plonsup(:) = pgrid_par(6+inlati+7*il:5+inlati+8*il)
236 IF (present(platsup))
THEN
237 IF (
SIZE(platsup)/=il)
THEN
238 CALL
abor1_sfx(
'MODE_GRIDTYPE_GAUSS: WRONG SIZE FOR PLATSUP')
240 platsup(:) = pgrid_par(6+inlati+8*il:5+inlati+9*il)
244 IF (lhook) CALL dr_hook(
'MODE_GRIDTYPE_GAUSS:GET_GRIDTYPE_GAUSS',1,zhook_handle)
252 SUBROUTINE latlon_gauss(PLON_XY,PLAT_XY,KL,PLOPO,PLAPO,PCODIL,PLON,PLAT)
277 INTEGER,
INTENT(IN) :: kl
278 REAL,
INTENT(IN) :: plapo
279 REAL,
INTENT(IN) :: plopo
280 REAL,
INTENT(IN) :: pcodil
281 REAL,
DIMENSION(KL),
INTENT(IN) :: plat_xy
282 REAL,
DIMENSION(KL),
INTENT(IN) :: plon_xy
283 REAL,
DIMENSION(KL),
INTENT(OUT):: plat
284 REAL,
DIMENSION(KL),
INTENT(OUT):: plon
294 REAL :: zclo3,zconr,zinterm,zlat1,zlat2,zlat3,zlon1,zlon2,zlon3
295 REAL :: zlatp,zlonp,zsla3,zslo3,zr
296 REAL(KIND=JPRB) :: zhook_handle
299 IF (lhook) CALL dr_hook(
'MODE_GRIDTYPE_GAUSS:LATLON_GAUSS',0,zhook_handle)
307 zlon1=zconr*plon_xy(jp)
308 zlat1=zconr*plat_xy(jp)
310 zinterm=1./pcodil*cos(zlat1)/max(1.e-12,1.+sin(zlat1))
311 zlat2=2.*atan((1.-zinterm)/(1.+zinterm))
316 zsla3=-cos(zlat2)*cos(zlon2)*cos(zlatp)+sin(zlat2)*sin(zlatp)
317 IF (zsla3>1. .OR. zsla3<-1.)
THEN
318 WRITE(0,*)
'be carefull --> sinus >1'
319 zsla3=min(1.,max(-1.,zsla3))
324 zslo3=(cos(zlat2)*cos(zlon2)*sin(zlatp)*sin(zlonp)&
325 +cos(zlat2)*sin(zlon2)*cos(zlonp)&
326 +sin(zlat2)*cos(zlatp)*sin(zlonp)) / cos(zlat3)
327 zclo3=(cos(zlat2)*cos(zlon2)*sin(zlatp)*cos(zlonp)&
328 -cos(zlat2)*sin(zlon2)*sin(zlonp)&
329 +sin(zlat2)*cos(zlatp)*cos(zlonp)) / cos(zlat3)
332 zr=sqrt(zclo3*zclo3+zslo3*zslo3)
336 ELSEIF (zslo3>0.)
THEN
342 zinterm=atan(zslo3/zclo3)
345 ELSEIF (zslo3>=0.)
THEN
354 IF (plon(jp)<0.) plon(jp)=plon(jp)+360.
359 IF (lhook) CALL dr_hook(
'MODE_GRIDTYPE_GAUSS:LATLON_GAUSS',1,zhook_handle)
394 INTEGER,
INTENT(IN) :: knlati
395 INTEGER,
DIMENSION(KNLATI),
INTENT(IN) :: knlopa
399 INTEGER,
INTENT(IN) :: kl
400 INTEGER,
INTENT(IN) :: ktyp
401 REAL,
DIMENSION(KL),
INTENT(INOUT) :: plat_xy
402 REAL,
DIMENSION(KL),
INTENT(INOUT) :: plon_xy
412 REAL,
DIMENSION(KNLATI) :: znlopa, zsinla, zwg
413 REAL,
DIMENSION(KNLATI) :: zdsinla
414 REAL(KIND=JPRB) :: zhook_handle
417 IF (lhook) CALL dr_hook(
'MODE_GRIDTYPE_GAUSS:COMP_GRIDTYPE_GAUSS',0,zhook_handle)
430 zwg(jy)=
p_asin(zsinla(jy))
431 zwg(knlati+1-jy)= -
p_asin(zsinla(jy))
440 plat_xy(jl) = zwg(jy)*zrd
441 plon_xy(jl) = 360. * float(jx-1) / znlopa(jy) + zi
446 WRITE(0,*)
' PB in the total number of points of the gaussian grid '
447 WRITE(0,*)
' check your namelist and rerun !'
448 CALL
abor1_sfx(
'MODE_GRIDTYPE_GAUSS: PB IN THE TOTAL NUMBER OF POINTS')
450 IF (lhook) CALL dr_hook(
'MODE_GRIDTYPE_GAUSS:COMP_GRIDTYPE_GAUSS',1,zhook_handle)
484 INTEGER,
INTENT(IN) :: knlati
485 INTEGER,
DIMENSION(KNLATI),
INTENT(IN) :: knlopa
489 REAL,
DIMENSION(:),
INTENT(OUT):: pxinf
490 REAL,
DIMENSION(:),
INTENT(OUT):: pxsup
491 REAL,
DIMENSION(:),
INTENT(OUT):: pyinf
492 REAL,
DIMENSION(:),
INTENT(OUT):: pysup
502 REAL,
DIMENSION(KNLATI) :: znlopa, zsinla, zwg
503 REAL,
DIMENSION(KNLATI) :: zdsinla
504 REAL(KIND=JPRB) :: zhook_handle
507 IF (lhook) CALL dr_hook(
'MODE_GRIDTYPE_GAUSS:GAUSS_GRID_LIMITS',0,zhook_handle)
519 zwg(jy)=
p_asin(zsinla(jy))*zrd
520 zwg(knlati+1-jy)= -
p_asin(zsinla(jy))*zrd
533 pysup(jl)= zwg(jy)+(zwg(jy-1)-zwg(jy))/2.
538 pyinf(jl) = zwg(jy)-(zwg(jy)-zwg(jy+1))/2.
540 pxsup(jl) = 360. * (float(jx)-0.5) / znlopa(jy)
541 pxinf(jl) = 360. * (float(jx)-1.5) / znlopa(jy)
544 IF (lhook) CALL dr_hook(
'MODE_GRIDTYPE_GAUSS:GAUSS_GRID_LIMITS',1,zhook_handle)
551 SUBROUTINE xy_gauss(PCODIL,KSIZE,PNODATA,PVALUE,PLAT_XY,PLON_XY)
593 xlonp, xlatp, xcosp, xsinp, xpi, x1, x2, xdr
599 REAL,
INTENT(IN) :: pcodil
600 INTEGER,
INTENT(IN) :: ksize
601 REAL,
INTENT(IN) :: pnodata
602 REAL,
DIMENSION(:),
INTENT(IN) :: pvalue
603 REAL,
DIMENSION(:),
INTENT(OUT):: plat_xy,plon_xy
607 REAL :: zcos1, zv1, zinvs, zlat1, zcos2, zlon1, zinvc, zsinn
608 REAL :: zv2, zsint, zcost, zv3, zlat2, zm, zlon2
610 INTEGER :: jj, idn, idt
612 REAL(KIND=JPRB) :: zhook_handle
618 IF (lhook) CALL dr_hook(
'MODE_GRIDTYPE_GAUSS:XY_GAUSS',0,zhook_handle)
625 IF (pvalue(jj)==pnodata) cycle
628 IF (idn==0) idn=ksize
629 idt = ceiling(1.*jj/ksize)
631 zcos1 = xcosn(idn)*xcost(idt)
633 zv1 = min(1.,max(-1.,xsints(idt)+xcosp*zcos1))
640 IF (zcos2 /= 0.0)
THEN
644 zsinn = - xcost(idt)*xsinn(idn)/zcos2
646 zv2 = min(1.,max(-1.,(xsintc(idt)-xsinp*zcos1)/zcos2))
648 zlon1 = acos(zv2) * sign(1.,zsinn)
655 zsint = (x1+x2*zv1)/(x2+x1*zv1)
656 zcost = 2.0*pcodil*zcos2/(x2+x1*zv1)
658 zv3 = min(1.,max(-1.,zcost))
659 zlat2 = acos(zv3)*sign(1.,zsint)
662 zlon2 = (zm-xpi*mod(
REAL(INT(ZLON1/XPI)),2.0))*sign(1.0,zlon1)*sign(1.0,zm)
669 plat_xy(jj) = zlat2 / xdr
670 plon_xy(jj) = zlon2 / xdr
672 IF (abs(plon_xy(jj)-360.)<1.e-4) plon_xy(jj) = 0.
677 IF (lhook) CALL dr_hook(
'MODE_GRIDTYPE_GAUSS:XY_GAUSS',1,zhook_handle)
720 REAL,
INTENT(IN) :: plapo
721 REAL,
INTENT(IN) :: plopo
722 REAL,
INTENT(IN) :: pcodil
723 REAL,
DIMENSION(:),
INTENT(IN) :: plat
724 REAL,
DIMENSION(:),
INTENT(IN) :: plon
726 REAL,
DIMENSION(SIZE(PLAT)),
INTENT(OUT):: pmap
732 TYPE(lola),
DIMENSION(SIZE(PLAT)) :: tzptci
736 REAL(KIND=JPRB) :: zhook_handle
742 IF (lhook) CALL dr_hook(
'MODE_GRIDTYPE_GAUSS:MAP_FACTOR_GAUSS',0,zhook_handle)
746 tzptci(:)%LON =
angle_domain(plon(:),dom=
'0+',unit=
'D') * zdr
747 tzptci(:)%LAT = plat(:) * zdr
748 tzpole%LON =
angle_domain(plopo,dom=
'0+',unit=
'D') * zdr
749 tzpole%LAT = plapo * zdr
756 pmap(:) =
map_fac(tzpole,pcodil,tzptci)
757 IF (lhook) CALL dr_hook(
'MODE_GRIDTYPE_GAUSS:MAP_FACTOR_GAUSS',1,zhook_handle)
836 INTEGER,
INTENT(IN) :: kn
837 REAL,
INTENT(OUT) :: pl(kn)
838 REAL,
INTENT(OUT) :: pdl(kn)
839 REAL,
INTENT(OUT) :: pw(kn)
843 REAL,
DIMENSION(0:KN,0:KN) :: zfn
844 REAL,
DIMENSION(0:KN/2) :: zfnlat
845 REAL,
DIMENSION(KN) :: zreg, zli, zt, zmod, zm, zr
848 REAL :: zpi, z, zra, zeps, zw, zx, zxn
849 REAL :: zdlx, zdlxn, zdlk, zdlldn, zzdlxn, zdlmod
851 INTEGER,
DIMENSION(KN) :: iter
853 INTEGER :: jn, jgl, iodd, ik
854 INTEGER :: ins2, iallow, isym, iflag, itemax, jter
856 REAL(KIND=JPRB) :: zhook_handle
861 IF (lhook) CALL dr_hook(
'MODE_GRIDTYPE_GAUSS:LATITUDES_GAUSS',0,zhook_handle)
875 zfnn = zfnn*sqrt(1.-0.25/(jgl**2))
880 zfn(jn,jn-jgl)=zfn(jn,jn-jgl+2)*float((jgl-1)*(2*jn-jgl+2))/float(jgl*(2*jn-jgl+1))
887 zfnlat(ik)=zfn(kn,jgl)
894 ins2 = kn/2+mod(kn,2)
896 z = (4*jgl-1)*zpi/(4*kn+2)
897 pl(jgl) = z+1.0/(tan(z)*8*(kn**2))
899 zli(jgl) = cos(pl(jgl))
928 IF( iodd==0 ) zdlk=0.5*zfnlat(0)
936 zdlk = zdlk + zfnlat(ik)*cos(jn*zdlx)
938 zdlldn = zdlldn - zfnlat(ik)*jn*sin(jn*zdlx)
942 zdlmod = -zdlk/zdlldn
954 zdlldn = zdlldn - zfnlat(ik)*jn*sin(jn*zdlx)
957 zw = (2*kn+1)/zdlldn**2
964 IF(abs(zmod(jgl)) <= zeps*1000.) iflag = 1
975 pl(jgl) = cos(pl(jgl))
976 pdl(jgl) = cos(pdl(jgl))
982 pdl(isym) = -pdl(jgl)
993 zacos = acos(pl(jgl))
994 zm(jgl) = (zacos-acos(zli(jgl)))*zra
995 zr(jgl) = (zacos-acos(zreg(jgl)))*zra
996 zt(jgl) = zacos*180./zpi
1001 IF(iter(jgl) > iallow)
THEN
1002 WRITE(*,fmt=
'('' CONVERGENCE FAILED IN MODE_GRIDTYPE_GAUSS:LATITUDES_GAUSS '')')
1003 WRITE(*,fmt=
'('' ALLOWED : '',I4,''&
1005 &I4)')iallow,iter(jgl)
1006 CALL
abor1_sfx(
' FAILURE IN MODE_GRIDTYPE_GAUSS:LATITUDES_GAUSS ')
1021 IF (lhook) CALL dr_hook(
'MODE_GRIDTYPE_GAUSS:LATITUDES_GAUSS',1,zhook_handle)
1028 plat_xy,plat,plon,pmesh_size)
1052 INTEGER,
INTENT(IN) :: kl
1053 INTEGER,
INTENT(IN) :: knlati
1054 INTEGER,
DIMENSION(KNLATI),
INTENT(IN) :: knlopa
1055 REAL,
INTENT(IN) :: plapo
1056 REAL,
INTENT(IN) :: plopo
1057 REAL,
INTENT(IN) :: pcodil
1058 REAL,
DIMENSION(KL),
INTENT(IN) :: plat_xy
1059 REAL,
DIMENSION(KL),
INTENT(IN) :: plat
1060 REAL,
DIMENSION(KL),
INTENT(IN) :: plon
1061 REAL,
DIMENSION(KL),
INTENT(OUT):: pmesh_size
1063 INTEGER,
DIMENSION(:),
ALLOCATABLE :: ixx
1064 INTEGER,
DIMENSION(:),
ALLOCATABLE :: iyy
1065 REAL,
DIMENSION(:),
ALLOCATABLE :: zdlat
1066 REAL,
DIMENSION(:),
ALLOCATABLE :: plat_xy_c
1067 REAL,
DIMENSION(:),
ALLOCATABLE :: zxx
1068 REAL,
DIMENSION(:),
ALLOCATABLE :: zyy
1069 REAL,
DIMENSION(:),
ALLOCATABLE :: zmap
1073 REAL(KIND=JPRB) :: zhook_handle
1077 IF (lhook) CALL dr_hook(
'MODE_GRIDTYPE_GAUSS:MESH_SIZE_GAUSS',0,zhook_handle)
1081 ALLOCATE(plat_xy_c(knlati))
1082 ALLOCATE(zdlat(knlati))
1091 DO jltot = 1,knlopa(jl)
1100 zxx(jl) = 2.*xpi*xradius*cos(plat_xy(jl)*xpi/180.)/float(ixx(jl))
1108 plat_xy_c(jl)=plat_xy(il)
1112 zdlat(1)=90.-plat_xy_c(1)+((plat_xy_c(1)-plat_xy_c(2))/2.)
1114 zdlat(jl)=((plat_xy_c(jl-1)-plat_xy_c(jl))/2.)+((plat_xy_c(jl)-plat_xy_c(jl+1))/2.)
1116 zdlat(knlati)=((plat_xy_c(knlati-1)-plat_xy_c(knlati))/2.)+plat_xy_c(knlati)+90.
1117 zdlat(:)=zdlat(:)*xpi*xradius/180.
1120 zyy(jl)=zdlat(iyy(jl))
1128 pmesh_size(:) = zxx(:) * zyy(:) * zmap(:)**2
1133 DEALLOCATE(plat_xy_c)
1137 IF (lhook) CALL dr_hook(
'MODE_GRIDTYPE_GAUSS:MESH_SIZE_GAUSS',1,zhook_handle)
subroutine put_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_gauss(PGRID_PAR, KNLATI, PLAPO, PLOPO, PCODIL, KNLOPA, KL, PLAT, PLON, PLAT_XY, PLON_XY, PMESH_SIZE, PLONINF, PLATINF, PLONSUP, PLATSUP)
subroutine gauss_grid_limits(KNLATI, KNLOPA, PXINF, PXSUP, PYINF, PYSUP)
subroutine abor1_sfx(YTEXT)
subroutine mesh_size_gauss(KL, KNLATI, KNLOPA, PLAPO, PLOPO, PCODIL, PLAT_XY, PLAT, PLON, PMESH_SIZE)
subroutine latlon_gauss(PLON_XY, PLAT_XY, KL, PLOPO, PLAPO, PCODIL, PLON, PLAT)
subroutine xy_gauss(PCODIL, KSIZE, PNODATA, PVALUE, PLAT_XY, PLON_XY)
subroutine latitudes_gauss(KN, PL, PDL, PW)
subroutine map_factor_gauss(PLAPO, PLOPO, PCODIL, PLAT, PLON, PMAP)
subroutine comp_gridtype_gauss(KNLATI, KNLOPA, KL, KTYP, PLAT_XY, PLON_XY)