Noteworthy changes in Plasimo ============================= New in version PLASIMO-4.0.0: (compared to 3.4.0) ------------------------------------------------- * The organisation of Plasimo's global configuration files has been improved. All configuration files are now created in the sub-directory config/ of the build directory. The files are: runtimecnf.local: the main configuration file glconf.local: OpenGL-configuration: influences the appearance of OpenGL plots. gllibs.local: A Plugin-section [see below] which lists the system-specific non-Plasimo OpenGL libraries (including wx-opengl). If you change any of these files in /config and a new version arrives after an update to a more recent Plasimo version, the new and old files will be saved with extensions .old and .new. The user must merge his local changes manually. * Plasimo is being modified to support one- and three-dimensional calculations and simulations which involve multiple subregions per grid region. As a result the grid sections in input files have changed. Instead of the set of numbers (N1,N2) as of now a Geometry section ought to be present. See plgeneric/linsys/doc/geometry-ui.tex for details. In this version of Plasimo the (N1,N2) specifiers are deprecated; this compatibility mode will be removed in the next version. A second user-visible change that comes with this work is the syntax for specifying boundary condions. The new syntax allows declarations of boundary conditions to be applied to multiple boundary pieces. We suggest to take a look at one of the files in the input/demosuite directory to familiarize yourself with the new syntax. * The grid variable initialisation code has been modified in preparation of better support for grids of arbitrary dimensions. As a result the names of the coordinates which are available in expressions have changed. At present we have cartesian: x,y cylindrical: z,r spherical: r,theta OCL: c1,c2 For all these coordinates X also the variables Xmin, Xmax exist. In addition, for all grid types the coordinates of the Cartesian projection of the grid are available as cart_x and cart_y. If you use the variables cart_x, cart_y, x1min or x2max you need to update your input files. * plugin-loading has changed. Plasimo only links against the libraries it requires for starting up. All other libs must be loaded dynamically; this list must now be specified in a section Plugins in the input file. The section with this name in the config-file is now ignored. The file input/plplugins.cnf loads ALL Plasimo-related plugins. You may add the line: Include @PLASIMO_INPUTDATA_DIR/input/plplugins.cnf Plugins to the top of your Plasimo input file if you wish to load all plugins. You may then do more fine-grained plugin loading later. Most files in CVS have been updated already. * The micro_discharge code has been merged in the Plasimo tree: plmc contains the Monte Carlo code, plmd2d the md2d code, including app. * The configure defaults are to do an optimized build without debugging symbols. This can be overridden by specifying --enable-debug and/or --disable-optimize to the configure script. * The MassFluxPowerLawVelProf boundary condition now requires the user to specify the center of the profile. * The self-consistent friction model has been fixed in various ways. (Minor) contributions of the temperature gradients are now taken into account in the density gradient calculation at the boundaries. More importantly, forced (E-field) diffusion can now be dealt with. * A bug was fixed in the stream function calculation. No other results are affected, since this is merely a diagnostic variable. * The (unused) partial implementations of anisotropic diffusion and non-ambipolar diffusion as well as the related transport calculator plugin types (Vliehland, InverseOhm, BPMobility) have been removed. These were a maintenance burden and were reported to be unusable in their present state. * The (unused) boundary condition types LinearDirichlet, QuadraticDirichlet and CubicDirichlet have been removed. These did not have any physically useful applications. Note that if you wish to impose profiles you may use the boundary condition type "CustomDirichlet" which allows you to use arbitrary grid data in boundary value expressions. * The flag NeedBoundaries is no longer supported in MatrixSolver sections. The efficient choice is now always used. Perceived problems with skipping the boundaries in the generation of ortho-curvilinear ('Poisson') grids have proven to be no longer there. * Because of trademark issues, wxWindows changed its name to wxWidgets. The configure argument --with-wxwin has been changed to --with-wx to reflect this change, all Plasimo documentation has been updated as well. * The float type can no longer be selected. double-precision calculations are unconditionally done. (This feature was unused and inconsistently implemented). * Wxplasimo is now multithreaded by default, so that running a model does not hamper interacting with the gui. Note that this is only enabled when wxWidgets 2.6 or better is used, since only those versions are sufficiently bug-free to let it all work. * Radiation-transport for cylindrical configurations can now optionally be performed on an interpolated grid. When a coarser grid is used for radiation, significant speed-ups can be achieved. In addition, this allows radiation- transport to be done on cylindrical grids that are not entirely rectangular. NOTE THAT THIS IMPLIES THE PRESENCE OF MORE THAN ONE GRID, SO THAT DATA FILES ARE WRITTEN WITH AN EXTRA '.plasma.' PART IN THEIR NAME! * The LTE elemental diffusion code was rewritten and is now much faster. * MS-Windows support is now done (via crosscompiling) using mingw. This means that MSVC workarounds are being removed from the code when encountered. * Radiation data that was previously written to the file named plRadTransMethodGridUpdater.* is now written to RadTrans.*. New in version PLASIMO-3.4.0: (compared to 3.2.x) ------------------------------------------------- * The preconditioner types for the matrix solvers have been renamed: The new names are None, Diagonal, ILU0 and DILU. * The manual and on-line help have undergone vast improvements: many input file sections have new or improved documentation. The HTML documentation now contains numerous references to the Doxygen-generated source code documentation. This is convenient for Plasimo-users who want to learn more about the code internals. * Using external browsers for viewing the HTML documenation is now fully supported. Change the settings in the section HTMLDoc of your copy localcnf.in of the file runtimecnf.in in the config/ directory according to your wishes. At present, netscape, mozilla and konqueror are supported (support for the latter is experimental and may not work for all KDE versions). See config/localcnf.in, section HTMLDoc for details. * A large clean-up of the input/ directory has taken place. All files in input/ are 'guaranteed' to work (note the quotes). No responsibility is taken for the files in the sub-directories of input/ though. All files input have been annotated, in the Annotation leaf you will find a brief description of what the model is supposed to show. The Author leaf (also displayed in the graphical user interface) will show you who wrote or maintains that particular model file. A Version tag indicates the version of the input file. For files which are part of a CVS repository one should add '$ I d $' there (but without the spaces!): CVS will fill in the actual revision information. Unmaintained files in input/ have been moved to its unsorted directory. * Unbalanced wall reactions are now possible. Examples would be sputtering and etching. To make this possible an extra leaf called CheckBalance has been added to the wall reactions. This leaf, enabled by default, determines whether or not the equation parser checks for a particle balance. The fixnode utily (see new in version PLASIMO-3.2.0) can be used to update your old input files. * The executable that runs the opengl version is now called wxglplasimo. * In the InitXY section in Poisson grids, PLASIMO can now be configured to use interpolated boundary values as initialization. Specify the 'Type Interpolate'. The previous version which allows two user-functions can be used with 'Type Custom'. In the latter case the arguments have been renamed to s1,s2, in line with the grid documentation. These are the coordinates of the streatched grid. * Added CSCMatrixSuperLUSolver, an amazingly fast direct solver. The superlu library (NetLib) needs to be installed for this. Useful for the Pressure Corrections. * For builds with multithreading support (--enable-smp), the (maximum) number of Threads to be used can be configured in the global config file now. * Command line options -l LogLevel and -t Threads are now implemented. * Some FPU errors have been eliminated. * For time-dependent models, the timestep determination works much better. New in version PLASIMO-3.2.0: (compared to 3.0.x) ------------------------------------------------- * The wxParser library which underlies the dialog-based input file editing facility has been rewritten. As a result, wxWindows version 2.4.0 or later is required for Plasimo. The following user-visible changes have been made: - Clicking on the leaf check box with the LMB enables/disables a leaf. - Clicking on the leaf check box with the RMB pops up a menu for removing, cloning, enabling/disabling or adding default leafs. It also allows to reset the values to the defaults. - A (RMB) menu item restore defaults has been added. This discards the changes made in the editor window on the right, reverting to the defaults. * A utility called fixnode has been provided to facilitate upgrading older-style input files. It is located in plparser/utils. See the online code documentation of this file for details. Input files for this utility are provided as part of the stable Plasimo distributions. * The StreamFunc section has been moved into the Flow section. * The Plasimo grid has been re-implemented. In this process the following user-visible enhancements have been introduced: - coordinate names and boundaries are now written lowercase. Before, a weird mixture of z, Zmax and ThetaMin was in use. Now we have z, zmax, thetamin, x, rmin, ... All input files in CVS have been fixed, please update the ones you created locally. - Poisson grid generation has a different interface now. Please check the online documentation for Grid (Type Poisson) for details. An example of the new syntax can also be found in the file plgrid/samples/grdcreate/grdcreate.in. * The user is asked to specify four boundary functions. For each side one can specify X(Y) or Y(X), where X and Y are locations of the Cartesian projection of the grid. In addition, the locations of the corner points must be specified. * Additionally, one must specify the nature of the third coordinate, which can be either `cartesian' or `cylindrical'. Before, is was assumed that x3 was the azimuthal coordinate of a cylindrical system, an unnecessary restriction. * The documentation system has been revamped. All documentation is now based on LaTeX, the HTML help text which is visible in wxplasimo is generated with the Latex2HTML (l2h) translator. It is also possible to generate pdf or ps versions of the user manual. The preferred format for pictures is png. The 'convert' utility which is shipped as part of the ImageMagick package is used for creating eps files when a dvi, ps or HTML version of the documentation is created. Note that pdflatex is capable of importing png files directly. The documentation can be created locally by doing a `make' in /doc/manual, assuming that all the necessary tools are available. Because the creation of the documentation requires a number of non-standard tools, documentation will also be made available via the Plasimo Internet site for each release. See http://plasimo.phys.tue.nl/generated_docs for details. * The `Freeze field var' dialog now allows inspection and adjustment of the under-relaxation factors of Phi variables. * Certain fields can be kept frozen. This is useful to do calculations with for example a fixed temperature field. Note that a frozen field will NOT be initialised from file at model loading time. * For flowing plasmas, the pressure correction in the SIMPLE(R) algorithm, is now calculated according to literature and does make sure mass conservation is fulfilled after every iteration. This makes higher URFs in other variables possible and can save an order of magnitude of iterations. Some adjustments to the flow (bulk) related settings are necessary: The pressure (correction) URF should be one minus the velocity one (as found in literature). Plasimo adjusts this factor dynamically, depending on the mass conservation source term; Plasimo's prediction will be scaled with your setting, such that neither 1-velURF nor your setting are exceeded. Higher URFs are needed for closed systems with constant pressure inside, lower ones for compressible flows. Note that the pressure correction equation is numerically challenging. Using a direct solver (BandMatrixLU) or a good iterative solver (e.g. BiCGstab with ILU0 preconditioning) and allowing many iterations (42) is necessary to solve it successfully. * A Mass conservation Extra Function has been added and can be used to check whether mass continuity really is fulfilled. * The Expansion Work Term v.grad p has been added to the energy (enthalpie) equation. * Time-dependent flows should yield correct results now, as the time-dependent term in the energy equation has been corrected and the time dependent term in the continuity equation has been implemented. The latter is linearized in order to not destroy convergence. * For states that belong to a particle and are thus not explicitly dealt with, we can assume an (atomic) state distribution function. It can be used to correctly calculate the heat capacity (which also has been fixed to include the energy that's in ionization ...) or to calculate the radiation by state transitions. * Anisotropic diffusion is now in possible in principle. This is somewhat experimental though. As a consequence one must now specify the type of diffusion (Isotropic or anisotropic) in the input file in the mixture section for non-LTE plasmas. To select isotropic diffusion type the line 'Isotropic yes' in the mixture section in the input file or click on enable 'Isotropic ' in the mixture section in the GUI. To use anistropic diffusion use a calculator that yields anisotropic diffusion coefficients and enter the line 'Isotropic no' in the input file (or disable Isotropic diffusion in the GUI). New in version PLASIMO-3.0.0: (compared to 2.8.x) ------------------------------------------------- * New GUI. Allows the dynamical loading of viewer plugins: [no recompile required if switching to/from OpenGL plots] * Data viewers can be embedded in the application's main frame. * Convergence behaviour can be plotted as a function of the iteration number. * The OpenGL configuration [glconf.in] should now be a section OpenGLConfig in the runtime configuration file [runtimecnf.in]. If you use a private copy [localcnf.in, say], make sure to add the following line to it (without the quotes): 'Include glconf.in OpenGLConfig' * Settings can be modified via a tab window. Note that some of these take effect only after 'save settings' and a program restart. * Radial Lorentz force (resulting from axial current) implemented as bulk force. * GUI update and plot update frequency default to the value specified in the file runtimecnf.in (or your local copy, see above) by the item 'DefaultUpdateCycle' * Various improvements on the OpenGL plots. (UpdateCycle can be set per log timestep in order to produce MPEGs, rounding of min/max in autoscale mode, better wireFrame view, Enhanced colour rendering) * The convergence behaviour is now written to the file /convergence. Only the over-all residue is shown as a function of the iteration number (Plasimo models only). One line is written every iter_log iterations (you find this number in the section MainIterConfig of the model file.) * The diffusion calculation in PLASIMO can be enhanced by taking Knudsen flows (effusion) into account. While the treatment is approximate, it is still a significant improvement, as it prevents unphysically large diffusion from occuring. * Fixes for time discretization for time-dep models. * More comfortable stretch function specification: You can just specify a point and specify the grid line density there now. This incurs a change in your input file: You need to give your StretchX and StretchY nodes a Type now. The old stretch specification corresponds to Type User_Stretch. You may use the script util/StretchType.sed to convert your input files. At most places, you'll probably have just uniform (no) stretching and you should better just replace the node by one of Type NoStretch. The utils/StretchType2.sed script does this conversion for you. When using stretch functions, be careful. Not all PLASIMO code has been checked to be correct for stretched grids. Some expressions used may only be first order accurate (instead of second order) and some modules (e.g. POF) are known not to be correct with stretched grids at all. * Previous versions failed to take the heat capacity into account on NonLTE plasmas. This has changed now, time-dependent and flowing nonLTE models should give better results now. You need to add Sections SpecificHeatHP and El to your Transport Sections and add the StdSpecificHeatHP resp. El Calculators there. You may use the util/AddSpecHeatNonLTE.sed script to do it. Models in CVS have been adapted of course. * Adding heat capacity exposed another problem: The convective terms were not calculated at west and south boundaries. Fixed. * Interpolation on grid resize (wxplasimo only) has been improved, especially for stretched grids. * Automatic grid resize (a reduced kind of multigrid) is optionally possible. Set coarse_grid 1 in MainIterConfig to enable. * When using POISSON grid generation, solvers different from MSIPSolver are possible now. * Less permissive input file parser. The parser will complain about missing items which are required according to the dialog description (*.tin) files, or items which are present while the .tin does not know about them. * Changed (incompatible) input file syntax 1) Sections `Flow' of type `Fixed' now require Sections VelocityFunc1, VelocityFunc2, VelocityFunc3 and PressureFunc, rather than the old Velocity1, Velocity2, Velocity3 and Pressure. These sections should (only) contain a subsection Function, specifying the (fixed) values of these flow quantities. * The `Soft Install' functionality has been reworked. It is now possible to add a section `InitViews' to the model file's root section, here you can specify what views need to be created after a model has been installed. See the help text in Plasimo for a detailed explanation. * A new density calculation algorithm has been provided for non-LTE mixtures. It calculates the density on the basis of the assumption of local chemical equilibrium. See input/tin/locchemdens.htm for details. * Alternatively to using the SIMPLE algorithm for flowing plasmas, you can choose bulk flow type SIMPLER now. It needs considerably less iterations, though the iterations are a bit slower. You can use high URFs (vel 0.98, press corr 0.90) if you use good solvers (BiCGstab with ILU0Preconditioner, e.g.) and allow enough iterations (e.g. 20) in the solver, especially for the pressure corrections. * The Mach number can be calculated (configured as extra function in the flow section). * Fixed the handling of Annotation information. Annotations can now be multi-line text strings and may contain the characters \, " and the like. New in version PLASIMO-2.8.x: (compared to 2.6.x) ------------------------------------------------- * Plots default to being updated every 5 iterations only (in order to avoid slowing down the calculation too much). For Unix-like systems, also the GUI (iteration count display ...) gets updated only once a second for the same reason. * The Reset button has been removed from the calculation window. Use the menu item 'Soft Install' instead (which has the same effect). * Removal of old 'SelfConsistent' diffusion model * Plasimo now works (again) with densities instead of mass-fractions. So if you use a Range in the Mixture section, you are now specifying a limit on the densities, not on the mass-fractions! * Enhancements to the non-linear LTE density solver. Now uses analytical expressions to calculate the system of equations' Jacobian. * Added elemental diffusion in LTE mixtures. The code is functional, but more sophisticated boundary conditions are probably needed. * (Microwave) EM plugin with skin depth for spherical plasmas (this plugin is easily modified for use with other grids). Used by the now fully functional s2iter.gum sulphur model. * Fixed the inductive EM field calculation for systems in which ferrites are present (like the Philips QL lamp). * Various plugins with expressions for Collision Integrals added. New in version PLASIMO-2.6.x: (compared to 2.4.x) ------------------------------------------------- * 3D OpenGL plot widgets (eye candy) Configure --with-opengl to get them. * Fixed compilation with gcc versions >= 3.0.0. NOTE that the GUI (wxPlasimo) is still unusable when using this compiler, because wxWindows triggers an operator overloading bug in these compiler versions. The console app should work fine. * Working self-consistent diffusion model, called 'SelfConsistentFriction'. * Fixed LTE composition specification (GUI). * Microwave incoupling module. * Parallelization of radiation transport using MPI (LAM). configure --with-mpi to get MPI support. Have a look at the input/unsorted/s2mpi input file and the schema_*mpi MPI schemes. Advanced features (load balancing ...) not yet implemented. Input file incompatibilities: * In LTE Models entry LUTable in the section Composition is now called Type. Internally: * Added const versions of the plNode members. * Added new iterators types (const_iterator, leaf_iterator, const_leaf_iterator to facilitate traversing plNode children). Also custom iterators are now supported. See the sample in plparser/samples/iterators/ for details. * Bug fixes and clean ups New in version PLASIMO-2.4.x: (compared to 2.2.x) ------------------------------------------------- * Make solvers configurable and add LU decomposition and three Iterative (Krylov) solvers including Preconditioners. Input files may need to be converted to new syntax that allows solver specification. Use the conversion script util/SolverType.sed * Add power law velocity profile boundary condition for a fixed mass flow (may be given in sccs * amu) * Improved URF adjustment (urf_factor), by keeping a history of the resi- duals ("low-pass filter"). URF changes are logged with loglevel 1 now. * PLASIMO comes up with a console window to write the log into instead of a Log subwindow under Windows. wxplasimo --log should yield the old behaviour. * Automatically update all plots after last iteration. * Bugfixes, better error messages (input parsing), code cleanup and correctness testing. The Plasimo team http://plasimo.phys.tue.nl/