grid_type_gg.F90 142 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744
  1. module grid_type_gg
  2. implicit none
  3. ! --- in/out --------------------------------
  4. private
  5. public :: TggGridInfo
  6. public :: Init, Done
  7. public :: Check
  8. public :: GetLons
  9. public :: Longitudes, Latitudes
  10. public :: AreaOper
  11. !public :: Eval
  12. public :: gg_Eval_lat_lon
  13. public :: Divergence, Nabla
  14. ! --- const ----------------------------------
  15. character(len=*), parameter :: mname = 'grid_type_gg'
  16. ! --- types ---------------------------------
  17. ! *** location, size, etc
  18. type TggGridInfo
  19. ! * resolution
  20. integer :: N
  21. logical :: reduced
  22. ! * Gaussian latitudes
  23. integer :: nlat
  24. real, pointer :: lat(:)
  25. real, pointer :: lat_deg(:)
  26. logical, pointer :: latflag(:)
  27. ! * longitudinal points for a Gaussian latitude
  28. integer, pointer :: nlon(:)
  29. integer :: nlon_reg
  30. real, pointer :: dlon(:)
  31. real, pointer :: dlon_deg(:)
  32. ! * total number of grid points
  33. integer :: np
  34. ! * start and end indices for each row
  35. integer, pointer :: i1(:)
  36. integer, pointer :: im(:)
  37. ! ! * row number for each cell
  38. ! integer, pointer :: j(:)
  39. ! * lat of cell boundaries for a row
  40. real, pointer :: blat(:) ! rad
  41. real, pointer :: blat_deg(:) ! deg
  42. real, pointer :: dlat(:)
  43. real, pointer :: dlat_deg(:)
  44. ! ! * lon of cell and center for each cell
  45. ! real, pointer :: clon(:), blon(:)
  46. ! * area of cell in a row
  47. real, pointer :: area(:) ! rad^2
  48. real, pointer :: area_m2(:) ! m^2
  49. end type TggGridInfo
  50. ! --- interfaces ----------------------------
  51. interface Init
  52. module procedure ggi_Init
  53. end interface
  54. interface Done
  55. module procedure ggi_Done
  56. end interface
  57. interface Longitudes
  58. module procedure gg_Longitudes
  59. end interface
  60. interface Latitudes
  61. module procedure gg_Latitudes
  62. end interface
  63. interface Check
  64. module procedure gg_Check
  65. end interface
  66. interface AreaOper
  67. module procedure gg_AreaOper
  68. end interface
  69. !interface Eval
  70. ! module procedure gg_Eval_lat_lon
  71. !end interface
  72. interface Divergence
  73. module procedure Divergence_gg
  74. end interface
  75. interface Nabla
  76. module procedure Nabla_gg
  77. end interface
  78. contains
  79. !--------------------------------------------------------------------------
  80. ! TM5 !
  81. !--------------------------------------------------------------------------
  82. !BOP
  83. !
  84. ! !IROUTINE: ggi_Init
  85. !
  86. ! !DESCRIPTION: Initialize a Gaussian Grid Info type
  87. !\\
  88. !\\
  89. ! !INTERFACE:
  90. !
  91. subroutine ggi_Init( ggi, N, reduced, status )
  92. !
  93. ! !USES:
  94. !
  95. use Grid_Tools, only : ll_area
  96. use Binas, only : deg2rad, ae
  97. !
  98. ! !OUTPUT PARAMETERS:
  99. !
  100. type(TggGridInfo), intent(out) :: ggi ! Gaussian Grid Info type
  101. integer, intent(out) :: status ! return code
  102. !
  103. ! !INPUT PARAMETERS:
  104. !
  105. integer, intent(in) :: N ! Resolution
  106. logical, intent(in) :: reduced
  107. !
  108. ! !REVISION HISTORY:
  109. ! 16 Nov 2010 - P. Le Sager - added case of resolution=400
  110. !
  111. !EOP
  112. !------------------------------------------------------------------------
  113. !BOC
  114. ! --- const ----------------------------------
  115. character(len=*), parameter :: rname = mname//'/ggi_Init'
  116. integer :: j
  117. ! --- begin ---------------------------------
  118. ! * resolution
  119. ggi%N = N
  120. ggi%reduced = reduced
  121. ! * Gaussian latitudes
  122. ggi%nlat = 2*ggi%N
  123. allocate( ggi%lat(ggi%nlat) )
  124. allocate( ggi%lat_deg(ggi%nlat) )
  125. allocate( ggi%latflag(ggi%nlat) )
  126. allocate( ggi%nlon(ggi%nlat) )
  127. allocate( ggi%dlon(ggi%nlat) )
  128. allocate( ggi%dlon_deg(ggi%nlat) )
  129. ! set Gaussian grid at northern hemisphere:
  130. select case ( ggi%N )
  131. case ( 1 )
  132. ! latitude reduced regular latitude
  133. ! number points points
  134. ! ------- ------- ------- --------
  135. call SetGLat( ggi, 1 , 1 , 1, 30.0 )
  136. case ( 16 )
  137. ! latitude reduced regular latitude
  138. ! number points points
  139. ! ------- ------- ------- --------
  140. call SetGLat( ggi, 1 , 64 , 64 , 85.76059 )
  141. call SetGLat( ggi, 2 , 64 , 64 , 80.26878 )
  142. call SetGLat( ggi, 3 , 64 , 64 , 74.74454 )
  143. call SetGLat( ggi, 4 , 64 , 64 , 69.21297 )
  144. call SetGLat( ggi, 5 , 64 , 64 , 63.67863 )
  145. call SetGLat( ggi, 6 , 64 , 64 , 58.14296 )
  146. call SetGLat( ggi, 7 , 64 , 64 , 52.60653 )
  147. call SetGLat( ggi, 8 , 64 , 64 , 47.06964 )
  148. call SetGLat( ggi, 9 , 64 , 64 , 41.53246 )
  149. call SetGLat( ggi, 10 , 64 , 64 , 35.99508 )
  150. call SetGLat( ggi, 11 , 64 , 64 , 30.45755 )
  151. call SetGLat( ggi, 12 , 64 , 64 , 24.91993 )
  152. call SetGLat( ggi, 13 , 64 , 64 , 19.38223 )
  153. call SetGLat( ggi, 14 , 64 , 64 , 13.84448 )
  154. call SetGLat( ggi, 15 , 64 , 64 , 8.306703 )
  155. call SetGLat( ggi, 16 , 64 , 64 , 2.768903 )
  156. case ( 24 )
  157. ! latitude reduced regular latitude
  158. ! number points points
  159. ! ------- ------- ------- --------
  160. call SetGLat( ggi, 1 , 96 , 96 , 87.1591 )
  161. call SetGLat( ggi, 2 , 96 , 96 , 83.47894 )
  162. call SetGLat( ggi, 3 , 96 , 96 , 79.77705 )
  163. call SetGLat( ggi, 4 , 96 , 96 , 76.07024 )
  164. call SetGLat( ggi, 5 , 96 , 96 , 72.36158 )
  165. call SetGLat( ggi, 6 , 96 , 96 , 68.65202 )
  166. call SetGLat( ggi, 7 , 96 , 96 , 64.94195 )
  167. call SetGLat( ggi, 8 , 96 , 96 , 61.23158 )
  168. call SetGLat( ggi, 9 , 96 , 96 , 57.52099 )
  169. call SetGLat( ggi, 10 , 96 , 96 , 53.81027 )
  170. call SetGLat( ggi, 11 , 96 , 96 , 50.09945 )
  171. call SetGLat( ggi, 12 , 96 , 96 , 46.38856 )
  172. call SetGLat( ggi, 13 , 96 , 96 , 42.6776 )
  173. call SetGLat( ggi, 14 , 96 , 96 , 38.96661 )
  174. call SetGLat( ggi, 15 , 96 , 96 , 35.25558 )
  175. call SetGLat( ggi, 16 , 96 , 96 , 31.54452 )
  176. call SetGLat( ggi, 17 , 96 , 96 , 27.83344 )
  177. call SetGLat( ggi, 18 , 96 , 96 , 24.12235 )
  178. call SetGLat( ggi, 19 , 96 , 96 , 20.41124 )
  179. call SetGLat( ggi, 20 , 96 , 96 , 16.70012 )
  180. call SetGLat( ggi, 21 , 96 , 96 , 12.98899 )
  181. call SetGLat( ggi, 22 , 96 , 96 , 9.277853 )
  182. call SetGLat( ggi, 23 , 96 , 96 , 5.566714 )
  183. call SetGLat( ggi, 24 , 96 , 96 , 1.855572 )
  184. case ( 47 )
  185. ! latitude reduced regular latitude
  186. ! number points points
  187. ! ------- ------- ------- --------
  188. call SetGLat( ggi, 1 , 192, 192, 88.5420 )
  189. call SetGLat( ggi, 2 , 192, 192, 86.6531 )
  190. call SetGLat( ggi, 3 , 192, 192, 84.7532 )
  191. call SetGLat( ggi, 4 , 192, 192, 82.8508 )
  192. call SetGLat( ggi, 5 , 192, 192, 80.9473 )
  193. call SetGLat( ggi, 6 , 192, 192, 79.0435 )
  194. call SetGLat( ggi, 7 , 192, 192, 77.1394 )
  195. call SetGLat( ggi, 8 , 192, 192, 75.2351 )
  196. call SetGLat( ggi, 9 , 192, 192, 73.3307 )
  197. call SetGLat( ggi, 10 , 192, 192, 71.4262 )
  198. call SetGLat( ggi, 11 , 192, 192, 69.5217 )
  199. call SetGLat( ggi, 12 , 192, 192, 67.6171 )
  200. call SetGLat( ggi, 13 , 192, 192, 65.7125 )
  201. call SetGLat( ggi, 14 , 192, 192, 63.8079 )
  202. call SetGLat( ggi, 15 , 192, 192, 61.9033 )
  203. call SetGLat( ggi, 16 , 192, 192, 59.9986 )
  204. call SetGLat( ggi, 17 , 192, 192, 58.0939 )
  205. call SetGLat( ggi, 18 , 192, 192, 56.1893 )
  206. call SetGLat( ggi, 19 , 192, 192, 54.2846 )
  207. call SetGLat( ggi, 20 , 192, 192, 52.3799 )
  208. call SetGLat( ggi, 21 , 192, 192, 50.4752 )
  209. call SetGLat( ggi, 22 , 192, 192, 48.5705 )
  210. call SetGLat( ggi, 23 , 192, 192, 46.6658 )
  211. call SetGLat( ggi, 24 , 192, 192, 44.7611 )
  212. call SetGLat( ggi, 25 , 192, 192, 42.8564 )
  213. call SetGLat( ggi, 26 , 192, 192, 40.9517 )
  214. call SetGLat( ggi, 27 , 192, 192, 39.0470 )
  215. call SetGLat( ggi, 28 , 192, 192, 37.1422 )
  216. call SetGLat( ggi, 29 , 192, 192, 35.2375 )
  217. call SetGLat( ggi, 30 , 192, 192, 33.3328 )
  218. call SetGLat( ggi, 31 , 192, 192, 31.4281 )
  219. call SetGLat( ggi, 32 , 192, 192, 29.5234 )
  220. call SetGLat( ggi, 33 , 192, 192, 27.6186 )
  221. call SetGLat( ggi, 34 , 192, 192, 25.7139 )
  222. call SetGLat( ggi, 35 , 192, 192, 23.8092 )
  223. call SetGLat( ggi, 36 , 192, 192, 21.9044 )
  224. call SetGLat( ggi, 37 , 192, 192, 19.9997 )
  225. call SetGLat( ggi, 38 , 192, 192, 18.0950 )
  226. call SetGLat( ggi, 39 , 192, 192, 16.1902 )
  227. call SetGLat( ggi, 40 , 192, 192, 14.2855 )
  228. call SetGLat( ggi, 41 , 192, 192, 12.3808 )
  229. call SetGLat( ggi, 42 , 192, 192, 10.4760 )
  230. call SetGLat( ggi, 43 , 192, 192, 8.57131 )
  231. call SetGLat( ggi, 44 , 192, 192, 6.66657 )
  232. call SetGLat( ggi, 45 , 192, 192, 4.76184 )
  233. call SetGLat( ggi, 46 , 192, 192, 2.85710 )
  234. call SetGLat( ggi, 47 , 192, 192, 0.952368 )
  235. case ( 80 )
  236. ! latitude reduced regular latitude
  237. ! number points points
  238. ! ------- ------- ------- --------
  239. call SetGLat( ggi, 1 , 18 , 320, 89.14152 )
  240. call SetGLat( ggi, 2 , 25 , 320, 88.02943 )
  241. call SetGLat( ggi, 3 , 36 , 320, 86.91077 )
  242. call SetGLat( ggi, 4 , 40 , 320, 85.79063 )
  243. call SetGLat( ggi, 5 , 45 , 320, 84.66992 )
  244. call SetGLat( ggi, 6 , 54 , 320, 83.54895 )
  245. call SetGLat( ggi, 7 , 60 , 320, 82.42782 )
  246. call SetGLat( ggi, 8 , 64 , 320, 81.30659 )
  247. call SetGLat( ggi, 9 , 72 , 320, 80.18531 )
  248. call SetGLat( ggi, 10 , 72 , 320, 79.06398 )
  249. call SetGLat( ggi, 11 , 80 , 320, 77.94262 )
  250. call SetGLat( ggi, 12 , 90 , 320, 76.82124 )
  251. call SetGLat( ggi, 13 , 96 , 320, 75.69984 )
  252. call SetGLat( ggi, 14 , 100 , 320, 74.57843 )
  253. call SetGLat( ggi, 15 , 108 , 320, 73.45701 )
  254. call SetGLat( ggi, 16 , 120 , 320, 72.33558 )
  255. call SetGLat( ggi, 17 , 120 , 320, 71.21414 )
  256. call SetGLat( ggi, 18 , 128 , 320, 70.09269 )
  257. call SetGLat( ggi, 19 , 135 , 320, 68.97124 )
  258. call SetGLat( ggi, 20 , 144 , 320, 67.84978 )
  259. call SetGLat( ggi, 21 , 144 , 320, 66.72833 )
  260. call SetGLat( ggi, 22 , 150 , 320, 65.60686 )
  261. call SetGLat( ggi, 23 , 160 , 320, 64.48540 )
  262. call SetGLat( ggi, 24 , 160 , 320, 63.36393 )
  263. call SetGLat( ggi, 25 , 180 , 320, 62.24246 )
  264. call SetGLat( ggi, 26 , 180 , 320, 61.12099 )
  265. call SetGLat( ggi, 27 , 180 , 320, 59.99952 )
  266. call SetGLat( ggi, 28 , 192 , 320, 58.87804 )
  267. call SetGLat( ggi, 29 , 192 , 320, 57.75657 )
  268. call SetGLat( ggi, 30 , 200 , 320, 56.63509 )
  269. call SetGLat( ggi, 31 , 200 , 320, 55.51361 )
  270. call SetGLat( ggi, 32 , 216 , 320, 54.39214 )
  271. call SetGLat( ggi, 33 , 216 , 320, 53.27066 )
  272. call SetGLat( ggi, 34 , 216 , 320, 52.14917 )
  273. call SetGLat( ggi, 35 , 225 , 320, 51.02769 )
  274. call SetGLat( ggi, 36 , 225 , 320, 49.90621 )
  275. call SetGLat( ggi, 37 , 240 , 320, 48.78473 )
  276. call SetGLat( ggi, 38 , 240 , 320, 47.66325 )
  277. call SetGLat( ggi, 39 , 240 , 320, 46.54176 )
  278. call SetGLat( ggi, 40 , 256 , 320, 45.42028 )
  279. call SetGLat( ggi, 41 , 256 , 320, 44.29879 )
  280. call SetGLat( ggi, 42 , 256 , 320, 43.17731 )
  281. call SetGLat( ggi, 43 , 256 , 320, 42.05582 )
  282. call SetGLat( ggi, 44 , 288 , 320, 40.93434 )
  283. call SetGLat( ggi, 45 , 288 , 320, 39.81285 )
  284. call SetGLat( ggi, 46 , 288 , 320, 38.69137 )
  285. call SetGLat( ggi, 47 , 288 , 320, 37.56988 )
  286. call SetGLat( ggi, 48 , 288 , 320, 36.44839 )
  287. call SetGLat( ggi, 49 , 288 , 320, 35.32691 )
  288. call SetGLat( ggi, 50 , 288 , 320, 34.20542 )
  289. call SetGLat( ggi, 51 , 288 , 320, 33.08393 )
  290. call SetGLat( ggi, 52 , 288 , 320, 31.96244 )
  291. call SetGLat( ggi, 53 , 300 , 320, 30.84096 )
  292. call SetGLat( ggi, 54 , 300 , 320, 29.71947 )
  293. call SetGLat( ggi, 55 , 300 , 320, 28.59798 )
  294. call SetGLat( ggi, 56 , 300 , 320, 27.47649 )
  295. call SetGLat( ggi, 57 , 320 , 320, 26.35500 )
  296. call SetGLat( ggi, 58 , 320 , 320, 25.23351 )
  297. call SetGLat( ggi, 59 , 320 , 320, 24.11203 )
  298. call SetGLat( ggi, 60 , 320 , 320, 22.99054 )
  299. call SetGLat( ggi, 61 , 320 , 320, 21.86905 )
  300. call SetGLat( ggi, 62 , 320 , 320, 20.74756 )
  301. call SetGLat( ggi, 63 , 320 , 320, 19.62607 )
  302. call SetGLat( ggi, 64 , 320 , 320, 18.50458 )
  303. call SetGLat( ggi, 65 , 320 , 320, 17.38309 )
  304. call SetGLat( ggi, 66 , 320 , 320, 16.26160 )
  305. call SetGLat( ggi, 67 , 320 , 320, 15.14011 )
  306. call SetGLat( ggi, 68 , 320 , 320, 14.01862 )
  307. call SetGLat( ggi, 69 , 320 , 320, 12.89713 )
  308. call SetGLat( ggi, 70 , 320 , 320, 11.77564 )
  309. call SetGLat( ggi, 71 , 320 , 320, 10.65415 )
  310. call SetGLat( ggi, 72 , 320 , 320, 9.53266 )
  311. call SetGLat( ggi, 73 , 320 , 320, 8.41117 )
  312. call SetGLat( ggi, 74 , 320 , 320, 7.28968 )
  313. call SetGLat( ggi, 75 , 320 , 320, 6.16819 )
  314. call SetGLat( ggi, 76 , 320 , 320, 5.04670 )
  315. call SetGLat( ggi, 77 , 320 , 320, 3.92521 )
  316. call SetGLat( ggi, 78 , 320 , 320, 2.80372 )
  317. call SetGLat( ggi, 79 , 320 , 320, 1.68223 )
  318. call SetGLat( ggi, 80 , 320 , 320, 0.56074 )
  319. case ( 128 )
  320. ! latitude reduced regular latitude
  321. ! number points points
  322. ! ------- ------- ------- --------
  323. call SetGLat( ggi, 1, 18, 512, 89.46282 )
  324. call SetGLat( ggi, 2, 25, 512, 88.76695 )
  325. call SetGLat( ggi, 3, 36, 512, 88.06697 )
  326. call SetGLat( ggi, 4, 40, 512, 87.36606 )
  327. call SetGLat( ggi, 5, 45, 512, 86.66480 )
  328. call SetGLat( ggi, 6, 50, 512, 85.96337 )
  329. call SetGLat( ggi, 7, 60, 512, 85.26184 )
  330. call SetGLat( ggi, 8, 64, 512, 84.56026 )
  331. call SetGLat( ggi, 9, 72, 512, 83.85863 )
  332. call SetGLat( ggi, 10, 72, 512, 83.15698 )
  333. call SetGLat( ggi, 11, 80, 512, 82.45531 )
  334. call SetGLat( ggi, 12, 90, 512, 81.75363 )
  335. call SetGLat( ggi, 13, 90, 512, 81.05194 )
  336. call SetGLat( ggi, 14, 100, 512, 80.35023 )
  337. call SetGLat( ggi, 15, 108, 512, 79.64852 )
  338. call SetGLat( ggi, 16, 120, 512, 78.94681 )
  339. call SetGLat( ggi, 17, 120, 512, 78.24509 )
  340. call SetGLat( ggi, 18, 125, 512, 77.54336 )
  341. call SetGLat( ggi, 19, 128, 512, 76.84163 )
  342. call SetGLat( ggi, 20, 144, 512, 76.13990 )
  343. call SetGLat( ggi, 21, 144, 512, 75.43817 )
  344. call SetGLat( ggi, 22, 150, 512, 74.73644 )
  345. call SetGLat( ggi, 23, 160, 512, 74.03470 )
  346. call SetGLat( ggi, 24, 160, 512, 73.33296 )
  347. call SetGLat( ggi, 25, 180, 512, 72.63123 )
  348. call SetGLat( ggi, 26, 180, 512, 71.92949 )
  349. call SetGLat( ggi, 27, 180, 512, 71.22774 )
  350. call SetGLat( ggi, 28, 192, 512, 70.52600 )
  351. call SetGLat( ggi, 29, 192, 512, 69.82426 )
  352. call SetGLat( ggi, 30, 200, 512, 69.12252 )
  353. call SetGLat( ggi, 31, 216, 512, 68.42077 )
  354. call SetGLat( ggi, 32, 216, 512, 67.71903 )
  355. call SetGLat( ggi, 33, 216, 512, 67.01728 )
  356. call SetGLat( ggi, 34, 225, 512, 66.31554 )
  357. call SetGLat( ggi, 35, 240, 512, 65.61379 )
  358. call SetGLat( ggi, 36, 240, 512, 64.91204 )
  359. call SetGLat( ggi, 37, 240, 512, 64.21030 )
  360. call SetGLat( ggi, 38, 250, 512, 63.50855 )
  361. call SetGLat( ggi, 39, 250, 512, 62.80680 )
  362. call SetGLat( ggi, 40, 256, 512, 62.10505 )
  363. call SetGLat( ggi, 41, 270, 512, 61.40330 )
  364. call SetGLat( ggi, 42, 270, 512, 60.70156 )
  365. call SetGLat( ggi, 43, 288, 512, 59.99981 )
  366. call SetGLat( ggi, 44, 288, 512, 59.29806 )
  367. call SetGLat( ggi, 45, 288, 512, 58.59631 )
  368. call SetGLat( ggi, 46, 300, 512, 57.89456 )
  369. call SetGLat( ggi, 47, 300, 512, 57.19281 )
  370. call SetGLat( ggi, 48, 320, 512, 56.49106 )
  371. call SetGLat( ggi, 49, 320, 512, 55.78931 )
  372. call SetGLat( ggi, 50, 320, 512, 55.08756 )
  373. call SetGLat( ggi, 51, 320, 512, 54.38581 )
  374. call SetGLat( ggi, 52, 324, 512, 53.68406 )
  375. call SetGLat( ggi, 53, 360, 512, 52.98231 )
  376. call SetGLat( ggi, 54, 360, 512, 52.28056 )
  377. call SetGLat( ggi, 55, 360, 512, 51.57881 )
  378. call SetGLat( ggi, 56, 360, 512, 50.87705 )
  379. call SetGLat( ggi, 57, 360, 512, 50.17530 )
  380. call SetGLat( ggi, 58, 360, 512, 49.47355 )
  381. call SetGLat( ggi, 59, 360, 512, 48.77180 )
  382. call SetGLat( ggi, 60, 375, 512, 48.07005 )
  383. call SetGLat( ggi, 61, 375, 512, 47.36830 )
  384. call SetGLat( ggi, 62, 375, 512, 46.66655 )
  385. call SetGLat( ggi, 63, 375, 512, 45.96479 )
  386. call SetGLat( ggi, 64, 384, 512, 45.26304 )
  387. call SetGLat( ggi, 65, 384, 512, 44.56129 )
  388. call SetGLat( ggi, 66, 400, 512, 43.85954 )
  389. call SetGLat( ggi, 67, 400, 512, 43.15779 )
  390. call SetGLat( ggi, 68, 400, 512, 42.45604 )
  391. call SetGLat( ggi, 69, 400, 512, 41.75428 )
  392. call SetGLat( ggi, 70, 405, 512, 41.05253 )
  393. call SetGLat( ggi, 71, 432, 512, 40.35078 )
  394. call SetGLat( ggi, 72, 432, 512, 39.64903 )
  395. call SetGLat( ggi, 73, 432, 512, 38.94728 )
  396. call SetGLat( ggi, 74, 432, 512, 38.24552 )
  397. call SetGLat( ggi, 75, 432, 512, 37.54377 )
  398. call SetGLat( ggi, 76, 432, 512, 36.84202 )
  399. call SetGLat( ggi, 77, 432, 512, 36.14027 )
  400. call SetGLat( ggi, 78, 450, 512, 35.43851 )
  401. call SetGLat( ggi, 79, 450, 512, 34.73676 )
  402. call SetGLat( ggi, 80, 450, 512, 34.03501 )
  403. call SetGLat( ggi, 81, 450, 512, 33.33326 )
  404. call SetGLat( ggi, 82, 450, 512, 32.63150 )
  405. call SetGLat( ggi, 83, 480, 512, 31.92975 )
  406. call SetGLat( ggi, 84, 480, 512, 31.22800 )
  407. call SetGLat( ggi, 85, 480, 512, 30.52625 )
  408. call SetGLat( ggi, 86, 480, 512, 29.82449 )
  409. call SetGLat( ggi, 87, 480, 512, 29.12274 )
  410. call SetGLat( ggi, 88, 480, 512, 28.42099 )
  411. call SetGLat( ggi, 89, 480, 512, 27.71924 )
  412. call SetGLat( ggi, 90, 480, 512, 27.01748 )
  413. call SetGLat( ggi, 91, 480, 512, 26.31573 )
  414. call SetGLat( ggi, 92, 480, 512, 25.61398 )
  415. call SetGLat( ggi, 93, 486, 512, 24.91223 )
  416. call SetGLat( ggi, 94, 486, 512, 24.21047 )
  417. call SetGLat( ggi, 95, 486, 512, 23.50872 )
  418. call SetGLat( ggi, 96, 500, 512, 22.80697 )
  419. call SetGLat( ggi, 97, 500, 512, 22.10521 )
  420. call SetGLat( ggi, 98, 500, 512, 21.40346 )
  421. call SetGLat( ggi, 99, 500, 512, 20.70171 )
  422. call SetGLat( ggi, 100, 500, 512, 19.99996 )
  423. call SetGLat( ggi, 101, 500, 512, 19.29820 )
  424. call SetGLat( ggi, 102, 500, 512, 18.59645 )
  425. call SetGLat( ggi, 103, 512, 512, 17.89470 )
  426. call SetGLat( ggi, 104, 512, 512, 17.19294 )
  427. call SetGLat( ggi, 105, 512, 512, 16.49119 )
  428. call SetGLat( ggi, 106, 512, 512, 15.78944 )
  429. call SetGLat( ggi, 107, 512, 512, 15.08768 )
  430. call SetGLat( ggi, 108, 512, 512, 14.38593 )
  431. call SetGLat( ggi, 109, 512, 512, 13.68418 )
  432. call SetGLat( ggi, 110, 512, 512, 12.98243 )
  433. call SetGLat( ggi, 111, 512, 512, 12.28067 )
  434. call SetGLat( ggi, 112, 512, 512, 11.57892 )
  435. call SetGLat( ggi, 113, 512, 512, 10.87717 )
  436. call SetGLat( ggi, 114, 512, 512, 10.17541 )
  437. call SetGLat( ggi, 115, 512, 512, 9.47366 )
  438. call SetGLat( ggi, 116, 512, 512, 8.77191 )
  439. call SetGLat( ggi, 117, 512, 512, 8.07016 )
  440. call SetGLat( ggi, 118, 512, 512, 7.36840 )
  441. call SetGLat( ggi, 119, 512, 512, 6.66665 )
  442. call SetGLat( ggi, 120, 512, 512, 5.96490 )
  443. call SetGLat( ggi, 121, 512, 512, 5.26314 )
  444. call SetGLat( ggi, 122, 512, 512, 4.56139 )
  445. call SetGLat( ggi, 123, 512, 512, 3.85964 )
  446. call SetGLat( ggi, 124, 512, 512, 3.15788 )
  447. call SetGLat( ggi, 125, 512, 512, 2.45613 )
  448. call SetGLat( ggi, 126, 512, 512, 1.75438 )
  449. call SetGLat( ggi, 127, 512, 512, 1.05262 )
  450. call SetGLat( ggi, 128, 512, 512, 0.35087 )
  451. case ( 192 )
  452. !
  453. ! NCEP GFS grib files
  454. ! N192
  455. ! Source: Doni Bundy (NCAR)
  456. !
  457. ! latitude reduced regular latitude
  458. ! number points points
  459. ! ------- ------- ------- --------
  460. call SetGLat( ggi, 1, 768, 768, 89.46281 )
  461. call SetGLat( ggi, 2, 768, 768, 89.17743 )
  462. call SetGLat( ggi, 3, 768, 768, 88.71048 )
  463. call SetGLat( ggi, 4, 768, 768, 88.2429 )
  464. call SetGLat( ggi, 5, 768, 768, 87.77509 )
  465. call SetGLat( ggi, 6, 768, 768, 87.30717 )
  466. call SetGLat( ggi, 7, 768, 768, 86.83917 )
  467. call SetGLat( ggi, 8, 768, 768, 86.37115 )
  468. call SetGLat( ggi, 9, 768, 768, 85.9031 )
  469. call SetGLat( ggi, 10, 768, 768, 85.43503 )
  470. call SetGLat( ggi, 11, 768, 768, 84.96694 )
  471. call SetGLat( ggi, 12, 768, 768, 84.49885 )
  472. call SetGLat( ggi, 13, 768, 768, 84.03075 )
  473. call SetGLat( ggi, 14, 768, 768, 83.56264 )
  474. call SetGLat( ggi, 15, 768, 768, 83.09453 )
  475. call SetGLat( ggi, 16, 768, 768, 82.62641 )
  476. call SetGLat( ggi, 17, 768, 768, 82.15829 )
  477. call SetGLat( ggi, 18, 768, 768, 81.69018 )
  478. call SetGLat( ggi, 19, 768, 768, 81.22205 )
  479. call SetGLat( ggi, 20, 768, 768, 80.75393 )
  480. call SetGLat( ggi, 21, 768, 768, 80.2858 )
  481. call SetGLat( ggi, 22, 768, 768, 79.81767 )
  482. call SetGLat( ggi, 23, 768, 768, 79.34955 )
  483. call SetGLat( ggi, 24, 768, 768, 78.88142 )
  484. call SetGLat( ggi, 25, 768, 768, 78.41328 )
  485. call SetGLat( ggi, 26, 768, 768, 77.94516 )
  486. call SetGLat( ggi, 27, 768, 768, 77.47703 )
  487. call SetGLat( ggi, 28, 768, 768, 77.0089 )
  488. call SetGLat( ggi, 29, 768, 768, 76.54076 )
  489. call SetGLat( ggi, 30, 768, 768, 76.07262 )
  490. call SetGLat( ggi, 31, 768, 768, 75.60449 )
  491. call SetGLat( ggi, 32, 768, 768, 75.13636 )
  492. call SetGLat( ggi, 33, 768, 768, 74.66822 )
  493. call SetGLat( ggi, 34, 768, 768, 74.20009 )
  494. call SetGLat( ggi, 35, 768, 768, 73.73196 )
  495. call SetGLat( ggi, 36, 768, 768, 73.26382 )
  496. call SetGLat( ggi, 37, 768, 768, 72.79568 )
  497. call SetGLat( ggi, 38, 768, 768, 72.32755 )
  498. call SetGLat( ggi, 39, 768, 768, 71.85941 )
  499. call SetGLat( ggi, 40, 768, 768, 71.39127 )
  500. call SetGLat( ggi, 41, 768, 768, 70.92313 )
  501. call SetGLat( ggi, 42, 768, 768, 70.455 )
  502. call SetGLat( ggi, 43, 768, 768, 69.98686 )
  503. call SetGLat( ggi, 44, 768, 768, 69.51872 )
  504. call SetGLat( ggi, 45, 768, 768, 69.05059 )
  505. call SetGLat( ggi, 46, 768, 768, 68.58245 )
  506. call SetGLat( ggi, 47, 768, 768, 68.11431 )
  507. call SetGLat( ggi, 48, 768, 768, 67.64618 )
  508. call SetGLat( ggi, 49, 768, 768, 67.17804 )
  509. call SetGLat( ggi, 50, 768, 768, 66.7099 )
  510. call SetGLat( ggi, 51, 768, 768, 66.24176 )
  511. call SetGLat( ggi, 52, 768, 768, 65.77363 )
  512. call SetGLat( ggi, 53, 768, 768, 65.30549 )
  513. call SetGLat( ggi, 54, 768, 768, 64.83735 )
  514. call SetGLat( ggi, 55, 768, 768, 64.36921 )
  515. call SetGLat( ggi, 56, 768, 768, 63.90107 )
  516. call SetGLat( ggi, 57, 768, 768, 63.43293 )
  517. call SetGLat( ggi, 58, 768, 768, 62.96479 )
  518. call SetGLat( ggi, 59, 768, 768, 62.49665 )
  519. call SetGLat( ggi, 60, 768, 768, 62.02852 )
  520. call SetGLat( ggi, 61, 768, 768, 61.56038 )
  521. call SetGLat( ggi, 62, 768, 768, 61.09224 )
  522. call SetGLat( ggi, 63, 768, 768, 60.6241 )
  523. call SetGLat( ggi, 64, 768, 768, 60.15596 )
  524. call SetGLat( ggi, 65, 768, 768, 59.68782 )
  525. call SetGLat( ggi, 66, 768, 768, 59.21968 )
  526. call SetGLat( ggi, 67, 768, 768, 58.75154 )
  527. call SetGLat( ggi, 68, 768, 768, 58.28341 )
  528. call SetGLat( ggi, 69, 768, 768, 57.81527 )
  529. call SetGLat( ggi, 70, 768, 768, 57.34713 )
  530. call SetGLat( ggi, 71, 768, 768, 56.87899 )
  531. call SetGLat( ggi, 72, 768, 768, 56.41085 )
  532. call SetGLat( ggi, 73, 768, 768, 55.94271 )
  533. call SetGLat( ggi, 74, 768, 768, 55.47457 )
  534. call SetGLat( ggi, 75, 768, 768, 55.00643 )
  535. call SetGLat( ggi, 76, 768, 768, 54.53829 )
  536. call SetGLat( ggi, 77, 768, 768, 54.07016 )
  537. call SetGLat( ggi, 78, 768, 768, 53.60202 )
  538. call SetGLat( ggi, 79, 768, 768, 53.13388 )
  539. call SetGLat( ggi, 80, 768, 768, 52.66574 )
  540. call SetGLat( ggi, 81, 768, 768, 52.1976 )
  541. call SetGLat( ggi, 82, 768, 768, 51.72946 )
  542. call SetGLat( ggi, 83, 768, 768, 51.26132 )
  543. call SetGLat( ggi, 84, 768, 768, 50.79318 )
  544. call SetGLat( ggi, 85, 768, 768, 50.32504 )
  545. call SetGLat( ggi, 86, 768, 768, 49.8569 )
  546. call SetGLat( ggi, 87, 768, 768, 49.38876 )
  547. call SetGLat( ggi, 88, 768, 768, 48.92062 )
  548. call SetGLat( ggi, 89, 768, 768, 48.45248 )
  549. call SetGLat( ggi, 90, 768, 768, 47.98434 )
  550. call SetGLat( ggi, 91, 768, 768, 47.5162 )
  551. call SetGLat( ggi, 92, 768, 768, 47.04806 )
  552. call SetGLat( ggi, 93, 768, 768, 46.57992 )
  553. call SetGLat( ggi, 94, 768, 768, 46.11178 )
  554. call SetGLat( ggi, 95, 768, 768, 45.64364 )
  555. call SetGLat( ggi, 96, 768, 768, 45.1755 )
  556. call SetGLat( ggi, 97, 768, 768, 44.70736 )
  557. call SetGLat( ggi, 98, 768, 768, 44.23922 )
  558. call SetGLat( ggi, 99, 768, 768, 43.77108 )
  559. call SetGLat( ggi, 100, 768, 768, 43.30294 )
  560. call SetGLat( ggi, 101, 768, 768, 42.8348 )
  561. call SetGLat( ggi, 102, 768, 768, 42.36666 )
  562. call SetGLat( ggi, 103, 768, 768, 41.89853 )
  563. call SetGLat( ggi, 104, 768, 768, 41.43039 )
  564. call SetGLat( ggi, 105, 768, 768, 40.96225 )
  565. call SetGLat( ggi, 106, 768, 768, 40.49411 )
  566. call SetGLat( ggi, 107, 768, 768, 40.02597 )
  567. call SetGLat( ggi, 108, 768, 768, 39.55783 )
  568. call SetGLat( ggi, 109, 768, 768, 39.08969 )
  569. call SetGLat( ggi, 110, 768, 768, 38.62155 )
  570. call SetGLat( ggi, 111, 768, 768, 38.15341 )
  571. call SetGLat( ggi, 112, 768, 768, 37.68527 )
  572. call SetGLat( ggi, 113, 768, 768, 37.21713 )
  573. call SetGLat( ggi, 114, 768, 768, 36.74899 )
  574. call SetGLat( ggi, 115, 768, 768, 36.28085 )
  575. call SetGLat( ggi, 116, 768, 768, 35.81271 )
  576. call SetGLat( ggi, 117, 768, 768, 35.34457 )
  577. call SetGLat( ggi, 118, 768, 768, 34.87643 )
  578. call SetGLat( ggi, 119, 768, 768, 34.40829 )
  579. call SetGLat( ggi, 120, 768, 768, 33.94015 )
  580. call SetGLat( ggi, 121, 768, 768, 33.47201 )
  581. call SetGLat( ggi, 122, 768, 768, 33.00387 )
  582. call SetGLat( ggi, 123, 768, 768, 32.53573 )
  583. call SetGLat( ggi, 124, 768, 768, 32.06759 )
  584. call SetGLat( ggi, 125, 768, 768, 31.59945 )
  585. call SetGLat( ggi, 126, 768, 768, 31.13131 )
  586. call SetGLat( ggi, 127, 768, 768, 30.66317 )
  587. call SetGLat( ggi, 128, 768, 768, 30.19503 )
  588. call SetGLat( ggi, 129, 768, 768, 29.72689 )
  589. call SetGLat( ggi, 130, 768, 768, 29.25875 )
  590. call SetGLat( ggi, 131, 768, 768, 28.79061 )
  591. call SetGLat( ggi, 132, 768, 768, 28.32247 )
  592. call SetGLat( ggi, 133, 768, 768, 27.85433 )
  593. call SetGLat( ggi, 134, 768, 768, 27.38619 )
  594. call SetGLat( ggi, 135, 768, 768, 26.91805 )
  595. call SetGLat( ggi, 136, 768, 768, 26.44991 )
  596. call SetGLat( ggi, 137, 768, 768, 25.98177 )
  597. call SetGLat( ggi, 138, 768, 768, 25.51363 )
  598. call SetGLat( ggi, 139, 768, 768, 25.04549 )
  599. call SetGLat( ggi, 140, 768, 768, 24.57735 )
  600. call SetGLat( ggi, 141, 768, 768, 24.10921 )
  601. call SetGLat( ggi, 142, 768, 768, 23.64107 )
  602. call SetGLat( ggi, 143, 768, 768, 23.17293 )
  603. call SetGLat( ggi, 144, 768, 768, 22.70479 )
  604. call SetGLat( ggi, 145, 768, 768, 22.23665 )
  605. call SetGLat( ggi, 146, 768, 768, 21.76851 )
  606. call SetGLat( ggi, 147, 768, 768, 21.30037 )
  607. call SetGLat( ggi, 148, 768, 768, 20.83223 )
  608. call SetGLat( ggi, 149, 768, 768, 20.36409 )
  609. call SetGLat( ggi, 150, 768, 768, 19.89595 )
  610. call SetGLat( ggi, 151, 768, 768, 19.42781 )
  611. call SetGLat( ggi, 152, 768, 768, 18.95967 )
  612. call SetGLat( ggi, 153, 768, 768, 18.49153 )
  613. call SetGLat( ggi, 154, 768, 768, 18.02339 )
  614. call SetGLat( ggi, 155, 768, 768, 17.55525 )
  615. call SetGLat( ggi, 156, 768, 768, 17.08711 )
  616. call SetGLat( ggi, 157, 768, 768, 16.61897 )
  617. call SetGLat( ggi, 158, 768, 768, 16.15083 )
  618. call SetGLat( ggi, 159, 768, 768, 15.68269 )
  619. call SetGLat( ggi, 160, 768, 768, 15.21455 )
  620. call SetGLat( ggi, 161, 768, 768, 14.74641 )
  621. call SetGLat( ggi, 162, 768, 768, 14.27827 )
  622. call SetGLat( ggi, 163, 768, 768, 13.81013 )
  623. call SetGLat( ggi, 164, 768, 768, 13.34199 )
  624. call SetGLat( ggi, 165, 768, 768, 12.87385 )
  625. call SetGLat( ggi, 166, 768, 768, 12.40571 )
  626. call SetGLat( ggi, 167, 768, 768, 11.93757 )
  627. call SetGLat( ggi, 168, 768, 768, 11.46943 )
  628. call SetGLat( ggi, 169, 768, 768, 11.00129 )
  629. call SetGLat( ggi, 170, 768, 768, 10.53315 )
  630. call SetGLat( ggi, 171, 768, 768, 10.06501 )
  631. call SetGLat( ggi, 172, 768, 768, 9.59687 )
  632. call SetGLat( ggi, 173, 768, 768, 9.128731 )
  633. call SetGLat( ggi, 174, 768, 768, 8.660591 )
  634. call SetGLat( ggi, 175, 768, 768, 8.192451 )
  635. call SetGLat( ggi, 176, 768, 768, 7.724311 )
  636. call SetGLat( ggi, 177, 768, 768, 7.256171 )
  637. call SetGLat( ggi, 178, 768, 768, 6.788031 )
  638. call SetGLat( ggi, 179, 768, 768, 6.31989 )
  639. call SetGLat( ggi, 180, 768, 768, 5.85175 )
  640. call SetGLat( ggi, 181, 768, 768, 5.383611 )
  641. call SetGLat( ggi, 182, 768, 768, 4.915471 )
  642. call SetGLat( ggi, 183, 768, 768, 4.44733 )
  643. call SetGLat( ggi, 184, 768, 768, 3.97919 )
  644. call SetGLat( ggi, 185, 768, 768, 3.51105 )
  645. call SetGLat( ggi, 186, 768, 768, 3.04291 )
  646. call SetGLat( ggi, 187, 768, 768, 2.57477 )
  647. call SetGLat( ggi, 188, 768, 768, 2.10663 )
  648. call SetGLat( ggi, 189, 768, 768, 1.63849 )
  649. call SetGLat( ggi, 190, 768, 768, 1.17035 )
  650. call SetGLat( ggi, 191, 768, 768, 0.7022101 )
  651. call SetGLat( ggi, 192, 768, 768, 0.23407 )
  652. case ( 160 )
  653. ! latitude reduced regular latitude
  654. ! number points points
  655. ! ------- ------- ------- --------
  656. call SetGLat( ggi, 1, 18, 640, 89.57009 )
  657. call SetGLat( ggi, 2, 25, 640, 89.01318 )
  658. call SetGLat( ggi, 3, 36, 640, 88.45297 )
  659. call SetGLat( ggi, 4, 40, 640, 87.89203 )
  660. call SetGLat( ggi, 5, 45, 640, 87.33080 )
  661. call SetGLat( ggi, 6, 50, 640, 86.76944 )
  662. call SetGLat( ggi, 7, 60, 640, 86.20800 )
  663. call SetGLat( ggi, 8, 64, 640, 85.64651 )
  664. call SetGLat( ggi, 9, 72, 640, 85.08499 )
  665. call SetGLat( ggi, 10, 72, 640, 84.52345 )
  666. call SetGLat( ggi, 11, 80, 640, 83.96190 )
  667. call SetGLat( ggi, 12, 90, 640, 83.40033 )
  668. call SetGLat( ggi, 13, 90, 640, 82.83876 )
  669. call SetGLat( ggi, 14, 96, 640, 82.27718 )
  670. call SetGLat( ggi, 15, 108, 640, 81.71559 )
  671. call SetGLat( ggi, 16, 120, 640, 81.15400 )
  672. call SetGLat( ggi, 17, 120, 640, 80.59240 )
  673. call SetGLat( ggi, 18, 125, 640, 80.03080 )
  674. call SetGLat( ggi, 19, 128, 640, 79.46920 )
  675. call SetGLat( ggi, 20, 135, 640, 78.90760 )
  676. call SetGLat( ggi, 21, 144, 640, 78.34600 )
  677. call SetGLat( ggi, 22, 150, 640, 77.78439 )
  678. call SetGLat( ggi, 23, 160, 640, 77.22278 )
  679. call SetGLat( ggi, 24, 160, 640, 76.66117 )
  680. call SetGLat( ggi, 25, 180, 640, 76.09956 )
  681. call SetGLat( ggi, 26, 180, 640, 75.53795 )
  682. call SetGLat( ggi, 27, 180, 640, 74.97634 )
  683. call SetGLat( ggi, 28, 192, 640, 74.41473 )
  684. call SetGLat( ggi, 29, 192, 640, 73.85311 )
  685. call SetGLat( ggi, 30, 200, 640, 73.29150 )
  686. call SetGLat( ggi, 31, 216, 640, 72.72988 )
  687. call SetGLat( ggi, 32, 216, 640, 72.16827 )
  688. call SetGLat( ggi, 33, 225, 640, 71.60665 )
  689. call SetGLat( ggi, 34, 225, 640, 71.04504 )
  690. call SetGLat( ggi, 35, 240, 640, 70.48342 )
  691. call SetGLat( ggi, 36, 240, 640, 69.92181 )
  692. call SetGLat( ggi, 37, 243, 640, 69.36019 )
  693. call SetGLat( ggi, 38, 250, 640, 68.79857 )
  694. call SetGLat( ggi, 39, 256, 640, 68.23695 )
  695. call SetGLat( ggi, 40, 270, 640, 67.67534 )
  696. call SetGLat( ggi, 41, 270, 640, 67.11372 )
  697. call SetGLat( ggi, 42, 288, 640, 66.55210 )
  698. call SetGLat( ggi, 43, 288, 640, 65.99048 )
  699. call SetGLat( ggi, 44, 288, 640, 65.42886 )
  700. call SetGLat( ggi, 45, 300, 640, 64.86725 )
  701. call SetGLat( ggi, 46, 300, 640, 64.30563 )
  702. call SetGLat( ggi, 47, 320, 640, 63.74401 )
  703. call SetGLat( ggi, 48, 320, 640, 63.18239 )
  704. call SetGLat( ggi, 49, 320, 640, 62.62077 )
  705. call SetGLat( ggi, 50, 320, 640, 62.05915 )
  706. call SetGLat( ggi, 51, 324, 640, 61.49753 )
  707. call SetGLat( ggi, 52, 360, 640, 60.93591 )
  708. call SetGLat( ggi, 53, 360, 640, 60.37429 )
  709. call SetGLat( ggi, 54, 360, 640, 59.81267 )
  710. call SetGLat( ggi, 55, 360, 640, 59.25105 )
  711. call SetGLat( ggi, 56, 360, 640, 58.68943 )
  712. call SetGLat( ggi, 57, 360, 640, 58.12781 )
  713. call SetGLat( ggi, 58, 375, 640, 57.56619 )
  714. call SetGLat( ggi, 59, 375, 640, 57.00457 )
  715. call SetGLat( ggi, 60, 375, 640, 56.44295 )
  716. call SetGLat( ggi, 61, 384, 640, 55.88133 )
  717. call SetGLat( ggi, 62, 384, 640, 55.31971 )
  718. call SetGLat( ggi, 63, 400, 640, 54.75809 )
  719. call SetGLat( ggi, 64, 400, 640, 54.19647 )
  720. call SetGLat( ggi, 65, 400, 640, 53.63485 )
  721. call SetGLat( ggi, 66, 405, 640, 53.07323 )
  722. call SetGLat( ggi, 67, 432, 640, 52.51161 )
  723. call SetGLat( ggi, 68, 432, 640, 51.94999 )
  724. call SetGLat( ggi, 69, 432, 640, 51.38837 )
  725. call SetGLat( ggi, 70, 432, 640, 50.82675 )
  726. call SetGLat( ggi, 71, 432, 640, 50.26513 )
  727. call SetGLat( ggi, 72, 450, 640, 49.70351 )
  728. call SetGLat( ggi, 73, 450, 640, 49.14189 )
  729. call SetGLat( ggi, 74, 450, 640, 48.58026 )
  730. call SetGLat( ggi, 75, 450, 640, 48.01864 )
  731. call SetGLat( ggi, 76, 480, 640, 47.45702 )
  732. call SetGLat( ggi, 77, 480, 640, 46.89540 )
  733. call SetGLat( ggi, 78, 480, 640, 46.33378 )
  734. call SetGLat( ggi, 79, 480, 640, 45.77216 )
  735. call SetGLat( ggi, 80, 480, 640, 45.21054 )
  736. call SetGLat( ggi, 81, 480, 640, 44.64892 )
  737. call SetGLat( ggi, 82, 480, 640, 44.08730 )
  738. call SetGLat( ggi, 83, 500, 640, 43.52567 )
  739. call SetGLat( ggi, 84, 500, 640, 42.96405 )
  740. call SetGLat( ggi, 85, 500, 640, 42.40243 )
  741. call SetGLat( ggi, 86, 500, 640, 41.84081 )
  742. call SetGLat( ggi, 87, 500, 640, 41.27919 )
  743. call SetGLat( ggi, 88, 512, 640, 40.71757 )
  744. call SetGLat( ggi, 89, 512, 640, 40.15595 )
  745. call SetGLat( ggi, 90, 540, 640, 39.59433 )
  746. call SetGLat( ggi, 91, 540, 640, 39.03270 )
  747. call SetGLat( ggi, 92, 540, 640, 38.47108 )
  748. call SetGLat( ggi, 93, 540, 640, 37.90946 )
  749. call SetGLat( ggi, 94, 540, 640, 37.34784 )
  750. call SetGLat( ggi, 95, 540, 640, 36.78622 )
  751. call SetGLat( ggi, 96, 540, 640, 36.22460 )
  752. call SetGLat( ggi, 97, 540, 640, 35.66298 )
  753. call SetGLat( ggi, 98, 576, 640, 35.10136 )
  754. call SetGLat( ggi, 99, 576, 640, 34.53973 )
  755. call SetGLat( ggi, 100, 576, 640, 33.97811 )
  756. call SetGLat( ggi, 101, 576, 640, 33.41649 )
  757. call SetGLat( ggi, 102, 576, 640, 32.85487 )
  758. call SetGLat( ggi, 103, 576, 640, 32.29325 )
  759. call SetGLat( ggi, 104, 576, 640, 31.73163 )
  760. call SetGLat( ggi, 105, 576, 640, 31.17000 )
  761. call SetGLat( ggi, 106, 576, 640, 30.60838 )
  762. call SetGLat( ggi, 107, 576, 640, 30.04676 )
  763. call SetGLat( ggi, 108, 600, 640, 29.48514 )
  764. call SetGLat( ggi, 109, 600, 640, 28.92352 )
  765. call SetGLat( ggi, 110, 600, 640, 28.36190 )
  766. call SetGLat( ggi, 111, 600, 640, 27.80028 )
  767. call SetGLat( ggi, 112, 600, 640, 27.23865 )
  768. call SetGLat( ggi, 113, 600, 640, 26.67703 )
  769. call SetGLat( ggi, 114, 600, 640, 26.11541 )
  770. call SetGLat( ggi, 115, 600, 640, 25.55379 )
  771. call SetGLat( ggi, 116, 600, 640, 24.99217 )
  772. call SetGLat( ggi, 117, 640, 640, 24.43055 )
  773. call SetGLat( ggi, 118, 640, 640, 23.86892 )
  774. call SetGLat( ggi, 119, 640, 640, 23.30730 )
  775. call SetGLat( ggi, 120, 640, 640, 22.74568 )
  776. call SetGLat( ggi, 121, 640, 640, 22.18406 )
  777. call SetGLat( ggi, 122, 640, 640, 21.62244 )
  778. call SetGLat( ggi, 123, 640, 640, 21.06082 )
  779. call SetGLat( ggi, 124, 640, 640, 20.49919 )
  780. call SetGLat( ggi, 125, 640, 640, 19.93757 )
  781. call SetGLat( ggi, 126, 640, 640, 19.37595 )
  782. call SetGLat( ggi, 127, 640, 640, 18.81433 )
  783. call SetGLat( ggi, 128, 640, 640, 18.25271 )
  784. call SetGLat( ggi, 129, 640, 640, 17.69109 )
  785. call SetGLat( ggi, 130, 640, 640, 17.12946 )
  786. call SetGLat( ggi, 131, 640, 640, 16.56784 )
  787. call SetGLat( ggi, 132, 640, 640, 16.00622 )
  788. call SetGLat( ggi, 133, 640, 640, 15.44460 )
  789. call SetGLat( ggi, 134, 640, 640, 14.88298 )
  790. call SetGLat( ggi, 135, 640, 640, 14.32136 )
  791. call SetGLat( ggi, 136, 640, 640, 13.75973 )
  792. call SetGLat( ggi, 137, 640, 640, 13.19811 )
  793. call SetGLat( ggi, 138, 640, 640, 12.63649 )
  794. call SetGLat( ggi, 139, 640, 640, 12.07487 )
  795. call SetGLat( ggi, 140, 640, 640, 11.51325 )
  796. call SetGLat( ggi, 141, 640, 640, 10.95162 )
  797. call SetGLat( ggi, 142, 640, 640, 10.39000 )
  798. call SetGLat( ggi, 143, 640, 640, 9.82838 )
  799. call SetGLat( ggi, 144, 640, 640, 9.26676 )
  800. call SetGLat( ggi, 145, 640, 640, 8.70514 )
  801. call SetGLat( ggi, 146, 640, 640, 8.14352 )
  802. call SetGLat( ggi, 147, 640, 640, 7.58189 )
  803. call SetGLat( ggi, 148, 640, 640, 7.02027 )
  804. call SetGLat( ggi, 149, 640, 640, 6.45865 )
  805. call SetGLat( ggi, 150, 640, 640, 5.89703 )
  806. call SetGLat( ggi, 151, 640, 640, 5.33541 )
  807. call SetGLat( ggi, 152, 640, 640, 4.77379 )
  808. call SetGLat( ggi, 153, 640, 640, 4.21216 )
  809. call SetGLat( ggi, 154, 640, 640, 3.65054 )
  810. call SetGLat( ggi, 155, 640, 640, 3.08892 )
  811. call SetGLat( ggi, 156, 640, 640, 2.52730 )
  812. call SetGLat( ggi, 157, 640, 640, 1.96568 )
  813. call SetGLat( ggi, 158, 640, 640, 1.40405 )
  814. call SetGLat( ggi, 159, 640, 640, 0.84243 )
  815. call SetGLat( ggi, 160, 640, 640, 0.28081 )
  816. case ( 256 )
  817. ! latitude reduced regular latitude
  818. ! number points points
  819. ! ------- ------- ------- --------
  820. call SetGLat( ggi, 1, 18, 1024, 89.73115 )
  821. call SetGLat( ggi, 2, 25, 1024, 89.38287 )
  822. call SetGLat( ggi, 3, 32, 1024, 89.03254 )
  823. call SetGLat( ggi, 4, 40, 1024, 88.68175 )
  824. call SetGLat( ggi, 5, 45, 1024, 88.33077 )
  825. call SetGLat( ggi, 6, 50, 1024, 87.97972 )
  826. call SetGLat( ggi, 7, 60, 1024, 87.62861 )
  827. call SetGLat( ggi, 8, 64, 1024, 87.27748 )
  828. call SetGLat( ggi, 9, 72, 1024, 86.92632 )
  829. call SetGLat( ggi, 10, 72, 1024, 86.57515 )
  830. call SetGLat( ggi, 11, 75, 1024, 86.22398 )
  831. call SetGLat( ggi, 12, 81, 1024, 85.87279 )
  832. call SetGLat( ggi, 13, 90, 1024, 85.52160 )
  833. call SetGLat( ggi, 14, 96, 1024, 85.17041 )
  834. call SetGLat( ggi, 15, 100, 1024, 84.81921 )
  835. call SetGLat( ggi, 16, 108, 1024, 84.46801 )
  836. call SetGLat( ggi, 17, 120, 1024, 84.11681 )
  837. call SetGLat( ggi, 18, 120, 1024, 83.76560 )
  838. call SetGLat( ggi, 19, 125, 1024, 83.41440 )
  839. call SetGLat( ggi, 20, 135, 1024, 83.06319 )
  840. call SetGLat( ggi, 21, 144, 1024, 82.71198 )
  841. call SetGLat( ggi, 22, 150, 1024, 82.36077 )
  842. call SetGLat( ggi, 23, 160, 1024, 82.00956 )
  843. call SetGLat( ggi, 24, 160, 1024, 81.65835 )
  844. call SetGLat( ggi, 25, 180, 1024, 81.30714 )
  845. call SetGLat( ggi, 26, 180, 1024, 80.95593 )
  846. call SetGLat( ggi, 27, 180, 1024, 80.60471 )
  847. call SetGLat( ggi, 28, 192, 1024, 80.25350 )
  848. call SetGLat( ggi, 29, 192, 1024, 79.90229 )
  849. call SetGLat( ggi, 30, 200, 1024, 79.55107 )
  850. call SetGLat( ggi, 31, 216, 1024, 79.19986 )
  851. call SetGLat( ggi, 32, 216, 1024, 78.84864 )
  852. call SetGLat( ggi, 33, 216, 1024, 78.49743 )
  853. call SetGLat( ggi, 34, 225, 1024, 78.14621 )
  854. call SetGLat( ggi, 35, 240, 1024, 77.79500 )
  855. call SetGLat( ggi, 36, 240, 1024, 77.44378 )
  856. call SetGLat( ggi, 37, 243, 1024, 77.09256 )
  857. call SetGLat( ggi, 38, 250, 1024, 76.74135 )
  858. call SetGLat( ggi, 39, 256, 1024, 76.39013 )
  859. call SetGLat( ggi, 40, 270, 1024, 76.03891 )
  860. call SetGLat( ggi, 41, 270, 1024, 75.68770 )
  861. call SetGLat( ggi, 42, 288, 1024, 75.33648 )
  862. call SetGLat( ggi, 43, 288, 1024, 74.98526 )
  863. call SetGLat( ggi, 44, 288, 1024, 74.63405 )
  864. call SetGLat( ggi, 45, 300, 1024, 74.28283 )
  865. call SetGLat( ggi, 46, 300, 1024, 73.93161 )
  866. call SetGLat( ggi, 47, 320, 1024, 73.58040 )
  867. call SetGLat( ggi, 48, 320, 1024, 73.22918 )
  868. call SetGLat( ggi, 49, 320, 1024, 72.87796 )
  869. call SetGLat( ggi, 50, 324, 1024, 72.52674 )
  870. call SetGLat( ggi, 51, 360, 1024, 72.17552 )
  871. call SetGLat( ggi, 52, 360, 1024, 71.82431 )
  872. call SetGLat( ggi, 53, 360, 1024, 71.47309 )
  873. call SetGLat( ggi, 54, 360, 1024, 71.12187 )
  874. call SetGLat( ggi, 55, 360, 1024, 70.77065 )
  875. call SetGLat( ggi, 56, 360, 1024, 70.41944 )
  876. call SetGLat( ggi, 57, 375, 1024, 70.06822 )
  877. call SetGLat( ggi, 58, 375, 1024, 69.71700 )
  878. call SetGLat( ggi, 59, 384, 1024, 69.36578 )
  879. call SetGLat( ggi, 60, 384, 1024, 69.01456 )
  880. call SetGLat( ggi, 61, 400, 1024, 68.66334 )
  881. call SetGLat( ggi, 62, 400, 1024, 68.31213 )
  882. call SetGLat( ggi, 63, 400, 1024, 67.96091 )
  883. call SetGLat( ggi, 64, 432, 1024, 67.60969 )
  884. call SetGLat( ggi, 65, 432, 1024, 67.25847 )
  885. call SetGLat( ggi, 66, 432, 1024, 66.90725 )
  886. call SetGLat( ggi, 67, 432, 1024, 66.55603 )
  887. call SetGLat( ggi, 68, 432, 1024, 66.20482 )
  888. call SetGLat( ggi, 69, 450, 1024, 65.85360 )
  889. call SetGLat( ggi, 70, 450, 1024, 65.50238 )
  890. call SetGLat( ggi, 71, 450, 1024, 65.15116 )
  891. call SetGLat( ggi, 72, 480, 1024, 64.79994 )
  892. call SetGLat( ggi, 73, 480, 1024, 64.44872 )
  893. call SetGLat( ggi, 74, 480, 1024, 64.09750 )
  894. call SetGLat( ggi, 75, 480, 1024, 63.74629 )
  895. call SetGLat( ggi, 76, 480, 1024, 63.39507 )
  896. call SetGLat( ggi, 77, 486, 1024, 63.04385 )
  897. call SetGLat( ggi, 78, 500, 1024, 62.69263 )
  898. call SetGLat( ggi, 79, 500, 1024, 62.34141 )
  899. call SetGLat( ggi, 80, 500, 1024, 61.99019 )
  900. call SetGLat( ggi, 81, 512, 1024, 61.63897 )
  901. call SetGLat( ggi, 82, 512, 1024, 61.28776 )
  902. call SetGLat( ggi, 83, 540, 1024, 60.93654 )
  903. call SetGLat( ggi, 84, 540, 1024, 60.58532 )
  904. call SetGLat( ggi, 85, 540, 1024, 60.23410 )
  905. call SetGLat( ggi, 86, 540, 1024, 59.88288 )
  906. call SetGLat( ggi, 87, 540, 1024, 59.53166 )
  907. call SetGLat( ggi, 88, 576, 1024, 59.18044 )
  908. call SetGLat( ggi, 89, 576, 1024, 58.82922 )
  909. call SetGLat( ggi, 90, 576, 1024, 58.47800 )
  910. call SetGLat( ggi, 91, 576, 1024, 58.12679 )
  911. call SetGLat( ggi, 92, 576, 1024, 57.77557 )
  912. call SetGLat( ggi, 93, 576, 1024, 57.42435 )
  913. call SetGLat( ggi, 94, 600, 1024, 57.07313 )
  914. call SetGLat( ggi, 95, 600, 1024, 56.72191 )
  915. call SetGLat( ggi, 96, 600, 1024, 56.37069 )
  916. call SetGLat( ggi, 97, 600, 1024, 56.01947 )
  917. call SetGLat( ggi, 98, 600, 1024, 55.66825 )
  918. call SetGLat( ggi, 99, 640, 1024, 55.31703 )
  919. call SetGLat( ggi, 100, 640, 1024, 54.96581 )
  920. call SetGLat( ggi, 101, 640, 1024, 54.61460 )
  921. call SetGLat( ggi, 102, 640, 1024, 54.26338 )
  922. call SetGLat( ggi, 103, 640, 1024, 53.91216 )
  923. call SetGLat( ggi, 104, 640, 1024, 53.56094 )
  924. call SetGLat( ggi, 105, 640, 1024, 53.20972 )
  925. call SetGLat( ggi, 106, 640, 1024, 52.85850 )
  926. call SetGLat( ggi, 107, 648, 1024, 52.50728 )
  927. call SetGLat( ggi, 108, 675, 1024, 52.15606 )
  928. call SetGLat( ggi, 109, 675, 1024, 51.80484 )
  929. call SetGLat( ggi, 110, 675, 1024, 51.45362 )
  930. call SetGLat( ggi, 111, 675, 1024, 51.10241 )
  931. call SetGLat( ggi, 112, 675, 1024, 50.75119 )
  932. call SetGLat( ggi, 113, 675, 1024, 50.39997 )
  933. call SetGLat( ggi, 114, 720, 1024, 50.04875 )
  934. call SetGLat( ggi, 115, 720, 1024, 49.69753 )
  935. call SetGLat( ggi, 116, 720, 1024, 49.34631 )
  936. call SetGLat( ggi, 117, 720, 1024, 48.99509 )
  937. call SetGLat( ggi, 118, 720, 1024, 48.64387 )
  938. call SetGLat( ggi, 119, 720, 1024, 48.29265 )
  939. call SetGLat( ggi, 120, 720, 1024, 47.94143 )
  940. call SetGLat( ggi, 121, 720, 1024, 47.59021 )
  941. call SetGLat( ggi, 122, 720, 1024, 47.23899 )
  942. call SetGLat( ggi, 123, 729, 1024, 46.88778 )
  943. call SetGLat( ggi, 124, 729, 1024, 46.53656 )
  944. call SetGLat( ggi, 125, 750, 1024, 46.18534 )
  945. call SetGLat( ggi, 126, 750, 1024, 45.83412 )
  946. call SetGLat( ggi, 127, 750, 1024, 45.48290 )
  947. call SetGLat( ggi, 128, 750, 1024, 45.13168 )
  948. call SetGLat( ggi, 129, 750, 1024, 44.78046 )
  949. call SetGLat( ggi, 130, 768, 1024, 44.42924 )
  950. call SetGLat( ggi, 131, 768, 1024, 44.07802 )
  951. call SetGLat( ggi, 132, 768, 1024, 43.72680 )
  952. call SetGLat( ggi, 133, 768, 1024, 43.37558 )
  953. call SetGLat( ggi, 134, 800, 1024, 43.02436 )
  954. call SetGLat( ggi, 135, 800, 1024, 42.67315 )
  955. call SetGLat( ggi, 136, 800, 1024, 42.32193 )
  956. call SetGLat( ggi, 137, 800, 1024, 41.97071 )
  957. call SetGLat( ggi, 138, 800, 1024, 41.61949 )
  958. call SetGLat( ggi, 139, 800, 1024, 41.26827 )
  959. call SetGLat( ggi, 140, 800, 1024, 40.91705 )
  960. call SetGLat( ggi, 141, 800, 1024, 40.56583 )
  961. call SetGLat( ggi, 142, 810, 1024, 40.21461 )
  962. call SetGLat( ggi, 143, 810, 1024, 39.86339 )
  963. call SetGLat( ggi, 144, 864, 1024, 39.51217 )
  964. call SetGLat( ggi, 145, 864, 1024, 39.16095 )
  965. call SetGLat( ggi, 146, 864, 1024, 38.80973 )
  966. call SetGLat( ggi, 147, 864, 1024, 38.45851 )
  967. call SetGLat( ggi, 148, 864, 1024, 38.10730 )
  968. call SetGLat( ggi, 149, 864, 1024, 37.75608 )
  969. call SetGLat( ggi, 150, 864, 1024, 37.40486 )
  970. call SetGLat( ggi, 151, 864, 1024, 37.05364 )
  971. call SetGLat( ggi, 152, 864, 1024, 36.70242 )
  972. call SetGLat( ggi, 153, 864, 1024, 36.35120 )
  973. call SetGLat( ggi, 154, 864, 1024, 35.99998 )
  974. call SetGLat( ggi, 155, 864, 1024, 35.64876 )
  975. call SetGLat( ggi, 156, 864, 1024, 35.29754 )
  976. call SetGLat( ggi, 157, 864, 1024, 34.94632 )
  977. call SetGLat( ggi, 158, 900, 1024, 34.59510 )
  978. call SetGLat( ggi, 159, 900, 1024, 34.24388 )
  979. call SetGLat( ggi, 160, 900, 1024, 33.89266 )
  980. call SetGLat( ggi, 161, 900, 1024, 33.54145 )
  981. call SetGLat( ggi, 162, 900, 1024, 33.19023 )
  982. call SetGLat( ggi, 163, 900, 1024, 32.83901 )
  983. call SetGLat( ggi, 164, 900, 1024, 32.48779 )
  984. call SetGLat( ggi, 165, 900, 1024, 32.13657 )
  985. call SetGLat( ggi, 166, 900, 1024, 31.78535 )
  986. call SetGLat( ggi, 167, 900, 1024, 31.43413 )
  987. call SetGLat( ggi, 168, 900, 1024, 31.08291 )
  988. call SetGLat( ggi, 169, 960, 1024, 30.73169 )
  989. call SetGLat( ggi, 170, 960, 1024, 30.38047 )
  990. call SetGLat( ggi, 171, 960, 1024, 30.02925 )
  991. call SetGLat( ggi, 172, 960, 1024, 29.67803 )
  992. call SetGLat( ggi, 173, 960, 1024, 29.32681 )
  993. call SetGLat( ggi, 174, 960, 1024, 28.97559 )
  994. call SetGLat( ggi, 175, 960, 1024, 28.62438 )
  995. call SetGLat( ggi, 176, 960, 1024, 28.27316 )
  996. call SetGLat( ggi, 177, 960, 1024, 27.92194 )
  997. call SetGLat( ggi, 178, 960, 1024, 27.57072 )
  998. call SetGLat( ggi, 179, 960, 1024, 27.21950 )
  999. call SetGLat( ggi, 180, 960, 1024, 26.86828 )
  1000. call SetGLat( ggi, 181, 960, 1024, 26.51706 )
  1001. call SetGLat( ggi, 182, 960, 1024, 26.16584 )
  1002. call SetGLat( ggi, 183, 960, 1024, 25.81462 )
  1003. call SetGLat( ggi, 184, 960, 1024, 25.46340 )
  1004. call SetGLat( ggi, 185, 960, 1024, 25.11218 )
  1005. call SetGLat( ggi, 186, 960, 1024, 24.76096 )
  1006. call SetGLat( ggi, 187, 960, 1024, 24.40974 )
  1007. call SetGLat( ggi, 188, 960, 1024, 24.05852 )
  1008. call SetGLat( ggi, 189, 960, 1024, 23.70731 )
  1009. call SetGLat( ggi, 190, 960, 1024, 23.35609 )
  1010. call SetGLat( ggi, 191, 972, 1024, 23.00487 )
  1011. call SetGLat( ggi, 192, 972, 1024, 22.65365 )
  1012. call SetGLat( ggi, 193, 972, 1024, 22.30243 )
  1013. call SetGLat( ggi, 194, 972, 1024, 21.95121 )
  1014. call SetGLat( ggi, 195, 972, 1024, 21.59999 )
  1015. call SetGLat( ggi, 196, 1000, 1024, 21.24877 )
  1016. call SetGLat( ggi, 197, 1000, 1024, 20.89755 )
  1017. call SetGLat( ggi, 198, 1000, 1024, 20.54633 )
  1018. call SetGLat( ggi, 199, 1000, 1024, 20.19511 )
  1019. call SetGLat( ggi, 200, 1000, 1024, 19.84389 )
  1020. call SetGLat( ggi, 201, 1000, 1024, 19.49267 )
  1021. call SetGLat( ggi, 202, 1000, 1024, 19.14145 )
  1022. call SetGLat( ggi, 203, 1000, 1024, 18.79023 )
  1023. call SetGLat( ggi, 204, 1000, 1024, 18.43902 )
  1024. call SetGLat( ggi, 205, 1000, 1024, 18.08780 )
  1025. call SetGLat( ggi, 206, 1000, 1024, 17.73658 )
  1026. call SetGLat( ggi, 207, 1000, 1024, 17.38536 )
  1027. call SetGLat( ggi, 208, 1000, 1024, 17.03414 )
  1028. call SetGLat( ggi, 209, 1000, 1024, 16.68292 )
  1029. call SetGLat( ggi, 210, 1000, 1024, 16.33170 )
  1030. call SetGLat( ggi, 211, 1000, 1024, 15.98048 )
  1031. call SetGLat( ggi, 212, 1024, 1024, 15.62926 )
  1032. call SetGLat( ggi, 213, 1024, 1024, 15.27804 )
  1033. call SetGLat( ggi, 214, 1024, 1024, 14.92682 )
  1034. call SetGLat( ggi, 215, 1024, 1024, 14.57560 )
  1035. call SetGLat( ggi, 216, 1024, 1024, 14.22438 )
  1036. call SetGLat( ggi, 217, 1024, 1024, 13.87316 )
  1037. call SetGLat( ggi, 218, 1024, 1024, 13.52194 )
  1038. call SetGLat( ggi, 219, 1024, 1024, 13.17073 )
  1039. call SetGLat( ggi, 220, 1024, 1024, 12.81951 )
  1040. call SetGLat( ggi, 221, 1024, 1024, 12.46829 )
  1041. call SetGLat( ggi, 222, 1024, 1024, 12.11707 )
  1042. call SetGLat( ggi, 223, 1024, 1024, 11.76585 )
  1043. call SetGLat( ggi, 224, 1024, 1024, 11.41463 )
  1044. call SetGLat( ggi, 225, 1024, 1024, 11.06341 )
  1045. call SetGLat( ggi, 226, 1024, 1024, 10.71219 )
  1046. call SetGLat( ggi, 227, 1024, 1024, 10.36097 )
  1047. call SetGLat( ggi, 228, 1024, 1024, 10.00975 )
  1048. call SetGLat( ggi, 229, 1024, 1024, 9.65853 )
  1049. call SetGLat( ggi, 230, 1024, 1024, 9.30731 )
  1050. call SetGLat( ggi, 231, 1024, 1024, 8.95609 )
  1051. call SetGLat( ggi, 232, 1024, 1024, 8.60487 )
  1052. call SetGLat( ggi, 233, 1024, 1024, 8.25365 )
  1053. call SetGLat( ggi, 234, 1024, 1024, 7.90244 )
  1054. call SetGLat( ggi, 235, 1024, 1024, 7.55122 )
  1055. call SetGLat( ggi, 236, 1024, 1024, 7.20000 )
  1056. call SetGLat( ggi, 237, 1024, 1024, 6.84878 )
  1057. call SetGLat( ggi, 238, 1024, 1024, 6.49756 )
  1058. call SetGLat( ggi, 239, 1024, 1024, 6.14634 )
  1059. call SetGLat( ggi, 240, 1024, 1024, 5.79512 )
  1060. call SetGLat( ggi, 241, 1024, 1024, 5.44390 )
  1061. call SetGLat( ggi, 242, 1024, 1024, 5.09268 )
  1062. call SetGLat( ggi, 243, 1024, 1024, 4.74146 )
  1063. call SetGLat( ggi, 244, 1024, 1024, 4.39024 )
  1064. call SetGLat( ggi, 245, 1024, 1024, 4.03902 )
  1065. call SetGLat( ggi, 246, 1024, 1024, 3.68780 )
  1066. call SetGLat( ggi, 247, 1024, 1024, 3.33658 )
  1067. call SetGLat( ggi, 248, 1024, 1024, 2.98536 )
  1068. call SetGLat( ggi, 249, 1024, 1024, 2.63415 )
  1069. call SetGLat( ggi, 250, 1024, 1024, 2.28293 )
  1070. call SetGLat( ggi, 251, 1024, 1024, 1.93171 )
  1071. call SetGLat( ggi, 252, 1024, 1024, 1.58049 )
  1072. call SetGLat( ggi, 253, 1024, 1024, 1.22927 )
  1073. call SetGLat( ggi, 254, 1024, 1024, 0.87805 )
  1074. call SetGLat( ggi, 255, 1024, 1024, 0.52683 )
  1075. call SetGLat( ggi, 256, 1024, 1024, 0.17561 )
  1076. case ( 320 )
  1077. ! latitude reduced regular latitude
  1078. ! number points points
  1079. ! ------- ------- ------- --------
  1080. call SetGLat( ggi, 1, 18, 1280, 89.78488 )
  1081. call SetGLat( ggi, 2, 25, 1280, 89.50620 )
  1082. call SetGLat( ggi, 3, 32, 1280, 89.22588 )
  1083. call SetGLat( ggi, 4, 40, 1280, 88.94519 )
  1084. call SetGLat( ggi, 5, 45, 1280, 88.66436 )
  1085. call SetGLat( ggi, 6, 50, 1280, 88.38346 )
  1086. call SetGLat( ggi, 7, 60, 1280, 88.10252 )
  1087. call SetGLat( ggi, 8, 64, 1280, 87.82156 )
  1088. call SetGLat( ggi, 9, 72, 1280, 87.54058 )
  1089. call SetGLat( ggi, 10, 72, 1280, 87.25959 )
  1090. call SetGLat( ggi, 11, 75, 1280, 86.97859 )
  1091. call SetGLat( ggi, 12, 81, 1280, 86.69759 )
  1092. call SetGLat( ggi, 13, 90, 1280, 86.41658 )
  1093. call SetGLat( ggi, 14, 96, 1280, 86.13557 )
  1094. call SetGLat( ggi, 15, 100, 1280, 85.85456 )
  1095. call SetGLat( ggi, 16, 108, 1280, 85.57355 )
  1096. call SetGLat( ggi, 17, 120, 1280, 85.29253 )
  1097. call SetGLat( ggi, 18, 120, 1280, 85.01151 )
  1098. call SetGLat( ggi, 19, 125, 1280, 84.73049 )
  1099. call SetGLat( ggi, 20, 135, 1280, 84.44947 )
  1100. call SetGLat( ggi, 21, 144, 1280, 84.16845 )
  1101. call SetGLat( ggi, 22, 144, 1280, 83.88742 )
  1102. call SetGLat( ggi, 23, 150, 1280, 83.60640 )
  1103. call SetGLat( ggi, 24, 160, 1280, 83.32538 )
  1104. call SetGLat( ggi, 25, 180, 1280, 83.04435 )
  1105. call SetGLat( ggi, 26, 180, 1280, 82.76333 )
  1106. call SetGLat( ggi, 27, 180, 1280, 82.48230 )
  1107. call SetGLat( ggi, 28, 192, 1280, 82.20128 )
  1108. call SetGLat( ggi, 29, 192, 1280, 81.92025 )
  1109. call SetGLat( ggi, 30, 200, 1280, 81.63923 )
  1110. call SetGLat( ggi, 31, 216, 1280, 81.35820 )
  1111. call SetGLat( ggi, 32, 216, 1280, 81.07717 )
  1112. call SetGLat( ggi, 33, 216, 1280, 80.79615 )
  1113. call SetGLat( ggi, 34, 225, 1280, 80.51512 )
  1114. call SetGLat( ggi, 35, 240, 1280, 80.23409 )
  1115. call SetGLat( ggi, 36, 240, 1280, 79.95306 )
  1116. call SetGLat( ggi, 37, 240, 1280, 79.67204 )
  1117. call SetGLat( ggi, 38, 250, 1280, 79.39101 )
  1118. call SetGLat( ggi, 39, 256, 1280, 79.10998 )
  1119. call SetGLat( ggi, 40, 270, 1280, 78.82895 )
  1120. call SetGLat( ggi, 41, 270, 1280, 78.54792 )
  1121. call SetGLat( ggi, 42, 288, 1280, 78.26689 )
  1122. call SetGLat( ggi, 43, 288, 1280, 77.98587 )
  1123. call SetGLat( ggi, 44, 288, 1280, 77.70484 )
  1124. call SetGLat( ggi, 45, 300, 1280, 77.42381 )
  1125. call SetGLat( ggi, 46, 300, 1280, 77.14278 )
  1126. call SetGLat( ggi, 47, 320, 1280, 76.86175 )
  1127. call SetGLat( ggi, 48, 320, 1280, 76.58072 )
  1128. call SetGLat( ggi, 49, 320, 1280, 76.29969 )
  1129. call SetGLat( ggi, 50, 324, 1280, 76.01867 )
  1130. call SetGLat( ggi, 51, 360, 1280, 75.73764 )
  1131. call SetGLat( ggi, 52, 360, 1280, 75.45661 )
  1132. call SetGLat( ggi, 53, 360, 1280, 75.17558 )
  1133. call SetGLat( ggi, 54, 360, 1280, 74.89455 )
  1134. call SetGLat( ggi, 55, 360, 1280, 74.61352 )
  1135. call SetGLat( ggi, 56, 360, 1280, 74.33249 )
  1136. call SetGLat( ggi, 57, 375, 1280, 74.05146 )
  1137. call SetGLat( ggi, 58, 375, 1280, 73.77043 )
  1138. call SetGLat( ggi, 59, 384, 1280, 73.48940 )
  1139. call SetGLat( ggi, 60, 384, 1280, 73.20837 )
  1140. call SetGLat( ggi, 61, 400, 1280, 72.92734 )
  1141. call SetGLat( ggi, 62, 400, 1280, 72.64631 )
  1142. call SetGLat( ggi, 63, 405, 1280, 72.36528 )
  1143. call SetGLat( ggi, 64, 432, 1280, 72.08426 )
  1144. call SetGLat( ggi, 65, 432, 1280, 71.80323 )
  1145. call SetGLat( ggi, 66, 432, 1280, 71.52220 )
  1146. call SetGLat( ggi, 67, 432, 1280, 71.24117 )
  1147. call SetGLat( ggi, 68, 450, 1280, 70.96014 )
  1148. call SetGLat( ggi, 69, 450, 1280, 70.67911 )
  1149. call SetGLat( ggi, 70, 450, 1280, 70.39808 )
  1150. call SetGLat( ggi, 71, 480, 1280, 70.11705 )
  1151. call SetGLat( ggi, 72, 480, 1280, 69.83602 )
  1152. call SetGLat( ggi, 73, 480, 1280, 69.55499 )
  1153. call SetGLat( ggi, 74, 480, 1280, 69.27396 )
  1154. call SetGLat( ggi, 75, 480, 1280, 68.99293 )
  1155. call SetGLat( ggi, 76, 486, 1280, 68.71190 )
  1156. call SetGLat( ggi, 77, 500, 1280, 68.43087 )
  1157. call SetGLat( ggi, 78, 500, 1280, 68.14984 )
  1158. call SetGLat( ggi, 79, 500, 1280, 67.86881 )
  1159. call SetGLat( ggi, 80, 512, 1280, 67.58778 )
  1160. call SetGLat( ggi, 81, 512, 1280, 67.30675 )
  1161. call SetGLat( ggi, 82, 540, 1280, 67.02572 )
  1162. call SetGLat( ggi, 83, 540, 1280, 66.74469 )
  1163. call SetGLat( ggi, 84, 540, 1280, 66.46366 )
  1164. call SetGLat( ggi, 85, 540, 1280, 66.18263 )
  1165. call SetGLat( ggi, 86, 540, 1280, 65.90160 )
  1166. call SetGLat( ggi, 87, 576, 1280, 65.62057 )
  1167. call SetGLat( ggi, 88, 576, 1280, 65.33954 )
  1168. call SetGLat( ggi, 89, 576, 1280, 65.05851 )
  1169. call SetGLat( ggi, 90, 576, 1280, 64.77748 )
  1170. call SetGLat( ggi, 91, 576, 1280, 64.49645 )
  1171. call SetGLat( ggi, 92, 576, 1280, 64.21542 )
  1172. call SetGLat( ggi, 93, 600, 1280, 63.93439 )
  1173. call SetGLat( ggi, 94, 600, 1280, 63.65336 )
  1174. call SetGLat( ggi, 95, 600, 1280, 63.37233 )
  1175. call SetGLat( ggi, 96, 600, 1280, 63.09130 )
  1176. call SetGLat( ggi, 97, 625, 1280, 62.81027 )
  1177. call SetGLat( ggi, 98, 625, 1280, 62.52924 )
  1178. call SetGLat( ggi, 99, 625, 1280, 62.24821 )
  1179. call SetGLat( ggi, 100, 625, 1280, 61.96718 )
  1180. call SetGLat( ggi, 101, 625, 1280, 61.68615 )
  1181. call SetGLat( ggi, 102, 640, 1280, 61.40512 )
  1182. call SetGLat( ggi, 103, 640, 1280, 61.12409 )
  1183. call SetGLat( ggi, 104, 648, 1280, 60.84306 )
  1184. call SetGLat( ggi, 105, 648, 1280, 60.56203 )
  1185. call SetGLat( ggi, 106, 675, 1280, 60.28100 )
  1186. call SetGLat( ggi, 107, 675, 1280, 59.99997 )
  1187. call SetGLat( ggi, 108, 675, 1280, 59.71894 )
  1188. call SetGLat( ggi, 109, 675, 1280, 59.43791 )
  1189. call SetGLat( ggi, 110, 720, 1280, 59.15688 )
  1190. call SetGLat( ggi, 111, 720, 1280, 58.87585 )
  1191. call SetGLat( ggi, 112, 720, 1280, 58.59482 )
  1192. call SetGLat( ggi, 113, 720, 1280, 58.31379 )
  1193. call SetGLat( ggi, 114, 720, 1280, 58.03276 )
  1194. call SetGLat( ggi, 115, 720, 1280, 57.75173 )
  1195. call SetGLat( ggi, 116, 720, 1280, 57.47070 )
  1196. call SetGLat( ggi, 117, 720, 1280, 57.18967 )
  1197. call SetGLat( ggi, 118, 720, 1280, 56.90864 )
  1198. call SetGLat( ggi, 119, 729, 1280, 56.62761 )
  1199. call SetGLat( ggi, 120, 750, 1280, 56.34658 )
  1200. call SetGLat( ggi, 121, 750, 1280, 56.06555 )
  1201. call SetGLat( ggi, 122, 750, 1280, 55.78452 )
  1202. call SetGLat( ggi, 123, 750, 1280, 55.50349 )
  1203. call SetGLat( ggi, 124, 768, 1280, 55.22246 )
  1204. call SetGLat( ggi, 125, 768, 1280, 54.94143 )
  1205. call SetGLat( ggi, 126, 768, 1280, 54.66040 )
  1206. call SetGLat( ggi, 127, 768, 1280, 54.37937 )
  1207. call SetGLat( ggi, 128, 800, 1280, 54.09834 )
  1208. call SetGLat( ggi, 129, 800, 1280, 53.81731 )
  1209. call SetGLat( ggi, 130, 800, 1280, 53.53628 )
  1210. call SetGLat( ggi, 131, 800, 1280, 53.25525 )
  1211. call SetGLat( ggi, 132, 800, 1280, 52.97422 )
  1212. call SetGLat( ggi, 133, 800, 1280, 52.69319 )
  1213. call SetGLat( ggi, 134, 810, 1280, 52.41216 )
  1214. call SetGLat( ggi, 135, 810, 1280, 52.13113 )
  1215. call SetGLat( ggi, 136, 864, 1280, 51.85009 )
  1216. call SetGLat( ggi, 137, 864, 1280, 51.56906 )
  1217. call SetGLat( ggi, 138, 864, 1280, 51.28803 )
  1218. call SetGLat( ggi, 139, 864, 1280, 51.00700 )
  1219. call SetGLat( ggi, 140, 864, 1280, 50.72597 )
  1220. call SetGLat( ggi, 141, 864, 1280, 50.44494 )
  1221. call SetGLat( ggi, 142, 864, 1280, 50.16391 )
  1222. call SetGLat( ggi, 143, 864, 1280, 49.88288 )
  1223. call SetGLat( ggi, 144, 864, 1280, 49.60185 )
  1224. call SetGLat( ggi, 145, 864, 1280, 49.32082 )
  1225. call SetGLat( ggi, 146, 864, 1280, 49.03979 )
  1226. call SetGLat( ggi, 147, 900, 1280, 48.75876 )
  1227. call SetGLat( ggi, 148, 900, 1280, 48.47773 )
  1228. call SetGLat( ggi, 149, 900, 1280, 48.19670 )
  1229. call SetGLat( ggi, 150, 900, 1280, 47.91567 )
  1230. call SetGLat( ggi, 151, 900, 1280, 47.63464 )
  1231. call SetGLat( ggi, 152, 900, 1280, 47.35361 )
  1232. call SetGLat( ggi, 153, 900, 1280, 47.07258 )
  1233. call SetGLat( ggi, 154, 900, 1280, 46.79155 )
  1234. call SetGLat( ggi, 155, 960, 1280, 46.51052 )
  1235. call SetGLat( ggi, 156, 960, 1280, 46.22949 )
  1236. call SetGLat( ggi, 157, 960, 1280, 45.94846 )
  1237. call SetGLat( ggi, 158, 960, 1280, 45.66743 )
  1238. call SetGLat( ggi, 159, 960, 1280, 45.38640 )
  1239. call SetGLat( ggi, 160, 960, 1280, 45.10537 )
  1240. call SetGLat( ggi, 161, 960, 1280, 44.82434 )
  1241. call SetGLat( ggi, 162, 960, 1280, 44.54331 )
  1242. call SetGLat( ggi, 163, 960, 1280, 44.26228 )
  1243. call SetGLat( ggi, 164, 960, 1280, 43.98125 )
  1244. call SetGLat( ggi, 165, 960, 1280, 43.70022 )
  1245. call SetGLat( ggi, 166, 960, 1280, 43.41919 )
  1246. call SetGLat( ggi, 167, 960, 1280, 43.13816 )
  1247. call SetGLat( ggi, 168, 960, 1280, 42.85713 )
  1248. call SetGLat( ggi, 169, 972, 1280, 42.57610 )
  1249. call SetGLat( ggi, 170, 972, 1280, 42.29507 )
  1250. call SetGLat( ggi, 171, 1000, 1280, 42.01404 )
  1251. call SetGLat( ggi, 172, 1000, 1280, 41.73301 )
  1252. call SetGLat( ggi, 173, 1000, 1280, 41.45198 )
  1253. call SetGLat( ggi, 174, 1000, 1280, 41.17094 )
  1254. call SetGLat( ggi, 175, 1000, 1280, 40.88991 )
  1255. call SetGLat( ggi, 176, 1000, 1280, 40.60888 )
  1256. call SetGLat( ggi, 177, 1000, 1280, 40.32785 )
  1257. call SetGLat( ggi, 178, 1000, 1280, 40.04682 )
  1258. call SetGLat( ggi, 179, 1024, 1280, 39.76579 )
  1259. call SetGLat( ggi, 180, 1024, 1280, 39.48476 )
  1260. call SetGLat( ggi, 181, 1024, 1280, 39.20373 )
  1261. call SetGLat( ggi, 182, 1024, 1280, 38.92270 )
  1262. call SetGLat( ggi, 183, 1024, 1280, 38.64167 )
  1263. call SetGLat( ggi, 184, 1024, 1280, 38.36064 )
  1264. call SetGLat( ggi, 185, 1080, 1280, 38.07961 )
  1265. call SetGLat( ggi, 186, 1080, 1280, 37.79858 )
  1266. call SetGLat( ggi, 187, 1080, 1280, 37.51755 )
  1267. call SetGLat( ggi, 188, 1080, 1280, 37.23652 )
  1268. call SetGLat( ggi, 189, 1080, 1280, 36.95549 )
  1269. call SetGLat( ggi, 190, 1080, 1280, 36.67446 )
  1270. call SetGLat( ggi, 191, 1080, 1280, 36.39343 )
  1271. call SetGLat( ggi, 192, 1080, 1280, 36.11240 )
  1272. call SetGLat( ggi, 193, 1080, 1280, 35.83137 )
  1273. call SetGLat( ggi, 194, 1080, 1280, 35.55034 )
  1274. call SetGLat( ggi, 195, 1080, 1280, 35.26931 )
  1275. call SetGLat( ggi, 196, 1080, 1280, 34.98828 )
  1276. call SetGLat( ggi, 197, 1080, 1280, 34.70725 )
  1277. call SetGLat( ggi, 198, 1080, 1280, 34.42622 )
  1278. call SetGLat( ggi, 199, 1125, 1280, 34.14519 )
  1279. call SetGLat( ggi, 200, 1125, 1280, 33.86416 )
  1280. call SetGLat( ggi, 201, 1125, 1280, 33.58313 )
  1281. call SetGLat( ggi, 202, 1125, 1280, 33.30210 )
  1282. call SetGLat( ggi, 203, 1125, 1280, 33.02107 )
  1283. call SetGLat( ggi, 204, 1125, 1280, 32.74004 )
  1284. call SetGLat( ggi, 205, 1125, 1280, 32.45901 )
  1285. call SetGLat( ggi, 206, 1125, 1280, 32.17797 )
  1286. call SetGLat( ggi, 207, 1125, 1280, 31.89694 )
  1287. call SetGLat( ggi, 208, 1125, 1280, 31.61591 )
  1288. call SetGLat( ggi, 209, 1125, 1280, 31.33488 )
  1289. call SetGLat( ggi, 210, 1125, 1280, 31.05385 )
  1290. call SetGLat( ggi, 211, 1125, 1280, 30.77282 )
  1291. call SetGLat( ggi, 212, 1125, 1280, 30.49179 )
  1292. call SetGLat( ggi, 213, 1152, 1280, 30.21076 )
  1293. call SetGLat( ggi, 214, 1152, 1280, 29.92973 )
  1294. call SetGLat( ggi, 215, 1152, 1280, 29.64870 )
  1295. call SetGLat( ggi, 216, 1152, 1280, 29.36767 )
  1296. call SetGLat( ggi, 217, 1152, 1280, 29.08664 )
  1297. call SetGLat( ggi, 218, 1152, 1280, 28.80561 )
  1298. call SetGLat( ggi, 219, 1152, 1280, 28.52458 )
  1299. call SetGLat( ggi, 220, 1152, 1280, 28.24355 )
  1300. call SetGLat( ggi, 221, 1152, 1280, 27.96252 )
  1301. call SetGLat( ggi, 222, 1200, 1280, 27.68149 )
  1302. call SetGLat( ggi, 223, 1200, 1280, 27.40046 )
  1303. call SetGLat( ggi, 224, 1200, 1280, 27.11943 )
  1304. call SetGLat( ggi, 225, 1200, 1280, 26.83840 )
  1305. call SetGLat( ggi, 226, 1200, 1280, 26.55737 )
  1306. call SetGLat( ggi, 227, 1200, 1280, 26.27634 )
  1307. call SetGLat( ggi, 228, 1200, 1280, 25.99531 )
  1308. call SetGLat( ggi, 229, 1200, 1280, 25.71428 )
  1309. call SetGLat( ggi, 230, 1200, 1280, 25.43325 )
  1310. call SetGLat( ggi, 231, 1200, 1280, 25.15222 )
  1311. call SetGLat( ggi, 232, 1200, 1280, 24.87119 )
  1312. call SetGLat( ggi, 233, 1200, 1280, 24.59016 )
  1313. call SetGLat( ggi, 234, 1200, 1280, 24.30913 )
  1314. call SetGLat( ggi, 235, 1200, 1280, 24.02810 )
  1315. call SetGLat( ggi, 236, 1200, 1280, 23.74706 )
  1316. call SetGLat( ggi, 237, 1200, 1280, 23.46603 )
  1317. call SetGLat( ggi, 238, 1200, 1280, 23.18500 )
  1318. call SetGLat( ggi, 239, 1200, 1280, 22.90397 )
  1319. call SetGLat( ggi, 240, 1215, 1280, 22.62294 )
  1320. call SetGLat( ggi, 241, 1215, 1280, 22.34191 )
  1321. call SetGLat( ggi, 242, 1215, 1280, 22.06088 )
  1322. call SetGLat( ggi, 243, 1215, 1280, 21.77985 )
  1323. call SetGLat( ggi, 244, 1215, 1280, 21.49882 )
  1324. call SetGLat( ggi, 245, 1215, 1280, 21.21779 )
  1325. call SetGLat( ggi, 246, 1215, 1280, 20.93676 )
  1326. call SetGLat( ggi, 247, 1250, 1280, 20.65573 )
  1327. call SetGLat( ggi, 248, 1250, 1280, 20.37470 )
  1328. call SetGLat( ggi, 249, 1250, 1280, 20.09367 )
  1329. call SetGLat( ggi, 250, 1250, 1280, 19.81264 )
  1330. call SetGLat( ggi, 251, 1250, 1280, 19.53161 )
  1331. call SetGLat( ggi, 252, 1250, 1280, 19.25058 )
  1332. call SetGLat( ggi, 253, 1250, 1280, 18.96955 )
  1333. call SetGLat( ggi, 254, 1250, 1280, 18.68852 )
  1334. call SetGLat( ggi, 255, 1250, 1280, 18.40749 )
  1335. call SetGLat( ggi, 256, 1250, 1280, 18.12646 )
  1336. call SetGLat( ggi, 257, 1250, 1280, 17.84543 )
  1337. call SetGLat( ggi, 258, 1250, 1280, 17.56440 )
  1338. call SetGLat( ggi, 259, 1250, 1280, 17.28337 )
  1339. call SetGLat( ggi, 260, 1250, 1280, 17.00234 )
  1340. call SetGLat( ggi, 261, 1250, 1280, 16.72131 )
  1341. call SetGLat( ggi, 262, 1250, 1280, 16.44028 )
  1342. call SetGLat( ggi, 263, 1250, 1280, 16.15925 )
  1343. call SetGLat( ggi, 264, 1250, 1280, 15.87822 )
  1344. call SetGLat( ggi, 265, 1250, 1280, 15.59718 )
  1345. call SetGLat( ggi, 266, 1250, 1280, 15.31615 )
  1346. call SetGLat( ggi, 267, 1280, 1280, 15.03512 )
  1347. call SetGLat( ggi, 268, 1280, 1280, 14.75409 )
  1348. call SetGLat( ggi, 269, 1280, 1280, 14.47306 )
  1349. call SetGLat( ggi, 270, 1280, 1280, 14.19203 )
  1350. call SetGLat( ggi, 271, 1280, 1280, 13.91100 )
  1351. call SetGLat( ggi, 272, 1280, 1280, 13.62997 )
  1352. call SetGLat( ggi, 273, 1280, 1280, 13.34894 )
  1353. call SetGLat( ggi, 274, 1280, 1280, 13.06791 )
  1354. call SetGLat( ggi, 275, 1280, 1280, 12.78688 )
  1355. call SetGLat( ggi, 276, 1280, 1280, 12.50585 )
  1356. call SetGLat( ggi, 277, 1280, 1280, 12.22482 )
  1357. call SetGLat( ggi, 278, 1280, 1280, 11.94379 )
  1358. call SetGLat( ggi, 279, 1280, 1280, 11.66276 )
  1359. call SetGLat( ggi, 280, 1280, 1280, 11.38173 )
  1360. call SetGLat( ggi, 281, 1280, 1280, 11.10070 )
  1361. call SetGLat( ggi, 282, 1280, 1280, 10.81967 )
  1362. call SetGLat( ggi, 283, 1280, 1280, 10.53864 )
  1363. call SetGLat( ggi, 284, 1280, 1280, 10.25761 )
  1364. call SetGLat( ggi, 285, 1280, 1280, 9.97658 )
  1365. call SetGLat( ggi, 286, 1280, 1280, 9.69555 )
  1366. call SetGLat( ggi, 287, 1280, 1280, 9.41452 )
  1367. call SetGLat( ggi, 288, 1280, 1280, 9.13349 )
  1368. call SetGLat( ggi, 289, 1280, 1280, 8.85246 )
  1369. call SetGLat( ggi, 290, 1280, 1280, 8.57143 )
  1370. call SetGLat( ggi, 291, 1280, 1280, 8.29040 )
  1371. call SetGLat( ggi, 292, 1280, 1280, 8.00937 )
  1372. call SetGLat( ggi, 293, 1280, 1280, 7.72833 )
  1373. call SetGLat( ggi, 294, 1280, 1280, 7.44730 )
  1374. call SetGLat( ggi, 295, 1280, 1280, 7.16627 )
  1375. call SetGLat( ggi, 296, 1280, 1280, 6.88524 )
  1376. call SetGLat( ggi, 297, 1280, 1280, 6.60421 )
  1377. call SetGLat( ggi, 298, 1280, 1280, 6.32318 )
  1378. call SetGLat( ggi, 299, 1280, 1280, 6.04215 )
  1379. call SetGLat( ggi, 300, 1280, 1280, 5.76112 )
  1380. call SetGLat( ggi, 301, 1280, 1280, 5.48009 )
  1381. call SetGLat( ggi, 302, 1280, 1280, 5.19906 )
  1382. call SetGLat( ggi, 303, 1280, 1280, 4.91803 )
  1383. call SetGLat( ggi, 304, 1280, 1280, 4.63700 )
  1384. call SetGLat( ggi, 305, 1280, 1280, 4.35597 )
  1385. call SetGLat( ggi, 306, 1280, 1280, 4.07494 )
  1386. call SetGLat( ggi, 307, 1280, 1280, 3.79391 )
  1387. call SetGLat( ggi, 308, 1280, 1280, 3.51288 )
  1388. call SetGLat( ggi, 309, 1280, 1280, 3.23185 )
  1389. call SetGLat( ggi, 310, 1280, 1280, 2.95082 )
  1390. call SetGLat( ggi, 311, 1280, 1280, 2.66979 )
  1391. call SetGLat( ggi, 312, 1280, 1280, 2.38876 )
  1392. call SetGLat( ggi, 313, 1280, 1280, 2.10773 )
  1393. call SetGLat( ggi, 314, 1280, 1280, 1.82670 )
  1394. call SetGLat( ggi, 315, 1280, 1280, 1.54567 )
  1395. call SetGLat( ggi, 316, 1280, 1280, 1.26464 )
  1396. call SetGLat( ggi, 317, 1280, 1280, 0.98361 )
  1397. call SetGLat( ggi, 318, 1280, 1280, 0.70258 )
  1398. call SetGLat( ggi, 319, 1280, 1280, 0.42155 )
  1399. call SetGLat( ggi, 320, 1280, 1280, 0.14052 )
  1400. case ( 400 )
  1401. ! latitude reduced regular latitude
  1402. ! number points points
  1403. ! ------- ------- ------- --------
  1404. call SetGLat( ggi, 1, 18, 1600, 89.82787 )
  1405. call SetGLat( ggi, 2, 25, 1600, 89.60490 )
  1406. call SetGLat( ggi, 3, 32, 1600, 89.38061 )
  1407. call SetGLat( ggi, 4, 40, 1600, 89.15602 )
  1408. call SetGLat( ggi, 5, 45, 1600, 88.93132 )
  1409. call SetGLat( ggi, 6, 50, 1600, 88.70656 )
  1410. call SetGLat( ggi, 7, 60, 1600, 88.48178 )
  1411. call SetGLat( ggi, 8, 60, 1600, 88.25697 )
  1412. call SetGLat( ggi, 9, 72, 1600, 88.03215 )
  1413. call SetGLat( ggi, 10, 72, 1600, 87.80733 )
  1414. call SetGLat( ggi, 11, 75, 1600, 87.58250 )
  1415. call SetGLat( ggi, 12, 81, 1600, 87.35766 )
  1416. call SetGLat( ggi, 13, 90, 1600, 87.13282 )
  1417. call SetGLat( ggi, 14, 96, 1600, 86.90798 )
  1418. call SetGLat( ggi, 15, 100, 1600, 86.68313 )
  1419. call SetGLat( ggi, 16, 108, 1600, 86.45828 )
  1420. call SetGLat( ggi, 17, 120, 1600, 86.23343 )
  1421. call SetGLat( ggi, 18, 120, 1600, 86.00858 )
  1422. call SetGLat( ggi, 19, 125, 1600, 85.78373 )
  1423. call SetGLat( ggi, 20, 128, 1600, 85.55888 )
  1424. call SetGLat( ggi, 21, 144, 1600, 85.33403 )
  1425. call SetGLat( ggi, 22, 144, 1600, 85.10918 )
  1426. call SetGLat( ggi, 23, 150, 1600, 84.88432 )
  1427. call SetGLat( ggi, 24, 160, 1600, 84.65947 )
  1428. call SetGLat( ggi, 25, 160, 1600, 84.43461 )
  1429. call SetGLat( ggi, 26, 180, 1600, 84.20976 )
  1430. call SetGLat( ggi, 27, 180, 1600, 83.98490 )
  1431. call SetGLat( ggi, 28, 192, 1600, 83.76005 )
  1432. call SetGLat( ggi, 29, 192, 1600, 83.53519 )
  1433. call SetGLat( ggi, 30, 200, 1600, 83.31034 )
  1434. call SetGLat( ggi, 31, 200, 1600, 83.08548 )
  1435. call SetGLat( ggi, 32, 216, 1600, 82.86062 )
  1436. call SetGLat( ggi, 33, 216, 1600, 82.63577 )
  1437. call SetGLat( ggi, 34, 225, 1600, 82.41091 )
  1438. call SetGLat( ggi, 35, 240, 1600, 82.18605 )
  1439. call SetGLat( ggi, 36, 240, 1600, 81.96120 )
  1440. call SetGLat( ggi, 37, 240, 1600, 81.73634 )
  1441. call SetGLat( ggi, 38, 250, 1600, 81.51148 )
  1442. call SetGLat( ggi, 39, 250, 1600, 81.28662 )
  1443. call SetGLat( ggi, 40, 256, 1600, 81.06177 )
  1444. call SetGLat( ggi, 41, 270, 1600, 80.83691 )
  1445. call SetGLat( ggi, 42, 288, 1600, 80.61205 )
  1446. call SetGLat( ggi, 43, 288, 1600, 80.38719 )
  1447. call SetGLat( ggi, 44, 288, 1600, 80.16233 )
  1448. call SetGLat( ggi, 45, 300, 1600, 79.93748 )
  1449. call SetGLat( ggi, 46, 300, 1600, 79.71262 )
  1450. call SetGLat( ggi, 47, 320, 1600, 79.48776 )
  1451. call SetGLat( ggi, 48, 320, 1600, 79.26290 )
  1452. call SetGLat( ggi, 49, 320, 1600, 79.03804 )
  1453. call SetGLat( ggi, 50, 324, 1600, 78.81319 )
  1454. call SetGLat( ggi, 51, 360, 1600, 78.58833 )
  1455. call SetGLat( ggi, 52, 360, 1600, 78.36347 )
  1456. call SetGLat( ggi, 53, 360, 1600, 78.13861 )
  1457. call SetGLat( ggi, 54, 360, 1600, 77.91375 )
  1458. call SetGLat( ggi, 55, 360, 1600, 77.68889 )
  1459. call SetGLat( ggi, 56, 360, 1600, 77.46403 )
  1460. call SetGLat( ggi, 57, 375, 1600, 77.23918 )
  1461. call SetGLat( ggi, 58, 375, 1600, 77.01432 )
  1462. call SetGLat( ggi, 59, 384, 1600, 76.78946 )
  1463. call SetGLat( ggi, 60, 400, 1600, 76.56460 )
  1464. call SetGLat( ggi, 61, 400, 1600, 76.33974 )
  1465. call SetGLat( ggi, 62, 400, 1600, 76.11488 )
  1466. call SetGLat( ggi, 63, 405, 1600, 75.89002 )
  1467. call SetGLat( ggi, 64, 432, 1600, 75.66517 )
  1468. call SetGLat( ggi, 65, 432, 1600, 75.44031 )
  1469. call SetGLat( ggi, 66, 432, 1600, 75.21545 )
  1470. call SetGLat( ggi, 67, 432, 1600, 74.99059 )
  1471. call SetGLat( ggi, 68, 450, 1600, 74.76573 )
  1472. call SetGLat( ggi, 69, 450, 1600, 74.54087 )
  1473. call SetGLat( ggi, 70, 450, 1600, 74.31601 )
  1474. call SetGLat( ggi, 71, 480, 1600, 74.09115 )
  1475. call SetGLat( ggi, 72, 480, 1600, 73.86629 )
  1476. call SetGLat( ggi, 73, 480, 1600, 73.64144 )
  1477. call SetGLat( ggi, 74, 480, 1600, 73.41658 )
  1478. call SetGLat( ggi, 75, 480, 1600, 73.19172 )
  1479. call SetGLat( ggi, 76, 486, 1600, 72.96686 )
  1480. call SetGLat( ggi, 77, 500, 1600, 72.74200 )
  1481. call SetGLat( ggi, 78, 500, 1600, 72.51714 )
  1482. call SetGLat( ggi, 79, 512, 1600, 72.29228 )
  1483. call SetGLat( ggi, 80, 512, 1600, 72.06742 )
  1484. call SetGLat( ggi, 81, 540, 1600, 71.84256 )
  1485. call SetGLat( ggi, 82, 540, 1600, 71.61771 )
  1486. call SetGLat( ggi, 83, 540, 1600, 71.39285 )
  1487. call SetGLat( ggi, 84, 540, 1600, 71.16799 )
  1488. call SetGLat( ggi, 85, 540, 1600, 70.94313 )
  1489. call SetGLat( ggi, 86, 576, 1600, 70.71827 )
  1490. call SetGLat( ggi, 87, 576, 1600, 70.49341 )
  1491. call SetGLat( ggi, 88, 576, 1600, 70.26855 )
  1492. call SetGLat( ggi, 89, 576, 1600, 70.04369 )
  1493. call SetGLat( ggi, 90, 576, 1600, 69.81883 )
  1494. call SetGLat( ggi, 91, 576, 1600, 69.59397 )
  1495. call SetGLat( ggi, 92, 600, 1600, 69.36911 )
  1496. call SetGLat( ggi, 93, 600, 1600, 69.14426 )
  1497. call SetGLat( ggi, 94, 600, 1600, 68.91940 )
  1498. call SetGLat( ggi, 95, 600, 1600, 68.69454 )
  1499. call SetGLat( ggi, 96, 640, 1600, 68.46968 )
  1500. call SetGLat( ggi, 97, 640, 1600, 68.24482 )
  1501. call SetGLat( ggi, 98, 640, 1600, 68.01996 )
  1502. call SetGLat( ggi, 99, 640, 1600, 67.79510 )
  1503. call SetGLat( ggi, 100, 640, 1600, 67.57024 )
  1504. call SetGLat( ggi, 101, 640, 1600, 67.34538 )
  1505. call SetGLat( ggi, 102, 640, 1600, 67.12052 )
  1506. call SetGLat( ggi, 103, 648, 1600, 66.89566 )
  1507. call SetGLat( ggi, 104, 675, 1600, 66.67080 )
  1508. call SetGLat( ggi, 105, 675, 1600, 66.44595 )
  1509. call SetGLat( ggi, 106, 675, 1600, 66.22109 )
  1510. call SetGLat( ggi, 107, 675, 1600, 65.99623 )
  1511. call SetGLat( ggi, 108, 675, 1600, 65.77137 )
  1512. call SetGLat( ggi, 109, 720, 1600, 65.54651 )
  1513. call SetGLat( ggi, 110, 720, 1600, 65.32165 )
  1514. call SetGLat( ggi, 111, 720, 1600, 65.09679 )
  1515. call SetGLat( ggi, 112, 720, 1600, 64.87193 )
  1516. call SetGLat( ggi, 113, 720, 1600, 64.64707 )
  1517. call SetGLat( ggi, 114, 720, 1600, 64.42221 )
  1518. call SetGLat( ggi, 115, 720, 1600, 64.19735 )
  1519. call SetGLat( ggi, 116, 729, 1600, 63.97249 )
  1520. call SetGLat( ggi, 117, 729, 1600, 63.74764 )
  1521. call SetGLat( ggi, 118, 750, 1600, 63.52278 )
  1522. call SetGLat( ggi, 119, 750, 1600, 63.29792 )
  1523. call SetGLat( ggi, 120, 750, 1600, 63.07306 )
  1524. call SetGLat( ggi, 121, 750, 1600, 62.84820 )
  1525. call SetGLat( ggi, 122, 768, 1600, 62.62334 )
  1526. call SetGLat( ggi, 123, 768, 1600, 62.39848 )
  1527. call SetGLat( ggi, 124, 768, 1600, 62.17362 )
  1528. call SetGLat( ggi, 125, 800, 1600, 61.94876 )
  1529. call SetGLat( ggi, 126, 800, 1600, 61.72390 )
  1530. call SetGLat( ggi, 127, 800, 1600, 61.49904 )
  1531. call SetGLat( ggi, 128, 800, 1600, 61.27418 )
  1532. call SetGLat( ggi, 129, 800, 1600, 61.04932 )
  1533. call SetGLat( ggi, 130, 800, 1600, 60.82446 )
  1534. call SetGLat( ggi, 131, 810, 1600, 60.59961 )
  1535. call SetGLat( ggi, 132, 864, 1600, 60.37475 )
  1536. call SetGLat( ggi, 133, 864, 1600, 60.14989 )
  1537. call SetGLat( ggi, 134, 864, 1600, 59.92503 )
  1538. call SetGLat( ggi, 135, 864, 1600, 59.70017 )
  1539. call SetGLat( ggi, 136, 864, 1600, 59.47531 )
  1540. call SetGLat( ggi, 137, 864, 1600, 59.25045 )
  1541. call SetGLat( ggi, 138, 864, 1600, 59.02559 )
  1542. call SetGLat( ggi, 139, 864, 1600, 58.80073 )
  1543. call SetGLat( ggi, 140, 864, 1600, 58.57587 )
  1544. call SetGLat( ggi, 141, 864, 1600, 58.35101 )
  1545. call SetGLat( ggi, 142, 900, 1600, 58.12615 )
  1546. call SetGLat( ggi, 143, 900, 1600, 57.90129 )
  1547. call SetGLat( ggi, 144, 900, 1600, 57.67643 )
  1548. call SetGLat( ggi, 145, 900, 1600, 57.45158 )
  1549. call SetGLat( ggi, 146, 900, 1600, 57.22672 )
  1550. call SetGLat( ggi, 147, 900, 1600, 57.00186 )
  1551. call SetGLat( ggi, 148, 900, 1600, 56.77700 )
  1552. call SetGLat( ggi, 149, 960, 1600, 56.55214 )
  1553. call SetGLat( ggi, 150, 960, 1600, 56.32728 )
  1554. call SetGLat( ggi, 151, 960, 1600, 56.10242 )
  1555. call SetGLat( ggi, 152, 960, 1600, 55.87756 )
  1556. call SetGLat( ggi, 153, 960, 1600, 55.65270 )
  1557. call SetGLat( ggi, 154, 960, 1600, 55.42784 )
  1558. call SetGLat( ggi, 155, 960, 1600, 55.20298 )
  1559. call SetGLat( ggi, 156, 960, 1600, 54.97812 )
  1560. call SetGLat( ggi, 157, 960, 1600, 54.75326 )
  1561. call SetGLat( ggi, 158, 960, 1600, 54.52840 )
  1562. call SetGLat( ggi, 159, 960, 1600, 54.30354 )
  1563. call SetGLat( ggi, 160, 960, 1600, 54.07869 )
  1564. call SetGLat( ggi, 161, 972, 1600, 53.85383 )
  1565. call SetGLat( ggi, 162, 972, 1600, 53.62897 )
  1566. call SetGLat( ggi, 163, 1000, 1600, 53.40411 )
  1567. call SetGLat( ggi, 164, 1000, 1600, 53.17925 )
  1568. call SetGLat( ggi, 165, 1000, 1600, 52.95439 )
  1569. call SetGLat( ggi, 166, 1000, 1600, 52.72953 )
  1570. call SetGLat( ggi, 167, 1000, 1600, 52.50467 )
  1571. call SetGLat( ggi, 168, 1000, 1600, 52.27981 )
  1572. call SetGLat( ggi, 169, 1024, 1600, 52.05495 )
  1573. call SetGLat( ggi, 170, 1024, 1600, 51.83009 )
  1574. call SetGLat( ggi, 171, 1024, 1600, 51.60523 )
  1575. call SetGLat( ggi, 172, 1024, 1600, 51.38037 )
  1576. call SetGLat( ggi, 173, 1024, 1600, 51.15551 )
  1577. call SetGLat( ggi, 174, 1080, 1600, 50.93065 )
  1578. call SetGLat( ggi, 175, 1080, 1600, 50.70580 )
  1579. call SetGLat( ggi, 176, 1080, 1600, 50.48094 )
  1580. call SetGLat( ggi, 177, 1080, 1600, 50.25608 )
  1581. call SetGLat( ggi, 178, 1080, 1600, 50.03122 )
  1582. call SetGLat( ggi, 179, 1080, 1600, 49.80636 )
  1583. call SetGLat( ggi, 180, 1080, 1600, 49.58150 )
  1584. call SetGLat( ggi, 181, 1080, 1600, 49.35664 )
  1585. call SetGLat( ggi, 182, 1080, 1600, 49.13178 )
  1586. call SetGLat( ggi, 183, 1080, 1600, 48.90692 )
  1587. call SetGLat( ggi, 184, 1080, 1600, 48.68206 )
  1588. call SetGLat( ggi, 185, 1125, 1600, 48.45720 )
  1589. call SetGLat( ggi, 186, 1125, 1600, 48.23234 )
  1590. call SetGLat( ggi, 187, 1125, 1600, 48.00748 )
  1591. call SetGLat( ggi, 188, 1125, 1600, 47.78262 )
  1592. call SetGLat( ggi, 189, 1125, 1600, 47.55776 )
  1593. call SetGLat( ggi, 190, 1125, 1600, 47.33290 )
  1594. call SetGLat( ggi, 191, 1125, 1600, 47.10805 )
  1595. call SetGLat( ggi, 192, 1125, 1600, 46.88319 )
  1596. call SetGLat( ggi, 193, 1125, 1600, 46.65833 )
  1597. call SetGLat( ggi, 194, 1152, 1600, 46.43347 )
  1598. call SetGLat( ggi, 195, 1152, 1600, 46.20861 )
  1599. call SetGLat( ggi, 196, 1152, 1600, 45.98375 )
  1600. call SetGLat( ggi, 197, 1152, 1600, 45.75889 )
  1601. call SetGLat( ggi, 198, 1152, 1600, 45.53403 )
  1602. call SetGLat( ggi, 199, 1152, 1600, 45.30917 )
  1603. call SetGLat( ggi, 200, 1200, 1600, 45.08431 )
  1604. call SetGLat( ggi, 201, 1200, 1600, 44.85945 )
  1605. call SetGLat( ggi, 202, 1200, 1600, 44.63459 )
  1606. call SetGLat( ggi, 203, 1200, 1600, 44.40973 )
  1607. call SetGLat( ggi, 204, 1200, 1600, 44.18487 )
  1608. call SetGLat( ggi, 205, 1200, 1600, 43.96001 )
  1609. call SetGLat( ggi, 206, 1200, 1600, 43.73515 )
  1610. call SetGLat( ggi, 207, 1200, 1600, 43.51030 )
  1611. call SetGLat( ggi, 208, 1200, 1600, 43.28544 )
  1612. call SetGLat( ggi, 209, 1200, 1600, 43.06058 )
  1613. call SetGLat( ggi, 210, 1200, 1600, 42.83572 )
  1614. call SetGLat( ggi, 211, 1215, 1600, 42.61086 )
  1615. call SetGLat( ggi, 212, 1215, 1600, 42.38600 )
  1616. call SetGLat( ggi, 213, 1215, 1600, 42.16114 )
  1617. call SetGLat( ggi, 214, 1215, 1600, 41.93628 )
  1618. call SetGLat( ggi, 215, 1280, 1600, 41.71142 )
  1619. call SetGLat( ggi, 216, 1280, 1600, 41.48656 )
  1620. call SetGLat( ggi, 217, 1280, 1600, 41.26170 )
  1621. call SetGLat( ggi, 218, 1280, 1600, 41.03684 )
  1622. call SetGLat( ggi, 219, 1280, 1600, 40.81198 )
  1623. call SetGLat( ggi, 220, 1280, 1600, 40.58712 )
  1624. call SetGLat( ggi, 221, 1280, 1600, 40.36226 )
  1625. call SetGLat( ggi, 222, 1280, 1600, 40.13740 )
  1626. call SetGLat( ggi, 223, 1280, 1600, 39.91255 )
  1627. call SetGLat( ggi, 224, 1280, 1600, 39.68769 )
  1628. call SetGLat( ggi, 225, 1280, 1600, 39.46283 )
  1629. call SetGLat( ggi, 226, 1280, 1600, 39.23797 )
  1630. call SetGLat( ggi, 227, 1280, 1600, 39.01311 )
  1631. call SetGLat( ggi, 228, 1280, 1600, 38.78825 )
  1632. call SetGLat( ggi, 229, 1280, 1600, 38.56339 )
  1633. call SetGLat( ggi, 230, 1280, 1600, 38.33853 )
  1634. call SetGLat( ggi, 231, 1296, 1600, 38.11367 )
  1635. call SetGLat( ggi, 232, 1296, 1600, 37.88881 )
  1636. call SetGLat( ggi, 233, 1296, 1600, 37.66395 )
  1637. call SetGLat( ggi, 234, 1296, 1600, 37.43909 )
  1638. call SetGLat( ggi, 235, 1350, 1600, 37.21423 )
  1639. call SetGLat( ggi, 236, 1350, 1600, 36.98937 )
  1640. call SetGLat( ggi, 237, 1350, 1600, 36.76451 )
  1641. call SetGLat( ggi, 238, 1350, 1600, 36.53965 )
  1642. call SetGLat( ggi, 239, 1350, 1600, 36.31480 )
  1643. call SetGLat( ggi, 240, 1350, 1600, 36.08994 )
  1644. call SetGLat( ggi, 241, 1350, 1600, 35.86508 )
  1645. call SetGLat( ggi, 242, 1350, 1600, 35.64022 )
  1646. call SetGLat( ggi, 243, 1350, 1600, 35.41536 )
  1647. call SetGLat( ggi, 244, 1350, 1600, 35.19050 )
  1648. call SetGLat( ggi, 245, 1350, 1600, 34.96564 )
  1649. call SetGLat( ggi, 246, 1350, 1600, 34.74078 )
  1650. call SetGLat( ggi, 247, 1350, 1600, 34.51592 )
  1651. call SetGLat( ggi, 248, 1350, 1600, 34.29106 )
  1652. call SetGLat( ggi, 249, 1350, 1600, 34.06620 )
  1653. call SetGLat( ggi, 250, 1440, 1600, 33.84134 )
  1654. call SetGLat( ggi, 251, 1440, 1600, 33.61648 )
  1655. call SetGLat( ggi, 252, 1440, 1600, 33.39162 )
  1656. call SetGLat( ggi, 253, 1440, 1600, 33.16676 )
  1657. call SetGLat( ggi, 254, 1440, 1600, 32.94190 )
  1658. call SetGLat( ggi, 255, 1440, 1600, 32.71704 )
  1659. call SetGLat( ggi, 256, 1440, 1600, 32.49219 )
  1660. call SetGLat( ggi, 257, 1440, 1600, 32.26733 )
  1661. call SetGLat( ggi, 258, 1440, 1600, 32.04247 )
  1662. call SetGLat( ggi, 259, 1440, 1600, 31.81761 )
  1663. call SetGLat( ggi, 260, 1440, 1600, 31.59275 )
  1664. call SetGLat( ggi, 261, 1440, 1600, 31.36789 )
  1665. call SetGLat( ggi, 262, 1440, 1600, 31.14303 )
  1666. call SetGLat( ggi, 263, 1440, 1600, 30.91817 )
  1667. call SetGLat( ggi, 264, 1440, 1600, 30.69331 )
  1668. call SetGLat( ggi, 265, 1440, 1600, 30.46845 )
  1669. call SetGLat( ggi, 266, 1440, 1600, 30.24359 )
  1670. call SetGLat( ggi, 267, 1440, 1600, 30.01873 )
  1671. call SetGLat( ggi, 268, 1440, 1600, 29.79387 )
  1672. call SetGLat( ggi, 269, 1440, 1600, 29.56901 )
  1673. call SetGLat( ggi, 270, 1440, 1600, 29.34415 )
  1674. call SetGLat( ggi, 271, 1440, 1600, 29.11929 )
  1675. call SetGLat( ggi, 272, 1440, 1600, 28.89443 )
  1676. call SetGLat( ggi, 273, 1440, 1600, 28.66958 )
  1677. call SetGLat( ggi, 274, 1440, 1600, 28.44472 )
  1678. call SetGLat( ggi, 275, 1440, 1600, 28.21986 )
  1679. call SetGLat( ggi, 276, 1440, 1600, 27.99500 )
  1680. call SetGLat( ggi, 277, 1440, 1600, 27.77014 )
  1681. call SetGLat( ggi, 278, 1458, 1600, 27.54528 )
  1682. call SetGLat( ggi, 279, 1458, 1600, 27.32042 )
  1683. call SetGLat( ggi, 280, 1458, 1600, 27.09556 )
  1684. call SetGLat( ggi, 281, 1458, 1600, 26.87070 )
  1685. call SetGLat( ggi, 282, 1458, 1600, 26.64584 )
  1686. call SetGLat( ggi, 283, 1458, 1600, 26.42098 )
  1687. call SetGLat( ggi, 284, 1458, 1600, 26.19612 )
  1688. call SetGLat( ggi, 285, 1500, 1600, 25.97126 )
  1689. call SetGLat( ggi, 286, 1500, 1600, 25.74640 )
  1690. call SetGLat( ggi, 287, 1500, 1600, 25.52154 )
  1691. call SetGLat( ggi, 288, 1500, 1600, 25.29668 )
  1692. call SetGLat( ggi, 289, 1500, 1600, 25.07182 )
  1693. call SetGLat( ggi, 290, 1500, 1600, 24.84697 )
  1694. call SetGLat( ggi, 291, 1500, 1600, 24.62211 )
  1695. call SetGLat( ggi, 292, 1500, 1600, 24.39725 )
  1696. call SetGLat( ggi, 293, 1500, 1600, 24.17239 )
  1697. call SetGLat( ggi, 294, 1500, 1600, 23.94753 )
  1698. call SetGLat( ggi, 295, 1500, 1600, 23.72267 )
  1699. call SetGLat( ggi, 296, 1500, 1600, 23.49781 )
  1700. call SetGLat( ggi, 297, 1500, 1600, 23.27295 )
  1701. call SetGLat( ggi, 298, 1500, 1600, 23.04809 )
  1702. call SetGLat( ggi, 299, 1500, 1600, 22.82323 )
  1703. call SetGLat( ggi, 300, 1500, 1600, 22.59837 )
  1704. call SetGLat( ggi, 301, 1500, 1600, 22.37351 )
  1705. call SetGLat( ggi, 302, 1536, 1600, 22.14865 )
  1706. call SetGLat( ggi, 303, 1536, 1600, 21.92379 )
  1707. call SetGLat( ggi, 304, 1536, 1600, 21.69893 )
  1708. call SetGLat( ggi, 305, 1536, 1600, 21.47407 )
  1709. call SetGLat( ggi, 306, 1536, 1600, 21.24921 )
  1710. call SetGLat( ggi, 307, 1536, 1600, 21.02436 )
  1711. call SetGLat( ggi, 308, 1536, 1600, 20.79950 )
  1712. call SetGLat( ggi, 309, 1536, 1600, 20.57464 )
  1713. call SetGLat( ggi, 310, 1536, 1600, 20.34978 )
  1714. call SetGLat( ggi, 311, 1536, 1600, 20.12492 )
  1715. call SetGLat( ggi, 312, 1536, 1600, 19.90006 )
  1716. call SetGLat( ggi, 313, 1536, 1600, 19.67520 )
  1717. call SetGLat( ggi, 314, 1536, 1600, 19.45034 )
  1718. call SetGLat( ggi, 315, 1536, 1600, 19.22548 )
  1719. call SetGLat( ggi, 316, 1536, 1600, 19.00062 )
  1720. call SetGLat( ggi, 317, 1536, 1600, 18.77576 )
  1721. call SetGLat( ggi, 318, 1600, 1600, 18.55090 )
  1722. call SetGLat( ggi, 319, 1600, 1600, 18.32604 )
  1723. call SetGLat( ggi, 320, 1600, 1600, 18.10118 )
  1724. call SetGLat( ggi, 321, 1600, 1600, 17.87632 )
  1725. call SetGLat( ggi, 322, 1600, 1600, 17.65146 )
  1726. call SetGLat( ggi, 323, 1600, 1600, 17.42660 )
  1727. call SetGLat( ggi, 324, 1600, 1600, 17.20175 )
  1728. call SetGLat( ggi, 325, 1600, 1600, 16.97689 )
  1729. call SetGLat( ggi, 326, 1600, 1600, 16.75203 )
  1730. call SetGLat( ggi, 327, 1600, 1600, 16.52717 )
  1731. call SetGLat( ggi, 328, 1600, 1600, 16.30231 )
  1732. call SetGLat( ggi, 329, 1600, 1600, 16.07745 )
  1733. call SetGLat( ggi, 330, 1600, 1600, 15.85259 )
  1734. call SetGLat( ggi, 331, 1600, 1600, 15.62773 )
  1735. call SetGLat( ggi, 332, 1600, 1600, 15.40287 )
  1736. call SetGLat( ggi, 333, 1600, 1600, 15.17801 )
  1737. call SetGLat( ggi, 334, 1600, 1600, 14.95315 )
  1738. call SetGLat( ggi, 335, 1600, 1600, 14.72829 )
  1739. call SetGLat( ggi, 336, 1600, 1600, 14.50343 )
  1740. call SetGLat( ggi, 337, 1600, 1600, 14.27857 )
  1741. call SetGLat( ggi, 338, 1600, 1600, 14.05371 )
  1742. call SetGLat( ggi, 339, 1600, 1600, 13.82885 )
  1743. call SetGLat( ggi, 340, 1600, 1600, 13.60399 )
  1744. call SetGLat( ggi, 341, 1600, 1600, 13.37914 )
  1745. call SetGLat( ggi, 342, 1600, 1600, 13.15428 )
  1746. call SetGLat( ggi, 343, 1600, 1600, 12.92942 )
  1747. call SetGLat( ggi, 344, 1600, 1600, 12.70456 )
  1748. call SetGLat( ggi, 345, 1600, 1600, 12.47970 )
  1749. call SetGLat( ggi, 346, 1600, 1600, 12.25484 )
  1750. call SetGLat( ggi, 347, 1600, 1600, 12.02998 )
  1751. call SetGLat( ggi, 348, 1600, 1600, 11.80512 )
  1752. call SetGLat( ggi, 349, 1600, 1600, 11.58026 )
  1753. call SetGLat( ggi, 350, 1600, 1600, 11.35540 )
  1754. call SetGLat( ggi, 351, 1600, 1600, 11.13054 )
  1755. call SetGLat( ggi, 352, 1600, 1600, 10.90568 )
  1756. call SetGLat( ggi, 353, 1600, 1600, 10.68082 )
  1757. call SetGLat( ggi, 354, 1600, 1600, 10.45596 )
  1758. call SetGLat( ggi, 355, 1600, 1600, 10.23110 )
  1759. call SetGLat( ggi, 356, 1600, 1600, 10.00624 )
  1760. call SetGLat( ggi, 357, 1600, 1600, 9.78138 )
  1761. call SetGLat( ggi, 358, 1600, 1600, 9.55653 )
  1762. call SetGLat( ggi, 359, 1600, 1600, 9.33167 )
  1763. call SetGLat( ggi, 360, 1600, 1600, 9.10681 )
  1764. call SetGLat( ggi, 361, 1600, 1600, 8.88195 )
  1765. call SetGLat( ggi, 362, 1600, 1600, 8.65709 )
  1766. call SetGLat( ggi, 363, 1600, 1600, 8.43223 )
  1767. call SetGLat( ggi, 364, 1600, 1600, 8.20737 )
  1768. call SetGLat( ggi, 365, 1600, 1600, 7.98251 )
  1769. call SetGLat( ggi, 366, 1600, 1600, 7.75765 )
  1770. call SetGLat( ggi, 367, 1600, 1600, 7.53279 )
  1771. call SetGLat( ggi, 368, 1600, 1600, 7.30793 )
  1772. call SetGLat( ggi, 369, 1600, 1600, 7.08307 )
  1773. call SetGLat( ggi, 370, 1600, 1600, 6.85821 )
  1774. call SetGLat( ggi, 371, 1600, 1600, 6.63335 )
  1775. call SetGLat( ggi, 372, 1600, 1600, 6.40849 )
  1776. call SetGLat( ggi, 373, 1600, 1600, 6.18363 )
  1777. call SetGLat( ggi, 374, 1600, 1600, 5.95877 )
  1778. call SetGLat( ggi, 375, 1600, 1600, 5.73392 )
  1779. call SetGLat( ggi, 376, 1600, 1600, 5.50906 )
  1780. call SetGLat( ggi, 377, 1600, 1600, 5.28420 )
  1781. call SetGLat( ggi, 378, 1600, 1600, 5.05934 )
  1782. call SetGLat( ggi, 379, 1600, 1600, 4.83448 )
  1783. call SetGLat( ggi, 380, 1600, 1600, 4.60962 )
  1784. call SetGLat( ggi, 381, 1600, 1600, 4.38476 )
  1785. call SetGLat( ggi, 382, 1600, 1600, 4.15990 )
  1786. call SetGLat( ggi, 383, 1600, 1600, 3.93504 )
  1787. call SetGLat( ggi, 384, 1600, 1600, 3.71018 )
  1788. call SetGLat( ggi, 385, 1600, 1600, 3.48532 )
  1789. call SetGLat( ggi, 386, 1600, 1600, 3.26046 )
  1790. call SetGLat( ggi, 387, 1600, 1600, 3.03560 )
  1791. call SetGLat( ggi, 388, 1600, 1600, 2.81074 )
  1792. call SetGLat( ggi, 389, 1600, 1600, 2.58588 )
  1793. call SetGLat( ggi, 390, 1600, 1600, 2.36102 )
  1794. call SetGLat( ggi, 391, 1600, 1600, 2.13616 )
  1795. call SetGLat( ggi, 392, 1600, 1600, 1.91131 )
  1796. call SetGLat( ggi, 393, 1600, 1600, 1.68645 )
  1797. call SetGLat( ggi, 394, 1600, 1600, 1.46159 )
  1798. call SetGLat( ggi, 395, 1600, 1600, 1.23673 )
  1799. call SetGLat( ggi, 396, 1600, 1600, 1.01187 )
  1800. call SetGLat( ggi, 397, 1600, 1600, 0.78701 )
  1801. call SetGLat( ggi, 398, 1600, 1600, 0.56215 )
  1802. call SetGLat( ggi, 399, 1600, 1600, 0.33729 )
  1803. call SetGLat( ggi, 400, 1600, 1600, 0.11243 )
  1804. case default
  1805. write (*,'("ERROR - unsupported gg resolution : ",i4)') ggi%N
  1806. write (*,'("ERROR in ",a)') rname; status=1; return
  1807. end select
  1808. ! ! * lat of cell center for a row
  1809. ! allocate( ggi%clat(ggi%nrow) )
  1810. ! do j = 1, ggi%nrow
  1811. ! if ( j <= ggi%nlat ) then
  1812. ! ggi%clat(j) = ggi%glat(j)
  1813. ! else
  1814. ! ggi%clat(j) = ggi%glat(ggi%nrow+1-j)
  1815. ! end if
  1816. ! end do
  1817. ! * lat of cell bound for a row
  1818. allocate( ggi%blat_deg(0:ggi%nlat) )
  1819. ggi%blat_deg(0) = 90.0
  1820. do j = 1, ggi%nlat-1
  1821. ggi%blat_deg(j) = ( ggi%lat_deg(j) + ggi%lat_deg(j+1) )/2
  1822. end do
  1823. ggi%blat_deg(ggi%nlat) = -90.0
  1824. ! rad
  1825. allocate( ggi%blat(0:ggi%nlat) )
  1826. ggi%blat = ggi%blat_deg * deg2rad
  1827. ! * dlat of a cell
  1828. allocate( ggi%dlat_deg(1:ggi%nlat) )
  1829. ggi%dlat_deg = ggi%blat_deg(0:ggi%nlat-1) - ggi%blat_deg(1:ggi%nlat)
  1830. ! rad
  1831. allocate( ggi%dlat(1:ggi%nlat) )
  1832. ggi%dlat = ggi%dlat_deg * deg2rad
  1833. ! * total number of cells
  1834. ggi%np = sum( ggi%nlon )
  1835. ! * start and end indices for each row
  1836. allocate( ggi%i1(ggi%nlat) )
  1837. allocate( ggi%im(ggi%nlat) )
  1838. do j = 1, ggi%nlat
  1839. ggi%i1(j) = sum(ggi%nlon(1:j-1)) + 1
  1840. ggi%im(j) = sum(ggi%nlon(1:j))
  1841. end do
  1842. ! ! * row number for each cell
  1843. ! allocate( ggi%j(ggi%nrow) )
  1844. ! do j = 1, ggi%nrow
  1845. ! ggi%j(ggi%i1(j):ggi%im(j)) = j
  1846. ! end do
  1847. !
  1848. ! ! * lon of cell and center for each cell
  1849. ! allocate( ggi%clon(ggi%np) )
  1850. ! allocate( ggi%blon(0:ggi%np) )
  1851. ! do j = 1, ggi%nrow
  1852. ! dlon = 360.0/ggi%nlon(j)
  1853. ! ggi%clon(ggi%i1(j):ggi%im(j)) = (/ ((i-1)*dlon, i=1,ggi%nlon(j)) /)
  1854. ! ggi%clon(ggi%i1(j):ggi%im(j)) = (/ ((i-0.5)*dlon, i=0,ggi%nlon(j)) /)
  1855. ! end do
  1856. ! * area of cell in a row
  1857. ! rad^2 :
  1858. allocate( ggi%area(ggi%nlat) )
  1859. do j = 1, ggi%nlat
  1860. ggi%area(j) = ll_area( 0.0, ggi%dlon(j), ggi%blat(j-1), ggi%blat(j) )
  1861. end do
  1862. ! m^2 :
  1863. allocate( ggi%area_m2(ggi%nlat) )
  1864. ggi%area_m2 = ggi%area * ae**2
  1865. ! * mask to use only a few lines on the grid;
  1866. ! by default, use all:
  1867. ggi%latflag = .true.
  1868. ! ok
  1869. status = 0
  1870. end subroutine ggi_Init
  1871. !EOC
  1872. ! =
  1873. ! Set definition of Gaussian grid for two oposite latitudes.
  1874. ! This sets on row of the tables in
  1875. ! http://wms.ecmwf.int/documents/manuals/libraries
  1876. ! /interpolation/gaussianGridsFIS.html
  1877. !
  1878. ! latitude reduced regular latitude
  1879. ! number points points
  1880. ! ------- ------- ------- --------
  1881. ! 1 18 320 89.14152
  1882. ! 2 25 320 88.02943
  1883. ! 3 36 320 86.91077
  1884. ! :
  1885. !
  1886. subroutine SetGLat( ggi, j, nlon, nlon_reg, lat_deg )
  1887. use Binas, only : deg2rad
  1888. ! --- in/out --------------------------------
  1889. type(TggGridInfo), intent(inout) :: ggi
  1890. integer, intent(in) :: j
  1891. integer, intent(in) :: nlon
  1892. integer, intent(in) :: nlon_reg
  1893. real, intent(in) :: lat_deg
  1894. ! --- begin ---------------------------------
  1895. ggi%nlon_reg = nlon_reg
  1896. if ( ggi%reduced ) then
  1897. ggi%nlon(j) = nlon
  1898. else
  1899. ggi%nlon(j) = nlon_reg
  1900. end if
  1901. ggi%dlon_deg(j) = 360.0/ggi%nlon(j)
  1902. ggi%dlon(j) = ggi%dlon_deg(j) * deg2rad
  1903. ggi%lat_deg(j) = lat_deg
  1904. ggi%lat(j) = lat_deg * deg2rad
  1905. ggi%nlon(ggi%nlat+1-j) = ggi%nlon(j)
  1906. ggi%dlon_deg(ggi%nlat+1-j) = ggi%dlon_deg(j)
  1907. ggi%dlon(ggi%nlat+1-j) = ggi%dlon(j)
  1908. ggi%lat_deg(ggi%nlat+1-j) = -lat_deg
  1909. ggi%lat(ggi%nlat+1-j) = -lat_deg * deg2rad
  1910. end subroutine SetGLat
  1911. ! ===
  1912. subroutine ggi_Done( info, status )
  1913. ! --- in/out ---------------------------------
  1914. type(TggGridInfo), intent(inout) :: info
  1915. integer, intent(out) :: status
  1916. ! --- const ----------------------------------
  1917. !character(len=*), parameter :: rname = mname//', ggi_Init'
  1918. ! --- begin ---------------------------------
  1919. ! free memory
  1920. deallocate( info%lat )
  1921. deallocate( info%lat_deg )
  1922. deallocate( info%latflag )
  1923. deallocate( info%blat )
  1924. deallocate( info%blat_deg )
  1925. deallocate( info%dlat )
  1926. deallocate( info%dlat_deg )
  1927. deallocate( info%nlon )
  1928. deallocate( info%dlon )
  1929. deallocate( info%dlon_deg )
  1930. deallocate( info%i1 )
  1931. deallocate( info%im )
  1932. deallocate( info%area )
  1933. deallocate( info%area_m2 )
  1934. ! ok
  1935. status = 0
  1936. end subroutine ggi_Done
  1937. ! ===
  1938. subroutine GetLons( ggi, j, lons )
  1939. use Binas, only : deg2rad
  1940. ! --- in/out ------------------------------
  1941. type(TggGridInfo), intent(in) :: ggi
  1942. integer, intent(in) :: j
  1943. real, intent(out) :: lons(:)
  1944. ! --- local ----------------------------
  1945. integer :: i
  1946. integer :: nlon
  1947. ! --- begin ------------------------------
  1948. if ( j<1 .or. j>ggi%nlat ) then
  1949. print *, 'GetLons : j=',j,'not in range 1,',ggi%nlat
  1950. stop
  1951. end if
  1952. nlon = ggi%nlon(j)
  1953. if ( size(lons) /= nlon ) then
  1954. print *, 'GetLons : size(lons)=',size(lons), 'while nlon(',j,')=',nlon
  1955. stop
  1956. end if
  1957. do i = 1, nlon
  1958. lons(i) = 360.0*(i-1)/nlon * deg2rad
  1959. end do
  1960. end subroutine GetLons
  1961. ! ===
  1962. subroutine gg_Longitudes( ggi, gg )
  1963. use Binas, only : deg2rad
  1964. ! --- in/out ------------------------------
  1965. type(TggGridInfo), intent(in) :: ggi
  1966. real, intent(out) :: gg(:) ! deg
  1967. ! --- local ----------------------------
  1968. integer :: j
  1969. ! --- begin ------------------------------
  1970. call Check( ggi, gg )
  1971. ! loop over rows
  1972. do j = 1, ggi%nlat
  1973. ! fill lons for this row:
  1974. call GetLons( ggi, j, gg(ggi%i1(j):ggi%im(j)) ) ! rad
  1975. end do
  1976. ! convert to degrees:
  1977. gg = gg / deg2rad ! deg
  1978. end subroutine gg_Longitudes
  1979. ! ===
  1980. subroutine gg_Latitudes( ggi, gg )
  1981. ! --- in/out ------------------------------
  1982. type(TggGridInfo), intent(in) :: ggi
  1983. real, intent(out) :: gg(:) ! deg
  1984. ! --- local ----------------------------
  1985. integer :: j
  1986. ! --- begin ------------------------------
  1987. call Check( ggi, gg )
  1988. ! loop over rows
  1989. do j = 1, ggi%nlat
  1990. ! fill latitude for this row:
  1991. gg(ggi%i1(j):ggi%im(j)) = ggi%lat_deg(j) ! deg
  1992. end do
  1993. end subroutine gg_Latitudes
  1994. ! =============================================================
  1995. subroutine gg_Check( ggi, gg )
  1996. ! --- in/out ----------------------------------
  1997. type(TggGridInfo), intent(in) :: ggi
  1998. real, intent(in) :: gg(:)
  1999. ! --- begin ----------------------------------
  2000. ! check size of data:
  2001. if ( size(gg) /= ggi%np ) then
  2002. print *, 'ggrid_Check : data size',size(gg),'while expected',ggi%np
  2003. stop
  2004. end if
  2005. end subroutine gg_Check
  2006. ! =====================================================
  2007. subroutine gg_AreaOper( ggi, gg, oper, unit )
  2008. ! --- in/out ----------------------------------
  2009. type(TggGridInfo), intent(in) :: ggi
  2010. real, intent(inout) :: gg(:)
  2011. character(len=*), intent(in) :: unit, oper
  2012. ! --- local --------------------------------
  2013. integer :: j
  2014. integer :: i1, im
  2015. real :: cell_area
  2016. ! --- begin ----------------------------------
  2017. call Check( ggi, gg )
  2018. do j = 1, ggi%nlat
  2019. ! select correct area for cells in this row:
  2020. select case ( unit )
  2021. case ( 'rad2' )
  2022. cell_area = ggi%area(j)
  2023. case ( 'm2' )
  2024. cell_area = ggi%area_m2(j)
  2025. case default
  2026. print *, 'gg_AreaAverage : unknown unit "'//trim(unit)//'"'
  2027. stop
  2028. end select
  2029. ! range of cells in this row:
  2030. i1 = ggi%i1(j)
  2031. im = ggi%im(j)
  2032. ! assign or modify with cell area:
  2033. select case ( oper )
  2034. case ( '=' )
  2035. gg(i1:im) = cell_area
  2036. case ( '/' )
  2037. gg(i1:im) = gg(i1:im) / cell_area
  2038. case ( '*' )
  2039. gg(i1:im) = gg(i1:im) * cell_area
  2040. case default
  2041. print *, 'gg_AreaAverage : unknown operation "'//trim(oper)//'"'
  2042. stop
  2043. end select
  2044. end do
  2045. end subroutine gg_AreaOper
  2046. ! ===================================================
  2047. !
  2048. ! NOTE:
  2049. ! o order : lat, lon !
  2050. ! o unit : degrees !
  2051. !
  2052. real function gg_Eval_lat_lon( ggi, gg, lat, lon )
  2053. use Binas, only : deg2rad, pi
  2054. use Num, only : Interp_Lin, CircInterp_Lin
  2055. ! --- in/out -------------------------
  2056. type(TggGridInfo), intent(in) :: ggi
  2057. real, intent(in) :: gg(:)
  2058. real, intent(in) :: lon, lat ! rad
  2059. ! --- local --------------------------
  2060. real :: lonX
  2061. integer :: nlon, nlon_max
  2062. integer :: nlat
  2063. integer :: i1, im
  2064. real, allocatable :: lons(:)
  2065. real, allocatable :: gl(:)
  2066. real, allocatable :: gl_lat(:)
  2067. integer :: i, j
  2068. integer :: j1, jm
  2069. integer :: ilast
  2070. integer :: status
  2071. real :: res
  2072. ! --- begin --------------------------------
  2073. call Check( ggi, gg )
  2074. ! lon in [0,2pi)
  2075. lonX = lon
  2076. if ( lonX < 0 ) lonX = lonX + 2*pi
  2077. nlat = ggi%nlat
  2078. nlon_max = maxval(ggi%nlon)
  2079. ! ll in lon, gg in lat
  2080. allocate( gl(0:nlat+1) ); gl = 0.0
  2081. ! latitudes from northpole to southpole:
  2082. allocate( gl_lat(0:nlat+1) )
  2083. gl_lat(0) = 90.0 * deg2rad ! north pole (rad)
  2084. gl_lat(1:nlat) = ggi%lat ! (rad)
  2085. gl_lat(nlat+1) = -90.0 * deg2rad ! north pole (rad)
  2086. ! row in gg grid; doubled from -360.0 to 360.0
  2087. allocate( lons(nlon_max) ); lons = 0.0
  2088. ! select first and last Gaussian lat:
  2089. j1 = nlat
  2090. do
  2091. if ( (j1 == 1) .or. (ggi%lat(j1) > lat) ) exit
  2092. j1 = j1 - 1
  2093. end do
  2094. jm = 1
  2095. do
  2096. if ( (jm == nlat) .or. (ggi%lat(jm) < lat) ) exit
  2097. jm = jm + 1
  2098. end do
  2099. ! loop over Gaussian latitudes, from north to south!
  2100. do j = j1, jm
  2101. ! number of lon points at this latitude:
  2102. nlon = ggi%nlon(j)
  2103. ! start and end indices in grid point array
  2104. i1 = ggi%i1(j)
  2105. im = ggi%im(j)
  2106. ! lons in [0,2pi)
  2107. do i = 1, nlon
  2108. lons(i) = (i-1)*360.0/nlon
  2109. end do
  2110. lons(1:nlon) = lons(1:nlon) * deg2rad
  2111. ! set north pole (j=1 in gg, j=nlat+1 in gl)
  2112. if ( j == 1 ) then
  2113. gl(0) = sum(gg(i1:im))/nlon
  2114. end if
  2115. ! set south pole
  2116. if ( j == nlat ) then
  2117. gl(nlat+1) = sum(gg(i1:im))/nlon
  2118. end if
  2119. ! Interpolate over lon (circular arrays):
  2120. ilast = 1
  2121. call CircInterp_Lin( lons(1:nlon), 360.0*deg2rad, gg(i1:im), &
  2122. lonX, gl(j), ilast, status )
  2123. if (status/=0) stop 'ERROR in gg_Eval_lat_lon'
  2124. end do
  2125. ! Linear interpolation over lat;
  2126. ! negate lat axis to have increasing ax:
  2127. ilast = jm
  2128. call Interp_Lin( -1.0*gl_lat, gl, -1.0*lat, res, ilast, status )
  2129. if (status/=0) stop 'ERROR in gg_Eval_lat_lon'
  2130. gg_Eval_lat_lon = res
  2131. ! free memory
  2132. deallocate( gl )
  2133. deallocate( gl_lat )
  2134. deallocate( lons )
  2135. end function gg_Eval_lat_lon
  2136. ! ===================================================
  2137. ! Compute nabla.gg
  2138. !
  2139. ! d/dx for irregular discrete x:
  2140. !
  2141. !
  2142. ! ----+-------+----+-------------------
  2143. ! x-h1 x x+h2
  2144. !
  2145. !
  2146. ! 2 2
  2147. ! h2 h2 -h1 h1
  2148. ! - -- f(x-h1) + ------- f(x) + -- f(x+h2)
  2149. ! h1 h1 h2 h2
  2150. ! f'(x) ~ ----------------------------------------
  2151. ! h1 + h2
  2152. !
  2153. ! 2 2 2 2
  2154. ! - h2 f(x-h1) +(h2 -h1 )f(x) + h1 f(x+h2)
  2155. ! f'(x) ~ ----------------------------------------
  2156. ! h1 h2 (h1+h2)
  2157. !
  2158. ! 2 2
  2159. ! h2 [f(x)-f(x-h1)] + h1 [f(x+h2)-f(x)]
  2160. ! f'(x) ~ -------------------------------------
  2161. ! h1 h2 (h1+h2)
  2162. !
  2163. ! h2 h1
  2164. ! --[f(x)-f(x-h1)] + -- [f(x+h2)-f(x)]
  2165. ! h1 h2
  2166. ! f'(x) ~ -------------------------------------
  2167. ! h1 + h2
  2168. !
  2169. ! h2 f(x)-f(x-h1) h1 f(x+h2)-f(x)
  2170. ! f'(x) ~ ----- ------------ + ----- ------------
  2171. ! h1+h2 h1 h1+h2 h2
  2172. !
  2173. ! subroutine Nabla_gg( ggi, gg, nab )
  2174. !
  2175. ! ! --- in/out -----------------------------------
  2176. !
  2177. ! type(TggGridInfo), intent(in) :: ggi
  2178. ! real, intent(in) :: gg(:)
  2179. ! real, intent(out) :: nab(:,:)
  2180. !
  2181. ! ! --- local -----------------------------------
  2182. !
  2183. ! integer :: i, j
  2184. ! integer :: i1, im
  2185. ! real :: h1, h2
  2186. ! integer :: i1n, imn, nin
  2187. !
  2188. ! ! --- begin -----------------------------------
  2189. !
  2190. ! if ( size(nab,2) /= 2 ) then
  2191. ! print *, 'size nab should be (np,2)'
  2192. ! stop 'error in Nabla_gg'
  2193. ! end if
  2194. ! call Check( ggi, gg )
  2195. ! call Check( ggi, nab(:,1) )
  2196. ! call Check( ggi, nab(:,2) )
  2197. !
  2198. ! ! loop from north to south (!)
  2199. ! do j = 1, ggi%nlat
  2200. !
  2201. ! i1 = ggi%i1(j)
  2202. ! im = ggi%im(j)
  2203. !
  2204. ! ! dlon
  2205. ! nab(i1,1) = ( gg(i1+1) - gg(im) ) / (2*dlon)
  2206. ! do i = i1+1, im-1
  2207. ! nab(i,1) = ( gg(i+1) - gg(i-1) ) / (2*dlon)
  2208. ! end do
  2209. ! nab(im,1) = ( gg(i1) - gg(im-1) ) / (2*dlon)
  2210. !
  2211. ! ! dlat
  2212. ! stop 'poles'
  2213. !
  2214. ! ! previous row
  2215. ! if ( j == 1 ) then
  2216. ! ...
  2217. ! else
  2218. ! h1 = ggi%glat(j) - ggi%glat(j-1)
  2219. ! i1p = ggi%i1(j-1)
  2220. ! imp = ggi%im(j-1)
  2221. ! nip = imp - i1p + 2
  2222. ! xx1(0:nin) = (/ -ggi%lon(i1n+1), ggi%lon(i1n:imn) /)
  2223. ! yy1(0:nin) = (/ gg(imn) , gg(i1n:imn) /)
  2224. ! end if
  2225. !
  2226. ! ! next row
  2227. ! if ( j == ggi%nlat ) then
  2228. ! ...
  2229. ! then
  2230. ! h2 = ggi%glat(j+1) - ggi%glat(j)
  2231. ! i1n = ggi%i1(j+1)
  2232. ! imn = ggi%im(j+1)
  2233. ! nin = imn - i1n + 2
  2234. ! xx2(0:nin) = (/ -ggi%lon(i1n+1), ggi%lon(i1n:imn) /)
  2235. ! yy2(0:nin) = (/ gg(imn), gg(i1n:imn) /)
  2236. ! end if
  2237. !
  2238. ! do i = i1, im
  2239. !
  2240. ! y = gg(i)
  2241. !
  2242. ! ! interpolate previous and next row:
  2243. ! call linterp( xx1, yy1, lon(i), y1, ilast_prev )
  2244. ! call linterp( xx2, yy2, lon(i), y2, ilast_next )
  2245. !
  2246. ! ! h2 h1
  2247. ! ! --[f(x)-f(x-h1)] + -- [f(x+h2)-f(x)]
  2248. ! ! h1 h2
  2249. ! ! f'(x) ~ -------------------------------------
  2250. ! ! h1 + h2
  2251. ! !
  2252. !
  2253. ! nab(i,2) = ( (y-y1)*h2/h1 + (y2-y)*h1/h2 ) / (h1+h2)
  2254. !
  2255. ! end do
  2256. !
  2257. ! end do
  2258. !
  2259. ! end subroutine Nabla_gg
  2260. !
  2261. !
  2262. ! (d/dx,d/dy) . (u,v) -> du/dx + dv/dy
  2263. !
  2264. subroutine Divergence_gg( ggi, u, v, div )
  2265. use Binas, only : deg2rad
  2266. use Binas, only : ae
  2267. use Num, only : Interp_Lin
  2268. ! --- in/out -------------------------------
  2269. type(TggGridInfo), intent(in) :: ggi
  2270. real, intent(in) :: u(:), v(:)
  2271. real, intent(out) :: div(:)
  2272. ! --- local --------------------------------
  2273. integer :: status
  2274. integer :: j
  2275. integer :: i1, im
  2276. integer :: i, im1, ip1
  2277. integer :: nlon, nlon_max, n
  2278. integer :: nlon_curr
  2279. real :: lat
  2280. real, allocatable :: uu(:)
  2281. real :: dlon
  2282. real, allocatable :: lons(:), lons_temp(:)
  2283. real, allocatable :: vv_prev(:), vv_curr(:), vv_next(:), vv_temp(:)
  2284. real :: dlat_prev, dlat_next
  2285. real :: du_dx, dv_dy
  2286. ! --- begin ---------------------------------
  2287. call Check( ggi, u )
  2288. call Check( ggi, v )
  2289. call Check( ggi, div )
  2290. nlon_max = maxval( ggi%nlon )
  2291. allocate( lons(nlon_max) )
  2292. allocate( lons_temp(nlon_max) )
  2293. allocate( uu(0:nlon_max+1) )
  2294. allocate( vv_prev(nlon_max) )
  2295. allocate( vv_curr(nlon_max) )
  2296. allocate( vv_next(nlon_max) )
  2297. allocate( vv_temp(nlon_max) )
  2298. do j = 1, ggi%nlat
  2299. nlon = ggi%nlon(j)
  2300. i1 = ggi%i1(j)
  2301. im = ggi%im(j)
  2302. lat = ggi%lat(j)
  2303. call GetLons( ggi, j, lons(1:nlon) )
  2304. ! current row of u
  2305. !uu(0:nlon+1) = (/ u(im), u(i1:im), u(i1) /)
  2306. !>>> adhoc fix after xlf90 in debug mode complained:
  2307. uu(0) = u(im)
  2308. uu(1:nlon) = u(i1:im)
  2309. uu(nlon+1) = u(i1)
  2310. !<<<
  2311. ! current row of v
  2312. vv_curr(1:nlon) = v(i1:im)
  2313. ! previous row of v
  2314. if ( j == 1 ) then
  2315. n = 1
  2316. vv_prev(1:nlon) = sum(vv_curr(1:nlon))/nlon
  2317. dlat_prev = 90.0*deg2rad - ggi%lat(j)
  2318. else
  2319. n = ggi%nlon(j-1)
  2320. vv_temp(1:n) = v(ggi%i1(j-1):ggi%im(j-1))
  2321. if ( n == nlon ) then
  2322. vv_prev(1:nlon) = vv_temp(1:n)
  2323. else
  2324. call GetLons( ggi, j-1, lons_temp(1:n) )
  2325. call Interp_Lin( (/ lons_temp(1:n), lons_temp(1) /), &
  2326. (/ vv_temp(1:n), vv_temp(1) /), &
  2327. lons(1:nlon), vv_prev(1:nlon), status )
  2328. if (status/=0) stop 'ERROR in Divergence_gg'
  2329. end if
  2330. dlat_prev = ggi%lat(j-1) - ggi%lat(j)
  2331. end if
  2332. ! next row of v
  2333. if ( j == ggi%nlat ) then
  2334. n = 1
  2335. vv_next(1:nlon) = sum(vv_curr(1:nlon))/nlon
  2336. dlat_next = ggi%lat(j) + 90.0*deg2rad
  2337. else
  2338. n = ggi%nlon(j+1)
  2339. vv_temp(1:n) = v(ggi%i1(j+1):ggi%im(j+1))
  2340. if ( n == nlon ) then
  2341. vv_next(1:nlon) = vv_temp(1:n)
  2342. else
  2343. call GetLons( ggi, j+1, lons_temp(1:n) )
  2344. call Interp_Lin( (/ lons_temp(1:n), lons_temp(1) /), &
  2345. (/ vv_temp(1:n), vv_temp(1) /), &
  2346. lons(1:nlon), vv_next(1:nlon), status )
  2347. if (status/=0) stop 'ERROR in Divergence_gg'
  2348. end if
  2349. dlat_next = ggi%lat(j) - ggi%lat(j+1)
  2350. end if
  2351. ! loop over all cells in this row
  2352. do i = 1, nlon
  2353. dlon = ggi%dlon(j)
  2354. du_dx = ( uu(i+1) - uu(i-1) ) / (2*dlon*cos(lat)*ae)
  2355. ! h2 h1
  2356. ! --[f(x)-f(x-h1)] + -- [f(x+h2)-f(x)]
  2357. ! h1 h2
  2358. ! f'(x) ~ -------------------------------------
  2359. ! h1 + h2
  2360. dv_dy = ( (vv_curr(i)-vv_prev(i))*dlat_next/dlat_prev + &
  2361. (vv_next(i)-vv_curr(i))*dlat_prev/dlat_next ) &
  2362. / ( (dlat_prev+dlat_next)*ae )
  2363. div(i1-1+i) = du_dx + dv_dy
  2364. end do
  2365. end do
  2366. deallocate( lons )
  2367. deallocate( lons_temp )
  2368. deallocate( uu )
  2369. deallocate( vv_prev )
  2370. deallocate( vv_curr )
  2371. deallocate( vv_next )
  2372. deallocate( vv_temp )
  2373. end subroutine Divergence_gg
  2374. !
  2375. ! (d/dx,d/dy) . g -> (dg/dx,dg/dy)
  2376. !
  2377. subroutine Nabla_gg( ggi, gg, dgdx, dgdy )
  2378. use Binas, only : deg2rad
  2379. use Binas, only : ae
  2380. use Num, only : Interp_Lin
  2381. ! --- in/out -------------------------------
  2382. type(TggGridInfo), intent(in) :: ggi
  2383. real, intent(in) :: gg(:)
  2384. real, intent(out) :: dgdx(:), dgdy(:)
  2385. ! --- local --------------------------------
  2386. integer :: status
  2387. integer :: j
  2388. integer :: i1, im
  2389. integer :: i, im1, ip1
  2390. integer :: nlon, nlon_max, n
  2391. integer :: nlon_curr
  2392. real :: lat
  2393. real, allocatable :: uu(:)
  2394. real :: dlon
  2395. real, allocatable :: lons(:), lons_temp(:)
  2396. real, allocatable :: vv_prev(:), vv_curr(:), vv_next(:), vv_temp(:)
  2397. real :: dlat_prev, dlat_next
  2398. real :: du_dx, dv_dy
  2399. ! --- begin ---------------------------------
  2400. call Check( ggi, gg )
  2401. call Check( ggi, dgdx )
  2402. call Check( ggi, dgdy )
  2403. nlon_max = maxval( ggi%nlon )
  2404. allocate( lons(nlon_max) )
  2405. allocate( lons_temp(nlon_max) )
  2406. allocate( uu(0:nlon_max+1) )
  2407. allocate( vv_prev(nlon_max) )
  2408. allocate( vv_curr(nlon_max) )
  2409. allocate( vv_next(nlon_max) )
  2410. allocate( vv_temp(nlon_max) )
  2411. do j = 1, ggi%nlat
  2412. nlon = ggi%nlon(j)
  2413. i1 = ggi%i1(j)
  2414. im = ggi%im(j)
  2415. lat = ggi%lat(j)
  2416. call GetLons( ggi, j, lons(1:nlon) )
  2417. ! current row of u
  2418. uu(0:nlon+1) = (/ gg(im), gg(i1:im), gg(i1) /)
  2419. ! current row of v
  2420. vv_curr(1:nlon) = gg(i1:im)
  2421. ! previous row of v
  2422. if ( j == 1 ) then
  2423. n = 1
  2424. vv_prev(1:nlon+1) = sum(vv_curr(1:nlon))/nlon
  2425. dlat_prev = 90.0*deg2rad - ggi%lat(j)
  2426. else
  2427. n = ggi%nlon(j-1)
  2428. vv_temp(1:n) = gg(ggi%i1(j-1):ggi%im(j-1))
  2429. if ( n == nlon ) then
  2430. vv_prev(1:nlon) = vv_temp(1:n)
  2431. else
  2432. call GetLons( ggi, j-1, lons_temp(1:n) )
  2433. call Interp_Lin( (/ lons_temp(1:n), lons_temp(1) /), &
  2434. (/ vv_temp(1:n), vv_temp(1) /), &
  2435. lons(1:nlon), vv_prev(1:nlon), status )
  2436. if (status/=0) stop 'ERROR in Nabla_gg'
  2437. end if
  2438. dlat_prev = ggi%lat(j-1) - ggi%lat(j)
  2439. end if
  2440. ! next row of v
  2441. if ( j == ggi%nlat ) then
  2442. n = 1
  2443. vv_next(1:nlon) = sum(vv_curr(1:nlon))/nlon
  2444. dlat_next = ggi%lat(j) + 90.0*deg2rad
  2445. else
  2446. n = ggi%nlon(j+1)
  2447. vv_temp(1:n) = gg(ggi%i1(j+1):ggi%im(j+1))
  2448. if ( n == nlon ) then
  2449. vv_next(1:nlon) = vv_temp(1:n)
  2450. else
  2451. call GetLons( ggi, j+1, lons_temp(1:n) )
  2452. call Interp_Lin( (/ lons_temp(1:n), lons_temp(1) /), &
  2453. (/ vv_temp(1:n), vv_temp(1) /), &
  2454. lons(1:nlon), vv_next(1:nlon), status )
  2455. if (status/=0) stop 'ERROR in Nabla_gg'
  2456. end if
  2457. dlat_next = ggi%lat(j) - ggi%lat(j+1)
  2458. end if
  2459. ! loop over all cells in this row
  2460. do i = 1, nlon
  2461. dlon = ggi%dlon(j)
  2462. du_dx = ( uu(i+1) - uu(i-1) ) / (2*dlon*cos(lat)*ae)
  2463. ! h2 h1
  2464. ! --[f(x)-f(x-h1)] + -- [f(x+h2)-f(x)]
  2465. ! h1 h2
  2466. ! f'(x) ~ -------------------------------------
  2467. ! h1 + h2
  2468. dv_dy = ( (vv_curr(i)-vv_prev(i))*dlat_next/dlat_prev + &
  2469. (vv_next(i)-vv_curr(i))*dlat_prev/dlat_next ) &
  2470. / ( (dlat_prev+dlat_next)*ae )
  2471. dgdx(i1-1+i) = du_dx
  2472. dgdy(i1-1+i) = dv_dy
  2473. end do
  2474. end do
  2475. deallocate( lons )
  2476. deallocate( lons_temp )
  2477. deallocate( uu )
  2478. deallocate( vv_prev )
  2479. deallocate( vv_curr )
  2480. deallocate( vv_next )
  2481. deallocate( vv_temp )
  2482. end subroutine Nabla_gg
  2483. end module grid_type_gg