diffuse_data.py 864 B

123456789101112131415161718192021222324252627282930313233343536
  1. import numpy as np
  2. from vedo import Grid, settings, show
  3. from vedo.pyplot import histogram
  4. settings.default_font = "FiraMonoMedium"
  5. grid = Grid(res=[50,50])
  6. grid.wireframe(False).lw(0)
  7. values = np.zeros(grid.npoints)
  8. values[int(grid.npoints/2)] = 1
  9. values[int(grid.npoints/5)] = 1
  10. grid.pointdata["scalars"] = values
  11. grid.cmap("Set1_r").add_scalarbar()
  12. grid2 = grid.clone()
  13. grid2.smooth_data(niter=750, relaxation_factor=0.1, strategy=1)
  14. grid2.cmap("Set1_r").add_scalarbar()
  15. his = histogram(
  16. grid2.pointdata["scalars"],
  17. c='k4',
  18. xtitle="Concentration",
  19. ytitle="Frequency",
  20. axes=dict(htitle="", axes_linewidth=2, xyframe_line=0),
  21. )
  22. his = his.clone2d() # anchor it to screen coords
  23. print("integrated over domain:", grid2.integrate_data())
  24. show([
  25. ["Initial state", grid],
  26. ["After diffusion", grid2, his]],
  27. N=2, axes=1,
  28. ).close()