diff --git a/test_data/config_random_example.yml b/test_data/config_random_example.yml
new file mode 100644
index 0000000000000000000000000000000000000000..deb73c39dfb0ecda1c28f72c6253e16247001311
--- /dev/null
+++ b/test_data/config_random_example.yml
@@ -0,0 +1,140 @@
+# EXAMPLE CONFIGURATION FILE TO BUILD A RANDOM CLUSTER WITH 100 SPHERES.
+
+system_settings:
+  # Limit on host RAM use in Gb (0 for no configuration limit)
+  max_host_ram : 24
+  # Limit on GPU RAM use in Gb (0 for no configuration limit)
+  max_gpu_ram  : 8
+  # Random seed (a positive integer number)
+  rnd_seed     : 105
+  # Random engine (COMPACT or LOOSE)
+  rnd_engine   : "COMPACT"
+  # OBJ model export flag (requires pyvista; 0 is FALSE)
+  make_3D      : 0
+
+input_settings:
+  # Folder to write the code input configuration files
+  input_folder : "."
+  # Name of the scatterer description file
+  spheres_file : "DEDFB_comp"
+  # Name of the geometry description file
+  geometry_file: "DCLU_comp"
+  
+output_settings:
+  # Folder for the code output storage
+  output_folder: "."
+  # Name of the main output file
+  output_name  : "c_OCLU"
+  # Requested output formats
+  formats      : [ "LEGACY", "HDF5" ]
+  # Index of the scale for transition matrix output
+  jwtm         : 1
+
+particle_settings:
+  # What application to use (SPHERE | CLUSTER | INCLUSION)
+  application : "CLUSTER"
+  # Number of spheres
+  n_spheres   : 100
+  # Number of sphere types
+  n_types     : 2
+  # Vector of sphere type identifiers (what type is each sphere)
+  # For random genration it can be empty (random sphere types),
+  # or contain "n_spheres" elements (random position with assigned
+  # types).
+  sph_types   : [ ]
+  # Vector of layers in types (how many layers in each type)
+  n_layers    : [ 1, 1 ]
+  # Spherical monomer radii in m (one size for each type)
+  radii       : [ 4.000e-8, 4.000e-8 ]
+  # Layer fractional radii (one per layer in each type)
+  rad_frac    : [ [ 1.0 ], [ 1.0 ] ]
+  # Index of the dielectric constants (one per layer in each type)
+  #
+  # 1 is first file in `dielec_file`, 2 is second ...
+  dielec_id   : [ [ 1 ], [ 1 ] ]
+  # Maximum radius for random particle size in m
+  max_rad     : 3.0e-7
+
+material_settings:
+  # Dielectric properties definition (-1 = scaled, 0 = tabulated)
+  diel_flag   : 0
+  # External medium dielectric constant
+  extern_diel : 1.00e+00
+  # Dielectric constant files folder
+  dielec_path : "../../ref_data"
+  # List of dielectric constant files (used if diel_flag = 0)
+  dielec_file : [ "eps_ashok_C.csv" ]
+  # Dielectric constant files format (same for all files)
+  dielec_fmt  : [ "CSV" ]
+  # Matching method between optical constants and radiation wavelengths
+  #
+  # INTERPOLATE: the constants are interpolated on wavelengths
+  # GRID: only the wavelengths with defined constants are computed
+  #
+  match_mode  : "GRID"
+  # Reference dielectric constants (used if diel_flag = -1)
+  #
+  # One real and one imaginary part for each layer in each type.
+  diel_const  : [ ]
+
+radiation_settings:
+  # Radiation field polarization (LINEAR | CIRCULAR)
+  polarization: "LINEAR"
+  # First scale to be used
+  scale_start : 1.00e-06
+  # Last scale to be used
+  scale_end   : 2.00e-05
+  # Calculation step (overridden if `match_mode` is GRID)
+  scale_step  : 5.00e-09
+  # Peak Omega
+  wp          : 2.99792e+08
+  # Peak scale
+  xip         : 1.00e+00
+  # Define scale explicitly (0) or in equal steps (1)
+  step_flag   : 0
+  # Type of scaling variable
+  scale_name  : "WAVELENGTH"
+
+geometry_settings:
+  # Maximum internal field expansion
+  li          : 6
+  # Maximum external field expansion (not used by SPHERE)
+  le          : 8
+  # Number of transition layer integration points
+  npnt        : 149
+  # Number of non transition layer integration points
+  npntts      : 300
+  # Averaging mode
+  iavm        : 0
+  # Meridional plane flag
+  isam        : 0
+  # Starting incidence azimuth angle
+  in_th_start : 0.0
+  # Incidence azimuth angle incremental step
+  in_th_step  : 0.0
+  # Ending incidence azimuth angle
+  in_th_end   : 0.0
+  # Starting incidence elevation angle
+  in_ph_start : 0.0
+  # Incidence elevation angle incremental step
+  in_ph_step  : 0.0
+  # Ending incidence elevation angle
+  in_ph_end   : 0.0
+  # Starting scattered azimuth angle
+  sc_th_start : 0.0
+  # Scattered azimuth angle incremental step
+  sc_th_step  : 0.0
+  # Ending scattered azimuth angle
+  sc_th_end   : 0.0
+  # Starting scattered elevation angle
+  sc_ph_start : 0.0
+  # Scattered elevation angle incremental step
+  sc_ph_step  : 0.0
+  # Ending scattered elevation angle
+  sc_ph_end   : 0.0
+  # Vector of sphere X coordinates (one per sphere or empty for random)
+  x_coords    : [ ]
+  # Vector of sphere Y coordinates (one per sphere or empty for random)
+  y_coords    : [ ]
+  # Vector of sphere Z coordinates (one per sphere or empty for random)
+  z_coords    : [ ]