User Tools

Table of Contents

DSMC / PIC-MC - Changelog

13.01.21: Version →

New features / Improvements
For frozen species the collision routine now also considers the mean drift velocity to generate test particles.
New function set_temperature_function to implement wall-temperature dependent surface reactions
The function set_profile(filename) now also works in connection with all surface reactions (as a multiplicative factor for the probability).
Bug fixes
In DSMC, the constraint check for cell-spacing / collision frequency is now done for the actual collision cross section
A time-dependent formula for PSOLL is now treated in the same way as a time-dependent voltage (the former method partially led to erroneous behaviour)
Omitting crashes in the PPP module in case, empty data fields are written

14.05.20: Version →

New features / Improvements
New collision routine can now properly handle frozen species, which are present only as continuous background distribution (see frozen species).
All debug commands removed from scripts (under a scheduler, i.e. without terminal output, the debug commands cause problems).
Circular convolution function in ppp for e.g., modeling absorption on rotating substrates.
Bug fixes

14.01.20: Version →

New features / Improvements
Bug fixes
Dynamic allocation of index array in GMSH reader functions necessary.
If ambiguity of dielectric and metallic nodes at mesh interface AND dielectric codec is defined after metallic codec AND cut-cell computation takes effect field solver failed.
Using one pre-chosen node only for charge mapping on dielectric cells caused stripe artefacts. Now charges are evenly distributed on accordant nodes.

05.07.19: Version →

New features / Improvements
Energy and angular distribution of emitted particles by analytic functions, see here.
Absolute and relative energy loss functions for e.g. high energy electrons or reflected neutrals, see here.
New post processing function 'convolution' for MoveMag modeling applications.
Bug fixes

12.03.19: Version →

New features / Improvements
Updated interface for new GMSH v4.1 mesh format.
detailed representation of load per quad, adjustable by NTESTCYCLES in par file, virtually no computation overhead, visualization with script 'visualize_load'
Updated cross sections for C2H2 plasma chemistry
Bug fixes
Fixed: For histogram membranes, an overflow in the angle determination could occur if particles were hitting the surface perfectly perpendicularly.

22.02.19: Version →

New features / Improvements
Optimization for ICP simulation in movecycle.
Bug fixes
Elements not assigned to a physical surface (GMSH v4.0 mesh format) caused error when using initpicmc script.
The collision routine could potentially freeze if - during the collision loop - collision partners are disappearing (e.g. due to dissociation etc.). This was more likely to occur if a lot of different species are involved.

08.11.18: Version →

New features / Improvements
For all conductive electrodes, the potentials are now automatically being logged into a TXT file potentials_log.txt as a function of time. The time resolution is the same as for absorption_log.txt etc. and can be tuned via the NCOUNTS parameter.
New bounding box border type 'circular' to utilize cylinder symmetry (90° pie model). Limitation: Number of tasks must be equal to number of quads.
Performance: Incoming particles are allways stored in index = 0. Thus, accordant for-loops have been adjusted.
Bug fixes
Potential freeze within collision cylce.

Version →

New features / Improvements
GMSH v4.x meshfiles can be used now.
Updated Kr cross section dataset.
Increased initial alphaSOR to 1.90 for better performance.
Aligned timestamps with that from post processing template (ppp_template.r).
MQUAD / MJOIN optimization (see manual) can now be used for PIC-MC simulation too. Though, it's mandatory that cell resolution at MJOIN interfaces is identical.
DC_BIAS control variable has been discarded. Instead use 'vf_coupling = “rf_electrode_name”' to simulate a rf electrode with self bias (floating electrode).
Bug fixes

Version →

New features / Improvements
Energy and angular distribution function of emitted particles can now be flexibly specified via histogram files. For further information, see Particle emission distribution by user defined histogram
Bug fixes
Memory leak in console output for feedback approximate simulation time fixed. This could potentially cause trouble in case of very many time steps or very long simulation runs

Version →

New features / Improvements
New routine 'IsMetallDomainIntersection' to compute cell intersections with mesh domains marked as conductive.
Sweep for optimal relaxation coefficient (alphaSOR) now triggered after reference computation only to get more reliable results.
Import of externally computed magnetic field files improved, see External magnetic field support
Bug fixes
Error in recent changes to fieldsolver and floating conductor domain handling, respectively.
Computation of floating domains takes into account intersected cells now. Remark: Prior to v2.4.3.5. this was not the case which resulted in slightly wrong floating potentials, e.g. for cylindrical cathode setups.
Computation of dc bias voltage works (again).
Algorithm which checks whether space point is inside or outside mesh domain was not bulletproof. (Now checking two times with some randomization and taking least ambigious result in case.)
In cut-cell computation for field solver, membrane type mesh elements have not been ommited.

Version →

