diff --git a/LIBTOOLS/tools/lfi2cdf/src/fieldtype.f90 b/LIBTOOLS/tools/lfi2cdf/src/fieldtype.f90 index 62a1b73a8b1cf119f9bf5335d12f8221658de10f..afcfa98948b760a82d6adf25c13459d8e5a646cf 100644 --- a/LIBTOOLS/tools/lfi2cdf/src/fieldtype.f90 +++ b/LIBTOOLS/tools/lfi2cdf/src/fieldtype.f90 @@ -8,7 +8,7 @@ MODULE MODE_FIELDTYPE TYPE field CHARACTER(LEN=FM_FIELD_SIZE) :: name ! Le nom de l'article LFI - INTEGER :: TYPE ! Type :entier(INT) ou reel(FLOAT) + INTEGER :: TYPE ! Type :entier(TYPEINT) ou reel(TYPEREAL) INTEGER :: dim ! Dimension de l'article END TYPE field @@ -17,8 +17,8 @@ MODULE MODE_FIELDTYPE ! Les champs contenant %TDATE et %TIME sont traites en dur ! dans la routine de recherche de type TYPE(field), DIMENSION(2), PARAMETER :: datefield = (/& - field('%TDA', INT, D0), & - field('%TIM', FLOAT, D0) & + field('%TDA', TYPEINT, D0), & + field('%TIM', TYPEREAL, D0) & /) TYPE(field), DIMENSION(219), SAVE :: sysfield @@ -27,225 +27,225 @@ MODULE MODE_FIELDTYPE CONTAINS SUBROUTINE init_sysfield() -sysfield(1) = field('LBXSVMxxx', FLOAT , D0) -sysfield(2) = field('LBYSVMxxx', FLOAT , D0) -sysfield(3) = field('LBXUM', FLOAT, D0) -sysfield(4) = field('LBYUM', FLOAT, D0) -sysfield(5) = field('LBXVM', FLOAT, D0) -sysfield(6) = field('LBYVM', FLOAT, D0) -sysfield(7) = field('LBXWM', FLOAT, D0) -sysfield(8) = field('LBYWM', FLOAT, D0) -sysfield(9) = field('LBXTHM', FLOAT, D0) -sysfield(10) = field('LBYTHM', FLOAT, D0) -sysfield(11) = field('LBXRVM', FLOAT, D0) -sysfield(12) = field('LBYRVM', FLOAT, D0) -sysfield(13) = field('AVG_ZS', FLOAT, D0) -sysfield(14) = field('SIL_ZS', FLOAT, D0) -sysfield(15) = field('AOSIP', FLOAT, D0) -sysfield(16) = field('AOSIM', FLOAT, D0) -sysfield(17) = field('AOSJP', FLOAT, D0) -sysfield(18) = field('AOSJM', FLOAT, D0) -sysfield(19) = field('HO2IP', FLOAT, D0) -sysfield(20) = field('HO2IM', FLOAT, D0) -sysfield(21) = field('HO2JP', FLOAT, D0) -sysfield(22) = field('HO2JM', FLOAT, D0) -sysfield(23) = field('RIMX',INT, D0) -sysfield(24) = field('RIMY',INT, D0) -sysfield(25) = field('HORELAX_UVWTH',BOOL, D0) -sysfield(26) = field('HORELAX_R',BOOL, D0) -sysfield(27) = field('I2D_XY', INT, D0) -sysfield(28) = field('MENU_BUDGET',TEXT, D0) -sysfield(29) = field('IE', INT, D0) -sysfield(30) = field('ZR', FLOAT, D0) -sysfield(31) = field('GOK', BOOL, D0) -sysfield(32) = field('YTEXT', TEXT, D0) -sysfield(33) = field('X1D', FLOAT, D0) -sysfield(34) = field('I1D', INT, D0) -sysfield(35) = field('DEB', INT, D0) -sysfield(36) = field('3D1', FLOAT, D0) -sysfield(37) = field('3D2', FLOAT, D0) -sysfield(38) = field('3D3', FLOAT, D0) -sysfield(39) = field('3D4', FLOAT, D0) -sysfield(40) = field('3D5', FLOAT, D0) -sysfield(41) = field('RHODREFZ', FLOAT, D0) -sysfield(42) = field('RSVS', FLOAT, D0) -sysfield(43) = field('RUS', FLOAT, D0) -sysfield(44) = field('MY_NAME', TEXT, D0) -sysfield(45) = field('DAD_NAME', TEXT, D0) -sysfield(46) = field('STORAGE_TYPE', TEXT, D0) -sysfield(47) = field('IMAX', INT, D0) -sysfield(48) = field('JMAX', INT, D0) -sysfield(49) = field('KMAX', INT, D0) -sysfield(50) = field('RPK', FLOAT, D0) -sysfield(51) = field('NEB', FLOAT , D0) -sysfield(52) = field('LONOR', FLOAT, D0) -sysfield(53) = field('LATOR', FLOAT, D0) -sysfield(54) = field('THINSHELL', BOOL, D0) -sysfield(55) = field('LAT0', FLOAT, D0) -sysfield(56) = field('LON0', FLOAT, D0) -sysfield(57) = field('BETA', FLOAT, D0) -sysfield(58) = field('XHAT', FLOAT, D0) -sysfield(59) = field('YHAT', FLOAT, D0) -sysfield(60) = field('ZHAT', FLOAT, D0) -sysfield(61) = field('ZS', FLOAT, D0) -sysfield(62) = field('CARTESIAN', BOOL, D0) -sysfield(63) = field('UM', FLOAT, D0) -sysfield(64) = field('VM', FLOAT, D0) -sysfield(65) = field('WM', FLOAT, D0) -sysfield(66) = field('THM', FLOAT, D0) -sysfield(67) = field('TKEM', FLOAT, D0) -sysfield(68) = field('EPSM', FLOAT, D0) -sysfield(69) = field('PABSM',FLOAT, D0) -sysfield(70) = field('RVM', FLOAT, D0) -sysfield(71) = field('RCM', FLOAT, D0) -sysfield(72) = field('RRM', FLOAT, D0) -sysfield(73) = field('RIM', FLOAT, D0) -sysfield(74) = field('RSM', FLOAT, D0) -sysfield(75) = field('RGM', FLOAT, D0) -sysfield(76) = field('RHM', FLOAT, D0) -sysfield(77) = field('SVMxxx', FLOAT, D0) -sysfield(78) = field('LSUM', FLOAT, D0) -sysfield(79) = field('LSVM', FLOAT, D0) -sysfield(80) = field('LSWM',FLOAT , D0) -sysfield(81) = field('LSTHM',FLOAT, D0) -sysfield(82) = field('LSRVM',FLOAT, D0) -sysfield(83) = field('LSXTKEM',FLOAT, D0) -sysfield(84) = field('LSYTKEM',FLOAT, D0) -sysfield(85) = field('LSXEPSM',FLOAT, D0) -sysfield(86) = field('LSYEPSM',FLOAT, D0) -sysfield(87) = field('LSXRCM',FLOAT , D0) -sysfield(88) = field('LSYRCM', FLOAT, D0) -sysfield(89) = field('LSXRRM', FLOAT, D0) -sysfield(90) = field('LSYRRM', FLOAT, D0) -sysfield(91) = field('LSXRIM', FLOAT, D0) -sysfield(92) = field('LSYRIM', FLOAT, D0) -sysfield(93) = field('LSXRSM', FLOAT, D0) -sysfield(94) = field('LSYRSM', FLOAT, D0) -sysfield(95) = field('LSXRGM', FLOAT, D0) -sysfield(96) = field('LSYRGM', FLOAT, D0) -sysfield(97) = field('LSXRHM', FLOAT, D0) -sysfield(98) = field('LSYRHM', FLOAT, D0) -sysfield(99) = field('LSXSVMxxx', FLOAT, D0) -sysfield(100) = field('LSYSVMxxx', FLOAT, D0) -sysfield(101) = field('UT',FLOAT, D0) -sysfield(102) = field('VT',FLOAT, D0) -sysfield(103) = field('WT',FLOAT, D0) -sysfield(104) = field('THT',FLOAT, D0) -sysfield(105) = field('TKET',FLOAT, D0) -sysfield(106) = field('EPST',FLOAT, D0) -sysfield(107) = field('PABST',FLOAT, D0) -sysfield(108) = field('RVT',FLOAT, D0) -sysfield(109) = field('RCT',FLOAT, D0) -sysfield(110) = field('RRT',FLOAT, D0) -sysfield(111) = field('RIT',FLOAT, D0) -sysfield(112) = field('CIT',FLOAT, D0) -sysfield(113) = field('RST',FLOAT, D0) -sysfield(114) = field('RGT',FLOAT, D0) -sysfield(115) = field('RHT',FLOAT, D0) -sysfield(116) = field('SVTxxx',FLOAT, D0) -sysfield(117) = field('DRYMASST',FLOAT, D0) -sysfield(118) = field('SRCM',FLOAT, D0) -sysfield(119) = field('SRCT',FLOAT, D0) -sysfield(120) = field('SIGS',FLOAT, D0) -sysfield(121) = field('RHOREFZ',FLOAT, D0) -sysfield(122) = field('THVREFZ',FLOAT, D0) -sysfield(123) = field('EXNTOP',FLOAT, D0) -sysfield(124) = field('RESA', FLOAT , D0) -sysfield(125) = field('Z0SEA', FLOAT , D0) -sysfield(126) = field('TS', FLOAT , D0) -sysfield(127) = field('WG', FLOAT , D0) -sysfield(128) = field('SST', FLOAT , D0) -sysfield(129) = field('T2', FLOAT , D0) -sysfield(130) = field('W2', FLOAT , D0) -sysfield(131) = field('WR', FLOAT , D0) -sysfield(132) = field('WS', FLOAT , D0) -sysfield(133) = field('ALBS', FLOAT , D0) -sysfield(134) = field('RHOS', FLOAT , D0) -sysfield(135) = field('LAND', FLOAT , D0) -sysfield(136) = field('SEA', FLOAT , D0) -sysfield(137) = field('Z0VEG', FLOAT , D0) -sysfield(138) = field('Z0HVEG', FLOAT , D0) -sysfield(139) = field('Z0REL', FLOAT , D0) -sysfield(140) = field('Z0EFFIP', FLOAT , D0) -sysfield(141) = field('Z0EFFIM', FLOAT , D0) -sysfield(142) = field('Z0EFFJP', FLOAT , D0) -sysfield(143) = field('Z0EFFJM', FLOAT , D0) -sysfield(144) = field('SSO_STDEV', FLOAT , D0) -sysfield(145) = field('SSO_ANIS', FLOAT , D0) -sysfield(146) = field('SSO_DIRECTION', FLOAT , D0) -sysfield(147) = field('SSO_SLOPE', FLOAT , D0) -sysfield(148) = field('ALBVIS', FLOAT , D0) -sysfield(149) = field('ALBNIR', FLOAT , D0) -sysfield(150) = field('EMIS', FLOAT , D0) -sysfield(151) = field('CLAY', FLOAT , D0) -sysfield(152) = field('SAND', FLOAT , D0) -sysfield(153) = field('D2', FLOAT , D0) -sysfield(154) = field('VEG', FLOAT , D0) -sysfield(155) = field('LAI', FLOAT , D0) -sysfield(156) = field('RSMIN', FLOAT , D0) -sysfield(157) = field('GAMMA', FLOAT , D0) -sysfield(158) = field('RGL', FLOAT , D0) -sysfield(159) = field('CV', FLOAT , D0) -sysfield(160) = field('SFTHT', FLOAT , D0) -sysfield(161) = field('SFTHP', FLOAT , D0) -sysfield(162) = field('SFRT', FLOAT , D0) -sysfield(163) = field('SFRP', FLOAT , D0) -sysfield(164) = field('SFSVT', FLOAT , D0) -sysfield(165) = field('SFSVP', FLOAT , D0) -sysfield(166) = field('DTHRAD', FLOAT , D0) -sysfield(167) = field('SRFLWD', FLOAT , D0) -sysfield(168) = field('SRFSWD', FLOAT , D0) -sysfield(169) = field('CLDFR', FLOAT , D0) -sysfield(170) = field('COUNTCONV', INT , D0) -sysfield(171) = field('DTHCONV', FLOAT , D0) -sysfield(172) = field('DRVCONV', FLOAT , D0) -sysfield(173) = field('DRCCONV', FLOAT , D0) -sysfield(174) = field('DRICONV', FLOAT , D0) -sysfield(175) = field('PRCONV', FLOAT , D0) -sysfield(176) = field('PACCONV', FLOAT , D0) -sysfield(177) = field('WSUBCONV', FLOAT , D0) -sysfield(178) = field('INPRR', FLOAT , D0) -sysfield(179) = field('ACPRR', FLOAT , D0) -sysfield(180) = field('INPRS', FLOAT , D0) -sysfield(181) = field('ACPRS', FLOAT , D0) -sysfield(182) = field('INPRG', FLOAT , D0) -sysfield(183) = field('ACPRG', FLOAT , D0) -sysfield(184) = field('INPRT', FLOAT , D0) -sysfield(185) = field('ACPRT', FLOAT , D0) -sysfield(186) = field('FRC', INT, D0) -sysfield(187) = field('UFRCxx', FLOAT , D0) -sysfield(188) = field('VFRCxx', FLOAT , D0) -sysfield(189) = field('WFRCxx', FLOAT , D0) -sysfield(190) = field('THFRCxx', FLOAT , D0) -sysfield(191) = field('RVFRCxx', FLOAT , D0) -sysfield(192) = field('GXRVFRCxx', FLOAT , D0) -sysfield(193) = field('GYRVFRCxx', FLOAT , D0) -sysfield(194) = field('GXTHFRCxx', FLOAT , D0) -sysfield(195) = field('GYTHFRCxx', FLOAT , D0) -sysfield(196) = field('DUMMY_GRxxx', FLOAT , D0) -sysfield(197) = field('MASDEV', INT , D0) -sysfield(198) = field('EMISFILE_GR_NBR', INT , D0) -sysfield(199) = field('EMISPEC_GR_NBR', INT , D0) -sysfield(200) = field('EMISNAMExxx', TEXT , D0) -sysfield(201) = field('EMISTIMESxxx', INT , D0) -sysfield(202) = field('DUMMY_GR_NBR', INT , D0) -sysfield(203) = field('COVERxxx', FLOAT , D0) -sysfield(204) = field('TGx', FLOAT, D0) -sysfield(205) = field('T_ROOFx', FLOAT, D0) -sysfield(206) = field('T_ROADx', FLOAT, D0) -sysfield(207) = field('T_WALLx', FLOAT, D0) -sysfield(208) = field('WGx', FLOAT, D0) -sysfield(209) = field('WGIx', FLOAT, D0) -sysfield(210) = field('MAX_ZS', FLOAT, D0) -sysfield(211) = field('MIN_ZS', FLOAT, D0) -sysfield(212) = field('XOR', INT, D0) -sysfield(213) = field('YOR', INT, D0) -sysfield(214) = field('DXRATIO', INT, D0) -sysfield(215) = field('DYRATIO', INT, D0) -sysfield(216) = field('PATCH_NUMBER', INT, D0) -sysfield(217) = field('BUGFIX', INT, D0) -sysfield(218) = field('BIBUSER', TEXT, D0) -sysfield(219) = field('LFI_COMPRESSED', INT, D0) +sysfield(1) = field('LBXSVMxxx', TYPEREAL , D0) +sysfield(2) = field('LBYSVMxxx', TYPEREAL , D0) +sysfield(3) = field('LBXUM', TYPEREAL, D0) +sysfield(4) = field('LBYUM', TYPEREAL, D0) +sysfield(5) = field('LBXVM', TYPEREAL, D0) +sysfield(6) = field('LBYVM', TYPEREAL, D0) +sysfield(7) = field('LBXWM', TYPEREAL, D0) +sysfield(8) = field('LBYWM', TYPEREAL, D0) +sysfield(9) = field('LBXTHM', TYPEREAL, D0) +sysfield(10) = field('LBYTHM', TYPEREAL, D0) +sysfield(11) = field('LBXRVM', TYPEREAL, D0) +sysfield(12) = field('LBYRVM', TYPEREAL, D0) +sysfield(13) = field('AVG_ZS', TYPEREAL, D0) +sysfield(14) = field('SIL_ZS', TYPEREAL, D0) +sysfield(15) = field('AOSIP', TYPEREAL, D0) +sysfield(16) = field('AOSIM', TYPEREAL, D0) +sysfield(17) = field('AOSJP', TYPEREAL, D0) +sysfield(18) = field('AOSJM', TYPEREAL, D0) +sysfield(19) = field('HO2IP', TYPEREAL, D0) +sysfield(20) = field('HO2IM', TYPEREAL, D0) +sysfield(21) = field('HO2JP', TYPEREAL, D0) +sysfield(22) = field('HO2JM', TYPEREAL, D0) +sysfield(23) = field('RIMX',TYPEINT, D0) +sysfield(24) = field('RIMY',TYPEINT, D0) +sysfield(25) = field('HORELAX_UVWTH',TYPELOG, D0) +sysfield(26) = field('HORELAX_R',TYPELOG, D0) +sysfield(27) = field('I2D_XY', TYPEINT, D0) +sysfield(28) = field('MENU_BUDGET',TYPECHAR, D0) +sysfield(29) = field('IE', TYPEINT, D0) +sysfield(30) = field('ZR', TYPEREAL, D0) +sysfield(31) = field('GOK', TYPELOG, D0) +sysfield(32) = field('YTEXT', TYPECHAR, D0) +sysfield(33) = field('X1D', TYPEREAL, D0) +sysfield(34) = field('I1D', TYPEINT, D0) +sysfield(35) = field('DEB', TYPEINT, D0) +sysfield(36) = field('3D1', TYPEREAL, D0) +sysfield(37) = field('3D2', TYPEREAL, D0) +sysfield(38) = field('3D3', TYPEREAL, D0) +sysfield(39) = field('3D4', TYPEREAL, D0) +sysfield(40) = field('3D5', TYPEREAL, D0) +sysfield(41) = field('RHODREFZ', TYPEREAL, D0) +sysfield(42) = field('RSVS', TYPEREAL, D0) +sysfield(43) = field('RUS', TYPEREAL, D0) +sysfield(44) = field('MY_NAME', TYPECHAR, D0) +sysfield(45) = field('DAD_NAME', TYPECHAR, D0) +sysfield(46) = field('STORAGE_TYPE', TYPECHAR, D0) +sysfield(47) = field('IMAX', TYPEINT, D0) +sysfield(48) = field('JMAX', TYPEINT, D0) +sysfield(49) = field('KMAX', TYPEINT, D0) +sysfield(50) = field('RPK', TYPEREAL, D0) +sysfield(51) = field('NEB', TYPEREAL , D0) +sysfield(52) = field('LONOR', TYPEREAL, D0) +sysfield(53) = field('LATOR', TYPEREAL, D0) +sysfield(54) = field('THINSHELL', TYPELOG, D0) +sysfield(55) = field('LAT0', TYPEREAL, D0) +sysfield(56) = field('LON0', TYPEREAL, D0) +sysfield(57) = field('BETA', TYPEREAL, D0) +sysfield(58) = field('XHAT', TYPEREAL, D0) +sysfield(59) = field('YHAT', TYPEREAL, D0) +sysfield(60) = field('ZHAT', TYPEREAL, D0) +sysfield(61) = field('ZS', TYPEREAL, D0) +sysfield(62) = field('CARTESIAN', TYPELOG, D0) +sysfield(63) = field('UM', TYPEREAL, D0) +sysfield(64) = field('VM', TYPEREAL, D0) +sysfield(65) = field('WM', TYPEREAL, D0) +sysfield(66) = field('THM', TYPEREAL, D0) +sysfield(67) = field('TKEM', TYPEREAL, D0) +sysfield(68) = field('EPSM', TYPEREAL, D0) +sysfield(69) = field('PABSM',TYPEREAL, D0) +sysfield(70) = field('RVM', TYPEREAL, D0) +sysfield(71) = field('RCM', TYPEREAL, D0) +sysfield(72) = field('RRM', TYPEREAL, D0) +sysfield(73) = field('RIM', TYPEREAL, D0) +sysfield(74) = field('RSM', TYPEREAL, D0) +sysfield(75) = field('RGM', TYPEREAL, D0) +sysfield(76) = field('RHM', TYPEREAL, D0) +sysfield(77) = field('SVMxxx', TYPEREAL, D0) +sysfield(78) = field('LSUM', TYPEREAL, D0) +sysfield(79) = field('LSVM', TYPEREAL, D0) +sysfield(80) = field('LSWM',TYPEREAL , D0) +sysfield(81) = field('LSTHM',TYPEREAL, D0) +sysfield(82) = field('LSRVM',TYPEREAL, D0) +sysfield(83) = field('LSXTKEM',TYPEREAL, D0) +sysfield(84) = field('LSYTKEM',TYPEREAL, D0) +sysfield(85) = field('LSXEPSM',TYPEREAL, D0) +sysfield(86) = field('LSYEPSM',TYPEREAL, D0) +sysfield(87) = field('LSXRCM',TYPEREAL , D0) +sysfield(88) = field('LSYRCM', TYPEREAL, D0) +sysfield(89) = field('LSXRRM', TYPEREAL, D0) +sysfield(90) = field('LSYRRM', TYPEREAL, D0) +sysfield(91) = field('LSXRIM', TYPEREAL, D0) +sysfield(92) = field('LSYRIM', TYPEREAL, D0) +sysfield(93) = field('LSXRSM', TYPEREAL, D0) +sysfield(94) = field('LSYRSM', TYPEREAL, D0) +sysfield(95) = field('LSXRGM', TYPEREAL, D0) +sysfield(96) = field('LSYRGM', TYPEREAL, D0) +sysfield(97) = field('LSXRHM', TYPEREAL, D0) +sysfield(98) = field('LSYRHM', TYPEREAL, D0) +sysfield(99) = field('LSXSVMxxx', TYPEREAL, D0) +sysfield(100) = field('LSYSVMxxx', TYPEREAL, D0) +sysfield(101) = field('UT',TYPEREAL, D0) +sysfield(102) = field('VT',TYPEREAL, D0) +sysfield(103) = field('WT',TYPEREAL, D0) +sysfield(104) = field('THT',TYPEREAL, D0) +sysfield(105) = field('TKET',TYPEREAL, D0) +sysfield(106) = field('EPST',TYPEREAL, D0) +sysfield(107) = field('PABST',TYPEREAL, D0) +sysfield(108) = field('RVT',TYPEREAL, D0) +sysfield(109) = field('RCT',TYPEREAL, D0) +sysfield(110) = field('RRT',TYPEREAL, D0) +sysfield(111) = field('RIT',TYPEREAL, D0) +sysfield(112) = field('CIT',TYPEREAL, D0) +sysfield(113) = field('RST',TYPEREAL, D0) +sysfield(114) = field('RGT',TYPEREAL, D0) +sysfield(115) = field('RHT',TYPEREAL, D0) +sysfield(116) = field('SVTxxx',TYPEREAL, D0) +sysfield(117) = field('DRYMASST',TYPEREAL, D0) +sysfield(118) = field('SRCM',TYPEREAL, D0) +sysfield(119) = field('SRCT',TYPEREAL, D0) +sysfield(120) = field('SIGS',TYPEREAL, D0) +sysfield(121) = field('RHOREFZ',TYPEREAL, D0) +sysfield(122) = field('THVREFZ',TYPEREAL, D0) +sysfield(123) = field('EXNTOP',TYPEREAL, D0) +sysfield(124) = field('RESA', TYPEREAL , D0) +sysfield(125) = field('Z0SEA', TYPEREAL , D0) +sysfield(126) = field('TS', TYPEREAL , D0) +sysfield(127) = field('WG', TYPEREAL , D0) +sysfield(128) = field('SST', TYPEREAL , D0) +sysfield(129) = field('T2', TYPEREAL , D0) +sysfield(130) = field('W2', TYPEREAL , D0) +sysfield(131) = field('WR', TYPEREAL , D0) +sysfield(132) = field('WS', TYPEREAL , D0) +sysfield(133) = field('ALBS', TYPEREAL , D0) +sysfield(134) = field('RHOS', TYPEREAL , D0) +sysfield(135) = field('LAND', TYPEREAL , D0) +sysfield(136) = field('SEA', TYPEREAL , D0) +sysfield(137) = field('Z0VEG', TYPEREAL , D0) +sysfield(138) = field('Z0HVEG', TYPEREAL , D0) +sysfield(139) = field('Z0REL', TYPEREAL , D0) +sysfield(140) = field('Z0EFFIP', TYPEREAL , D0) +sysfield(141) = field('Z0EFFIM', TYPEREAL , D0) +sysfield(142) = field('Z0EFFJP', TYPEREAL , D0) +sysfield(143) = field('Z0EFFJM', TYPEREAL , D0) +sysfield(144) = field('SSO_STDEV', TYPEREAL , D0) +sysfield(145) = field('SSO_ANIS', TYPEREAL , D0) +sysfield(146) = field('SSO_DIRECTION', TYPEREAL , D0) +sysfield(147) = field('SSO_SLOPE', TYPEREAL , D0) +sysfield(148) = field('ALBVIS', TYPEREAL , D0) +sysfield(149) = field('ALBNIR', TYPEREAL , D0) +sysfield(150) = field('EMIS', TYPEREAL , D0) +sysfield(151) = field('CLAY', TYPEREAL , D0) +sysfield(152) = field('SAND', TYPEREAL , D0) +sysfield(153) = field('D2', TYPEREAL , D0) +sysfield(154) = field('VEG', TYPEREAL , D0) +sysfield(155) = field('LAI', TYPEREAL , D0) +sysfield(156) = field('RSMIN', TYPEREAL , D0) +sysfield(157) = field('GAMMA', TYPEREAL , D0) +sysfield(158) = field('RGL', TYPEREAL , D0) +sysfield(159) = field('CV', TYPEREAL , D0) +sysfield(160) = field('SFTHT', TYPEREAL , D0) +sysfield(161) = field('SFTHP', TYPEREAL , D0) +sysfield(162) = field('SFRT', TYPEREAL , D0) +sysfield(163) = field('SFRP', TYPEREAL , D0) +sysfield(164) = field('SFSVT', TYPEREAL , D0) +sysfield(165) = field('SFSVP', TYPEREAL , D0) +sysfield(166) = field('DTHRAD', TYPEREAL , D0) +sysfield(167) = field('SRFLWD', TYPEREAL , D0) +sysfield(168) = field('SRFSWD', TYPEREAL , D0) +sysfield(169) = field('CLDFR', TYPEREAL , D0) +sysfield(170) = field('COUNTCONV', TYPEINT , D0) +sysfield(171) = field('DTHCONV', TYPEREAL , D0) +sysfield(172) = field('DRVCONV', TYPEREAL , D0) +sysfield(173) = field('DRCCONV', TYPEREAL , D0) +sysfield(174) = field('DRICONV', TYPEREAL , D0) +sysfield(175) = field('PRCONV', TYPEREAL , D0) +sysfield(176) = field('PACCONV', TYPEREAL , D0) +sysfield(177) = field('WSUBCONV', TYPEREAL , D0) +sysfield(178) = field('INPRR', TYPEREAL , D0) +sysfield(179) = field('ACPRR', TYPEREAL , D0) +sysfield(180) = field('INPRS', TYPEREAL , D0) +sysfield(181) = field('ACPRS', TYPEREAL , D0) +sysfield(182) = field('INPRG', TYPEREAL , D0) +sysfield(183) = field('ACPRG', TYPEREAL , D0) +sysfield(184) = field('INPRT', TYPEREAL , D0) +sysfield(185) = field('ACPRT', TYPEREAL , D0) +sysfield(186) = field('FRC', TYPEINT, D0) +sysfield(187) = field('UFRCxx', TYPEREAL , D0) +sysfield(188) = field('VFRCxx', TYPEREAL , D0) +sysfield(189) = field('WFRCxx', TYPEREAL , D0) +sysfield(190) = field('THFRCxx', TYPEREAL , D0) +sysfield(191) = field('RVFRCxx', TYPEREAL , D0) +sysfield(192) = field('GXRVFRCxx', TYPEREAL , D0) +sysfield(193) = field('GYRVFRCxx', TYPEREAL , D0) +sysfield(194) = field('GXTHFRCxx', TYPEREAL , D0) +sysfield(195) = field('GYTHFRCxx', TYPEREAL , D0) +sysfield(196) = field('DUMMY_GRxxx', TYPEREAL , D0) +sysfield(197) = field('MASDEV', TYPEINT , D0) +sysfield(198) = field('EMISFILE_GR_NBR', TYPEINT , D0) +sysfield(199) = field('EMISPEC_GR_NBR', TYPEINT , D0) +sysfield(200) = field('EMISNAMExxx', TYPECHAR , D0) +sysfield(201) = field('EMISTIMESxxx', TYPEINT , D0) +sysfield(202) = field('DUMMY_GR_NBR', TYPEINT , D0) +sysfield(203) = field('COVERxxx', TYPEREAL , D0) +sysfield(204) = field('TGx', TYPEREAL, D0) +sysfield(205) = field('T_ROOFx', TYPEREAL, D0) +sysfield(206) = field('T_ROADx', TYPEREAL, D0) +sysfield(207) = field('T_WALLx', TYPEREAL, D0) +sysfield(208) = field('WGx', TYPEREAL, D0) +sysfield(209) = field('WGIx', TYPEREAL, D0) +sysfield(210) = field('MAX_ZS', TYPEREAL, D0) +sysfield(211) = field('MIN_ZS', TYPEREAL, D0) +sysfield(212) = field('XOR', TYPEINT, D0) +sysfield(213) = field('YOR', TYPEINT, D0) +sysfield(214) = field('DXRATIO', TYPEINT, D0) +sysfield(215) = field('DYRATIO', TYPEINT, D0) +sysfield(216) = field('PATCH_NUMBER', TYPEINT, D0) +sysfield(217) = field('BUGFIX', TYPEINT, D0) +sysfield(218) = field('BIBUSER', TYPECHAR, D0) +sysfield(219) = field('LFI_COMPRESSED', TYPEINT, D0) END SUBROUTINE init_sysfield FUNCTION get_ftype(hfname,level) @@ -260,13 +260,13 @@ END SUBROUTINE init_sysfield & INDEX(hfname,".TI",.TRUE.) /=0 .OR.& & INDEX(hfname,".UN",.TRUE.) /=0 .OR.& & INDEX(hfname,".CO",.TRUE.)/=0) THEN - get_ftype = TEXT + get_ftype = TYPECHAR ELSE IF (INDEX(hfname,".DI",.TRUE.) /= 0) THEN - get_ftype = INT + get_ftype = TYPEINT ELSE IF (INDEX(hfname,".PR",.TRUE.)/= 0 .OR.& & INDEX(hfname,".TR",.TRUE.)/= 0 .OR.& & INDEX(hfname,".DA",.TRUE.)/= 0) THEN - get_ftype = FLOAT + get_ftype = TYPEREAL ELSE IF (searchfield(hfname,tzf,level)) THEN ! search in databases get_ftype = tzf%TYPE diff --git a/LIBTOOLS/tools/lfi2cdf/src/modd_ncparam.f90 b/LIBTOOLS/tools/lfi2cdf/src/modd_ncparam.f90 index b357682f2eaa651cd5d7ce6f0d2883d4cc97afbe..11c85ed7a8353349ba38b3970dba0ea749d74eac 100644 --- a/LIBTOOLS/tools/lfi2cdf/src/modd_ncparam.f90 +++ b/LIBTOOLS/tools/lfi2cdf/src/modd_ncparam.f90 @@ -1,11 +1,9 @@ MODULE MODD_PARAM + USE MODE_FIELD, ONLY: TYPEUNDEF, TYPEINT, TYPELOG, TYPEREAL, TYPECHAR, TYPEDATE + IMPLICIT NONE CHARACTER(LEN=*), PARAMETER :: VERSION_ID='lfi2cdf Ver. Alpha' - INTEGER, PARAMETER :: INT = 1 - INTEGER, PARAMETER :: FLOAT = 2 - INTEGER, PARAMETER :: TEXT = 3 - INTEGER, PARAMETER :: BOOL = 4 INTEGER, PARAMETER :: D0 = 100 INTEGER, PARAMETER :: D1 = 200 diff --git a/LIBTOOLS/tools/lfi2cdf/src/mode_options.f90 b/LIBTOOLS/tools/lfi2cdf/src/mode_options.f90 index c346d34c6936f6ab665ae6fc2b4096e9aa3d2ea5..005a87f3dc80e2333c2b923558032b5338c0ebf0 100644 --- a/LIBTOOLS/tools/lfi2cdf/src/mode_options.f90 +++ b/LIBTOOLS/tools/lfi2cdf/src/mode_options.f90 @@ -1,5 +1,5 @@ module mode_options - USE MODE_FIELD, ONLY: TYPEUNDEF, TYPEINT, TYPELOG, TYPEREAL, TYPECHAR, TYPEDATE + USE MODD_PARAM implicit none diff --git a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 index 0791210ccce72fd8c52f90f676683f71bb643ad4..8dce337b3a84e42ab0af89ffb69912588654da1c 100644 --- a/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 +++ b/LIBTOOLS/tools/lfi2cdf/src/mode_util.f90 @@ -358,11 +358,11 @@ END DO SELECT CASE(itype) CASE(NF90_CHAR) - tpreclist(ji)%TYPE = TEXT + tpreclist(ji)%TYPE = TYPECHAR CASE(NF90_INT) - tpreclist(ji)%TYPE = INT + tpreclist(ji)%TYPE = TYPEINT CASE(NF90_FLOAT,NF90_DOUBLE) - tpreclist(ji)%TYPE = FLOAT + tpreclist(ji)%TYPE = TYPEREAL CASE default PRINT *, 'Attention : variable ',TRIM(tpreclist(ji)%name), ' a un TYPE non reconnu par le convertisseur.' PRINT *, '--> TYPE force a REAL(KIND 8) dans LFI !' @@ -555,20 +555,26 @@ END DO kcdf_id = outfiles%files(idx)%lun_id SELECT CASE(tpreclist(ji)%TYPE) - CASE (TEXT) -! PRINT *,'TEXT : ',tpreclist(ji)%name + CASE (TYPECHAR) +! PRINT *,'TYPECHAR : ',tpreclist(ji)%name status = NF90_DEF_VAR(kcdf_id,ycdfvar,NF90_CHAR,& ivdims(:invdims),tpreclist(ji)%id_out) IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__) - CASE (INT,BOOL) -! PRINT *,'INT,BOOL : ',tpreclist(ji)%name + CASE (TYPEINT) +! PRINT *,'TYPEINT : ',tpreclist(ji)%name status = NF90_DEF_VAR(kcdf_id,ycdfvar,NF90_INT,& ivdims(:invdims),tpreclist(ji)%id_out) IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__) - CASE(FLOAT) -! PRINT *,'FLOAT : ',tpreclist(ji)%name + CASE (TYPELOG) +! PRINT *,'TYPELOG : ',tpreclist(ji)%name + status = NF90_DEF_VAR(kcdf_id,ycdfvar,NF90_INT1,& + ivdims(:invdims),tpreclist(ji)%id_out) + IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__) + + CASE(TYPEREAL) +! PRINT *,'TYPEREAL : ',tpreclist(ji)%name status = NF90_DEF_VAR(kcdf_id,ycdfvar,type_float,& ivdims(:invdims),tpreclist(ji)%id_out) IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__) @@ -686,7 +692,7 @@ END DO !write(*,"( 'Field :',A )") trim(tpreclist(ji)%name) SELECT CASE(tpreclist(ji)%TYPE) - CASE (INT,BOOL) + CASE (TYPEINT) IF (infiles%files(1)%format == LFI_FORMAT) THEN IF (.NOT.tpreclist(ji)%calc) THEN CALL LFINFO(iresp,ilu,trim(tpreclist(ji)%name)//trim(suffix),ileng,ipos) @@ -755,7 +761,64 @@ END DO END IF - CASE (FLOAT) + CASE (TYPELOG) + IF (infiles%files(1)%format == LFI_FORMAT) THEN + IF (.NOT.tpreclist(ji)%calc) THEN + CALL LFINFO(iresp,ilu,trim(tpreclist(ji)%name)//trim(suffix),ileng,ipos) + CALL LFILEC(iresp,ilu,trim(tpreclist(ji)%name)//trim(suffix),iwork,ileng) + itab(1:extent) = iwork(3+iwork(2):3+iwork(2)+extent-1) + ELSE + src=tpreclist(ji)%src(1) + CALL LFINFO(iresp,ilu,trim(tpreclist(src)%name)//trim(suffix),ileng,ipos) + CALL LFILEC(iresp,ilu,trim(tpreclist(src)%name)//trim(suffix),iwork,ileng) + itab(1:extent) = iwork(3+iwork(2):3+iwork(2)+extent-1) + jj = 2 + DO WHILE (tpreclist(ji)%src(jj)>0 .AND. jj.LE.MAXRAW) + src=tpreclist(ji)%src(jj) + CALL LFILEC(iresp,ilu,trim(tpreclist(src)%name)//trim(suffix),iwork,ileng) + itab(1:extent) = itab(1:extent) + iwork(3+iwork(2):3+iwork(2)+extent-1) + jj=jj+1 + END DO + ENDIF + SELECT CASE(ndims) + CASE (0) + status = NF90_PUT_VAR(kcdf_id,tpreclist(ji)%id_out,itab(1:extent),count=(/extent/)) + CASE (1) + status = NF90_PUT_VAR(kcdf_id,tpreclist(ji)%id_out,itab(1:extent),count=(/extent/)) + CASE DEFAULT + print *,'Error: arrays with ',tpreclist(ji)%dim%ndims,' dimensions are not supported' + END SELECT + + ELSE IF (infiles%files(1)%format == NETCDF_FORMAT) THEN + ALLOCATE( itab3d(idims(1),idims(2),idims(3)) ) + IF (.NOT.tpreclist(ji)%calc) THEN + status = NF90_GET_VAR(infiles%files(1)%lun_id,tpreclist(ji)%id_in,itab3d) + IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__) + ELSE + ALLOCATE( itab3d2(idims(1),idims(2),idims(3)) ) + src=tpreclist(ji)%src(1) + status = NF90_GET_VAR(infiles%files(1)%lun_id,tpreclist(src)%id_in,itab3d) + IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__) + jj = 2 + DO WHILE (tpreclist(ji)%src(jj)>0 .AND. jj.LE.MAXRAW) + src=tpreclist(ji)%src(jj) + status = NF90_GET_VAR(infiles%files(1)%lun_id,tpreclist(src)%id_in,itab3d2) + IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__) + itab3d(:,:,:) = itab3d(:,:,:) + itab3d2(:,:,:) + jj=jj+1 + END DO + DEALLOCATE(itab3d2) + END IF + + start = (/1,1,1/) + status = NF90_PUT_VAR(kcdf_id,tpreclist(ji)%id_out,itab3d,start=start) + IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__) + + DEALLOCATE(itab3d) + END IF + + + CASE (TYPEREAL) IF (infiles%files(1)%format == LFI_FORMAT) THEN IF (.NOT.tpreclist(ji)%calc) THEN CALL LFINFO(iresp,ilu,trim(tpreclist(ji)%name)//trim(suffix),ileng,ipos) @@ -822,7 +885,7 @@ END DO DEALLOCATE(xtab3d) END IF - CASE (TEXT) + CASE (TYPECHAR) IF (infiles%files(1)%format == LFI_FORMAT) THEN CALL LFINFO(iresp,ilu,trim(tpreclist(ji)%name)//trim(suffix),ileng,ipos) CALL LFILEC(iresp,ilu,trim(tpreclist(ji)%name)//trim(suffix),iwork,ileng) @@ -957,32 +1020,32 @@ END DO SELECT CASE(tpreclist(ivar)%TYPE) - CASE(INT,BOOL) + CASE(TYPEINT,TYPELOG) ALLOCATE( itab3d(idims(1),idims(2),idims(3)) ) status = NF90_GET_VAR(kcdf_id,tpreclist(ivar)%id_in,itab3d) IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__) -! PRINT *,'INT,BOOL --> ',tpreclist(ivar)%name,',len = ',idlen +! PRINT *,'TYPEINT,TYPELOG --> ',tpreclist(ivar)%name,',len = ',idlen idata(1:idlen) = RESHAPE( itab3d , (/ idims(1)*idims(2)*idims(3) /) ) DEALLOCATE(itab3d) - CASE(FLOAT) + CASE(TYPEREAL) ALLOCATE( xtab3d(idims(1),idims(2),idims(3)) ) status = NF90_GET_VAR(kcdf_id,tpreclist(ivar)%id_in,xtab3d) IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__) -! PRINT *,'FLOAT --> ',tpreclist(ivar)%name,',len = ',idlen +! PRINT *,'TYPEREAL --> ',tpreclist(ivar)%name,',len = ',idlen idata(1:idlen) = RESHAPE( TRANSFER(xtab3d,(/ 0_8 /),idlen) , (/ idims(1)*idims(2)*idims(3) /) ) DEALLOCATE(xtab3d) - CASE(TEXT) + CASE(TYPECHAR) ALLOCATE(ytab(idlen)) status = NF90_GET_VAR(kcdf_id,tpreclist(ivar)%id_in,ytab) IF (status /= NF90_NOERR) CALL HANDLE_ERR(status,__LINE__) -! PRINT *,'TEXT --> ',tpreclist(ivar)%name,',len = ',idlen +! PRINT *,'TYPECHAR --> ',tpreclist(ivar)%name,',len = ',idlen DO jj=1,idlen idata(jj) = ICHAR(ytab(jj)) END DO