Skip to content

Add patch-based generation for improved statistical convergence in Random Midpoint Displacement (RMD) #135

Description

@sbrandstaeter

Description

When using the Random Midpoint Displacement (RMD) algorithm to generate rough surfaces, generating the surface in multiple patches — rather than as a single continuous surface — significantly improves the statistical convergence of the height distribution toward the expected Gaussian profile.

Dividing the surface into patches (each generated independently but with the same Hurst exponent and resolution) yields better ensemble statistics. This approach appears to mitigate some of the known limitations of standard RMD implementations that generate the surface in a single pass, where the resulting height distribution often deviates from Gaussian behavior.

Question:

Does the current implementation in MIRCO support patch-based generation for RMD surfaces?
If not, I’d like to suggest adding this as a configurable feature — allowing users to specify the number of patches (or patch size) at a fixed global resolution. The patches would then be combined to form the final surface.

Proposed enhancement:

  • Introduce a num_patches or patch_size parameter in the RMD generator.
  • Ensure each patch uses the same Hurst exponent.
  • Seamlessly combine patches into a single continuous surface at the end of generation.

This feature would improve statistical robustness and make RMD-generated surfaces more consistent with theoretical expectations.

Example implementation:

An example of a Python implementation of the RMD algorithm with patches (done by @jacopenji ) can be found here:
https://github.com/sbrandstaeter/deep_sim/blob/paper-rebuttal/pydeep_sim/rough_surface/patches_generation.py

Related Issues and Merge Requests

  • Blocks
  • Is blocked by
  • Follows
  • Precedes
  • Related to
  • Part of
  • Composed of

Additional Information

Interested Parties

@jacopenji

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions