Skip to content

ViennaPS-4.5.0

Choose a tag to compare

@tobre1 tobre1 released this 01 Jun 07:33
· 17 commits to master since this release
b2229bc

This release adds surface-diffusion support, extends atomic layer processing with purge/desorption transport, and updates the ViennaRay particle data interface to the new PointData API.

Highlights

  • Added graph-based surface diffusion for point data on surfaces.

    • New SurfaceDiffusionParameters, PointCloud, SurfaceDiffusionStencil, and SurfaceDiffusionSolver APIs.
    • Process::setParameters(const SurfaceDiffusionParameters&) enables diffusion controls from C++ and Python.
    • Flux and coverage data can now be diffused when a surface model exposes diffusion coefficients.
  • Added purge and desorption modeling for atomic layer processing.

    • AtomicLayerProcessParameters now includes purgeTimeStep.
    • ALP purge pulses can run a secondary surface-to-surface ray-tracing pass driven by desorbing surface species.
    • New psDesorptionSource.hpp creates disk and triangle desorption sources for CPU/GPU flux engines.
  • Updated SingleParticleALD.

    • New SingleParticleALDParams parameter object replaces the long positional constructor argument list.
    • The model now supports evaporation/desorption-driven coverage updates and a coverageDiffusionCoefficient.
    • The atomic layer deposition examples were updated to use the new parameter object and purge/desorption settings.
  • Added neutral transport modeling.

    • New NeutralTransport process model and NeutralTransportParameters.
    • Supports coverage-dependent sticking, material-dependent desorption, etch-front consumption, optional surface diffusion, and GPU callables.
    • Added examples/neutralTransportCylinder, including a transmission probability diagnostic for triangle flux engines.

API And Compatibility Notes

  • ViennaRay particle callbacks now use PointData instead of viennaray::TracingData.

    • surfaceCollision(..., PointData<T>& localData, const PointData<T>* globalData, ...) replaces the old TracingData signature.
    • Use scalar-data accessors such as addToScalarData(...) and getScalarData(...) instead of getVectorData(...).
    • Surface models now use SmartPointer<PointData<T>> for fluxes, coverages, and surface data.
  • Flux engines split flux calculation into source and surface contributions.

    • calculateFluxes(...) was replaced by calculateSourceFluxes(...).
    • New calculateSurfaceFluxes(...) handles desorption/surface re-emission passes.
  • SingleParticleALD construction changed.

    • C++: create and pass a SingleParticleALDParams object.
    • Python: ps.SingleParticleALD(ps.SingleParticleALDParams()) replaces the previous positional constructor.
  • Process::getTriangleMesh() now exposes the per-triangle flux mesh from the last calculateFlux() call when a triangle flux engine is used.

Fixes And Maintenance

  • Added VIENNAPS_VTK_RENDERING CMake option and disabled VTK rendering for Python builds on Apple platforms.
  • Reworked disk and triangle flux engines to keep coverages in PointData, reuse KD-tree helpers, and correctly merge source and desorption flux data.
  • Improved triangle-engine post-processing setup and per-triangle flux output.