Changeset 6651 for TOOLS/WATER_BUDGET
- Timestamp:
- 10/13/23 15:43:31 (9 months ago)
- Location:
- TOOLS/WATER_BUDGET
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
TOOLS/WATER_BUDGET/ATM_waterbudget.py
r6647 r6651 68 68 tar_restart_end_ATM=None ; tar_restart_end_DYN=None ; tar_restart_end_SRF=None 69 69 tar_restart_end_RUN=None ; tar_restart_end_OCE=None ; tar_restart_end_ICE=None 70 ContinueOnError=False ; ErrorCount=0 ; SortIco = False70 ContinueOnError=False ; ErrorCount=0 # ; SortIco = False 71 71 72 72 ## … … 177 177 'OCE_rho_liq':str(OCE_rho_liq), 'ATM_rho':str(ATM_rho), 'SRF_rho':str(SRF_rho), 'RUN_rho':str(RUN_rho)} 178 178 179 config['Config'] = { 'ContinueOnError':str(ContinueOnError), ' SortIco':str(SortIco), 'TestInterp':str(TestInterp), 'readPrec':str(readPrec) }179 config['Config'] = { 'ContinueOnError':str(ContinueOnError), 'TestInterp':str(TestInterp), 'readPrec':str(readPrec) } 180 180 181 181 ## -------------------------- … … 236 236 if readPrec == float : 237 237 def rprec (tab) : return tab 238 else :238 else : 239 239 def rprec (tab) : return tab.astype(readPrec).astype(float) 240 240 … … 270 270 271 271 echo ( f'{ContinueOnError = }' ) 272 echo ( f'{SortIco = }' )273 272 echo ( f'{readPrec = }' ) 274 273 … … 624 623 config_out.close () 625 624 626 if ICO :627 if SortIco :628 # Creation d'une clef de tri pour les restarts (pour chaque restart !)629 DYN_beg_keysort = np.lexsort ( (d_DYN_beg['lat_mesh'], d_DYN_beg['lon_mesh'] ) )630 ATM_beg_keysort = np.lexsort ( (d_ATM_beg['latitude'], d_ATM_beg['longitude']) )631 SRF_beg_keysort = np.lexsort ( (d_SRF_beg['nav_lat' ], d_SRF_beg['nav_lon'] ) )632 DYN_end_keysort = np.lexsort ( (d_DYN_end['lat_mesh'], d_DYN_end['lon_mesh'] ) )633 ATM_end_keysort = np.lexsort ( (d_ATM_end['latitude'], d_ATM_end['longitude']) )634 SRF_end_keysort = np.lexsort ( (d_SRF_end['nav_lat' ], d_SRF_end['nav_lon'] ) )635 636 if ATM_HIS == 'ico' :637 ATM_his_keysort = np.lexsort ( (d_ATM_his['lat'], d_ATM_his['lon'] ) )638 if SRF_HIS == 'ico' :639 SRF_his_keysort = np.lexsort ( (d_SRF_his['lat'], d_SRF_his['lon'] ) )640 RUN_his_keysort = SRF_his_keysort641 else :642 DYN_beg_keysort = np.arange ( len ( d_DYN_beg['lat_mesh'] ) )643 ATM_beg_keysort = DYN_beg_keysort644 SRF_beg_keysort = DYN_beg_keysort645 646 DYN_end_keysort = DYN_beg_keysort647 ATM_end_keysort = DYN_beg_keysort648 SRF_end_keysort = DYN_beg_keysort649 650 ATM_his_keysort = DYN_beg_keysort651 SRF_his_keysort = DYN_beg_keysort652 RUN_his_keysort = SRF_his_keysort653 654 625 # ATM grid with cell surfaces 655 626 if LMDZ : … … 657 628 ATM_lat = lmdz.geo2point ( rprec (d_ATM_his ['lat'])+0*rprec (d_ATM_his ['lon']), dim1D='cell' ) 658 629 ATM_lon = lmdz.geo2point ( 0*rprec (d_ATM_his ['lat'])+ rprec (d_ATM_his ['lon']), dim1D='cell' ) 659 ATM_aire = lmdz.geo2point ( rprec (d_ATM_his ['aire'] ) [0], cumulPoles=True, dim1D='cell' )630 ATM_aire = lmdz.geo2point ( rprec (d_ATM_his ['aire'] [0]), cumulPoles=True, dim1D='cell' ) 660 631 ATM_fter = lmdz.geo2point ( rprec (d_ATM_his ['fract_ter'][0]), dim1D='cell' ) 661 632 ATM_foce = lmdz.geo2point ( rprec (d_ATM_his ['fract_oce'][0]), dim1D='cell' ) … … 685 656 if ATM_HIS == 'ico' : 686 657 echo ( 'ATM areas and fractions on ICO grid' ) 687 ATM_aire = rprec (d_ATM_his ['aire'] [0]) [ATM_his_keysort].squeeze()688 ATM_lat = rprec (d_ATM_his ['lat'] ) [ATM_his_keysort]689 ATM_lon = rprec (d_ATM_his ['lon'] ) [ATM_his_keysort]690 ATM_fter = rprec (d_ATM_his ['fract_ter'][0]) [ATM_his_keysort]691 ATM_foce = rprec (d_ATM_his ['fract_oce'][0]) [ATM_his_keysort]692 ATM_fsic = rprec (d_ATM_his ['fract_sic'][0]) [ATM_his_keysort]693 ATM_flic = rprec (d_ATM_his ['fract_lic'][0]) [ATM_his_keysort]658 ATM_aire = rprec (d_ATM_his ['aire'] [0]).squeeze() 659 ATM_lat = rprec (d_ATM_his ['lat'] ) 660 ATM_lon = rprec (d_ATM_his ['lon'] ) 661 ATM_fter = rprec (d_ATM_his ['fract_ter'][0]) 662 ATM_foce = rprec (d_ATM_his ['fract_oce'][0]) 663 ATM_fsic = rprec (d_ATM_his ['fract_sic'][0]) 664 ATM_flic = rprec (d_ATM_his ['fract_lic'][0]) 694 665 695 666 if SRF_HIS == 'latlon' : … … 713 684 if SRF_HIS == 'ico' : 714 685 echo ( 'SRF areas and fractions on latlon grid' ) 715 SRF_lat = rprec (d_SRF_his ['lat'] ) [SRF_his_keysort]716 SRF_lon = rprec (d_SRF_his ['lon'] ) [SRF_his_keysort]717 SRF_areas = rprec (d_SRF_his ['Areas'] ) [SRF_his_keysort]718 SRF_contfrac = rprec (d_SRF_his ['Contfrac']) [SRF_his_keysort]686 SRF_lat = rprec (d_SRF_his ['lat'] ) 687 SRF_lon = rprec (d_SRF_his ['lon'] ) 688 SRF_areas = rprec (d_SRF_his ['Areas'] ) 689 SRF_contfrac = rprec (d_SRF_his ['Contfrac']) 719 690 SRF_aire = SRF_areas * SRF_contfrac 720 691 … … 745 716 DYN_aire_keysort = np.arange ( len ( d_DYN_aire['lat'] ) ) 746 717 747 DYN_lat = d_DYN_aire['lat'] [DYN_aire_keysort]748 DYN_lon = d_DYN_aire['lon'] [DYN_aire_keysort]749 750 DYN_aire = d_DYN_aire['aire'] [DYN_aire_keysort]751 DYN_fsea = d_DYN_aire['fract_oce'] [DYN_aire_keysort] + d_DYN_aire['fract_sic'][DYN_aire_keysort]718 DYN_lat = d_DYN_aire['lat'] 719 DYN_lon = d_DYN_aire['lon'] 720 721 DYN_aire = d_DYN_aire['aire'] 722 DYN_fsea = d_DYN_aire['fract_oce'] + d_DYN_aire['fract_sic'] 752 723 DYN_flnd = 1.0 - DYN_fsea 753 DYN_fter = d_ATM_beg['FTER'] [ATM_beg_keysort]754 DYN_flic = d_ATM_beg['FLIC'] [ATM_beg_keysort]724 DYN_fter = d_ATM_beg['FTER'] 725 DYN_flic = d_ATM_beg['FLIC'] 755 726 DYN_aire_fter = DYN_aire * DYN_fter 756 727 … … 782 753 def SRF_stock_int (stock) : 783 754 '''Integrate (* surface) stock on land grid''' 784 #SRF_stock_int = wu.Ksum ( ( (stock * DYN_aire_fter).to_masked_array().ravel()) ) # Marche avec ICO et lon/lat na785 755 SRF_stock_int = wu.Ksum ( ( (stock * DYN_aire_fter).to_masked_array().ravel()) ) 786 756 return SRF_stock_int … … 845 815 echo ( 'Surface pressure' ) 846 816 if ICO : 847 DYN_psol_beg = d_DYN_beg['ps'] [DYN_beg_keysort]848 DYN_psol_end = d_DYN_end['ps'] [DYN_end_keysort]817 DYN_psol_beg = d_DYN_beg['ps'] 818 DYN_psol_end = d_DYN_end['ps'] 849 819 if LMDZ : 850 820 DYN_psol_beg = lmdz.geo2point ( d_DYN_beg['ps'].isel(rlonv=slice(0,-1)), dim1D='cell' ) … … 911 881 if 'H2Ov_g' in d_DYN_beg.variables : 912 882 echo ('reading ICO : H2O_g, H2O_l, H2O_s' ) 913 DYN_wat_beg = (d_DYN_beg['H2O_g'] + d_DYN_beg['H2O_l'] + d_DYN_beg['H2O_s']) [..., DYN_beg_keysort]914 DYN_wat_end = (d_DYN_end['H2O_g'] + d_DYN_end['H2O_l'] + d_DYN_end['H2O_s']) [..., DYN_beg_keysort]883 DYN_wat_beg = (d_DYN_beg['H2O_g'] + d_DYN_beg['H2O_l'] + d_DYN_beg['H2O_s']) 884 DYN_wat_end = (d_DYN_end['H2O_g'] + d_DYN_end['H2O_l'] + d_DYN_end['H2O_s']) 915 885 elif 'H2O_g' in d_DYN_beg.variables : 916 886 echo ('reading ICO : H2O_g, H2O_l, H2O_s' ) 917 DYN_wat_beg = (d_DYN_beg['H2O_g'] + d_DYN_beg['H2O_l'] + d_DYN_beg['H2O_s']) [..., DYN_beg_keysort]918 DYN_wat_end = (d_DYN_end['H2O_g'] + d_DYN_end['H2O_l'] + d_DYN_end['H2O_s']) [..., DYN_beg_keysort]887 DYN_wat_beg = (d_DYN_beg['H2O_g'] + d_DYN_beg['H2O_l'] + d_DYN_beg['H2O_s']) 888 DYN_wat_end = (d_DYN_end['H2O_g'] + d_DYN_end['H2O_l'] + d_DYN_end['H2O_s']) 919 889 elif 'q' in d_DYN_beg.variables : 920 890 echo ('reading ICO : q' ) 921 DYN_wat_beg = (d_DYN_beg['q'].isel(nq=0) + d_DYN_beg['q'].isel(nq=1) + d_DYN_beg['q'].isel(nq=2) ) [..., DYN_beg_keysort]922 DYN_wat_end = (d_DYN_end['q'].isel(nq=0) + d_DYN_end['q'].isel(nq=1) + d_DYN_end['q'].isel(nq=2) ) [..., DYN_beg_keysort]891 DYN_wat_beg = (d_DYN_beg['q'].isel(nq=0) + d_DYN_beg['q'].isel(nq=1) + d_DYN_beg['q'].isel(nq=2) ) 892 DYN_wat_end = (d_DYN_end['q'].isel(nq=0) + d_DYN_end['q'].isel(nq=1) + d_DYN_end['q'].isel(nq=2) ) 923 893 924 894 if 'lev' in DYN_wat_beg.dims : … … 973 943 974 944 if ICO : 975 ATM_sno_beg = ATM_sno_beg [ATM_beg_keysort]976 ATM_sno_end = ATM_sno_end [ATM_end_keysort]977 ATM_qs_beg = ATM_qs_beg [ATM_beg_keysort]978 ATM_qs_end = ATM_qs_end [ATM_end_keysort]979 ATM_qsol_beg = ATM_qsol_beg [ATM_beg_keysort]980 ATM_qs01_beg = ATM_qs01_beg [ATM_beg_keysort]981 ATM_qs02_beg = ATM_qs02_beg [ATM_beg_keysort]982 ATM_qs03_beg = ATM_qs03_beg [ATM_beg_keysort]983 ATM_qs04_beg = ATM_qs04_beg [ATM_beg_keysort]984 ATM_qsol_end = ATM_qsol_end [ATM_end_keysort]985 ATM_qs01_end = ATM_qs01_end [ATM_end_keysort]986 ATM_qs02_end = ATM_qs02_end [ATM_end_keysort]987 ATM_qs03_end = ATM_qs03_end [ATM_end_keysort]988 ATM_qs04_end = ATM_qs04_end [ATM_end_keysort]989 LIC_sno_beg = LIC_sno_beg [ATM_beg_keysort]990 LIC_sno_end = LIC_sno_end [ATM_end_keysort]991 LIC_runlic0_beg = LIC_runlic0_beg [ATM_beg_keysort]992 LIC_runlic0_end = LIC_runlic0_end [ATM_end_keysort]945 ATM_sno_beg = ATM_sno_beg 946 ATM_sno_end = ATM_sno_end 947 ATM_qs_beg = ATM_qs_beg 948 ATM_qs_end = ATM_qs_end 949 ATM_qsol_beg = ATM_qsol_beg 950 ATM_qs01_beg = ATM_qs01_beg 951 ATM_qs02_beg = ATM_qs02_beg 952 ATM_qs03_beg = ATM_qs03_beg 953 ATM_qs04_beg = ATM_qs04_beg 954 ATM_qsol_end = ATM_qsol_end 955 ATM_qs01_end = ATM_qs01_end 956 ATM_qs02_end = ATM_qs02_end 957 ATM_qs03_end = ATM_qs03_end 958 ATM_qs04_end = ATM_qs04_end 959 LIC_sno_beg = LIC_sno_beg 960 LIC_sno_end = LIC_sno_end 961 LIC_runlic0_beg = LIC_runlic0_beg 962 LIC_runlic0_end = LIC_runlic0_end 993 963 994 964 LIC_qs_beg = ATM_qs02_beg … … 1146 1116 SRF_snow_end = lmdz.geo2point (SRF_snow_end , dim1D='cell') 1147 1117 SRF_lakeres_end = lmdz.geo2point (SRF_lakeres_end , dim1D='cell') 1148 1149 if ICO : 1150 SRF_tot_watveg_beg = SRF_tot_watveg_beg [SRF_beg_keysort] 1151 SRF_tot_watsoil_beg = SRF_tot_watsoil_beg [SRF_beg_keysort] 1152 SRF_snow_beg = SRF_snow_beg [SRF_beg_keysort] 1153 SRF_lakeres_beg = SRF_lakeres_beg [SRF_beg_keysort] 1154 SRF_tot_watveg_end = SRF_tot_watveg_end [SRF_end_keysort] 1155 SRF_tot_watsoil_end = SRF_tot_watsoil_end [SRF_end_keysort] 1156 SRF_snow_end = SRF_snow_end [SRF_end_keysort] 1157 SRF_lakeres_end = SRF_lakeres_end [SRF_end_keysort] 1118 1158 1119 1159 1120 # Stock dSoilHum dInterce dSWE dStream dFastR dSlowR dLake dPond dFlood … … 1252 1213 if ATM_HIS == 'ico' : 1253 1214 echo (' ico case') 1254 ATM_wbilo_oce = rprec (d_ATM_his ['wbilo_oce']) [..., ATM_his_keysort]1255 ATM_wbilo_sic = rprec (d_ATM_his ['wbilo_sic']) [..., ATM_his_keysort]1256 ATM_wbilo_ter = rprec (d_ATM_his ['wbilo_ter']) [..., ATM_his_keysort]1257 ATM_wbilo_lic = rprec (d_ATM_his ['wbilo_lic']) [..., ATM_his_keysort]1258 ATM_runofflic = rprec (d_ATM_his ['runofflic']) [..., ATM_his_keysort]1259 ATM_fqcalving = rprec (d_ATM_his ['fqcalving']) [..., ATM_his_keysort]1260 ATM_fqfonte = rprec (d_ATM_his ['fqfonte'] ) [..., ATM_his_keysort]1261 ATM_precip = rprec (d_ATM_his ['precip'] ) [..., ATM_his_keysort]1262 ATM_snowf = rprec (d_ATM_his ['snow'] ) [..., ATM_his_keysort]1263 ATM_evap = rprec (d_ATM_his ['evap'] ) [..., ATM_his_keysort]1264 ATM_wevap_ter = rprec (d_ATM_his ['wevap_ter']) [..., ATM_his_keysort]1265 ATM_wevap_oce = rprec (d_ATM_his ['wevap_oce']) [..., ATM_his_keysort]1266 ATM_wevap_lic = rprec (d_ATM_his ['wevap_lic']) [..., ATM_his_keysort]1267 ATM_wevap_sic = rprec (d_ATM_his ['wevap_sic']) [..., ATM_his_keysort]1268 ATM_runofflic = rprec (d_ATM_his ['runofflic']) [..., ATM_his_keysort]1269 ATM_wevap_ter = rprec (d_ATM_his ['wevap_ter']) [..., ATM_his_keysort]1270 ATM_wevap_oce = rprec (d_ATM_his ['wevap_oce']) [..., ATM_his_keysort]1271 ATM_wevap_lic = rprec (d_ATM_his ['wevap_lic']) [..., ATM_his_keysort]1272 ATM_wevap_sic = rprec (d_ATM_his ['wevap_sic']) [..., ATM_his_keysort]1273 ATM_wrain_ter = rprec (d_ATM_his ['wrain_ter']) [..., ATM_his_keysort]1274 ATM_wrain_oce = rprec (d_ATM_his ['wrain_oce']) [..., ATM_his_keysort]1275 ATM_wrain_lic = rprec (d_ATM_his ['wrain_lic']) [..., ATM_his_keysort]1276 ATM_wrain_sic = rprec (d_ATM_his ['wrain_sic']) [..., ATM_his_keysort]1277 ATM_wsnow_ter = rprec (d_ATM_his ['wsnow_ter']) [..., ATM_his_keysort]1278 ATM_wsnow_oce = rprec (d_ATM_his ['wsnow_oce']) [..., ATM_his_keysort]1279 ATM_wsnow_lic = rprec (d_ATM_his ['wsnow_lic']) [..., ATM_his_keysort]1280 ATM_wsnow_sic = rprec (d_ATM_his ['wsnow_sic']) [..., ATM_his_keysort]1215 ATM_wbilo_oce = rprec (d_ATM_his ['wbilo_oce']) 1216 ATM_wbilo_sic = rprec (d_ATM_his ['wbilo_sic']) 1217 ATM_wbilo_ter = rprec (d_ATM_his ['wbilo_ter']) 1218 ATM_wbilo_lic = rprec (d_ATM_his ['wbilo_lic']) 1219 ATM_runofflic = rprec (d_ATM_his ['runofflic']) 1220 ATM_fqcalving = rprec (d_ATM_his ['fqcalving']) 1221 ATM_fqfonte = rprec (d_ATM_his ['fqfonte'] ) 1222 ATM_precip = rprec (d_ATM_his ['precip'] ) 1223 ATM_snowf = rprec (d_ATM_his ['snow'] ) 1224 ATM_evap = rprec (d_ATM_his ['evap'] ) 1225 ATM_wevap_ter = rprec (d_ATM_his ['wevap_ter']) 1226 ATM_wevap_oce = rprec (d_ATM_his ['wevap_oce']) 1227 ATM_wevap_lic = rprec (d_ATM_his ['wevap_lic']) 1228 ATM_wevap_sic = rprec (d_ATM_his ['wevap_sic']) 1229 ATM_runofflic = rprec (d_ATM_his ['runofflic']) 1230 ATM_wevap_ter = rprec (d_ATM_his ['wevap_ter']) 1231 ATM_wevap_oce = rprec (d_ATM_his ['wevap_oce']) 1232 ATM_wevap_lic = rprec (d_ATM_his ['wevap_lic']) 1233 ATM_wevap_sic = rprec (d_ATM_his ['wevap_sic']) 1234 ATM_wrain_ter = rprec (d_ATM_his ['wrain_ter']) 1235 ATM_wrain_oce = rprec (d_ATM_his ['wrain_oce']) 1236 ATM_wrain_lic = rprec (d_ATM_his ['wrain_lic']) 1237 ATM_wrain_sic = rprec (d_ATM_his ['wrain_sic']) 1238 ATM_wsnow_ter = rprec (d_ATM_his ['wsnow_ter']) 1239 ATM_wsnow_oce = rprec (d_ATM_his ['wsnow_oce']) 1240 ATM_wsnow_lic = rprec (d_ATM_his ['wsnow_lic']) 1241 ATM_wsnow_sic = rprec (d_ATM_his ['wsnow_sic']) 1281 1242 echo ( f'End of ico case ') 1282 1243 … … 1326 1287 if RUN_HIS == 'ico' : 1327 1288 echo ( f'RUN costalflow Grille ICO' ) 1328 RUN_coastalflow = rprec (d_RUN_his ['coastalflow']) [..., RUN_his_keysort]1329 RUN_riverflow = rprec (d_RUN_his ['riverflow'] ) [..., RUN_his_keysort]1330 RUN_runoff = rprec (d_RUN_his ['runoff'] ) [..., RUN_his_keysort]1331 RUN_drainage = rprec (d_RUN_his ['drainage'] ) [..., RUN_his_keysort]1332 RUN_riversret = rprec (d_RUN_his ['riversret'] ) [..., RUN_his_keysort]1333 1334 RUN_coastalflow_cpl = rprec (d_RUN_his ['coastalflow_cpl']) [..., RUN_his_keysort]1335 RUN_riverflow_cpl = rprec (d_RUN_his ['riverflow_cpl'] ) [..., RUN_his_keysort]1289 RUN_coastalflow = rprec (d_RUN_his ['coastalflow']) 1290 RUN_riverflow = rprec (d_RUN_his ['riverflow'] ) 1291 RUN_runoff = rprec (d_RUN_his ['runoff'] ) 1292 RUN_drainage = rprec (d_RUN_his ['drainage'] ) 1293 RUN_riversret = rprec (d_RUN_his ['riversret'] ) 1294 1295 RUN_coastalflow_cpl = rprec (d_RUN_his ['coastalflow_cpl']) 1296 RUN_riverflow_cpl = rprec (d_RUN_his ['riverflow_cpl'] ) 1336 1297 1337 1298 Step = 0 … … 1345 1306 SRF_subli = lmdz.geo2point ( rprec (d_SRF_his ['subli_contfrac_interp']), dim1D='cell') 1346 1307 SRF_transpir = lmdz.geo2point ( rprec (d_SRF_his ['transpir_contfrac_interp']).sum(dim='veget'), dim1D='cell' ) 1347 SRF_rain.attrs = d_SRF_his ['rain_contfrac_interp'].attrs1348 SRF_evap.attrs = d_SRF_his ['evap_contfrac_interp'].attrs1349 SRF_snowf.attrs = d_SRF_his ['snow_contfrac_interp'].attrs1350 SRF_subli.attrs = d_SRF_his ['subli_contfrac_interp'].attrs1351 SRF_transpir.attrs = d_SRF_his ['transpir_contfrac_interp'].attrs1308 #SRF_rain.attrs.update ( d_SRF_his ['rain_contfrac_interp'].attrs ) 1309 #SRF_evap.attrs.update ( d_SRF_his ['evap_contfrac_interp'].attrs ) 1310 #SRF_snowf.attrs.update ( d_SRF_his ['snow_contfrac_interp'].attrs ) 1311 #SRF_subli.attrs.update ( d_SRF_his ['subli_contfrac_interp'].attrs ) 1312 #SRF_transpir.attrs.update ( d_SRF_his ['transpir_contfrac_interp'].attrs ) 1352 1313 else : 1353 1314 echo ( f'SRF rain' ) … … 1360 1321 if SRF_HIS == 'ico' : 1361 1322 echo ( f'SRF rain') 1362 SRF_rain = rprec (d_SRF_his ['rain'] ) [..., SRF_his_keysort]1363 SRF_evap = rprec (d_SRF_his ['evap'] ) [..., SRF_his_keysort]1364 SRF_snowf = rprec (d_SRF_his ['snowf']) [..., SRF_his_keysort]1365 SRF_subli = rprec (d_SRF_his ['subli']) [..., SRF_his_keysort]1366 SRF_transpir = rprec (d_SRF_his ['transpir']).sum(dim='veget') [..., SRF_his_keysort]1323 SRF_rain = rprec (d_SRF_his ['rain'] ) 1324 SRF_evap = rprec (d_SRF_his ['evap'] ) 1325 SRF_snowf = rprec (d_SRF_his ['snowf']) 1326 SRF_subli = rprec (d_SRF_his ['subli']) 1327 SRF_transpir = rprec (d_SRF_his ['transpir']).sum(dim='veget') 1367 1328 1368 1329 echo ( f'SRF emp' ) -
TOOLS/WATER_BUDGET/CPL_waterbudget.py
r6647 r6651 81 81 tar_restart_end_ATM=None ; tar_restart_end_DYN=None ; tar_restart_end_SRF=None 82 82 tar_restart_end_RUN=None ; tar_restart_end_OCE=None ; tar_restart_end_ICE=None 83 ContinueOnError=False ; ErrorCount=0 ; SortIco = False83 ContinueOnError=False ; ErrorCount=0 84 84 85 85 ## … … 191 191 'OCE_rho_liq':str(OCE_rho_liq), 'ATM_rho':str(ATM_rho), 'SRF_rho':str(SRF_rho), 'RUN_rho':str(RUN_rho)} 192 192 193 config['Config'] = { 'ContinueOnError':str(ContinueOnError), ' SortIco':str(SortIco), 'TestInterp':str(TestInterp), 'readPrec':str(readPrec) }193 config['Config'] = { 'ContinueOnError':str(ContinueOnError), 'TestInterp':str(TestInterp), 'readPrec':str(readPrec) } 194 194 195 195 ## -------------------------- … … 284 284 285 285 echo ( f'{ContinueOnError = }' ) 286 echo ( f'{SortIco = }' )287 286 echo ( f'{readPrec = }' ) 288 287 … … 605 604 def ONE_stock_int (stock) : 606 605 '''Sum stock''' 607 ONE_stock_int = np.sum ( np.sort ( (stock ).to_masked_array().ravel()) )606 ONE_stock_int = wu.Psum ( stock.to_masked_array().ravel() ) 608 607 return ONE_stock_int 609 608 610 609 def OCE_flux_int (flux) : 611 610 '''Integrate flux on oce grid''' 612 OCE_flux_int = np.sum ( np.sort ( (flux * OCE_aire * dtime_per_sec).to_masked_array().ravel()) )611 OCE_flux_int = wu.Psum ( (flux * OCE_aire * dtime_per_sec).to_masked_array().ravel() ) 613 612 return OCE_flux_int 614 613 615 614 def ONE_flux_int (flux) : 616 615 '''Integrate flux on oce grid''' 617 OCE_flux_int = np.sum ( np.sort ( (flux * dtime_per_sec).to_masked_array().ravel()) )616 OCE_flux_int = wu.Psum ( (flux * dtime_per_sec).to_masked_array().ravel() ) 618 617 return OCE_flux_int 619 618 -
TOOLS/WATER_BUDGET/OCE_waterbudget.py
r6647 r6651 68 68 tar_restart_end_ATM=None ; tar_restart_end_DYN=None ; tar_restart_end_SRF=None 69 69 tar_restart_end_RUN=None ; tar_restart_end_OCE=None ; tar_restart_end_ICE=None 70 ContinueOnError=False ; ErrorCount=0 ; SortIco = False70 ContinueOnError=False ; ErrorCount=0 71 71 72 72 ## … … 144 144 exec ( f'wu.{VarName} = {VarName}' ) 145 145 print ( f' {VarName:21} set to : {locals()[VarName]}' ) 146 #exec ( f'del {VarName}' )147 146 148 147 print ( f'\nConfig file readed : {IniFile} ' ) … … 177 176 'OCE_rho_liq':str(OCE_rho_liq), 'ATM_rho':str(ATM_rho), 'SRF_rho':str(SRF_rho), 'RUN_rho':str(RUN_rho)} 178 177 179 config['Config'] = { 'ContinueOnError':ContinueOnError, ' SortIco':SortIco, 'TestInterp':str(TestInterp), 'readPrec':str(readPrec) }178 config['Config'] = { 'ContinueOnError':ContinueOnError, 'TestInterp':str(TestInterp), 'readPrec':str(readPrec) } 180 179 181 180 ## -------------------------- … … 528 527 config.write (config_out ) 529 528 config_out.close () 530 531 529 532 530 # Get mask and surfaces … … 543 541 def OCE_stock_int (stock) : 544 542 '''Integrate stock on ocean grid''' 545 OCE_stock_int = np.sum ( np.sort ( (stock * OCE_aire ).to_masked_array().ravel()) )543 OCE_stock_int = wu.Psum ( (stock * OCE_aire ).to_masked_array().ravel() ) 546 544 return OCE_stock_int 547 545 548 546 def ONE_stock_int (stock) : 549 547 '''Sum stock''' 550 ONE_stock_int = np.sum ( np.sort ( (stock ).to_masked_array().ravel()) )548 ONE_stock_int = wu.Psum ( stock.to_masked_array().ravel() ) 551 549 return ONE_stock_int 552 550 553 551 def OCE_flux_int (flux) : 554 552 '''Integrate flux on oce grid''' 555 OCE_flux_int = np.sum ( np.sort ( (flux * OCE_aire * dtime_per_sec).to_masked_array().ravel()) )553 OCE_flux_int = wu.Psum ( (flux * OCE_aire * dtime_per_sec).to_masked_array().ravel() ) 556 554 return OCE_flux_int 557 555 558 556 def ONE_flux_int (flux) : 559 557 '''Integrate flux on oce grid''' 560 OCE_flux_int = np.sum ( np.sort ( (flux * dtime_per_sec).to_masked_array().ravel()) )558 OCE_flux_int = wu.Psum ( (flux * dtime_per_sec).to_masked_array().ravel() ) 561 559 return OCE_flux_int 562 560 -
TOOLS/WATER_BUDGET/README.md
r6509 r6651 16 16 17 17 With the simple input file, the scripts will uses the information to 18 constructs the needed file names, according to the libIGCM DRS 18 constructs the needed file names, according to the libIGCM DRS. 19 19 20 It will extract the restarts from the tar files, and rebuild NEMO restarts 20 On Irene, Jean-Zay and Spip, you need to specifiy the group and user 21 to locate the files. 22 23 It will extract the restarts from the tar files, and rebuild NEMO restarts. 21 24 22 25 ```config 26 OCE_waterbudget.py 27 [Config] 28 ContinueOnError = True 29 SortIco = False 30 23 31 [Experiment] 24 32 libIGCM = True … … 28 36 ExperimentName = piControl 29 37 User = p86caub 30 Project= gencmip638 Group = gencmip6 31 39 Freq = MO 32 40 YearBegin = 1850 33 41 YearEnd = 1859 34 42 PackFrequency = 10 35 ATM = ICO40 36 Routing = SIMPLE 37 ORCA = eORCA1.2 38 NEMO = 3.6 39 Coupled = True 43 ATM = ICO40 44 Routing = SIMPLE 45 ORCA = eORCA1.4.2 46 NEMO = 4.2 47 Coupled = True 48 ATM_HIS = ico 49 SRF_HIS = ${ATM_HIS} 50 RUN_HIS = ${ATM_HIS} 40 51 ``` 52 41 53 ## Example of full input file 42 54 43 55 All the file names computed by the scripts will be writen back 44 additional sections 56 in additional sections. 45 57 46 You can add a `[libIGCM]` section to over come part or all compouted47 libIGCM directories by pre-determined directory names 58 You can add a `[libIGCM]` section to override part or all computed 59 libIGCM directories by pre-determined directory names. 48 60 49 You can add a `[Files]` section to over come part or all compouted file61 You can add a `[Files]` section to override part or all computed file 50 62 names by pre-determined file names 51 63 52 You can add a `[Physics]` section to over come some or all default parameters64 You can add a `[Physics]` section to override some or all default parameters. 53 65 54 66 ``` 67 [Config] 68 ContinueOnError = True 69 SortIco = False 70 55 71 [Experiment] 56 libIGCM = True 57 JobName = TEST-CM72-SIMPLE-ROUTING.12 58 TagName = IPSLCM7 59 SpaceName = DEVT 60 ExperimentName = piControl 61 User = p86caub 62 Project = gencmip6 63 Freq = MO 64 YearBegin = 1970 65 YearEnd = 1979 66 PackFrequency = 10 67 ATM = ICO40 68 Routing = SIMPLE 69 ORCA = eORCA1.2 70 NEMO = 3.6 71 Coupled = True 72 JobName = CM71v420-LR-pd-02-out-ico-reg 73 ConfigCard = /ccc/cont003/home/gencmip6/p86caub/IPSLCM7_TUNING_MODIF_ORCHIDEE/config/IPSLCM7/${JobName}/config.card 74 libIGCM = True 75 User = p86caub 76 Group = gencmip6 77 Freq = MO 78 YearBegin = 1870 79 YearEnd = 1870 80 ATM = ICO40 81 Routing = SIMPLE 82 ORCA = eORCA1.4.2 83 NEMO = 4.2 84 Coupled = True 85 ATM_HIS = latlon 86 SRF_HIS = ${ATM_HIS} 87 RUN_HIS = ${ATM_HIS} 88 DateBegin = 18700101 89 DateEnd = 18701231 72 90 73 91 [Files] 74 TmpDir = /ccc/scratch/cont003/gencmip6/p86mart/WATER_TEST-CM72-SIMPLE-ROUTING.12_1970_1979 75 FileOut = ATM_waterbudget_TEST-CM72-SIMPLE-ROUTING.12_1970_1979.out 76 dir_ATM_his = /ccc/store/cont003/gencmip6/p86caub/IGCM_OUT/IPSLCM7/DEVT/piControl/TEST-CM72-SIMPLE-ROUTING.12/ATM/Output/MO 77 dir_SRF_his = /ccc/store/cont003/gencmip6/p86caub/IGCM_OUT/IPSLCM7/DEVT/piControl/TEST-CM72-SIMPLE-ROUTING.12/SRF/Output/MO 78 Period = 19700101_19791231_1M 79 FileCommon = TEST-CM72-SIMPLE-ROUTING.12_19700101_19791231_1M 80 Title = TEST-CM72-SIMPLE-ROUTING.12 : MO : 1970-01-01 - 1979-12-31 81 file_ATM_his = /ccc/store/cont003/gencmip6/p86caub/IGCM_OUT/IPSLCM7/DEVT/piControl/TEST-CM72-SIMPLE-ROUTING.12/ATM/Output/MO/TEST-CM72-SIMPLE-ROUTING.12_19700101_19791231_1M_histmth.nc 82 file_SRF_his = /ccc/store/cont003/gencmip6/p86caub/IGCM_OUT/IPSLCM7/DEVT/piControl/TEST-CM72-SIMPLE-ROUTING.12/SRF/Output/MO/TEST-CM72-SIMPLE-ROUTING.12_19700101_19791231_1M_sechiba_history.nc 83 file_RUN_his = /ccc/store/cont003/gencmip6/p86caub/IGCM_OUT/IPSLCM7/DEVT/piControl/TEST-CM72-SIMPLE-ROUTING.12/SRF/Output/MO/TEST-CM72-SIMPLE-ROUTING.12_19700101_19791231_1M_sechiba_history.nc 84 TarRestartPeriod_beg = 19600101_19691231 85 TarRestartPeriod_end = 19700101_19791231 86 file_restart_beg = /ccc/store/cont003/gencmip6/p86caub/IGCM_OUT/IPSLCM7/DEVT/piControl/TEST-CM72-SIMPLE-ROUTING.12/RESTART/TEST-CM72-SIMPLE-ROUTING.12_${TarRestartPeriod_beg}_restart.tar 87 file_restart_end = /ccc/store/cont003/gencmip6/p86caub/IGCM_OUT/IPSLCM7/DEVT/piControl/TEST-CM72-SIMPLE-ROUTING.12/RESTART/TEST-CM72-SIMPLE-ROUTING.12_${TarRestartPeriod_end}_restart.tar 88 file_ATM_beg = ${TmpDir}/ATM_TEST-CM72-SIMPLE-ROUTING.12_19691231_restartphy.nc 89 file_ATM_end = ${TmpDir}/ATM_TEST-CM72-SIMPLE-ROUTING.12_19791231_restartphy.nc 90 file_DYN_beg = ${TmpDir}/ICO_TEST-CM72-SIMPLE-ROUTING.12_19691231_restart.nc 91 file_DYN_end = ${TmpDir}/ICO_TEST-CM72-SIMPLE-ROUTING.12_19791231_restart.nc 92 file_SRF_beg = ${TmpDir}/SRF_TEST-CM72-SIMPLE-ROUTING.12_19691231_sechiba_rest.nc 93 file_SRF_end = ${TmpDir}/SRF_TEST-CM72-SIMPLE-ROUTING.12_19791231_sechiba_rest.nc 94 file_RUN_beg = ${TmpDir}/SRF_TEST-CM72-SIMPLE-ROUTING.12_19691231_routing_restart.nc 95 file_RUN_end = ${TmpDir}/SRF_TEST-CM72-SIMPLE-ROUTING.12_19791231_routing_restart.nc 92 FileOut = ATM_waterbudget_CM71v420-LR-pd-02-out-ico-reg_1870_1870_LATLON.out 93 TmpDir = /ccc/scratch/cont003/gencmip6/p86mart 94 RunDir = /ccc/scratch/cont003/gencmip6/p86mart/WATER_CM71v420-LR-pd-02-out-ico-reg_18700101_18701231 95 dir_ATM_his = /ccc/store/cont003/gencmip6/p86caub/IGCM_OUT/IPSLCM7/DEVT/pdControl/CM71v420-LR-pd-02-out-ico-reg/ATM/Output/MO 96 dir_SRF_his = /ccc/store/cont003/gencmip6/p86caub/IGCM_OUT/IPSLCM7/DEVT/pdControl/CM71v420-LR-pd-02-out-ico-reg/SRF/Output/MO 97 Period = 18700101_18701231_1M 98 DateBegin = 18701231 99 FileCommon = CM71v420-LR-pd-02-out-ico-reg_18700101_18701231_1M 100 Title = CM71v420-LR-pd-02-out-ico-reg : MO : 18700101 - 18701231 101 file_ATM_his = /ccc/store/cont003/gencmip6/p86caub/IGCM_OUT/IPSLCM7/DEVT/pdControl/CM71v420-LR-pd-02-out-ico-reg/ATM/Output/MO/CM71v420-LR-pd-02-out-ico-reg_18700101_18701231_1M_histmth.nc 102 file_SRF_his = /ccc/store/cont003/gencmip6/p86caub/IGCM_OUT/IPSLCM7/DEVT/pdControl/CM71v420-LR-pd-02-out-ico-reg/SRF/Output/MO/CM71v420-LR-pd-02-out-ico-reg_18700101_18701231_1M_sechiba_history.nc 103 file_RUN_his = /ccc/store/cont003/gencmip6/p86caub/IGCM_OUT/IPSLCM7/DEVT/pdControl/CM71v420-LR-pd-02-out-ico-reg/SRF/Output/MO/CM71v420-LR-pd-02-out-ico-reg_18700101_18701231_1M_sechiba_history.nc 104 TarRestartPeriod_beg = 18690101_18691231 105 TarRestartPeriod_end = 18700101_18701231 106 tar_restart_beg = /ccc/store/cont003/gencmip6/p86caub/IGCM_OUT/IPSLCM7/DEVT/pdControl/CM71v420-LR-pd-02-out-ico-reg/RESTART/CM71v420-LR-pd-02-out-ico-reg_18690101_18691231_restart.tar 107 tar_restart_end = /ccc/store/cont003/gencmip6/p86caub/IGCM_OUT/IPSLCM7/DEVT/pdControl/CM71v420-LR-pd-02-out-ico-reg/RESTART/CM71v420-LR-pd-02-out-ico-reg_18700101_18701231_restart.tar 108 file_ATM_beg = /ccc/scratch/cont003/gencmip6/p86mart/WATER_CM71v420-LR-pd-02-out-ico-reg_18700101_18701231/ATM_CM71v420-LR-pd-02-out-ico-reg_18691231_restartphy.nc 109 file_ATM_end = /ccc/scratch/cont003/gencmip6/p86mart/WATER_CM71v420-LR-pd-02-out-ico-reg_18700101_18701231/ATM_CM71v420-LR-pd-02-out-ico-reg_18701231_restartphy.nc 110 file_DYN_beg = /ccc/scratch/cont003/gencmip6/p86mart/WATER_CM71v420-LR-pd-02-out-ico-reg_18700101_18701231/ICO_CM71v420-LR-pd-02-out-ico-reg_18691231_restart.nc 111 file_DYN_end = /ccc/scratch/cont003/gencmip6/p86mart/WATER_CM71v420-LR-pd-02-out-ico-reg_18700101_18701231/ICO_CM71v420-LR-pd-02-out-ico-reg_18701231_restart.nc 112 file_SRF_beg = /ccc/scratch/cont003/gencmip6/p86mart/WATER_CM71v420-LR-pd-02-out-ico-reg_18700101_18701231/SRF_CM71v420-LR-pd-02-out-ico-reg_18691231_sechiba_rest.nc 113 file_SRF_end = /ccc/scratch/cont003/gencmip6/p86mart/WATER_CM71v420-LR-pd-02-out-ico-reg_18700101_18701231/SRF_CM71v420-LR-pd-02-out-ico-reg_18701231_sechiba_rest.nc 114 file_DYN_aire = /ccc/work/cont003/igcmg/igcmg/IGCM/ATM/GRID/ICO40_grid.nc 115 file_RUN_beg = /ccc/scratch/cont003/gencmip6/p86mart/WATER_CM71v420-LR-pd-02-out-ico-reg_18700101_18701231/SRF_CM71v420-LR-pd-02-out-ico-reg_18691231_routing_restart.nc 116 file_RUN_end = /ccc/scratch/cont003/gencmip6/p86mart/WATER_CM71v420-LR-pd-02-out-ico-reg_18700101_18701231/SRF_CM71v420-LR-pd-02-out-ico-reg_18701231_routing_restart.nc 117 file_ATM_aire = /ccc/work/cont003/igcmg/igcmg/IGCM/ATM/GRID/aire_ICO40_to_144x143.nc 96 118 97 119 [Physics] 98 # Earth Radius (m)99 120 Ra = 6366197.7236758135 100 # Gravity (m^2/s) in LMDZ or ICO101 121 Grav = 9.81 102 # Ice volumic mass (kg/m^3) in NEMO103 122 ICE_rho_ice = 917.0 104 # Snow volumic mass (kg/m3) in NEMO 105 ICE_rho_sno = 330.0 106 # Ocean water volumic mass (kg/m3) in NEMO 123 CE_rho_sno = 330.0 107 124 OCE_rho_liq = 1026.0 108 # Water volumic mass in atmosphere (kg/m^3)109 125 ATM_rho = 1000.0 110 # Water volumic mass in surface reservoir (kg/m^3)111 126 SRF_rho = 1000.0 112 # Water volumic mass of rivers (kg/m^3)113 127 RUN_rho = 1000.0 114 128 115 129 [libIGCM] 116 ARCHIVE = /ccc/store/cont003/gencmip6/p86caub 117 STORAGE = /ccc/work/cont003/gencmip6/p86caub 118 SCRATCHDIR = /ccc/scratch/cont003/gencmip6/p86caub 119 R_IN = /ccc/work/cont003/igcmg/igcmg/IGCM 120 rebuild = /ccc/cont003/home/igcmg/igcmg/Tools/irene-amd/rebuild_nemo/bin/rebuild_nemo 121 130 ARCHIVE = /ccc/store/cont003/gencmip6/p86caub 131 STORAGE = /ccc/work/cont003/gencmip6/p86caub 132 TmpDir = /ccc/scratch/cont003/gencmip6/p86mart 133 R_IN = /ccc/work/cont003/igcmg/igcmg/IGCM 134 rebuild = /ccc/cont003/home/igcmg/igcmg/Tools/x86_64/rebuild_nemo/bin/rebuild_nemo 135 R_OUT = /ccc/store/cont003/gencmip6/p86caub/IGCM_OUT 136 R_BUF = /ccc/scratch/cont003/gencmip6/p86caub/IGCM_OUT 137 L_EXP = IPSLCM7/DEVT/pdControl/CM71v420-LR-pd-02-out-ico-reg 138 R_BUFR = /ccc/scratch/cont003/gencmip6/p86caub/IGCM_OUT/IPSLCM7/DEVT/pdControl/CM71v420-LR-pd-02-out-ico-reg 139 POST_DIR = /ccc/scratch/cont003/gencmip6/p86caub/IGCM_OUT/IPSLCM7/DEVT/pdControl/CM71v420-LR-pd-02-out-ico-reg/Out 140 REBUILD_DIR = /ccc/scratch/cont003/gencmip6/p86caub/IGCM_OUT/IPSLCM7/DEVT/pdControl/CM71v420-LR-pd-02-out-ico-reg/REBUILD 141 R_BUF_KSH = /ccc/scratch/cont003/gencmip6/p86caub/IGCM_OUT/IPSLCM7/DEVT/pdControl/CM71v420-LR-pd-02-out-ico-reg/Out 142 R_FIGR = /ccc/work/cont003/gencmip6/p86caub/IGCM_OUT/IPSLCM7/DEVT/pdControl/CM71v420-LR-pd-02-out-ico-reg 122 143 ``` 123 144 … … 130 151 - Grille LMDZ et routage SIMPLE : pb sur runoff 131 152 - Grille ICO avec sorties interpolées : 153 - OK pour LMD 154 - A finaliser pour SECHIBA 132 155 133 # Erreurs relatives134 135 ### VALID-CM622-LR.01 - LMDZ : OK ? Sauf LIC136 - LIC : 1.e-2137 - SRF : 4.e-6138 - SRF/ATM : 2e-10139 - RUNOFF : 1.5e-4140 141 ### VALID-CM622-SIMPLE-ROUTING - LMDZ : Erreur RUNOFF, LIC142 - LIC : 1.6143 - SRF : 1e-6144 - SRF/ATM : 1.e-10145 - RUNOFF : -7146 147 ### TEST-CM72-SIMPLE-ROUTING.13 - ICO : Erreur SRF, RUNOFF, LIC148 - LIC : 150149 - SRF : 0.5150 - SRF/ATM : 4e-2151 - RUNOFF : 700152 153 ### CM71v420-LR-pd-02.ini - ICO interpolé : Erreur SRF, RUNOFF, LIC154 - LIC : 15155 - SRF : 0.7156 - SRF/ATM : -5.e-2157 - ROUTING : 3e3158 159 ### CM71v420-LR-pd-02.ini - ICO natif : Erreurs faibles RUNOFF, LIC160 - LIC : 0.3161 - SRF : 7.e-6162 - SRF/ATM : -6.e-9163 - ROUTING : 5.e-2 -
TOOLS/WATER_BUDGET/waterbudget.sh
r5469 r6651 17 17 #--for a good precision consider at least a period of 50 or 100 years 18 18 19 direxp="/ccc/store/cont003/gencmip6/p86 maf/IGCM_OUT/IPSLCM6/DEVT/pdControl/"20 exp=" CM6014-pd-split-D-01"21 yearbeg=1 91022 yearend=1 94919 direxp="/ccc/store/cont003/gencmip6/p86caub/IGCM_OUT/IPSLCM6/DEVT/piControl/" 20 exp="VALID-CM622-LR.01" 21 yearbeg=1890 22 yearend=1899 23 23 yearinc=10 24 24
Note: See TracChangeset
for help on using the changeset viewer.