Plot surface variables#
# skip this if package has already been installed
# !pip install modvis
import os
import modvis.ats_xdmf as xdmf
import modvis.plot_vis_file as pv
import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s: %(message)s')
work_dir = f"../../model2/"
run_dir = "3-transient"
model_dir = os.path.join(work_dir, run_dir)
logging.info(f"Loading data from {model_dir}")
# model_dir = "../data/coalcreek"
2025-04-07 15:02:11,744 - root - INFO: Loading data from ../../model2/3-transient
Download the sample data when running on Google Colab
# import os
# if not os.path.exists(model_dir):
# !git clone https://github.com/pinshuai/modvis.git
# %cd ./modvis/examples/notebooks
import vis data#
visfile = xdmf.VisFile(model_dir, domain='surface', model_time_unit= 'd',
load_mesh=True)
# all available variable names
list(visfile.d.keys())
['canopy-cell_volume',
'canopy-drainage',
'canopy-evaporation',
'canopy-fracwet',
'canopy-interception',
'canopy-leaf_area_index',
'canopy-potential_transpiration',
'canopy-potential_transpiration_mols',
'canopy-radiation_balance',
'canopy-temperature',
'canopy-throughfall_drainage_rain',
'canopy-throughfall_drainage_snow',
'canopy-water_content',
'canopy-water_equivalent',
'canopy-water_source',
'canopy-water_source_meters',
'snow-cell_volume',
'snow-density',
'snow-depth',
'snow-evaporation',
'snow-expected_temperature',
'snow-melt',
'snow-precipitation',
'snow-radiation_balance',
'snow-temperature',
'snow-water_content',
'snow-water_equivalent',
'snow-water_source',
'snow-water_source_meters',
'surface-air_temperature',
'surface-albedos.bare_or_water',
'surface-albedos.snow',
'surface-area_fractions.bare_or_water',
'surface-area_fractions.snow',
'surface-aspect',
'surface-cell_volume',
'surface-elevation',
'surface-emissivities.bare_or_water',
'surface-emissivities.snow',
'surface-evaporation',
'surface-incident_shortwave_radiation',
'surface-incoming_longwave_radiation',
'surface-incoming_shortwave_radiation',
'surface-manning_coefficient',
'surface-mass_density_liquid',
'surface-molar_density_liquid',
'surface-overland_conductivity',
'surface-ponded_depth',
'surface-ponded_depth_bar',
'surface-potential_evaporation',
'surface-precipitation_rain',
'surface-pres_elev',
'surface-pressure',
'surface-radiation_balance',
'surface-relative_permeability',
'surface-slope_magnitude',
'surface-soil_resistance',
'surface-source_molar_density',
'surface-surface_subsurface_flux',
'surface-temperature',
'surface-total_evapotranspiration',
'surface-transpiration',
'surface-unfrozen_fraction',
'surface-vapor_pressure_air',
'surface-velocity.0',
'surface-velocity.1',
'surface-velocity.2',
'surface-water_content',
'surface-water_content_bar',
'surface-water_source',
'surface-water_source_mols']
plot surface ponded depth#
time_slice = '2016-1-10'
fig, ax, tpc = pv.plot_surface_data(visfile, var_name="canopy-leaf_area_index",
log = False, vmin=0.01, vmax=3,
time_slice= time_slice)
2025-04-08 03:50:12,875 - root - INFO: No unit convertion.
fig, ax, tpc = pv.plot_surface_data(visfile, var_name="canopy-leaf_area_index",
log = False, vmin=0.01, vmax=3,
time_slice= time_slice)
2025-04-08 03:49:58,186 - root - INFO: No unit convertion.
plot ET#
fig, ax, tpc = pv.plot_surface_data(visfile, var_name="surface-total_evapotranspiration",
log = False, vmin=0, vmax=3,
time_slice= time_slice)
plot snow cover#
fig, ax, tpc = pv.plot_surface_data(visfile, var_name="surface-area_fractions.snow",
vmin=0, vmax=1, log=True,
time_slice=time_slice)
2025-04-07 15:02:27,212 - root - INFO: No unit convertion.
plot SWE#
fig, ax, tpc = pv.plot_surface_data(visfile, var_name="snow-water_equivalent",
vmin=0, vmax=240, log=True,
time_slice=time_slice)