This note is relevant for both warning ver991 and error ver993 (6.8.8+). See also: www.perplex.ethz.ch/Perple_X_why_it_often_does_not_work.html#error_ver041 and/or Step 3 of: www.perplex.ethz.ch/perplex/tutorial/niigata_phase_diagram_section_workshop_2019/niigata_tutorial.pdf ======================================================================= Solution models in Perple_X are configured so that the compositional variables of a solution may vary between zero and one. However, to reduce time/memory consumption the compositional variables of many solutions specified in the solution model file are restricted, i.e., the "subdivision ranges" (refer to the commentary in the header of solution_model.dat for explanation of subdivision scheme parameters). In most cases, if Perple_X encounters such an unnatural limit during calculation, the limit is incrementally relaxed. This relaxation has an immediate effect on the range of dynamic compositions considered, but only affects the range of static compositions when VERTEX makes the transition from the exploratory to auto-refine stages of a calculation. Consequently it is anticipated that relaxation is only safe if it is comparable to the value of the initial_resolution keyword which dictates the resolution of static compositions. If the extent of relaxation exceeds the exploratory stage initial_resolution, then the program halts with error message ver993 and the user is instructed to modify the subdivision range of the relevant compositional variable, as illustrated by example below. If relaxation occurs, but is within the aforementioned safe limit, then warning message ver991 is written to the console and to the *_auto_refine.txt file. While relaxation at this level is deemed safe, best practice is to modify the subdivision ranges specified in the solution model file to eliminate any instances of warning ver991 at the end of the exploratory stage. This process can be expedited by setting the auto_refine option to man or off. NOTE: Instances of warning ver991 at the end of the auto-refine stage are generally unimportant. If desired, the magnitude of auto-refine stage relaxations can be deduced by comparing the compositional ranges written to the console at the end of the auto-refine stage with the ranges written to the *.arf file. Because VERTEX reads the compositional ranges used during the auto-refine stage from the *.arf file, changing the ranges specified in the solution model file has no, or at least no direct, effect on auto-refine stage results and/or warnings. ======================================================================= The following examples would be prefaced by the warning message: **warning ver991** The compositions of the following solutions reached internal limits that were automatically relaxed: melt(G) cAmph(G) written to the console and the *_auto_refine.txt file at the end of the exploratory stage (the *_auto_refine.txt file is not overwritten at the end of the auto-refine stage, i.e., it always records exploratory stage results). The warning is followed by ranges for all stable solutions, the relevant ranges are reproduced below. The ver993 error message indicates the both the solution and the relevant subdivision range and is not reproduced here. ======================================================================= EXAMPLE A: Solution models with simplicial composition space. Solution models with simplicial composition space are easily dealt with because the compositional variables correspond directly with the solution endmembers, which are usually identified in the model commentary. Taking melt(G) as an example, comparison of the console output from VERTEX Endmember compositional ranges for model: melt(G) Endmember Minimum Maximum h2oL 0.41095E-01 0.59506 foTL 0.39368E-01 0.13557 faTL 0.46571E-01 0.19293 abL 0.14578E-01 0.20749 silL 0.10848 0.31087 woL 0.10591 0.31677 with the subdivision ranges specified in the solution model 0.0 0.8 0.1 0 | range and resolution of X(h2o), 0 => cartesian subdivision 0.0 0.2 0.1 1 | range and resolution of X(fo), 1 => asymmetric subdivision 0.0 0.3 0.1 1 | range and resolution of X(fa), 1 => asymmetric subdivision 0.0 0.8 0.1 0 | range and resolution of X(ab), 0 => cartesian subdivision 0.0 0.3 0.1 1 | range and resolution of X(sil), 1 => asymmetric subdivision 0.0 0.6 0.1 0 | range and resolution of X(ksp), 1 => asymmetric subdivision 0.0 0.3 0.1 0 | range and resolution of X(wo), 1 => asymmetric subdivision indicates that the upper limits on silL and woL were, and may remain, restrictive and that they should be relaxed (e.g., increased from 0.3 to 0.4). While it may be tempting to increase lower limits to save time and memory, this should be done with caution because lower limits are often particularly sensitive to the specifics of a problem; moreover, such restrictions are made automatically during the auto-refine stage of calculations with VERTEX/MEEMUM. ======================================================================= EXAMPLE B: Solution models with prismatic composition space. Solution models with prismatic composition space (a space with more vertices than a simplex of the same dimension) are more difficult than simplicial models because the subdivision ranges do not correspond directly to endmember fractions. In the 6.8.8 version this difficulty has been eliminated in models that have been entered using the 688 format, because the format provides names for the individual compositions. For relict prismatic models that use 6.8.8- format (model types 5, 7, 8, 9, 10) if all the endmembers are present in the model then there is a one-to-one correspondence between the console output and subdivision ranges specified in the solution model file. When one or more endmembers are missing, it is necessary to work out (or simply guess by comparing the magnitudes of the reported ranges and specified limits) which species in the console output corresponds to which subdivision range in the original model. Taking the 6.8.8- version of cAmph(G) as an example, the prismatic composition space is the cartesian product of a binary (simplicial) composition space that specifies Fe(2+)/(Fe(2+)+Mg) and a nonary (simplicial) composition space that specifies the fraction of the various Fe(2+)-Mg endmembers (tschermaks, pargasite, k-pargasite, etc). The order of endmember specification at the beginning of the solution model: 2 | 2-simplex prismatic space 2 9 | 1 binary x 1 nonary ts fts_d parg fparg_d gl fgl_d cumm grun mrbG frb_d kprg fkprg_d tts ftts_d grk_d fgrk_d tr ftr_d identifies Fe(2+) as the first "species" of the binary composition space, Fe-Mg(+)-tschermaks as the first species of the nonary composition space, Fe-Mg(+)-pargasite as the second species of the nonary composition space, and so on. The subdivsion ranges for these species are specified sequentially in the solution model as: 0. 1. .1 0 | range and resolution for X(Mg) on simplex 1, imod = 0 0. 1. .1 0 | range and resolution for X(ts) on simplex 2, imod = 0 0. 1. .1 0 | range and resolution for X(pg) on simplex 2, imod = 0 0. 1. .1 0 | range and resolution for X(gl) on simplex 2, imod = 1 0. 1. .1 0 | range and resolution for X(cumm) on simplex 2, imod = 0 0. 1. .1 0 | range and resolution for X(mrb) on simplex 2, imod = 1 0. .1 .1 0 | range and resolution for X(kprg) on simplex 2, imod = 1 0. .1 .1 0 | range and resolution for X(tts) on simplex 2, imod = 1 0. .1 .1 0 | range and resolution for X(grk) on simplex 2, imod = 1 Thus, if a calculation is done for the K-Fe(3+)-free system then the K-pargasite (kprg-fkprg), riebeckite (mrbG-frb), and grunk (grk-fgrk) exchanges are not possible, and from the console output: Compostional ranges for prismatic model: cAmph(G) Simplex 1 Composition Minimum Maximum 1 0.84815 0.86296 Simplex 2 Composition Minimum Maximum 1 0.06543 0.21481 2 0.66914 0.83457 3 0.00185 0.00988 4 0.08457 0.12407 5 0.06337 0.11106 it is evident that on simplex 2, composition 1 is tschermaks, composition 2 is pargasite, composition 3 is glaucophane, composition 4 is cummingtonite, and composition 5 is Ti-tschermaks (tremolite and ferrous iron are determined by closure) and comparison of the solution model ranges and the output indicates that the limit on Ti-tschermaks was, and may remain, restrictive and should be increased (e.g., from 0.1 to 0.2).