TaiwanVVM-style simulations
High-resolution simulations over Taiwan use realistic topography and land-surface fields read from NetCDF, together with the Noah land model when enabled. This workflow is often called TaiwanVVM in project documentation.
Configuration overview
-
Grid and domain — Set
grid.nx,grid.ny,grid.nz, and spacing to match your experiment.fix_lonlat: trueis typical for lon/lat-consistent setups (see sampledefault_config.json). -
Spatial input file —
netcdf_reader.source_filemust point to a NetCDF file containing the variables you need. The sampledefault_config.jsonlists 2D variables such aslon,lat,topo,sea_land_ice_mask, vegetation and soil types, slopes, ground temperature, albedo, greenness, LAI, etc. Your file must provide the same names (or you must change the list and preprocessing to match). -
Land and surface — Enable
physics.land.enable_landfor Noah; tunefrequency_step. Enablephysics.surface.enable_surfaceand choosemode(e.g.sflux_tc_2d) when you need surface flux coupling. These interact with the 2D fields read from NetCDF. -
Output — Set
output.output_dirto a writable path; list diagnostics you need inoutput.fields_to_output(includingtopo,lon,latif you want them in the archive).
Generating spatial NetCDF
The script scripts/generate_init_nc.py reads rundata/input_configs/default_config.json (same path as the main config used in the script) and writes:
netcdf_reader.source_filefrom the config (directories are created if missing).
It supports:
USE_TAIWAN_TOPO = True— Reads high-resolution Taiwan data fromSOURCE_TW_DATA(default../rundata/land/topolsm_TW.nc) and coarsens to the configured grid.USE_TAIWAN_TOPO = False— Idealized ridge and land-type patterns for synthetic experiments.
Edit the constants at the top of the script and run it from the scripts/ directory with Python dependencies (netCDF4, numpy, scipy) installed. Align paths with your machine.
Large-scale forcing (optional)
For lateral boundary forcing, scripts/generate_ls_forcing.py can prepare forcing files; dynamics.forcings.lateral_boundary_nudging in JSON points to directories and file naming under rundata/LS_forcings/ when enabled.
Operational notes
- Ensure NetCDF and PnetCDF libraries used at build time match the files you read and write.
- Taiwan runs are often large; adjust MPI ranks,
physics.rrtmgp.column_chunk_size, and I/O strategy (output.engine,--io-tasks) for your cluster. - The repository README credits Noah land GPU work to the Central Weather Administration (CWA) of Taiwan.
For a minimal first run, start from rundata/input_configs/default_config.json, replace output.output_dir and initial_conditions.source_file with local paths, and verify netcdf_reader.source_file exists after preprocessing.