Repository navigation
ViennaPS-4.5.0
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, andSurfaceDiffusionSolverAPIs. 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.
- New
-
Added purge and desorption modeling for atomic layer processing.
AtomicLayerProcessParametersnow includespurgeTimeStep.- ALP purge pulses can run a secondary surface-to-surface ray-tracing pass driven by desorbing surface species.
- New
psDesorptionSource.hppcreates disk and triangle desorption sources for CPU/GPU flux engines.
-
Updated
SingleParticleALD.- New
SingleParticleALDParamsparameter 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.
- New
-
Added neutral transport modeling.
- New
NeutralTransportprocess model andNeutralTransportParameters. - 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.
- New
API And Compatibility Notes
-
ViennaRay particle callbacks now use
PointDatainstead ofviennaray::TracingData.surfaceCollision(..., PointData<T>& localData, const PointData<T>* globalData, ...)replaces the oldTracingDatasignature.- Use scalar-data accessors such as
addToScalarData(...)andgetScalarData(...)instead ofgetVectorData(...). - 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 bycalculateSourceFluxes(...).- New
calculateSurfaceFluxes(...)handles desorption/surface re-emission passes.
-
SingleParticleALDconstruction changed.- C++: create and pass a
SingleParticleALDParamsobject. - Python:
ps.SingleParticleALD(ps.SingleParticleALDParams())replaces the previous positional constructor.
- C++: create and pass a
-
Process::getTriangleMesh()now exposes the per-triangle flux mesh from the lastcalculateFlux()call when a triangle flux engine is used.
Fixes And Maintenance
- Added
VIENNAPS_VTK_RENDERINGCMake 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.