Basic Workflows
This section describes the typical workflows for using DEISM in different scenarios.
DEISM-ARG (Arbitrary Room Geometry)
DEISM-ARG is used for complex room shapes and supports convex geometries beyond simple shoebox rooms.
Related examples with deism_arg in the names are located in the examples/ directory:
deism_arg_IWAENC_fig5_fig6.py: Recreating the results of Figure 5 and Figure 6 from the following paper Arbitrary Geometries.deism_arg_singleparam_example.py: A basic example of DEISM-ARG.deism_arg_pra_compare.py: Comparing DEISM-ARG results with pyroomacoustics regarding generated image sources (the number and positions should be identical).deism_args_compare.py: Comparing different versions of DEISM-ARG algorithms (Original, LC, Mix) to demonstrate trade-offs between computational cost and accuracy.
Basic Workflow
Set Parameters
Configure simulation parameters in
configSingleParam_ARG.ymlor override them via command line.Define Room Geometry
Specify the vertices of your room in, e.g., the
init_parameters_convexfunction. The room must be convex.Parameter conflict check
You can check if there is any conflict in the parameters by running the
detect_conflictsfunction from thedeism.data_loadermodule.Run Simulation
Execute the simulation using one of these methods:
IDE Method: Run
deism_arg_singleparam_example.pydirectly in your IDECommand Line Method: Use command line with optional parameter overrides:
python deism_arg_singleparam_example.py --help # View available options python deism_arg_singleparam_example.py -c 350 -zs 20 --run # Run with custom parameters
Command Line Options
Common command line parameters:
-xs: Source position (x, y, z)-xr: Receiver position (x, y, z)--quiet: Suppress output information--run: Execute the simulation--help: Display all available options
DEISM for Shoebox Rooms
The original DEISM method works with rectangular (shoebox) room geometries.
Basic Workflow
Configure Parameters
Set simulation parameters in
configSingleParam.ymlor override them via command line.Run Simulation
Execute the simulation using one of these methods:
IDE Method: Run
deism_singleparam_example.pydirectly in your IDECommand Line Method: Use command line with optional parameter overrides:
python deism_singleparam_example.py --help # View available options python deism_singleparam_example.py -c 350 -zs 20 --run # Run with custom parameters
Some tests and comparisons
Version Comparison
Compare different DEISM algorithm versions:
For DEISM-ARG:
python deism_args_compare.py
This compares: - Original version (most computation-costly) - LC vectorized version (fastest) - Mix version (trade-off between Original and LC)
For Shoebox DEISM:
python deisms_lc_mix_test.py
This compares: - DEISM original - DEISM MIX (original + LC vectorized) - DEISM LC vectorized - FEM as ground truth (for specific parameters)
Validation Against Other Tools
Compare DEISM-ARG results with pyroomacoustics:
python deism_arg_pra_compare.py
This comparison checks: - Number of image sources - Positions of image sources - Acoustic transfer functions
Working with Directivities
Simple Directivities
For basic scenarios, you can use:
Monopole sources and receivers: Omnidirectional source and receiver directivities.
Arbitrary Directivities
Simulated directivities from a sphere around the source or receiver using FEM. Please check paper Directivity Formulation for more details.
For arbitrary directivity patterns, you can provide:
Frequency array: 1D array of frequencies
Sampling directions: 2D array of (azimuth, inclination) angles - Azimuth: 0 to 2π (+x direction to full rotation) - Inclination: 0 to π (+z direction to -z direction)
Pressure field data: 2D array (frequencies × directions)
Sampling radius: Radius of measurement sphere
Best Practices
Distance Recommendations
Maintain at least 1m distance between transducers and walls.
The distance between the source and receiver should be no less than the sum of their transparent spheres’ radii.
Same-Speaker Scenarios
When both source and receiver are on the same speaker:
Run DEISM for all reflection paths except the direct path, this can be done by setting
ifRemoveDirect: 0in the configuration file.Handle the direct path separately to avoid numerical issues. You can use other tools to calculate the direct path, e.g., FEM.
Silent Mode
Suppress unnecessary output:
Add
--quietflag to command lineSet
SilentMode: 1in configuration files
Performance Optimization
Choose appropriate algorithm version:
Original: Most accurate, slowest
LC: Fastest, good for high-order reflections
Mix: Balance of accuracy and speed (recommended)
The Mix version uses Original for early reflections (up to order 2 by default) and LC for higher orders.
You can change the order of reflections using the mixEarlyOrder parameter in the configuration file.
Troubleshooting Common Issues
to be added…