New features / Improvements
Separating floating conductor domains from other domains by one node not necessary anymore.
Bug fixes
Cut cell optimiziation for e-field solver did not work at quad interfaces.
Flaws in e-field solver regarding computation of floating domain surface.
Restart e-field solver with adjusted parameter (alphaSOR) on divergence.

Version →

New features / Improvements
Introduction of histogram arrays
Bug fixes

Version →

New features / Improvements
RVM postprocessing: Cutplanes are now possible on cylindric surfaces.
RVM postprocessing: POS files from cutplanes can now be generated with parametric coordinates (i.e. in order to “unroll” a cylinder cutplane into a rectangular plane
RVM postprocessing: The 'write_flag' is now also being effective in obj.write_pos_scalar_XXX and obj.write_pos_vector_XXX
Input power 'PSOLL' can now be defined as time deviant function via string expression. This allows for modeling ac power control loop behavior more realistically.
Included optional switch to delay control loop responsiveness by power sampling time 'PSAMPLE' to match simulation with corresponding experimental control loop behavior.
'powerloss.txt' file now includes nominal input power as fourth column.
Bug fixes
The builtin function get_current() could lead to wrong results. In some cases the sign of e.g. secondary electron current was not correctly treated. This affects the output file current.txt. In case of a plasma simulation with power control there is no further effect of this bug. The correct current can be obtained from the files absorption_log.txt and desorption_log.txt by adding the respective columns with correct sign. However in case of simulations with multiple electrode control, the overall current / power could be wrong in the order of the secondary electron yield. With version get_current works correctly.
RVM postprocessing: Reading data and writing data without any cutplane operation in between did not always work. In some cases, a command obj.identity() had to be manually introduced. This is now obsolete.
Checkpointing: In some cases the previous method of writing checkpoints could freeze the simulation run and/or yield corrupted checkpoints. In the previous method, the master calls all client processes sequentially to append their contribution to the checkpoint files. On some cluster systems this seems not working properly together with the network filesystem synchronization. Therefore the new method is that all clients send their checkpoint data to the master, and the master is the only process to open and write the checkpoint files.
Absorption, desorption and deposition plots got messed up after restart and intermediate shutdowns. Solved by adding plot time interval 'DTCTR2' into 'last_shutdown.def' file.
Absorption, desorption and deposition checkpoint files were not properly assigned to computation grid after restart.
Grid cells cutted by floating conducter domain could mess up fieldsolver convergence in certain cases. Solved by limiting proximity of mesh-cutted cell nodes to floating conducter domain.
After restart second plot got messed up as pre-loaded average data was not reset after first plot.

Version →

New features / Improvements
set_emission_thompson(“species”, Ub, alpha, E_ion, m_ion) for defining distribution of sputtered particles with specified cut-off energy. See section Source of sputtered particles.

Version →

Fixed possible failure in fieldsolver convergence computation.
Restart between plot intervals does not mess up first subsequent plot, neither does changing cell resolution.
Changing particle scaling (NREAL) at any point does not mess up density and pressure plots anymore. Averages checkpoint file format changed and thus, not compatible with previous versions!
New features / Improvements
set_profile(…) now also allows for mesh plots (absorption or desorption) to define particle sources.
Changes in script files
Bugfix in post-processing script using append(…) routine.
Changes in C++ files

Version →

Prevent potential bug when updating collision probabilities.
Prevent double counting of floating conductor contour at quad interfaces.
Dielectric domains sharing quad interface with Dirichlet or conductive domains serverly dragged field solver performance.
New features / Improvements
It is now possible to move the mesh in DSMC simulations.
The new script visualize_load can be used to visualize the cpu load per quad and help optimize the quad arrangement.
Reflecting boundary conditions (kind of) for ICP, i.e. Dirichlet and floating conductor domains are field free.
Improved performance of ICP for 2D setups in particular.
Changes in script files
Some more information during constraint test.
Changes in C++ files
Eliminated unnecessary sends / receives in field solver iteration when using floating conducter domains. Improves performance of accordant setups somewhat.
Simplified receive routine.

Version →

Solved issue where maxVrSigma related warning messages occured if maximum particle energy was lower than collision cross section threshold.
Particle page pointers are now recalculated after inserting particles, solves crashes on cases with huge particle numbers.
Solved problem with ppp template if density vector was not defined in par file.
New features / Improvements
Collisions are updated more frequently and independent from plotting.
Information on maximum energy values moved from log file to energy.txt in simulation folder.

Version →

Array holding the maximum energy values was not initialized properly.
Removed obsolete auxiliary convergence condition causing trouble in certain cases.
New features / Improvements
Picmc postprocessing template: ppp_template.r added to simulation folder.
Added parameter to manually set the limit up to which cross sections are calculated.
Changes in script files
e + Cu cross sections included. Momentum transfer, ionization and 4 excitation states.
Changes in C++ files
Prevent PPP from reading files with different number of points to avoid wrong assumptions during write.

Version →

Output of collision rates (in collisions.txt) was not averaged by number of quads and thus, too high.
Membranes placed exactly at quad interfaces were double counting particles.
Potential plot of BEM solver was *ahem* incorrect.
Maximum species energy adjustment after restart could cause instabilities.
New features / Improvements
Collision statistics in quad resolution included, use e.g.
COLLISION = ["e"];

for all collisions involving electrons.

Redundancy-free data messaging, from O(#Tasks) down to O(log2(#Tasks)), in solver iteration for better performance and scalability.
Maximum species energy is adjusted at plot interval to speed up collision calculation.
Postprocessing support for VTK and Tecplot added (see section Additional output formats).
Changes in script files
Output error due to PAR record in init_solver.r was not aligned to master.r equivalent.
NaN output in constraint test due to sqrt(negative number) operations.
Changes in C++ files
Quads totally within floating conductor domain have been suspended from floating potential data reception (artefact in potential plot).
Generating particles in move cycle could affect particle pointer (page / ipart) in certain cases (due to realloc operation). This has been catched to prevent crashes.

Version →

Initialize OpenMPI processes with highest level of thread support available. Though, OpenMPI must be compiled accordantly to provide level three (maximum) which is seemingly needed for lock-up free execution on hyper-threaded(?) Intel(?) machines.
Multiple charged reaction products, where the species have different NREAL factors were incorrectly handled in case of floating surfaces. Example:
add_plain_reaction("Arplus", 1, 1, 
                   ["Ar", "e", "Ominus"], 
                   [1, 0.1, 0.04]);

The charge balance at the surface due to emitted Ominus was erroneously accounted according to the weight of Arplus. If NREAL_Ominus was different from NREAL_Arplus this resulted in a buildup of an artificial surface charge.

New features / Improvements
CSV file format (instead of plain text) for PPP output (see write_csv in ASCII export).
Keyword material (additionally to coverages) included for reading in coverages and deposition checkpoints.
Changes in script files
Moved the NCOUNTS parameter out of the debug section.
Added convenient switch ICP_SOURCE in 'Additional switches' section for faster BEM computation if only ICP source field is requiered.
Feedback calculations are separated from master.r into feedback.r.
Changes in C++ files
Some cleanups and streamlining.
ICP source field is written as binary POS-file and can be loaded as such accordantly.

Version →

BEM solver: adjustment of mesh element normal vector failed in some cases.
MPI initialization changed, to solve problems with CentOS 7.2.
New features / Improvements
Desorption plots in cell resolution are now available.
Changes in script files
Moved TAVG parameter to expert section of paramter file.
Changes in C++ files
AE notation nearest_neighbor in postprocessing module implemented.

Version →

MPI communication was not failsafe and thus, could freeze program execution under certain conditions.
If energy of species is zero in last_shutdown.def file (no species representative in domain) restart failed as this case was not catched.
Reference vector warning for histogram now only affects angular histograms.
New features / Improvements
Improved ICP simulation performance (50 % or so).
Changes in C++ files
Cleaned BEM matrix computation of some unnecessary queries.
Ensure that package which has been probed is unpacked (previously a new package could have arrived after the probing process!).
Ensure data has been fully unpacked before buffer is re-used (could happen before!).
Using non-blocking communication only which is faster and deadlock-free (was not an issue but anyway). Therefore tag for blocking mode has been removed from send and receive routines.

Version →

Bugfix for 1D setups (running with one task): Convergence criteria was ill aligned for optimized alphaSOR. In this regard initial alphaSOR has been unified for 1D, 2D and 3D setups.
New features / Improvements
Emission profile of reaction products can be specified for membrane borders now. Emision is aligned in flight direction of incident particle.
Changes in C++ files
Reinserted slightly adjusted test regarding trajectory hit with element edge.

Version →

Charge in floating conductor domains has been weighted with relaxation factor, i.e. attributed 1.6 (3D) or 1.85 (2D) times stronger to electric field. Effect on former results seems not that big but it messed up optimization algorithm (sweeping + extrapolation of start vector) for 3D setups with floating conductor domains.
Uninitialized variables (#1 omegaICP, #2 gridQuads) caused crash on new Intel system.
If quad was completely within floating conducter domain accordant convergence threshold became zero resulting in massive slowdown.
New features / Improvements
Added a script for using the software with the SLURM job scheduler.
Overhaul of e + N2 cross section set using data from Itikawa2015.
Changes in script files
Added some consistency checks for DIV_X, NX, etc. entries during multi quad initialization.
If the physical surfaces of the magnetron mesh are not named but numbered an proper error message will show up.
Changes in C++ files
“IsInsideWithTolerance”-test used threshold (1e-6) which was larger than element assignment threshold (1e-10) and thus, could lead to wrong results.
Removed check for edge hitting with elements as it doesn't work as intended. Don't expect adverse effects.
Encountered case in which 'create_inner_contour' was trapped within final while loop. Adjusted condition check accordantly.

Version →

Field solver improvement for cells intersected with mesh elements failing in some cases has been adressed.
Issues with erroneous cell surface assignments fixed. Mainly affected complex border models (desorption, conditional emission, etc.).
Cell surface plot (the one at start time) could be messed up as accordant flag was not initialized.
New features / Improvements
Improved performance of electric field solver and plasma simulation, respectively (up to 100%) by extrapolating start vector from previous solution and searching for optimal relaxation factor at runtime.
New model parameter #1: Sampling interval for electron current in ICP simulation (2 x PI default, 0 disable electron sampling and accordant field computation).
New model parameter #2: Reintroduced noise filter to exceed plasma frequency constraint on time step: Filter coefficient 0 = disabled (default), [0.25..0.35] values at which artificial heating from constraint violation is effectively damped for typical simulation setups.
Consider dimensionality in constraint test regarding minimum cell spacing, i.e. don't consider cell spacing in periodic dimension.
Changes in script files
Added parameter descriptions (see above) to parameter file (init.r).
Changes in C++ files
Changed inheritance of generic border class from border to base and assigned pointer to host quad. In this regard various functions and variables could be removed as they are allready defined in host quad.
Removed obsolete variables and streamlined some functions, e.g. 'move_cycle_internal' and 'add_border'.
Divergence of Helmholtz solver now also triggers recomputation with reduced SOR coefficient.

Version →

Mesh algorithm failed for sub-µm cell spacings, i.e. particles flew through mesh.
Adjusted constraint value for time step width vs. plasma density and plasma frequency, respectively accordant to Wikipedia (PIC simulation). It's a factor of three lower now and should be respected!
add_surface_emission could fail, if the mesh surface is directly on the rim between two cells. This possible bug is now captured. The parameter probability is removed from that command since it was not internally evaluated and it is redundant anyway.
New features / Improvements
ICP implementation more or less 'completed'.
Using Fourier Analysis for electron current accumulation.
Computation of electron current induced e- and b-field via TEX-SOR solver on accordant Helmholtz equation.
Extended plot routine for ICP data. You get time variant values for more than four plots per cycle and mean values otherwise.
BEM solver now yields a gradient field from Dirichlet boundary conditions. This field approximates surface currents on HF conductors (skin-effect) as input for ICP plasma simulation.
Change affecting CCP simulation: No approximation of open boundaries anymore which led to instabilities and more solver iterations. Instead open boundaries ('outlet') are initialized with 0. For other than astronomic plasma simulation this should do.
Check if the reference vector in add_histogram is orthogonal to the codec plain and throw a warning in that case.
Changes in script files
ICP related changes in init.r like new plot types.
Changes in C++ files
Changing some file names. Some code shuffling / splitting to enhance readability.
Using complex C variables for ICP data (current, e-field and b-field).

Version →

In the meshdata txt files the z-coordinate of the third point was always identical to that of the first point, this was corrected.
New features / Improvements
New PPP functions implemented: merge(…);, append(…); and write_pos_time_steps(…);, see Postprocessing with RIG-VM for details.
Changes in script files
The domain_decomposition.geo file now shows the individual quads including their name as physical surfaces.
The plot script can now reasonably handle the new surface log files (e.g. absorption_log.txt)

Version →

Fixed: Under rare circumstances, for pressure sources add_source(“species”, flow, “Pa”); whereof the surface is exactly located between two cell boundaries, it could happen that twice the number of required source points are allocated. This can be easily seen as the resulting pressure at such surface is about factor of two too high. This can not happen anymore in
New features / improvements
Particle logging is further extended by transmission through transparent membranes transmission_log.txt as well as kinetic pressure on non-membrane surfaces pressure_log.txt. For further info, see Particle logging.
Mass flow controlled particle sources and sources generated by add_surface_emission can now be normalized according to a scalar profile stored in a POS file. This is accomplished by set_profile(“filename.pos”); just after declaration of the particle source. If e.g. an Ar+ ion bombardment profile is obtained from a plasma simulation on a sputter target, this profile can be used in a subsequent DSMC simulation for tracking of sputtered particles originating from the racetrack.

Version →

Fixed 'No surface found at hit position' issues by using triangle-cell-intersection algorithm for intialization. Thus, cells with mesh elements assigned have an effective surface and vice versa.
Fixed cell surface computation for very small (« 1mm) grid and mesh spacings.
Subcycling modulo for neutral particles reduced by one order of magnitude to consider high energy neutrals, i.e. sputtered atoms.
Trigger at least one convergence computation at start time to consider setups where all mesh domains are grounded (RIT-thruster).
New features / Improvements
BEM solver provides a mesh aligned vector field for use as coil current source in ICP mode.
Maximum energy of any species in simulation domain at last time step is written into 'last_shutdown.def' for a more reasonable collision probability computation instead of assuming 1000 eV for ALL species. If 'last_shutdown.def' does not exist, i.e. at start-time, 10 eV for neutrals and VPMAX eV for charged particles are set. No issues with Turner13 benchmark on this change. Should improve overall performance and setups with many species in particular. Requires at least one restart, though.
Mesh related plots are now written into a separate directory meshdata/*. These plots can be triggered via the MESHDATA list in the parameter file (e.g. MESHDATA=[“Ti”, “O2”];). Information written in the mesh data plots are (i) absorption, (ii) desorption, (iii) mean energy, (iv) mean polar angle θ of incidence, (iv) mean cos(θ). In addition, the data are also written into ASCII files for further processing.
Particle absorption and desorption from and onto physical surfaces is now regularly logged as function of time within the files absorption_log.txt and desorption_log.txt. Thereby, neutral particle fluxes are given in [sccm], while charged particle fluxes are given in [A]. Plotting of the absorption/desorption logs gives a quick impression on whether a simulation run has reached steady state or not. This logging feature is automatically performed; by default up to 100 log entries per simulation run are written. For more log entries, the variable NCOUNTS in the upper part of the parameter file can be used, e.g. NCOUNTS=1000;.
Changes in script files
Overhaul of e + Xe cross section set according to
'add_icp_source(“source_file_from_bem.txt”, excitation_frequency)' now only uses two parameters for ICP mode.
Test of minimum cell spacing against Debye length in constraint test.
Changes in C++ files
Removed remanents to former FIM solver and some obsolete checks.
Performance of ICP mode increased.

Version → (Stable release)

When more than one floating conductor domain was defined surface area was not correctly calculated.
Set startline = 1 in SHEET record of 'ReadFromFile' sigma function.
New features
Current induced e- and b-field are computed when skin current density is defined for mesh domain via 'add_icp_source(0, jx, jy, jz, frequency);' The first parameter has no purpose yet. The others are self-explanatory.
For power control of ICP source current density is scaled by 'VP' internally.
Changes in script files
Changed reaction for (dissociative) attachment of O2 from e + O2 → O2- to e + O2 → O + O- according to '' references to Phelps et al. This is also reasonable as we have no O2 dissociation reaction otherwise.
Changes in C++ files
Some ICP specific add-ons to plot routine, move cycle, power control, etc.
Removed 'GetFreePotentials' routine as it was not used anymore.

Version →

Boundary conditions plots of BEM solver had artefacts due to an allocation error.
In rare cases particles where not correctly assigned to cell. Might address 'no surface found at hit position' warning.
New features
Included the possibility to use an own species_definition.r file
Included optional User_Functions block in parameter file for user functions for use during simulation, e.g. special voltage functions
Included switch for putting all post processing files in a single folder instead of sub directories
Changes in script files
Multi voltage control step adapted to even step numbers, according to single voltage control
Membranes are now ignored in current and DC_BIAS calculations, current.txt file output revised, now completely plot compatible
Changes in C++ files
PPP identity function is executed internally if required, but can also be called explicitly if needed

Version →

Coupling domain A with B via 'vf_coupling' works when defined for A or B (or both) now.
New features
Improved contour approximation within TEX solver by taking into account intersections of computation grid with finite element mesh.
Changes in script files
Reworked run-time console output. It now consists of approximated time till next plot and shutdown.
Overhaul of collision cross section output at start-time.
Consistency check regarding DIV_X, DIV_Y, DIV_Z entries.
If reactions product is not defined in species list (e.g. Crplusplusplus) only momentum transfer reaction is performed with appropriate warning.
Changes in C++ files
Reduced memory and time consumption for mesh absorption plots by limiting data send from each quad.
Removed redundant variables (e.g. rdx = 1/dx).
Simplified plot routine somewhat.

Version →

Convergence criterion for TEX solver now includes a minimum accuracy threshold to better handle a) setups with low voltage settings (⇐ 100) and b) setups where you have field free zones at start-time but not a run-time e.g., when plasma fills these zones.
Specular borders for plasma simulation were not correctly implemented because 'mirror' charges of virtual neighbor cells were not taken into account.
Setups with only one cell per quad were not handled correctly by the field solver (due to missing brackets in 'bounding_box.r'.)
New features
Absorption per mesh element is plotted together with absorption per cell when selecting 'ABSORPTION' plots.
Insufficient cell resolution at curved mesh contours results in e-field and absorption artefacts, respectively. Increasing permittivity for nodes inside fixed potential domains 'aligns' the potential in accordant cells and thus, leads to more homogenous field distribution around curved contours.
Changes in script files
Plot e-field for 'WORKMODE == 2'.
Changes in C++ files
Source class removed from repository as sources are part of generic border class now.

Version →

Particles read from checkpoint file which are onto quad interfaces (very seldom) could be inserted two times.
Numeric strings for voltage function (e.g. 'vf = 100;') were not applied to coupled floating domains.
Mean electric potential plot (PHI_MEAN.pos) was bounded to a species related data structure and thus, subject to sub-cycling. Now it works correctly and is also node centered like the other EM field plots.
New features
New plot array 'FIELD' in parameter file. Example: FIELD[“PHI”, “E”, “B”] plots electric potential, e-field and b-field into the 'field' folder. Parameter files without FIELD array yet are not affected.
Field related plots (E-field, B-field) are node centered like the electric potential plot already is.
Constraint test regarding particle number is tested quad wise now considering the accordant NREAL_SCALE factor.
New control variable 'DC_BIAS for voltage function 'vf'. Use in combination with RF excitation like 'vf = VP*cos(13.56e6*PHI*TIME) + DC_BIAS'.
If border entries are commented out in parameter file the accordant elements from mesh file are ignored. This way certain domains can be excluded / included without providing different mesh files.
Changes in script files
Removed info-list about available species from parameter file. Referring to SIM-Wiki for accordant information.
Redundant tag for loading external B-field removed.
The voltage curve can be plotted from 'powerloss.txt'. Hence, the 'voltage_xxx.txt' files are more or less obsolete. Furthermore they had gargantuan size in relation to their information value.
Adjusted parameter file output for better readability.
Optional 'noise filter' a.k.a. implicit-PIC has no effect at all or - even worse - messes with simulation results. So it has been removed entirely.
Changes in C++ files
Summarizing of kinetic energy accumulation instead of dissipation. This requires only three lines of code in move cycle routine whereas the latter had several instances distributed all over the place.
Plot data packaging splitted into four routines: 'PackSurfaceData', 'PackCellData', 'PackNodeData' and 'PackMiscData'.
Streamlined solver iteration algo somewhat as floating conductor domains could (should) not be connected to potential domains anymore.
The former energy histogram logging has been replaced. Though, it was not removed from code yet.

Version -->

  • Bugfix: On restart warning message wrongly accused particles of being inside the mesh domain.
  • add_vapor_source(“species”, A, B) → Pressure source with $p_{vapor} = exp(-A/T+B)$
  • Memory bug with temperature distribution file fixed.

Version -->

  • Bugfix: Program execution could freeze on restart with changed quad structure.
  • Bugfix: Program execution could freeze for setups with lots of empty quads, i.e. quads inside mesh domain.
  • New feature: 'POSITION'-plots for particle energy at absolute coordinates. Should be used with limited amount of particles only.
  • Improvement: Load balancing aligned for gas flow and plasma simulation. Load time of field computation is measured for the latter. The load optimization algorithm now uses the average load per node instead of load per quad. However, communication load is still a non-sophisticated guess in load balancing algorithm.
  • Bugfix: Removed a script relict regarding 'PAR.BB_adjust' in 'init_fieldsolver.r'.

Version -->

  • E-field solver #1: Improvements to make it more robust and reliable.
  • E-field solver #2: Overhaul of convergence computation allows for much faster RF simulations.
  • E-field solver #3: Removed damping scheme as it yields artificial cooling.
  • Sub-cycling #1: Factor for ions reduced to 0.1 x sqrt(mass heaviest ion / mass electron) due to noise and artificial cooling issues.
  • Sub-cycling #2: Separate sub-cycling interval for neutrals with a factor of 10.0 x sqrt(mass heaviest neutral / mass electron).
  • Collision cycle: Replaced “one-takes-it-all” with “equal-share” electron energy partitioning model which seems to be PIC-MC modeling consensus.
  • Scripts: Bug-fixes and improvments to multi-quad feature.
  • Scripts: New function “ReadFromFile_Entry” in sigma.r to compute cross sections from raw data.

Version -->

  • Bugfix: Direction vector for azimuthal angle in angular histograms was overwritten by subsequent histograms.
  • Internally:
    • Histogram objects are now stored in a SVector<PICMC_Histogram> structure.
    • struct PICMC_GenericBorder::ELEMENT became a class PICMC_ELEMENT on its own and is now found in Border/Element.cxx, Border/Element.h
  • Bugfix: Automatic correction of element normals in BEM field solver improved.
  • Bugfix: “Tunneling” of membrane mesh elements conflicted with specular boundary conditions.
  • Bugfix: Major bug concerning issues with mesh planes coninciding with quad interfaces.
  • Bugfix: Threshold adjustment due to particle leakage in rare occurances.
  • Bugfix: Insufficient accuracy of geometry date in 'xxx_bfield.rd' script.
  • Bugfix: Threshold adjustment due to rounding errors in the range of 1e-12.
  • Bugfix: Restart failed due to missing 'boundingbox.rd' file (used in load_balance.r).
  • Bugfix: Check if floating conductors are separated from non isolator.
  • Improved constrain test at start time for use with multi-quad segmentation.
  • Improved evaluation check when using conductive mesh areas, i.e. floating potentials.
  • Loaded B-Field is checked on consistency with domain settings, i.e. geometry and cell resolution.
  • Internally: Removed couple of obsolete variables and code fragments.
  • Removed spamming of '.sim' files.

Version --> (Stable release)

  • Bugfix: charge checkpoint → after restart the charges for each quad are now consistent with last step before the checkpoint

Version -->

  • Bugfix: Threshold adjustment in analytical cell surface computation to prevent nullification of “very small” surfaces.
  • Bugfix: An array index could have been greater than the array index space. This also solved issues with the new particle data structure and using realloc, respectively.

Version -->

  • New wall reaction model (detailed documentation will follow).
    • Possible wall types will be only “wall” and “membrane”
    • Detailed reaction chemistry at walls can be defined via reaction chains for each wall
    • Particle sources are integrated into new wall model
  • Energy histograms are now also produced for neutrals
  • The energy range of the histogram can be adjusted species-wise by the HIST_RANGE_Species parameter in the parameter file
  • DSMC_Generic_Border::RecomputeCellSurface() replaced by an analytical method leading to faster startup times.
  • Bugfix: Particles at membrane borders are now correctly reflected if not transmitted.
  • New checkpointing routines for particle data, averages, charges and wall material coverages.
    • Checkpoints can now be loaded separately for single species
    • Restart works even if cell spacing, Quad alignment (→ MultiQuad model) and NREAL_SCALE has been changed
  • Due to the new wall model and new checkpointing, version 2.4.0+ is not compatible with computation runs made with versions ⇐

Version -->

  • DSCM / PIC-MC simulation
    • Bugfix in boundingbox.r and boundingbox2.r: Rounding error due to insufficient number of digits.
    • FIM and BEM_UMFPACK including all library dependencies removed.
    • Calls for generic border hit query significantly reduced (> 50%) by using element-LUT (Look-up-Table).

Version 2.3.6 -->

  • DSCM / PIC-MC simulation
    • Plot routine: Plot cells with zero volume again. Too much secondary issues with optimization approach.
    • New four digit version tag.
    • Removed “static” variables in Create2DVelocity.cxx due to some compatibility(?) issues.

Version 2.3.5 --> 2.3.6

  • DSCM / PIC-MC simulation
    • Performance: Cell volume computation has been slightly accelerated (15%).
    • Bugfix: Electric boundaries at quad interfaces could cause trouble due to node assignment ambiguity between picmc_border.cxx and picmc_quad.cxx.
    • Bugfix: Optimization approach in cell volume computation routine could cause trouble due to inside-check-trajectory started exactly in cell center.
    • Major Bugfix: Error migrated into 2.3.5. as cell index computation has been unified. Regards TEX solver with floating potentials.
    • Plot routine: Skip output for cells with volume = 0.
  • BEM solver
    • Tolerance threshold of 1e-10 in angular sum check (must be 4*PI for outer volume) was too low. Reset to 1e-3 which is more reasonable.

Version 2.3.4 --> 2.3.5

  • DSCM / PIC-MC simulation
    • Unified cell indexing which caused a lot of confusion.
    • Plot routine: Using proper superscripts.
    • Plot routine: Skip output for cells which are inside mesh volume.
    • Plot routine: New plot tag “position” which prints absolute particle position and energy of ALL(!) particles. Thus, handle with care and only for testing purposes.
    • Bugfix in module_picmc.cxx → plot routine: File handler has not been closed properly.
  • Postprocessing
    • module_ppp added which allows for fast postprocessing via RVM scripts. This feature is still experimental and will be further improved.

Version 2.3.3 --> 2.3.4

  • DSCM / PIC-MC simulation
    • Initial border solidity changed from 1.0 to 0.5 to speed up convergence with reactive borders.
    • Accurate computation of effective absorption surface, i.e. intersection planes of finite elements with grid cells.
    • Bugfix: Solidity was not correctly loaded messing up simulations with reactive border model on restart.
    • Bugfix: Reaction species (if defined) is generated for all 4 cases with reacitve border model.
    • Bugfix: Threshold for particle-to-cell assignment too coarse causing stripe artifacts in absorption plot.
    • Import of temperature distribution into physical mesh surface, see documentation Border temperature distribution.
  • DSMC only:
    • Novel method for defining multiple connected bounding boxes with different segmentation, see documentation MQUAD / MJOIN.
  • Parameter files
    • sigma.r: included cross section for higher order ionizations, i.e. e + Ar+ → 2e + Ar++, etc.

Version 2.3.2 --> 2.3.3

  • DSCM / PIC-MC simulation
    • Adjusting TEX solver to handle voltage sources on floating potential, i.e. capacitively coupled to a reference (ground) potential.
    • Removed “outlet” border type due to redundancy with “wall” border type.
    • Additional feature for “membrane” border types: Species transformation on transmission, i.e. with “rp” and “sp” defined, transmitted particles are transformed into rp = [“xx”, ..] with a probability sp = [“p”, …].
    • Re-inserted query if particle is inside mesh in ReadDumpFile routine. Wonder, why it has been removed.
    • Minor: Changed boundary condition name PERIODIC to INTERFACE for clarification.
  • Parameter files
    • init.r: Additional parameter “.vf_coupling” in border declaration. One has to define name of border which is coupled with this one. Thus, voltage separation between electrodes on a common floating potential can be set up.
    • init.r: Adjustments due to border type “outlet” removed.
    • sigma.r: Duplicated SiH4 cross sections but with SiH3, e.g. SiH4 + SiH4 to SiH3 + SiH4, SiH4 + NH3 to SiH3 + NH3, etc.

Version 2.3.1 --> 2.3.2

  • DSMC / PIC-MC simulation
    • Bugfix regarding TEX solver: Further simplification of threshold measurement process. No arbitrary accuracy factor anymore. Instead reference solution with maximum accuracy is computed.
    • Bugfix regarding TEX solver: If computation diverges reiteration takes place but floating potentials have not been reset preventing convergence.
    • Bugfix regarding TEX solver: Catching convergence threshold = 0 on convergence measurement if quad is (temporarily) field free.
    • Bugfix regarding membrane border transmission: “Tunneling” of particle through mesh element was error prone. Now a flag is set to perform a clean move through accordant element.

Version 2.2.2 --> 2.3.1

  • DSMC / PICMC simulation
    • Send and receive buffer within MPI wrapper without limitation anymore.
    • Overworked TEX solver:
      • Bugfix: Convergence measurement stopped for bipolar periodic voltages.
      • Bugfix: Convergence threshold and AlphaSOR setting was not feasible for 1D plasma simulation.
      • Convergence measurement now takes into account local value margin and grid dimension.
      • If AlphaSOR is set too high and solver diverges, respectively, reiteration with reduced AlphaSOR is triggered properly now.
  • Parameter files
    • AlphaSOR set to 1.60 for 3D, 1.85 for 2D and 1.95 for 1D setups in master.r file.

As seen in the figure below TEX solver results are reliable now for 1D cases with version 2.3.0 and significantly faster for 2D cases. Heavy 3D cases lack any performance gains so far but results are the same.

Version 2.2.1 --> 2.2.2

  • DSMC / PICMC simulation
    • Major bugfix regarding membrane border type which could cause simulation to freeze.
  • Parameter files
    • Only one output message to inform if magnetic field files are loaded or not.
  • Cross section data base
    • Included Ta - Ta and Ta - Ar cross section.

Version 2.2.0 --> 2.2.1

  • Implemented logging of PIC-MC runs. All state information gets appended to <parfile>.log.

Version 2.1.0 --> 2.2.0

  • DSMC / PICMC simulation
    • Overwork of MPI communication scheme: Dynamic memory allocation for send and receive buffer. Hence, MPI crashes due to insufficient buffer size should be history.
    • Using time averaged charged particle states for charge-neutral collisions in DSMC mode. However, the approach has been tested for a particular parameter setup only (RF-PECVD simulation in H2/SiH4).
    • Neutral particles are initialized randomly again to prevent plasma artifacts in PICMC mode.
    • Bugfix regarding read dumpfile routine.
  • Parameter file
    • Automatically generated list of available species in species definition section.
  • Cross section database
    • Comprehensive extension regarding O2, H2 and SiH4 plasma chemistry. Validation against experiments are promising that we now have the basic reaction schemes for a-Si:H / µc-Si:H film growth.
  • Postprocessing
    • Reasonable names and SI-unit definition in all plots.

Version 2.0.5 --> 2.1.0

  • DSMC simulation
    • The membrane border now works as a single surface; the transmission probability now works properly.
    • Membrane borders now can have an absorption probability in order to work as transparent pumps in low-dimensional setups.
  • Magnetic field computation
    • The direction of surface normals is now automatically detected
    • Simplified invocation schedule –> initbfield is only required once
  • Electric field computation
    • Fixed TEX solver scheme for dielectric boundaries. No divergence issues until now.
    • Temporarily removed algorithm which improves potential sampling at mesh-contours. Too many bugs demand complete overwork.
  • Load balancing
    • The load balance algorithm is now aware of the actual distribution of picmc processes on the cluster.
  • Postprocessing:
    • Bug in pressure and temperature plot removed
    • rvmlibs/extract.r with simplified interface and improved format of extracted data. A new method get_multi_averages is implemented for that purpose.
    • Electric potential is now being plotted as snapshot and as time averaged plot. The latter can be important e. g. for RF discharges.
  • Checkpointing
    • Besides particle coordinates and velocities in dumpfile.bin, also the time averaged values are now stored in tavg_dumpfile.bin. Upon continuation, the so far time-averaged values are re-used.