smashbox.tutorial_python
Created on Thu Aug 21 12:03:55 2025
@author: maxime
1#!/usr/bin/env python3 2# -*- coding: utf-8 -*- 3""" 4Created on Thu Aug 21 12:03:55 2025 5 6@author: maxime 7""" 8 9 10if __name__ == "__main__": 11 12 import smashbox 13 14 bbox = { 15 "left": 875000.0, 16 "bottom": 6228000.0, 17 "right": 1001000.0, 18 "top": 6320000.0, 19 } 20 21 sb = smashbox.SmashBox() 22 23 sb.myparam.set_param("bbox", bbox) 24 sb.myparam.set_param("outlets_database", "db_sites") 25 sb.myparam.set_param("smash_parameters_dt", 3600.0) 26 27 # RHAX 28 sb.myparam.set_param( 29 "outlets_shapefile", 30 "/nas/RHAX/DONNEES/SIG/BASSINS/CONTOUR/SITES_L93/Hydro_Bassins.shp", 31 ) 32 33 sb.newmodel("rex") 34 35 sb.rex.mysetup.update_setup( 36 { 37 "start_time": "2014-01-01 00:00", 38 "end_time": "2014-02-01 00:00", 39 } 40 ) 41 42 # MAX 43 sb.myparam.set_param( 44 "outlets_shapefile", 45 "/home/maxime/DATA/bassin_hydro/Hydro_Bassins.shp", 46 ) 47 48 sb.newmodel("rex") 49 50 sb.rex.mysetup.update_setup( 51 { 52 "pet_directory": "/home/maxime/DATA/ETP-SFR-FRA-INTERA_L93", 53 "prcp_directory": "/home/maxime/DATA/PLUIE", 54 "qobs_directory": "/home/maxime/DATA/QOBS_SITE_60M", 55 "start_time": "2014-01-01 00:00", 56 "end_time": "2014-02-01 00:00", 57 } 58 ) 59 60 sb.rex.generate_mesh( 61 query="(SURF>40) & (INFLUENCE=='Influence nulle ou faible')", 62 area_error_th=0.2, 63 ) 64 65 # optimize parameters if required 66 # sb.rex.optimize() 67 68 sb.rex.myplot.plot_mesh(fig_settings={"figname": "output/mesh.png"}) 69 sb.rex.myplot.plot_catchment_surface_error( 70 fig_settings={"figname": "output/mesh_surface_error.png"} 71 ) 72 sb.rex.myplot.plot_catchment_surface_consistency( 73 fig_settings={"figname": "output/mesh_surface_consistency.png"} 74 ) 75 76 sb.rex.model() 77 sb.rex.forward_run(return_options={"q_domain": True}, warmup=100) 78 79 sb.rex.mysmashmodel.mystats.foutlets_stats() 80 sb.rex.mysmashmodel.mystats.fspatial_stats() 81 sb.rex.mysmashmodel.mystats.fmisfit_stats() 82 83 sb.rex.myplot.multiplot_parameters( 84 fig_settings={"figname": "output/muliplot_parameters.png"} 85 ) 86 sb.rex.myplot.plot_parameters( 87 fig_settings={"figname": "output/cp_parameters.png"} 88 ) 89 90 sb.rex.myplot.plot_outlet_stats( 91 fig_settings={"figname": "output/outlets_max_discharges.png"} 92 ) 93 sb.rex.myplot.plot_hydrograph( 94 fig_settings={"figname": "output/outlet_discharges.png"} 95 ) 96 sb.rex.myplot.plot_spatial_stats( 97 fig_settings={"figname": "output/spatial_max_discharges.png"} 98 ) 99 100 sb.rex.myplot.multiplot_misfit( 101 fig_settings={ 102 "figname": "output/multiplot_nse_misfit.png", 103 "xsize": 15, 104 "ysize": 15, 105 } 106 ) 107 sb.rex.myplot.plot_misfit( 108 misfit="nnse", fig_settings={"figname": "output/nnse_misfit.png"} 109 ) 110 sb.rex.myplot.plot_misfit_map( 111 fig_settings={"figname": "output/map_nse_misfit.png"} 112 )