0% encontró este documento útil (0 votos)
139 vistas84 páginas

Parte 2

El documento proporciona instrucciones para instalar y configurar PhreePlot correctamente. Se recomienda instalar Ghostscript y un visor PostScript como GSview. También se explica cómo configurar las variables de entorno PHREEPLOT y PHREEPLOT_PATH, agregar la ruta de PhreePlot a la variable PATH, y asegurarse de que se encuentren las bases de datos termodinámicas correctas. Finalmente, se recomienda software útil como Notepad++, 7-Zip, Xplorer2 y R para trabajar con PhreePlot.

Cargado por

Jeison Blanco
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
139 vistas84 páginas

Parte 2

El documento proporciona instrucciones para instalar y configurar PhreePlot correctamente. Se recomienda instalar Ghostscript y un visor PostScript como GSview. También se explica cómo configurar las variables de entorno PHREEPLOT y PHREEPLOT_PATH, agregar la ruta de PhreePlot a la variable PATH, y asegurarse de que se encuentren las bases de datos termodinámicas correctas. Finalmente, se recomienda software útil como Notepad++, 7-Zip, Xplorer2 y R para trabajar con PhreePlot.

Cargado por

Jeison Blanco
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 84

8 Guía PhreePlot

2,4 yo INSTALAR GRAMO HOSTSCRIPT Y GS VISTA

A partir de 2018, PhreePlot opcionalmente viene con Ghostscript instalado, pero es posible
instalarlo usted mismo de la forma habitual. Si desea utilizar su versión instalada, debe señalar el
pdfMaker ajuste a la ruta apropiada (ver pdfMaker ). También es útil instalar un visor ps nativo
como GSview .
GSview 5.0 está disponible en Ghostgum Software Pty Ltd en http://www.ghostgum.com.au/
software / gsview.htm . Después de descargar, ejecute GSview Y debajo Opciones | Configuración
avanzada | DLL de Ghostscript ingrese <% PHREEPLOT_PATH%> \ gsdll <nn> c.dll donde <% PHREEPLOT_- PATH%> es la
descripción detallada de la carpeta que contiene pp.exe ( GSview no acepta variables de entorno
aquí), < nn> es cualquiera 32 o 64 dependiendo de qué versión de
PhreePlot que ha instalado. Esto debería apuntar a la carpeta que contiene su pp.exe ejecutable. Si
esto no funciona, instale Ghostscript de la forma habitual y utilice estos ajustes para
GSview.
Si PhreePlot se ha instalado correctamente, escribiendo

pp -v

desde una consola debería mostrar alguna información sobre la versión actual de PhreePlot incluyendo
su fecha de lanzamiento, si las versiones de 32 o 64 bits se están ejecutando y si Ghostscript está
instalado, y si es así, su fuente y versión.

Ejecutando el demo \ test \ test.ppi archivo indicará si su Ghostscript la instalación se ha realizado


correctamente. Si tiene éxito, esto debería producir ps, pdf, png, eps y jpg archivos de trazado.

2.4.1 Ejecutar PhreePlot desde el Explorador de Windows o similar

Si el ppi la extensión se ha asociado con el PhreePlot ejecutable, luego haga doble clic en un
ppi el archivo de entrada en Widows Explorer o similar debería iniciarse PhreePlot. Esta es probablemente la forma más
fácil de ejecutar PhreePlot.

2.4.2 Especificar el nombre del archivo de entrada en la línea de comando

PhreePlot espera que se proporcione un archivo de entrada en la línea de comando que sigue a ' páginas '. Las
convenciones habituales de nomenclatura de archivos se aplican en términos del uso de comillas, .. (directorio principal).
Los nombres de archivo de Windows no distinguen entre mayúsculas y minúsculas y respetan las barras inclinadas hacia
adelante y hacia atrás como separadores. Puede complicarse cuando se utilizan archivos por lotes y cambios de
directorio y PhreePlot es posible que no pueda encontrar el archivo de entrada requerido. En tales casos, inicie desde
una ventana de consola y use el nombre de ruta completo. En Windows, la variable de entorno% PHREEPLOT_PATH% debe
apuntar a la carpeta que contiene los ejecutables, por lo que "% PHREEPLOT_PATH% \ pp.exe ” siempre debe encontrar el
ejecutable y proporciona una forma segura de especificarlo en una consola y en archivos por lotes. Tenga en cuenta que
las comillas son necesarias aquí debido al espacio en el directorio Archivos de programa y la posibilidad de argumentos
en la línea de comandos.

2.4.3 Especificar nombres de archivos de entrada y salida en archivos de entrada PhreePlot

Se pueden especificar varias rutas de archivo en PhreePlot archivos de entrada, pero se aplican requisitos algo más
estrictos que los anteriores al especificar estas rutas de archivo.

Las rutas de archivo no deben contener un signo '+' aunque esto sea legal en Windows. PhreePlot utiliza un
comando de shell del sistema para copiar varios archivos y su sistema puede interpretar un signo + sin comillas
como el comienzo de otro archivo para copiar.

En principio, las rutas de archivo pueden contener cualquier carácter que sea compatible con las reglas normales
del sistema operativo (Windows no permite /? <> \: * | "). Para evitar tener que escapar de los caracteres, es
aconsejable ignorar también los paréntesis, los corchetes y el ampersand. Es mejor evitar otros caracteres, como
el signo +, la coma, el punto y coma, el signo de porcentaje y el espacio. En otras palabras, ¡manténgalo simple
para una vida fácil!

Las rutas de archivo no distinguen entre mayúsculas y minúsculas en Windows, por lo que cualquier combinación de casos servirá. Sin embargo, ¿qué ...
Instalación 9

siempre se ingresa se conserva en PhreePlot. PhreePlot en sí mismo tiende a usar nombres de archivo en minúsculas
con la excepción de que los elementos químicos siguen su notación normal.

2.4.4 Configuración de la variable de entorno PhreePlot

La variable de entorno, PHREEPLOT, debe configurarse antes PhreePlot trabajará. El instalador debe
establecer esto en el PhreePlot directorio que especifique durante la instalación, es decir, el
directorio raíz que contiene el sistema, demo y Doc directorios. En Windows, este podría ser su directorio
AppData (predeterminado) o una ubicación que eligió durante la instalación, como
C: \ PhreePlot. Tenga en cuenta que no hay barra invertida al final.

La variable de entorno, PHREEPLOT_PATH, también se establece en la ubicación del PhreePlot ejecutable,


pp.exe, p.ej C: \ Archivos de programa \ PhreePlot.

Puede comprobar que esto se ha hecho correctamente escribiendo ' establecer PhreePlot 'en una ventana de consola.
Esto devolverá los dos directorios configurados actualmente.

Una vez configurado, el "directorio de demostración", por ejemplo, podría denominarse "% PHREEPLOT% ”\ demo en archivos
por lotes.

2.4.5 Agregar la ruta a PhreePlot a la configuración PATH de Windows

El instalador debe agregar automáticamente la ruta al PhreePlot ejecutable pp.exe) para usted
SENDERO durante la instalación si se solicita. De lo contrario, puede hacerlo a través del menú Configuración o
Panel de control. Se puede acceder a estos de diferentes maneras con diferentes versiones de Windows, pero
escribir "Variables de entorno" en el cuadro de ejecución funciona para Windows 10.

2.4.6 Ruta de búsqueda de archivos

La ruta de búsqueda para todos los archivos de entrada y datos es, en orden de verificación: (i) la ruta de archivo
especificada; (ii) el directorio actual; (iii) el PhreePlot directorio 'sistema' y sus subdirectorios, y (iv) la ruta, si la
hay, definida por un < archivo> etiqueta.

En caso de duda, incluya la ruta completa para estar seguro. Ponga entre comillas si hay un espacio en el nombre.

2.4.7 Asegurarse de que se encuentren las bases de datos correctas

El base de datos La palabra clave apunta a la ubicación del archivo de base de datos termodinámica que se utilizará. Esto
debería ser un estándar Phreeqc- formato de archivo de base de datos. Varios de estos se incluyen en el
Phreeqc distribución y se han copiado a la PhreePlot directorio del sistema para mayor comodidad. Comprobar
el Phreeqc sitio web ( http://wwwbrr.cr.usgs.gov/projects/GWC_coupled/ ) para obtener los archivos más
recientes. También se proporcionan aquí varias otras bases de datos de dominio público (consulte Apéndice 2 ).
Siempre que los archivos de la base de datos se mantengan en el directorio del sistema, deberían poder ser
localizados por PhreePlot solo de sus nombres de archivo, por ejemplo wateq4f.dat, ya que el directorio del sistema
se incluye automáticamente en la ruta de búsqueda. Algunos ejemplos de demostración especifican otras bases
de datos disponibles gratuitamente que no están incluidas en el PhreePlot distribución. Esto suele deberse a que
para obtenerlos se requiere algún tipo de registro.

La exactitud de los resultados de los cálculos geoquímicos está directamente relacionada con la calidad de las
bases de datos termodinámicas asociadas. Es de su entera responsabilidad asegurarse de que las bases de datos
utilizadas sean adecuadas para los fines para los que las está utilizando: advertencia emptor.
Mantener un ojo crítico sobre la calidad de las bases de datos utilizadas es una parte importante del modelado
geoquímico. También deben tenerse en cuenta otras advertencias, en particular que el equilibrio termodinámico no
siempre, ni siquiera en raras ocasiones, se logra. Esto es particularmente cierto para muchas reacciones de disolución y
precipitación.

2,5 O EL SOFTWARE ÚTIL

Cada uno por su cuenta, pero hemos encontrado que el siguiente software es útil cuando se trabaja con
10 Guía PhreePlot

PhreePlot:

Bloc de notas ++ un editor de texto gratuito y de gran capacidad que incluye resaltado de sintaxis para una gran
cantidad de tipos de archivos. Lo normal Phreeqc las instalaciones ahora vienen con un archivo
para colorear Phreeqc palabras clave en archivos pqi y ppi ( http: // note- pad-plus-plus.org/ ).

7 cremalleras utilidad de compresión de archivos gratuita que es eficiente y fácil de usar ( http: //www.7-
zip.org/ ).

xplorer2 Explorador de Windows de doble panel que es una excelente manera de iniciar
PhreePlot archivos y para ver los archivos gráficos y de texto producidos (además de
muchas otras cosas que tiene que hacer para la administración de archivos) ( http: // zab-
kat.com/index.htm ).

CoPlot Flexible y poderoso científico Graficado paquete ( http: //


www.cohort.com/coplot.html ).
R Entorno de trabajo de código abierto potente y con buen soporte para el
procesamiento de datos, incluidos gráficos flexibles y de alta calidad ( http:
//www.r-pro- ject.org/ ).

Inkscape Editor de gráficos vectoriales de código abierto capaz de manipular archivos


Postscript y exportar archivos en formato SVG ( http://www.inkscape.org/ ).

Es útil tener el acceso a los software que puede editar archivos ps nativos para que otras características puedan ser
se agregaron y cambiaron las posiciones de las etiquetas, etc. Necesitará un editor de gráficos vectoriales para esto. Tintas- capa mencionado

anteriormente es uno de esos editores.

Aunque PhreePlot contiene alguna funcionalidad de trazado, es bastante limitado en lo que puede hacer y no
pretende reemplazar un paquete de trazado científico adecuado. Los archivos de salida en formato ASCII están
diseñados para ser leídos por paquetes de análisis de datos y gráficos más potentes, incluidos los mencionados
anteriormente.

2,6 toneladas DISPARO DE RUBLES

Conversiones de archivos

Conversiones de archivos de PD a otros formatos se puede realizar automáticamente Ghostscript


bajo el control de PhreePlot. Si esto no funciona, realice las siguientes comprobaciones. Si todo lo demás falla,
lea en el PD archivar en GSview y realizar las conversiones necesarias en el modo normal GSview
manera.

Una vez instalado correctamente, los ejemplos de demostración deberían ejecutarse (consulte Sección 3.2 ).

Informe de problemas y errores

Póngase en contacto con David Kinniburgh ( [email protected] ).


Empezando 11

3 Primeros pasos

3,1 T INTERFAZ DE LÍNEA DE COMANDOS Y PROCESAMIENTO POR LOTES

Como la versión por lotes de Phreeqc, PhreePlot se puede ejecutar desde una consola o mediante un atajo
siempre que se proporcione el siguiente formato:

pp input_filename [otherpp.set]

dónde input_filename es el nombre de un archivo de entrada válido (ver Sección 5.2 ). Si solo se proporciona un nombre de
archivo parcialmente calificado, se debe tener cuidado para asegurarse de que sea suficiente para encontrar el archivo ( Sección
2.4.2 ). Hemos adoptado la convención de utilizar el ppi extensión para los nombres de archivo de entrada. El opcional otherpp.set
es el nombre de un archivo de configuración para usar en lugar del predeterminado
pp. conjunto desde el directorio del sistema. Normalmente, este segundo parámetro se deja en blanco y se utiliza por
defecto.

La salida se enviará a la pantalla y a varios archivos de salida. Si input_filename contiene espacios en blanco,
incrustarlo entre comillas.

Si el ppi la extensión está asociada con PhreePlot, como se recomienda, entonces la forma más sencilla de ejecutar un PhreePlot
archivo de entrada es hacer doble clic en él en una ventana del Explorador.

Las colecciones de las declaraciones del tipo anterior se pueden recopilar juntas en un archivo por lotes y
ejecutarse como un trabajo. El demo.bat archivo incluido en la distribución es un ejemplo. Este es el mecanismo
para trazar múltiples curvas de diferentes corridas en un solo trazado personalizado: los archivos de salida se
crean en las corridas iniciales y luego la última corrida hace todo el trazado usando el extradat
palabra clave para cargar la salida de las ejecuciones anteriores.

Utilizando el override.set archivar con método de cálculo 2 puede realizar cambios globales en la salida de un
conjunto de archivos ya calculados sin cambiar el individuo ppi archivos.

Los archivos de entrada deben prepararse con un editor de texto estándar. El Bloc de notas servirá, pero existen muchos
mejores editores. Es útil tener un editor que comprueba y carga automáticamente los archivos actualizados.
PhreePlot no es interactivo (sin GUI) pero con un poco de esfuerzo en la configuración, se puede hacer que funcione de manera

bastante eficiente.

Más ordinario Phreeqc los archivos de entrada se pueden ejecutar simplemente agregando la línea QUÍMICA al principio
del archivo de entrada (de lo contrario PhreePlot interpretará esta entrada como PhreePlot palabras clave). Añadiendo todo
T o depurar 2 justo antes de que esto provoque el *. todo archivo a crear que contendrá una copia de todos los Phreeqc producción.

3,2 R CONOZCA LOS EJEMPLOS DE DEMOSTRACIONES

Siempre que las rutas se hayan configurado correctamente como se describe anteriormente, el lanzamiento del demo1.bat
archivo de la \ manifestación directorio debe comenzar los cálculos. Esto se puede hacer haciendo doble clic en el demo1.bat
en una ventana de tipo Explorador de Windows, o abriendo una consola y ejecutándola desde allí (como se
muestra a continuación).

Esta demostración es un ejemplo del uso del algoritmo de "búsqueda y seguimiento" para producir un diagrama
de predominio para un sistema Fe-Cl. También crea pdf, eps, epsi y jpg archivos si Ghostscript está instalado y, por lo
tanto, se puede utilizar para probar esa instalación.

La salida se parece a:

* * * PhreePlot 1 (x64) 11:41:57 31 de marzo de 2020


Incorporación de la biblioteca iPhreeqc (3.6.2-15100-x64)
12 Guía PhreePlot

por DL Parkhurst, SR Charlton (USGS) y CAJ Appelo (Amsterdam) Hunt & Track por
DG Kinniburgh, y DM Cooper (CEH, NERC) Fitting por MJD Powell y otros

Trazado posdata por KE Kohler

Ingrese el nombre del archivo: D: \ PhreePlot \ demo \ test \ test.ppi.

Especie principal = "Fe"

Calculando ... 1
1 2.0000 - 85,0000 -11 H2 (g)> 1 a Fe + 2 0.9044 - 2.0195
2 2.0000 - 81,6000 11 Fe + 2 FeCl + - 2.0196 - 3.3583
3 2.0000 - 83,3000 -11 H2 (g)> 1 a Fe + 2 0.0544 - 2.0196
4 2.0000 - 81,6000 11 Fe + 2 FeCl + - 2.0196 - 3.3583
5 2.0000 - 82,4500 11 Fe + 2 FeCl + - 2.0196 - 3.3583
6 2.0000 - 82,8750 11 Fe + 2 FeCl + - 2.0196 - 3.3583
7 2.0000 - 83.0875 11 Fe + 2 FeCl + - 2.0196 - 3.3583
8 2.0000 - 83,1937 -11 H2 (g)> 1 a Fe + 2 0,0013 - 2.0196
9 2.0000 - 83.0875 11 Fe + 2 FeCl + - 2.0196 - 3.3583
10 2.0000 - 83.1406 11 Fe + 2 FeCl + - 2.0196 - 3.3583
11 2.0000 - 83.1672 11 Fe + 2 FeCl + - 2.0196 - 3.3583
12 2.0000 - 83.1805 11 Fe + 2 FeCl + - 2.0196 - 3.3583
13 2.0000 - 83.1871 11 Fe + 2 FeCl + - 2.0196 - 3.3583
14 2.0000 - 83,2828 -21 H2 (g)> 1 a Fe + 2 0.0458 - 2.0196
15 2.0000 - 82,4242 22 Fe + 2 FeCl + - 2.0196 - 3.3583
dieciséis 2.1010 - 82,4242 23 Fe + 2 FeCl + - 2.0196 - 3.3583
17 2.1010 - 83,2828 -24 H2 (g)> 1 a Fe + 2 0.0458 - 2.0196

La salida de la pantalla proporciona información sobre el progreso. Las columnas son: (i) número de iteración; (ii)
variable del eje x (generada automáticamente); (iii) variable del eje y (generada automáticamente); (iv) el tipo de
paso que se está dando; (v) nombre truncado de la especie predominante (más abundante); (vi) nombre
truncado de la especie subdominante (segunda más abundante); log concentraciones de las especies
dominantes y subdominantes (mol / kgw) cuando se encuentran en solución o log presiones parciales cuando se
trata de gases. Cuando están operando una o más restricciones, éstas se elevan a la (s) posición (es) más alta (s)
y los valores dados están determinados por el tipo de especie como se describe anteriormente.

El ejemplo anterior hace uso de la ht1.inc incluir archivo . Esto determina exactamente a qué valores
se devuelven PhreePlot.

El código devuelto para el tipo de paso realizado se determina de la siguiente manera:

el primer dígito es 1 mientras busca límites a lo largo de un borde o 2 mientras rastrea un


límite interno;

el segundo dígito es el número del lado o la esquina de la celda (1-4, contado en el sentido de las agujas del reloj desde

la parte inferior izquierda. 1 es el eje y a la izquierda, 2 es el eje x superior ...);

un signo negativo indica que está operando una restricción;

00 es un código especial para un movimiento sin seguimiento (como lo usa un ' cuadrícula ' trama).

El ejemplo anterior indica que PhreePlot comienza buscando límites a lo largo del eje y de la izquierda.
Luego comienza a rastrear a lo largo de un límite interno en la iteración 14. Terminará rastreando a lo
largo de los límites restantes para verificar que no haya más intersecciones desde las que comenzar a
rastrear. Este ejemplo necesita 1226 iteraciones para completarse.

El demo.bat El archivo incluido contiene muchos más ejemplos, incluidos muchos gráficos 'personalizados'
que utilizan la salida seleccionada de Phreeqc para generar una parcela. Esto incluye el conjunto estándar
de ejemplos distribuidos con Phreeqc. Cada ejemplo tomará desde unos segundos hasta varios minutos o
más para calcular. La mayor parte del tiempo en estos ejemplos se dedica a ejecutar
Phreeqc.

Tenga en cuenta que los ejemplos de demostración se basan en pp. conjunto archivo proporcionado. Si se realizan cambios en este
archivo, puede que sea necesario cambiar los archivos de entrada. Por ejemplo, pp. conjunto establece la etiqueta de uso común < log_H>
a - < x_axis> de modo que los límites del eje x se pueden especificar en términos de pH directamente en lugar de como la actividad
logarítmica (H +).

3,3 toneladas ÉL ' PP.LOG ' EXPEDIENTE

Proporcionar, pplog se establece en CIERTO, un registro de cada PhreePlot ejecutar se escribe en un archivo llamado pp.log
Empezando 13

que se crea en el PhreePlot directorio del sistema. Esto se puede verificar al final de la ejecución para asegurarse de que
todo se haya ejecutado como se esperaba y es especialmente útil para verificar los resultados de múltiples ejecuciones
desde un archivo por lotes.

Cada corrida normalmente da lugar a dos líneas en el pp.log expediente. La primera línea indica la hora de inicio y
la segunda línea indica el estado de finalización. La ausencia de una segunda línea indica un accidente.
Normalmente, se debe devolver un estado 'OK' para cada archivo de entrada si todo ha funcionado bien.

Tiempo Fecha Fichero de entrada Tipo Método norte Tiempo (min) Estado
9:24:38 15_junio_2010 C: \ PhreePlot \ demo \ test \ test.ppi ht1 calcular 0 0.000 Iniciado
9:24:44 15_June_2010 C: \ PhreePlot \ demo \ test \ test.ppi ht1 calcular 1539 0.092 OK
9:24:44 15_June_2010 C: \ PhreePlot \ demo \ Phreeqcexamples \ ex1 \ ex1.ppi personalizado calcular 0 0.000 Iniciado
9:24:44 15_June_2010 C: \ PhreePlot \ demo \ Phreeqcexamples \ ex1 \ ex1.ppi personalizado calcular 1 0.004 OK
9:24:44 15_June_2010 C: \ PhreePlot \ demo \ Phreeqcexamples \ ex2 \ ex2.ppi personalizado calcular 0 0.000 Iniciado
9:24:45 15_June_2010 C: \ PhreePlot \ demo \ Phreeqcexamples \ ex2 \ ex2.ppi personalizado calcular 1 0.018 OK
...

Este archivo de registro acumulará la salida de cada ejecución y, por lo tanto, debe vaciarse o borrarse
periódicamente. Se volverá a crear automáticamente o se agregará según sea necesario.

Si ha fallado Phreeqc tal que no se produjo una salida seleccionada, entonces un '?' se adjunta a la
derecha del número de cálculos de especiación, norte. Los detalles de la salida infractora se escribirán
en el archivo de registro si estaba activo.

Si depurar se establece en 1 o stopOnFail se establece en 1, entonces PhreePlot se detendrá en el primer fallo. Si


PhreePlot ha tenido que ajustar la resolución de un gráfico de predominio generado por 'caza y seguimiento'
por varias razones, luego se imprime un '*' junto al número de cálculos de especiación.

Si ha habido un error al leer uno de los archivos de entrada de datos, por ejemplo, al leer un extraSym- bolLines archivo,
luego se agrega un signo de exclamación ('!') al estado. Consulte el archivo de registro para obtener más
detalles. El error puede detenerse PhreePlot deje de ejecutarse o puede continuar omitiendo los datos erróneos.

Otras posibles variaciones del estado registrado en la terminación son:

Error ocurrió un error en algún lugar de los cálculos


Error de entrada se produjo un error al leer la entrada

Plotting_error se produjo un error durante el trazado

GS_error Ocurrió un error mientras Ghostscript estaba convirtiendo el archivo ps

No_plot no se especificó la trama

Interrumpido el < Esc> La interrupción se utilizó para detener la ejecución.

Comenzó todavía corriendo (o se ha estrellado mientras corría)

Configuración pplog para FALSO evitará que se escriba algo en el pp.log expediente.

3.4 E EXAMINANDO LOS RESULTADOS DE LA CARRERA

Se escribirán varios archivos de salida en el directorio de archivos de entrada. Los formatos de estos archivos se
describen con más detalle en otra parte ( Sección 5 ). El archivo plot.ps es siempre una copia del último archivo de
trazado PostScript producido. El archivo de registro, si está escrito, debe dar un resumen más detallado de los
cálculos realizados.

3,5 M ELEGIR UN DIRECTORIO DE TRABAJO

Es mejor mantener todos sus archivos de trabajo en un directorio que esté bastante separado de los directorios de
instalación. Dado que cada ejecución puede producir una gran cantidad de archivos, es mejor crear un nuevo directorio
para cada "problema". Por lo general, es mejor copiar un archivo de entrada de trabajo similar existente en este
directorio y editarlo según sea necesario.

La ejecución del archivo debe ser sencilla, siempre que PhreePlot La variable de entorno se ha configurado
correctamente (consulte Sección 2.4.1 ), p.ej

C: \ proyectos \ PhreePlot> md FeS2


14 Guía PhreePlot

C: \ proyectos \ PhreePlot> cd FeS2


C: \ proyectos \ PhreePlot \ FeS2> pp FeS2

3,6 G FAMILIARIZADO CON LAS OPCIONES

Los cálculos y el trazado están controlados por las diversas listas y pares de palabras clave-valor
que se leen desde varios archivos de entrada. También suele haber algunos Phreeqc- formato
adjunto al final del archivo de entrada principal. Hay muchas opciones, algunas de las cuales son
más importantes que otras, y al principio es difícil saber por dónde empezar.
La mejor forma de aprender es ejecutar los ejemplos de demostración. Elija un ejemplo que se acerque más a lo
que le interesa y ejecútelo. Si una de las palabras clave del archivo de entrada parece interesante, búscalo
para ver qué hace y experimentar cambiándolo.

3,7 U CANTAR ARCHIVOS POR LOTE PARA EJECUTAR UN CONJUNTO DE CARRERAS

PhreePlot está diseñado para producir una serie de gráficos variando una de las variables de bucle
(especie principal, parámetro de bucle o los parámetros xey). Sin embargo, no está diseñado para realizar
más de un tipo de gráfico independiente en una sola ejecución. Para hacer esto, es necesario ejecutar
PhreePlot varias veces y luego combine los resultados. El cubrir La función permite combinar gráficos de
ejecuciones anteriores con el gráfico actual para producir diseños de página complejos que contienen
múltiples gráficos.

Se pueden ejecutar múltiples gráficos independientes en modo por lotes mediante la preparación de un archivo por
lotes. Esto es sorprendentemente poderoso. Los resultados de PhreePlot incluso puede ser interceptado, modificado por
otro programa y devuelto a PhreePlot para trazar. Existen muchos programas para convertir imágenes a otros formatos
de imagen, por ejemplo. Incluso un conocimiento rudimentario de las secuencias de comandos por lotes de Windows
puede resultar útil cuando se procesan grandes cantidades de archivos.

El demo.bat archivo ilustra cómo se puede ejecutar un conjunto de ejecuciones en modo por lotes. Esto tiene
ventajas obvias para ejecutar repetidamente un conjunto de ejemplos. En máquinas multiprocesador, puede
resultar ventajoso en términos de velocidad dividir los archivos por lotes en dos o más para aprovechar al
máximo los procesadores separados.

Es posible intercalar otros comandos por lotes en un archivo por lotes de PhreePlot se ejecuta para cambiar el nombre,
copiar o eliminar archivos, etc. entre ejecuciones.

Puede ser necesario cambiar el directorio de trabajo actual al del archivo de entrada si se proporciona un
nombre de archivo abreviado.

El comienzo El comando se puede utilizar para iniciar archivos por lotes individuales simultáneamente desde dentro de este archivo

(consulte demo2.bat). Alternativamente, use llamar para ejecutar un archivo por lotes desde dentro de un archivo por lotes. Esto

ejecutará los archivos por lotes de forma secuencial.

El override.set file puede ser un lugar útil para agregar configuraciones que se aplicarán a todos los archivos ejecutados desde un

archivo por lotes. Por ejemplo, para generar archivos png para todas las parcelas, agregue

cálculo Método 2
png t

hacia override.set archivo y vuelva a ejecutar.

3,8 S SUPERAR UNA CARRERA

Por lo general, puede detener una carrera con el Esc clave seguida de ' s 'para detener.

Detener un archivo por lotes o un script por completo es un poco diferente. En Windows, Cntrl-c siempre abortará
la ejecución actual y cuando sea un archivo por lotes de Windows, se le dará la oportunidad de salir de todo el
archivo por lotes.
Conceptos básicos de phreeqc 15

4 conceptos básicos de Phreeqc

4.1 O NLINE PAG DOCUMENTACIÓN HREEQC

Desde el QUÍMICA Sección de PhreePlot archivos de entrada es en sí mismo esencialmente Phreeqc código, es necesario
estar familiarizado con la forma en que Phreeqc se configuran los archivos de entrada. Esto se describe en detalle en el Manual
de phreeqc (pdf) . Este manual también está disponible en línea en formato del navegador . Los cambios y correcciones
añadidos desde la versión inicial se dan en el ' Notas de lanzamiento 'en el sitio web de USGS.

4,2 H AY PAG INTERACCIONES DE HREEQC CON PAG Tres PAG LOTE

PhreePlot usos Phreeqc para todos los cálculos geoquímicos y se ejecuta solo ligeramente modificado
Phreeqc archivos de entrada. Phreeqc los cálculos son controlados por un archivo de entrada, un archivo de
base de datos y el programa mismo. La entrada puede incluir una o más simulaciones. No es necesario que
estén relacionados, pero por lo general lo están. En muchos casos, solo una simulación es todo lo que se
necesita para generar la salida requerida, pero a veces es necesaria más de una simulación, o puede ser
deseable dividir una simulación en dos o más en aras de la eficiencia (ver Ejemplo 61 ).

A Phreeqc El archivo de entrada consta de una serie de bloques de datos de palabras clave separados en 'simulaciones'
por FINAL palabra clave. Este archivo se lee secuencialmente. Cuando un FINAL se encuentra o se llega al final del archivo, las
sentencias acumuladas desde la última FINAL se ejecutan. A esto lo llamamos una 'carrera'.

Esta ejecución activa los cálculos especificados y la escritura de resultados en los 'archivos' de salida
normal y de salida seleccionada (si está activo). Varias estructuras de datos, incluida la composición
de varios SOLUCIONES, EQUILIBRIUM_PHASES etc también se crean o actualizan.

Muchas de estas estructuras de datos persisten en las simulaciones, pero algunas de ellas se pueden guardar y reutilizar
explícitamente con la AHORRAR y USAR palabras clave. El PONER y OBTENER BÁSICO Las declaraciones también permiten que las
variables numéricas definidas por el usuario se almacenen y recuperen del almacenamiento global.

Phreeqc no proporciona ningún medio explícito de recorrer líneas específicas del archivo de entrada, aunque
algunas de las palabras clave, como REACCIÓN y TRANSPORTE implican implícitamente un conjunto de iteraciones
definido por el usuario. Esta falta de capacidad de bucle general significa que los archivos de entrada necesarios
para algunos cálculos, incluidos los que a menudo se requieren para el trazado, pueden volverse grandes y
repetitivos.

PhreePlot intenta superar esto proporcionando un marco para iterar a través de secciones de la Phreeqc archivo
de entrada al tiempo que requiere cambios mínimos en el Phreeqc archivo de entrada en sí. Lo hace definiendo
un conjunto de cuatro anidados ' HACER 'bucles que iteran sobre ciertas secciones del
Phreeqc código.

Estos bucles, desde el exterior (que cambian menos rápidamente) hacia adentro, se conocen como: (i) el bucle de
'especies principales'; (ii) el bucle 'z' o 'principal'; (iii) el bucle del eje y, y (iv) el bucle del eje x. El bucle principal de especies
itera sobre una lista de variables de caracteres, mientras que los bucles restantes iteran sobre variables numéricas. No es
necesario utilizar todos los bucles todo el tiempo. De hecho, no es necesario utilizar ninguno de los bucles.

Establecer los parámetros de iteración para estos diversos bucles y proporcionar instrucciones que describen qué partes
del archivo de entrada se deben recorrer, además de muchas otras PhreePlot configuración, se heredan de la
configuración predeterminada (un archivo) o se especifican en la parte superior de la PhreePlot fichero de entrada.
Phreeqc la entrada está en la parte inferior. Una línea que contiene la palabra QUÍMICA separa estas dos secciones.
16 Guía PhreePlot

Las etiquetas especiales (cadenas de caracteres entre paréntesis angulares) se utilizan dentro del Phreeqc entrada para actuar

como marcadores de posición que se sustituyen en tiempo de ejecución por valores generados por los diversos

PhreePlot mecanismos de bucle, y por otros medios. Phreeqc nunca ve estas etiquetas, solo los valores
sustituidos. Las etiquetas también se pueden utilizar en la parte superior ( PhreePlot) sección del archivo de
entrada. Estas etiquetas sirven como variables globales que permiten la transferencia entre diferentes Phreeqc simulaciones
(algo como el Basic PONER / OBTENER mecanismo) pero también permiten la comunicación entre
Phreeqc y la trama, y se puede utilizar para controlar dinámicamente cosas como etiquetar, escalar o
dimensionar la trama.

Las etiquetas se pueden definir en un PhreePlot archivo de entrada, pero también se puede generar automáticamente a partir de
la salida de simulaciones anteriores o de la lectura de un archivo de datos externo. PhreePlot mantiene una tabla con los valores
actuales de todas estas variables de etiqueta listas para su sustitución en el momento apropiado. Sin embargo, tenga en cuenta
que las etiquetas dinámicas generadas durante la ejecución no estarán disponibles durante las repeticiones ( método de cálculo 2
o 3).

Las secciones de Phreeqc el código iterado siempre se basa en bloques contiguos de una o más simulaciones. El
valor predeterminado es que las especies principales y los bucles z iteran sobre todas las simulaciones, mientras
que los bucles de los ejes xey solo iteran sobre el último norte simulaciones donde norte es uno por defecto.

Comunicación de resultados entre Phreeqc y PhreePlot es a través de la salida seleccionada.


Phreeqc El intérprete básico incorporado le brinda una gran flexibilidad para controlar lo que se envía a la
salida seleccionada.

Cada simulación normalmente produce una o más líneas de salida seleccionada, aunque esto puede activarse o
desactivarse a voluntad. Cuando no se ha solicitado salida, se produce una línea en blanco. Esta salida
generalmente consiste en los resultados de uno o más cálculos de solución inicial, etc. seguidos de una o más
líneas que dan los resultados de una reacción.

A menudo son los resultados de esta última línea los que se buscan. PhreePlot solo lee el ultimo k líneas de la
salida seleccionada donde k por defecto es de nuevo normalmente uno (en los casos en que Phreeqc hace
iteraciones, es posible que deba leerse un bloque completo de resultados, por lo que k se puede configurar para
que sea mayor que uno). Esta salida se acumula en un archivo especial, llamado ' afuera ', que tiene un formato
tabular listo para trazar.

PhreePlot tiene capacidades de trazado limitadas, aunque la salida que está disponible normalmente es de alta calidad
(el formato nativo es Postscript). El objetivo es poder obtener una sensación visual razonablemente rápida de la salida y,
una vez satisfecho, poder generar archivos de trazado más tarde, si es necesario, de forma automatizada (por lotes).
Todos los archivos de datos que se utilizan para generar gráficos son archivos de texto bien estructurados, por lo que se
pueden importar fácilmente a otros programas de gráficos.

La capacidad de utilizar variables de etiqueta en Phreeqc archivos de entrada significa que es sencillo volver a
ejecutar un conjunto de simulaciones con un conjunto diferente de valores. Ésta es la base del ajuste del modelo
que está integrado en PhreePlot.

4,3 toneladas BASES DE DATOS HERMODINAMICAS

Las bases de datos estándar distribuidas con Phreeqc y PhreePlot incluyen una gama variada de elementos y ligandos. El alcance

de estas bases de datos en términos de los elementos definidos se dan en

Apéndice 2 . Consulte los sitios web correspondientes para obtener actualizaciones.

Es sencillo en PhreePlot para cambiar la base de datos utilizada usando el base de datos palabra clave. Tenga en
cuenta que los mismos minerales y gases pueden tener diferentes nombres en las diferentes bases de datos.
Esto debe reflejarse en el uso de dichos nombres en la sección de Química de un PhreePlot
fichero de entrada.

4,4 toneladas SÍ DE PRODUCCIÓN PRODUCIDA POR PAG HREEQC

Phreeqc puede crear dos tipos de archivos de salida: (i) archivo de salida normal: el IMPRIMIR y USER_PRINT Los

bloques de datos controlan la salida a la


Conceptos básicos de phreeqc 17

archivo de salida. Consiste en un registro bien estructurado pero detallado de los cálculos de especiación
divididos en varios bloques correspondientes a cada etapa de los cálculos. También incluye cualquier
salida definida por el usuario definida por IMPRIMIR declaraciones en el USER_PRINT o USER_PUNCH bloques de
datos. En PhreePlot, esta salida se dirige al Phreeqc.0.out y *. todo archivos. El
Phreeqc.0.out El archivo solo se escribe si el Phreeqc.0.out la palabra clave es ' T ', o ' auto ' y depurar > 0. El *. todo
El archivo solo se escribe si el todo la palabra clave es ' T ', o ' auto ' y depurar > 1. El nombre de
El archivo se puede cambiar agregando el nuevo nombre de archivo como el segundo parámetro en el todo línea de palabra
*. todo
clave.

(ii) archivo de salida seleccionado: el SELECTED_OUTPUT n y USER_PUNCH n Los bloques de datos controlan la salida
tabular a los archivos de salida seleccionados. El archivo de salida principal seleccionado ( n = 1) es el archivo que
normalmente utiliza PhreePlot para generar gráficos y normalmente es este archivo el que debe manipularse
para obtener la salida requerida. Ciertas filas de datos de este archivo se acumulan en el ' afuera 'archivo que se
utiliza a menudo para generar gráficos. Por lo tanto, la familiaridad con las formas de controlar la salida al SELECTED_OUTPUT
el archivo es un requisito previo para ejecutar PhreePlot. Esto se describe en detalle en el Phreeqc manual ( Parkhurst
y Appelo, 1999 ).

En general, se produce una sola línea de salida seleccionada para cada Phreeqc cálculo - “después de cada
solución inicial, composición de intercambio inicial, composición de superficie inicial o cálculo de composición de
fase gaseosa inicial y después de cada paso en la reacción por lotes o cada cambio en los cálculos de transporte”.
Si no USER_PUNCH se han definido variables, se emite una línea en blanco o si la salida seleccionada se ha
desactivado con el IMPRIMIR declaración o - activo FALSO configuración, una línea de encabezado pero no se produce
ninguna salida.

El Phreeqc biblioteca utilizada por PhreePlot tiene interruptores para controlar si la salida seleccionada se escribe en un
archivo físico o en la memoria. En PhreePlot, esto está controlado por el valor de la configuración de depuración con depurar
= 0 normalmente escribiendo solo en la memoria y valores mayores escribiendo cantidades crecientes en 'disco' (esto
podría ser una unidad de estado sólido).

4,5 toneladas ÉL SELECTED_OUTPUT Y EL USER_PUNCH BLOQUES DE DATOS

Todas las comunicaciones de salida entre Phreeqc y PhreePlot se envían a través de la salida seleccionada. Por
lo tanto, es necesario asegurarse de que se envíe la salida correcta a este 'archivo' (puede ser solo una pieza de
memoria o un archivo 'virtual') y decir PhreePlot cuál es el formato del archivo de salida seleccionado en relación
con lo que PhreePlot Tiene qué hacerlo. Esto se hace con una combinación de
SELECTED_OUTPUT / USER_PUNCH Declaraciones básicas en Phreeqc y selectedOutputLines clave-
palabras en PhreePlot.

Phreeqc ahora admite múltiples SELECTED_OUTPUT / USER_PUNCH bloques. Estos están numerados con un
número de usuario, norte, p.ej SELECTED_OUTPUT n / USER_PUNCH n dónde norte es un número entero que, si no se
especifica, recibe el valor 1. Dentro de una simulación dada, el SELECTED_OUTPUT n / USER_PUNCH n los números
deben ser los mismos. A diferencia de las versiones interactivas y por lotes de
Phreeqc, el predeterminado para el iPhreeqc biblioteca como se usa en PhreePlot es para que la salida
seleccionada no se escriba en un archivo. Por el contrario, se espera que los valores de salida seleccionados se
lean directamente desde la memoria y existen facilidades para hacer esto. En principio, esto es más rápido ya
que implica menos entrada / salida. Entonces, para obtener archivos de salida seleccionados arbitrarios
realmente escritos, es necesario activarlos primero. El selectedOuptutFile La palabra clave tiene un interruptor
para hacer esto. Este interruptor combinado con el SELECTED_OUTPUT / USER_PUNCH blocks determina si se creará o no
un archivo de salida seleccionado.

Hay un factor más importante: la SELECTED_OUTPUT El bloque debe ejecutarse en una simulación antes de que
la simulación active la salida seleccionada, es decir, el interruptor de salida seleccionado debe estar en
'on' antes de que se ejecute la simulación que genera la salida. En PhreePlot 's modus operandi, esto
significa que los bloques de salida seleccionados deben colocarse en una simulación previa al bucle o,
para las simulaciones del bucle principal, debe adoptarse el enfoque de 'una simulación a la vez' (ver bucle
principal ) con el bloque de salida seleccionado colocado en una simulación que precede a la simulación
que dispara la salida seleccionada deseada.

PhreePlot solo transfiere datos de un bloque de salida seleccionado al ' afuera 'archivo, el estructurado-
18 Guía PhreePlot

archivo de salida que se utiliza para trazar. El bloque elegido es siempre el que tiene el mayor número de
usuarios. Esto no está necesariamente en la última simulación que se ejecutará. Por lo tanto, la
numeración juiciosa de los bloques proporciona una forma sencilla de seleccionar la simulación que
proporcionará los datos de salida.

selectedOutputLines es un número que indica el número de líneas del elegido SELECTED_OUT- PUT /
USER_PUNCH bloque para transferir al ' afuera ', contando desde la parte inferior de la salida hacia arriba.
Esta configuración no afecta los datos que se enviarán a otros archivos especificados con el
SELECTED_OUTPUT; -expediente identificador.

La salida seleccionada solo se generará si tanto el SELECTED_OUTPUT y USER_PUNCH Los bloques de datos están
presentes en algún lugar del Phreeqc parte del archivo de entrada. Por defecto, están activos desde el
punto de definición hacia abajo. La salida seleccionada se activará a partir de todas las simulaciones con
un SELECTED_OUTPUT n / USER_PUNCH n emparejar cada vez que se produzca una inicialización, reacción o
intervalo de tiempo. Estos se pueden apagar / encender de forma selectiva con el - salida_seleccionada identificador
en el IMPRIMIR bloque y el - activo y - user_punch identificadores en el SELECT- ED_OUTPUT cuadra. Tendrá que haber
una razón para emitir alguna salida, por lo que generalmente al menos una
SOLUCIÓN / REACCIÓN Se necesita un bloque (puede estar vacío).

También puede ser útil incluir: restablecer FALSO y - high_precision TRUE identificadores para suprimir
encabezados innecesarios y mantener la máxima precisión en los números de salida. Las variables
del sistema como SIM_NO sólo se producen sin definirse explícitamente cuando n = 1 en
SELECTED_OUTPUT n / USER_PUNCH n.

Mientras que la ' afuera 'archivo es el archivo de datos principal utilizado para trazar, otros archivos se pueden utilizar para
proporcionar datos para trazar especificándolos con el extradat palabra clave.

El intérprete BASIC integrado en Phreeqc proporciona un enfoque muy flexible para definir la salida
seleccionada. El intérprete proporciona acceso a la mayoría de las variables fundamentales del sistema,
como las concentraciones de especies y las actividades. También incluye varias funciones de resumen
como TOT (), SURF () y SYS (). Los datos enviados a la salida seleccionada desde varias etapas de
Phreeqc los cálculos se pueden controlar en el USER_PUNCH n bloque (s) de datos comprobando el
PASO_NO y saltando sobre cualquier PUÑETAZO declaración (es) para las que no se desea la salida.

4.5.1 El SELECTED_OUTPUT nombre de archivo y forzar la escritura del archivo

El nombre predeterminado del SELECTED_OUTPUT presentar en PhreePlot es ' selected_1.0.out 'pero esto se puede cambiar usando
el SELECTED_OUTPUT -archivo identificador, como es habitual en Phreeqc. Como se mencionó anteriormente, la salida
seleccionada en PhreePlot normalmente se escribe en un archivo "virtual" (un bloque de memoria) y no necesariamente
se escribe en un archivo "físico" o de disco. La escritura del archivo físico está controlada por un interruptor establecido
por el selectedOutputFile palabra clave. Esta configuración se aplica a todos los archivos de salida seleccionados creados
durante la ejecución.

Para depurar > 1 siempre se producirá un archivo físico con el nombre de archivo dado para que se pueda
inspeccionar la salida. Habrá una pequeña penalización en el rendimiento debido a la escritura del archivo.

Puede resultar útil forzar la escritura de un archivo físico con archivos de entrada de simulación múltiple. Los datos de
cada simulación pueden enviarse a un archivo diferente y trazarse en consecuencia utilizando el extradat palabra clave
para definir los archivos de datos en los que se buscarán datos de trazado.

Si el - selected_out identificador del USER_PUNCH el bloque de datos está configurado en FALSO, no se escriben líneas en el archivo
de salida seleccionado. Sin embargo, se seguirá produciendo un archivo de salida seleccionado, pero estará en blanco.
Esto se traducirá a un conjunto de valores de variable, todos los valores cero dados, es decir, todas las variables de salida
se informarán 0,000000000000E + 00 en el archivo de registro.

Si se desea un cambio en la estructura de la salida seleccionada, asegúrese de que las simulaciones involucradas
se ejecuten como bloques separados (ver bucle principal ).

4.5.2 Alcance de las palabras clave Phreeqc

Cada Phreeqc La simulación consta de una serie de bloques de datos de palabras clave que definen los cálculos
para esa simulación. El orden de estas palabras clave dentro de una simulación normalmente no es
Conceptos básicos de phreeqc 19

importante aparte de si se replica una palabra clave, la última instancia anula las anteriores. Una excepción es
que la posición del - Reiniciar en USER_PUNCH Los bloques de palabras clave pueden ser importantes. También la
posición del unidades y numberOfFitParameters Las palabras clave pueden ser importantes en relación con los
ajustes relacionados que siguen.

Las simulaciones están separadas entre sí por un FINAL palabra clave. Cada FINAL por lo tanto, se puede
interpretar como '¡Calcular!'.

Otras palabras clave como SELECTED_OUTPUT y USER_PUNCH tienen un alcance más amplio y operan desde su
punto de inserción hacia adelante.

Por ejemplo, la siguiente entrada define cuatro soluciones de Cd y hace un cálculo de 'solución inicial'
(especiación) para cada una. Las cuatro simulaciones esencialmente no están relacionadas.

SOLUCIÓN 1 # Simulación 1
Cd 1.0
FINAL
SELECTED_OUTPUT # Simulación 2
high_precision verdadero
restablecer falso
USER_PUNCH
títulos Cd + 2
10 mol de punzón ("Cd + 2")
SOLUCION 2
Cd 0.1
FINAL
SOLUCIÓN 3 # Simulación 3
Cd 0.35
FINAL
SOLUCIÓN 4 # Simulación 4
Cd 0.6
FINAL

Esto produce la siguiente salida en el selected_1.0.out archivo cuando el wateq4f.dat se utiliza la base de
datos:
Cd + 2
9.992072733798e-005
3.497329579806e-004
5.995528842616e-004

Tenga en cuenta que no se ha producido ningún resultado para el primer cálculo de la solución inicial, ya
que se encuentra en una simulación que precede a la definición de la SELECTED_OUTPUT bloque de datos. El SELECT-
ED_OUTPUT El archivo está 'activado' en la simulación 2 y la salida aparece a partir de este punto, de ahí las
tres líneas de salida que representan la salida de las simulaciones 2 a 4. Adicional PUÑETAZO
Las declaraciones dentro de una simulación dan como resultado más columnas de salida. El ' encabezados 'línea en el
USER_PUNCH El bloque de datos controla el encabezado utilizado para la columna en el archivo de salida seleccionado.

Por lo tanto, mientras el archivo de salida seleccionado esté activado, cada simulación producirá al menos
una línea de salida siempre que USER_PUNCH se ha definido el bloque. La salida de todo el trabajo se acumula
en el archivo de salida seleccionado. PhreePlot acumula 'datos seleccionados del archivo de salida
principal seleccionado' en un solo archivo de salida llamado ' afuera 'archivo o archivo de salida. El valor
predeterminado es acumular solo la última línea de la última simulación aquí el 5.995528842616e-
004.

El alcance de muchos otros Phreeqc Las 'estructuras' son globales en el sentido de que una vez creadas en una
simulación, persisten durante el resto de la ejecución a menos que se sobrescriban. Por ejemplo, las soluciones
definidas por el SOLUCIÓN Las palabras clave se conservan automáticamente en todas las simulaciones. Estas
soluciones se pueden utilizar en simulaciones posteriores siempre que el número de solución no se reutilice o
redefina mediante una reacción. Lo mismo es cierto de FASES, SOLUTION_SPECIES etc.

4.5.3 Qué se envía al SELECTED_OUTPUT ¿expediente?

Tanto las variables numéricas como las cadenas de texto se pueden enviar al SELECTED_OUTPUT archivo
definiéndolos en un USER_PUNCH bloque de datos. Los encabezados de las columnas deben reflejar cada entrada de
uno a uno. Si la lista de encabezados es más corta que la lista de variables de salida, el encabezado faltante
20 Guía PhreePlot

a las entradas se les da el valor ' no_heading '.

Los nombres de los títulos de las columnas adquieren especial importancia en PhreePlot ya que se utilizan para generar

automáticamente los nombres de nuevas etiquetas (consulte Sección 6.4.2 ) y, en última instancia, se puede utilizar para etiquetar

parcelas.

El número de cifras significativas enviadas al SELECTED_OUTPUT el archivo está controlado por el -


alta precisión identificador en Phreeqc. Normalmente es más seguro configurarlo en CIERTO, es decir, salida con alta
precisión (12 decimales, 13 cifras significativas). La precisión normal es de 4 lugares decimales (5 cifras
significativas). El valor predeterminado es FALSO por lo que el identificador high_precision debe establecerse
explícitamente como se indicó anteriormente si se desea una salida de alta precisión. La opción de alta precisión
es definitivamente preferible al ajustar datos a modelos y al calcular diagramas de predominio.

La secuencia de columnas enviadas al SELECTED_OUTPUT El archivo se establece mediante las siguientes reglas:

(i) una columna para cada uno de los SELECTED_OUTPUT interruptores de elementos de datos
(simulación, estado, solución ...) que se establece en VERDADERO. Los encabezados de columna para estos
conmutadores, y su orden, viene dado por: sim, estado, soln, dist_x, tiempo, paso, pH, pe, reacción, temp, Alk, mu, mass_H2O, carga
y pct_err. El valor predeterminado para los primeros ocho de estos es CIERTO y por el resto es
FALSO. Normalmente es aconsejable utilizar el - restablecer falso opción en la parte superior de la SELECT- ED_OUTPUT bloque
de datos para desactivar todos estos. Luego, los que se desean se pueden activar definiéndolos
explícitamente como VERDADERO.

(ii) una columna para cada variable definida en la lista de elementos de datos tales como -totales, -actividades,
etc., que salen en la secuencia especificada.

(iii) una columna para cada artículo PUÑETAZO ed dentro del USER_PUNCH bloque de datos en el orden
acumulativo en el que son especificados por las sentencias BASIC. Puede haber uno o más elementos por PUÑETAZO
declaración.

Un ejemplo es:

SELECTED_OUTPUT
high_precision verdadero
restablecer falso
USER_PUNCH
títulos pH Ca Mg
10 puñetazos -la ("H +"), tot ("Ca"), tot ("Mg")

4,6 S PONIENDO EL SELECTED_OUTPUT ARCHIVO PARA ENTRADA A PAG Tres PAG LOTE

4.6.1 Posibilidades de bucle de archivos de entrada Phreeqc

La estructura de Phreeqc archivos de entrada es muy flexible en términos del número de simulaciones
dentro de un archivo y la relación entre las diversas simulaciones. Estos se ejecutan secuencialmente
hasta que se encuentra el final del archivo. Phreeqc no contiene ningún mecanismo para permitir el bucle
de las diversas simulaciones. Esto es lo que PhreePlot intenta hacerlo sin afectar indebidamente a la
estructura general del Phreeqc aporte. PhreePlot espera un cierto Phreeqc estructura para controlar
este bucle. Esta estructura depende de la cálculoTipo y algunas otras configuraciones de palabras clave.

La filosofía general en la preparación PhreePlot / Phreeqc los archivos de entrada deben ser para (i)
mantener el archivo de entrada lo más simple posible; (ii) ponga todos los cálculos preliminares que solo
necesitan ser ejecutados una vez en una o más simulaciones 'pre-loop' al comienzo del archivo; (iii)
termine con la simulación, o rango de simulaciones, que deben repetirse muchas veces con cambios
menores (el 'bucle principal').

PhreePlot también reconoce dos tipos de bucle: (i) un tipo de bucle 'continuo' que se centra en la
'resolución' de los cálculos, (ii) un tipo de bucle 'discontinuo' que genera una lista de valores discretos que
se utilizarán . Los bucles de los ejes xey pertenecen a (i), y la especie principal y el bucle z pertenecen a (ii).
Estas diferencias se reflejan en la forma en que se especifican las iteraciones: (i) se especifica en términos
de un valor mínimo, un valor máximo y una 'resolución' mientras que para (ii) el bucle principal de
especies utiliza una lista de variables de carácter y la z-loop utiliza un mini
Conceptos básicos de Phreeqc 21

mum valor, un valor máximo y un valor de incremento. También se puede proporcionar una lista irregular de
valores de bucle z.

Por lo general, los bucles de los ejes xey se utilizan para controlar la suavidad de las curvas generadas para el
trazado, mientras que la especie principal repite los cálculos sobre un rango de elementos químicos y el bucle z
controla el espacio entre las curvas en función de un rango de valores discretos de alguna variable importante.

Son solo las simulaciones del 'bucle principal' las que se repiten bajo los mecanismos de bucle de los ejes
x e y. Las simulaciones previas al ciclo deben usarse para cálculos 'únicos', como cálculos de solución
inicial o definiciones de bases de datos que no necesitan ser variadas durante el ciclo principal pero que
pueden necesitar ser usadas recalculadas para cada una de las especies principales. y bucles z-. Más
detalles sobre PhreePlot bucle y la estructura de los archivos de entrada de simulación múltiple se da en
Sección 6.2 .

Parcelas de predominio

bucle de especies principales

bucle en z

salida seleccionada
simulación 1 USER_PUNCH etiquetas
FINAL
(solo última línea)

salida seleccionada
simulación 2 USER_PUNCH etiquetas
(solo última línea)
pre-loop

FINAL

salida seleccionada
simulación 3 USER_PUNCH etiquetas
(solo última línea)
FINAL

salida seleccionada
simulación 4 USER_PUNCH etiquetas
(solo última línea)
FINAL

<yy__ahacha
xiess>>
xiess>> simulación 5
<xX__ahacha USER_PUNCH salida seleccionada etiquetas
main
loop

FINAL Seleccione siempre la última línea que debe tener la


estructura especial definida, por ejemplo, por el
ht.inc expediente
archivo de salida

Figura 4.1. Flujo durante la ejecución de un archivo de multi-simulación generando una gráfica de predominio ( calculationType ' ht1 ' o ' cuadrícula
'). Las simulaciones 1–4 son simulaciones "pre-loop" que se utilizan para cálculos de solución inicial, etc. El < x_axis> y < eje_y> Las etiquetas
solo están presentes en la simulación del quinto o del 'bucle principal'. Este es el que se llama repetidamente mientras se rastrea o atraviesa
el dominio especificado. Siempre es la última línea de la salida seleccionada generada por esta simulación de bucle principal la que devuelve
la especie predominante para PhreePlot procesar. El archivo de salida seleccionado tiene una estructura especial y normalmente se
genera al incluir el ht1.inc archivo o alguna variante del mismo en el archivo de entrada. Tenga en cuenta que este diagrama de flujo se refiere
a un valor único de las principales especies y variables de bucle z.

La estructura del archivo de entrada para generar un diagrama de predominio generalmente consta de
dos simulaciones (Figura 4.1). Todo se podría hacer con una simulación, pero se ejecuta más rápidamente
si las partes de inicialización (los cálculos 'pre-loop' que solo necesitan ejecutarse una vez) se separan de
aquellos cálculos que varían y que necesitan calcularse repetidamente (el ' cálculos del bucle principal). El
número de la primera simulación de bucle principal se identifica con
bucle principal .

La primera simulación generalmente atrae la ht1.inc archivo que define el Fix_H + fase y configura el 'archivo'
de salida seleccionado y el USER_PUNCH definiciones que transmiten las especies predominantes a PhreePlot.
También incluye un SOLUCIÓN bloque de datos que define las cantidades totales de todos los elementos del
sistema de interés.

La segunda simulación utiliza el sistema químico definido anteriormente y lo somete al control de las
variables del eje xy del eje y.

Un ejemplo sencillo para generar un diagrama de predominio de Fe es:

# la primera simulación define las cantidades totales involucradas incluyen 'ht1.inc'

SOLUCION 1
pH 1.8
unidades mol / kgw
22 Guía PhreePlot

Fe (3) 1e-2
N/A 1e-1
Cl 1e-1
FINAL

# la segunda simulación lleva a cabo la reacción al punto final deseado UTILIZAR SOLUCIÓN 1

EQUILIBRIUM_PHASES 1
Fix_H + <x_axis> NaOH 10
- force_equality verdadero
O2 (g) <eje_y> 1
Fe (OH) 3 (a) 0 0
FINAL

Tenga en cuenta que la solución 1 se titula con NaOH y O 2 ( g) para lograr los puntos finales requeridos. El
pH inicial de la solución 1 debe ser menor que el pH mínimo de interés para que la adición
Se puede garantizar que el NaOH alcance el rango completo de pH requerido.

Si el < especies principales> tiene más de una variable asociada o si el < bucle> variable se ha configurado para
realizar más de un bucle z, entonces todo el archivo de entrada se ejecuta cada vez que una de estas
variables de bucle cambia de valor. Esto se puede utilizar para preparar un conjunto de gráficos de
predominio para varios elementos, cada uno con su concentración total, por ejemplo, variando en cierta
cantidad. El ...\ demo \ loop_ht1 Los ejemplos producen diagramas de predominio de Fe para un rango de
concentraciones de Fe total. Si se requiere una secuencia irregular de valores de bucle z, utilice el
loopFile palabra clave para leer los valores de un archivo.

Si el bucle principal contiene más de una simulación, por defecto todas estas simulaciones se ejecutan en
una sola ejecución de Phreeqc. Esto significa que las etiquetas no se actualizarán entre simulaciones. Si
es necesario, es necesario ejecutar las simulaciones del bucle principal de una en una. Esto se hace
configurando el selectedOutputFile cambiar a VERDADERO.

Cálculos basados en datos

salida seleccionada
simulación 1 USER_PUNCH etiquetas
FINAL
(solo última línea)

salida seleccionada
simulación 2 USER_PUNCH etiquetas
(solo última línea)
pre-loop

FINAL

salida seleccionada
simulación 3 USER_PUNCH etiquetas
(solo última línea)
FINAL

salida seleccionada
simulación 4 USER_PUNCH etiquetas
(solo última línea)
FINAL

salida seleccionada
simulación 5 USER_PUNCH
main

etiquetas
loop

(solo última línea)


FINAL

Las simulaciones utilizadas para cada punto de datos dependen del valor o
rango de valores especificados en la columna definida por el
blockRangeColumn del archivo de datos. La división de bucle previo / bucle
principal está determinada por el valor en el mainLoopColumn.

Figura 4.2. Flujo durante la ejecución de cálculos basados en datos (tipos de cálculo 'simular' o 'ajustar') en los que la simulación
utilizada se especifica en el archivo de datos de ajuste (o es la simulación 1 por defecto).

Los tipos de cálculo 'ajustar' y 'simular' leen ciertos parámetros de un archivo de datos de ajuste. Para que la
optimización global pueda incluir datos calculados por diferentes modelos químicos, cada punto de datos puede
apuntar a un modelo químico diferente (Figura 4.2). Cada modelo químico está definido por una o más
simulaciones en el Phreeqc Codigo de entrada. Estos se especifican mediante una columna de datos en el archivo
de datos de ajuste; la columna utilizada para esto está definida por el blockRangeColumn . El valor
predeterminado para la simulación es 1 que es el valor asumido si no blockRangeColumn
Conceptos básicos de phreeqc 23

está presente en el archivo de datos de ajuste. En este caso, todos los valores se calculan mediante el mismo
modelo químico. Si se necesita más de una simulación, entonces se puede ingresar un rango contiguo, p. Ej. "1–2" ( o
equivalente "1_2") para indicar que las simulaciones 1 y 2 se utilizará. No debe haber espacios en la cadena.

Parcelas personalizadas

El tipo de cálculo 'personalizado' se puede utilizar para generar datos para una variedad de Phreeqc- cálculos
de tipo, especialmente cuando se requiere repetición que no está cubierta por el Phreeqc
opciones (Figura 4.3).

Un cálculo personalizado generalmente consiste en cero o más simulaciones previas al ciclo que calculan
varias inicializaciones y luego una (o más) simulaciones que se repiten utilizando PhreePlot Mecanismos
de bucle xey. Normalmente es la última línea de la salida seleccionada generada a partir de la última
simulación que se acumula en el ' afuera 'archivo y se utiliza en cualquier trazado posterior.

Si se incluye una variable de bucle z, todo el archivo de entrada se vuelve a ejecutar para cada valor z, incluidas las
simulaciones previas al bucle.

La siguiente entrada define primero una solución de 1 mmol / kgw de CdCl 2 y luego equilibra esto

bucle de especies principales

bucle en z

salida seleccionada
simulación 1 USER_PUNCH etiquetas
FINAL
(solo última línea)

salida seleccionada
simulación 2 USER_PUNCH etiquetas
(solo última línea)
pre-loop

FINAL

salida seleccionada
simulación 3 USER_PUNCH etiquetas
(solo última línea)
FINAL

salida seleccionada
simulación 4 USER_PUNCH etiquetas
(solo última línea)
FINAL

<y_axis>
<eje_x> simulación 5 USER_PUNCH salida seleccionada etiquetas
Main
loop

FINAL
selectedOutputLines
= 1 (para el último o 'automático' para todos)

mainLoop = ' último '(= 5)


archivo de salida

bucle de especies principales

bucle en z

salida seleccionada
simulación 1 USER_PUNCH etiquetas
FINAL
(solo última línea)
pre-loop

salida seleccionada
simulación 2 USER_PUNCH etiquetas
(solo última línea)
FINAL

salida seleccionada
simulación 3 USER_PUNCH etiquetas
(solo última línea)
FINAL

<eje_x>
main loop

FINAL
<y_axis>
salida seleccionada etiquetas
simulaciones 4 y 5 USER_PUNCH
FINAL
selectedOutputLines
= 1 (para el último o 'automático' para todos)

mainLoop = 4
archivo de salida

Figura 4.3. Flujo normal durante la ejecución de un archivo de entrada de simulación múltiple para cálculos personalizados. El
resultado depende de varios ajustes, incluido si cada simulación se ejecuta a su vez y solo la simulación final contribuye a la ' afuera '(figura
superior) o si se ha configurado para apuntar a una simulación anterior (figura inferior). Solo las simulaciones de ese número en
adelante se repiten durante cualquier 'bucle' y se utilizan de forma predeterminada para poblar el ' afuera ' expediente.
24 Guía PhreePlot

con dióxido de carbono a PAG CO 2 presión parcial de 10- 3,5 Cajero automático. La solución 1 se
traslada a la segunda simulación. Esta simulación fija el pH en 8.0 titulando con NaOH y permite
hidróxido de cadmio amorfo para precipitar si se excede su producto de solubilidad (que es). Tenga
en cuenta que se permite el uso de un máximo de 1 mol de NaOH para evitar que se creen fuerzas
iónicas muy altas (la opción Pitzer tendría que usarse para soluciones de fuerza iónica muy alta).

SELECTED_OUTPUT # Simulación 1
alta precisión cierto
restablecer falso
USER_PUNCH
títulos Cd + 2 SI_Otavite
10 mol de punzón ("Cd + 2"), SI ("Otavita")
SOLUCIÓN 1
Cd 1.0
Carga de Cl 2.0
FINAL

USAR SOLUCIÓN 1 #Simulación 2 FASES

Fix_H +
H+=H+
log_k 0.0
EQUILIBRIUM_PHASES
Otavita 0 0 # Otavite es CdCO3
CO2 (g) -3,5 10
Fix_H + -8 NaOH 1
FINAL

La salida seleccionada para esto se ve así:

Cd + 2 SI_Otavite
4.409910346467e-007 0,000000000000e + 000

Esta salida es de la segunda (última) simulación. Da el Cd 2+ concentración después de que la otavita haya
precipitado la mayor parte del Cd. Estos datos también se transfieren al ' afuera ' expediente.

Definir una fase pura para que consista en una sola especie y luego usar el EQUILIBRIUM_PHASES
palabra clave para definir su índice de saturación (SI), como aquí para fijar el pH, es la Phreeqc forma de fijar la
actividad de una especie. Esto simplemente obliga a la actividad logarítmica a ser numéricamente igual al SI ya
que SI = log (IAP / SP) = log (aH + / log_k) = log (aH +) dónde IAP es el producto de actividad iónica y SP es el producto de
solubilidad.

En este ejemplo, la primera simulación configura la solución de Cd inicial y la segunda simulación


realiza la reacción. Se podría haber logrado el mismo efecto reduciendo todo el archivo a una sola
simulación eliminando el FINAL y USAR palabras clave. La salida seleccionada se ve así:

Cd + 2 SI_Otavite
8.738892163591e-004 - 9.999000000000e + 001
4.409910346467e-007 0,000000000000e + 000

con la primera línea de salida derivada del cálculo de la solución inicial y la segunda
línea derivada de la segunda simulación (reacción).
Otra forma de ejecutar ambas simulaciones juntas sería configurar bucle principal a 1 para que ambas
simulaciones se ejecuten juntas como simulaciones de 'bucle principal'. Por defecto, el ' afuera 'archivo solo
recoge la última línea de la salida seleccionada, pero si se desean las tres líneas, selectedOutput- Líneas para
la simulación debe establecerse en 3 o ' auto '. ' auto 'siempre transferirá todas las líneas de datos al' afuera '
expediente.

Si solo se desea la concentración final y las dos simulaciones se ejecutan por separado, entonces también
es posible omitir la salida de la primera simulación apagando la salida seleccionada y luego volviéndola a
encender en la segunda simulación usando el - salida_seleccionada identificador del IMPRIMIR
bloque de datos, p. ej.

SELECTED_OUTPUT # Simulación 1
Conceptos básicos de phreeqc 25

- high_precision verdadero
- restablecer falso
IMPRIMIR
- selected_output falso
SOLUCION 1
Cd 1.0
Carga de Cl 2.0
EQUILIBRIUM_PHASES
Otavita 0 0 # Otavite es CdCO3
CO2 (g) -3,5 10
Fix_H + -8 NaOH 10
SAVE solución 2
FINAL

UTILICE LA SOLUCIÓN 2 #Simulación 2


IMPRIMIR
- selected_output verdadero
EQUILIBRIUM_PHASES
Otavita 0 0 # Otavite es CdCO3
CO2 (g) -1,5 10
Fix_H + -8 NaOH 10
FINAL

da la salida seleccionada como:

Cd + 2 SI_Otavite
4.409910346467e-007 0,000000000000e + 000

Saber qué minerales pueden formarse usando la base de datos dada

Phreeqc no tiene una forma sencilla de insertar automáticamente un conjunto válido de minerales en un EQUILIB-
RIUM_PHASES bloque de palabras clave de modo que se forme cualquier mineral que se predice que se formará.
Normalmente, esto debe hacerse manualmente. Los nombres de los minerales dependerán de la base de datos utilizada
y de la composición de la solución. El printphases.inc incluir archivo extrae una lista de todos los minerales posibles utilizando
el SYS () función. Este archivo de inclusión se puede agregar a un archivo de entrada para imprimir los nombres de los
minerales en el archivo. Phreeqc.out. Estos se pueden volver a pegar en el archivo de entrada según sea necesario.

Un enfoque alternativo y un poco más simple para ht y gráficos de cuadrícula es simplemente establecer el resolución para
1. Esto inserta automáticamente el printphases.inc código directamente en el Phreeqc flujo de entrada justo
antes del primero (y con suerte solo) SOLUCIÓN bloque de palabras clave. También asegura que el Phreeqc.out archivo
está escrito y que todos los IMPRIMIR la configuración se restablece a VERDADERO. Esto solo funcionará
correctamente para archivos de entrada de simulación únicos y siempre que no haya
USER_PRINT bloques siguiendo el SOLUCIÓN bloque de palabras clave (estos anularían el código
insertado).

Con estas condiciones, se realiza una sola iteración con todas las variables de ciclo establecidas en sus valores
iniciales y los nombres de todas las posibles especies minerales se escriben en Phreeqc.out.

Es posible utilizar Phreeplot para generar automáticamente una lista de todas las especies minerales posibles
en una simulación, escribirlas en una etiqueta y luego recuperar esta etiqueta en el EQUILIBRIUM_PHASES
bloque de datos de una simulación posterior. Este enfoque se utiliza en demo \ minstab \ allminer- als.ppi para generar un
diagrama de predominio que agrega automáticamente todos los minerales de la base de datos a la lista de
minerales potencialmente precipitantes. Esto debe usarse con precaución ya que muchos minerales, aunque
termodinámicamente estables, no se forman en un período de tiempo razonable.

4.6.2 Configuración de un archivo de bucle

La variable de bucle o de bucle z se utiliza para variables discontinuas y dará como resultado un
cálculo separado y una curva asociada (o gráfica) para cada valor de la variable de bucle. Esto
contrasta con las variables xey que están diseñadas para variables 'continuas' en las que la
resolución define el número de cálculos por curva.

<loopmin>, <loopmax> etc se puede utilizar para definir una secuencia regular de valores para la variable de
bucle, pero si se requiere una secuencia irregular o si se debe llevar más de una variable en paralelo para
cada iteración, entonces se debe crear un archivo de bucle.
26 Guía PhreePlot

El archivo de bucle es un archivo ASCII que se lee en formato libre. Este archivo está destinado principalmente a
contener datos numéricos, pero también puede incluir datos de caracteres. Opcionalmente, puede contener una
fila de encabezado con nombres de columna y una columna inicial con nombres de bucle. El formato se deduce
de las dos primeras columnas y las dos primeras filas del archivo. Las columnas son numéricas o de caracteres.
Las dos primeras columnas de la primera fila determinan si es una fila de encabezado (si ambas son variables de
carácter). La primera columna de las dos primeras filas determina si los nombres de bucle están presentes (si
ambos son variables de carácter). Las columnas restantes pueden ser numéricas o de caracteres; esto se
determina por el tipo de datos en la primera fila sin encabezado. Puede ser necesario introducir una columna
numérica ficticia como columna 1 o 2 para forzar la interpretación correcta del archivo.

Los cuatro formatos posibles se muestran en la Figura 4.4.

(a) (B) (C) (D)

sin encabezado sin encabezado encabezamiento encabezamiento


sin nombres de bucle nombres de bucle sin nombres de bucle nombres de bucle

num num char num char char char char


num num char num num num char num

num = valor numérico


char = valor de carácter

Figura 4.4. El formato de los archivos de datos de ajuste está determinado por el tipo de datos de las dos primeras filas y las dos
primeras columnas de datos.

Los encabezados de columna, si están presentes, se utilizan para hacer los nombres de las etiquetas, por ejemplo, Na hará que la etiqueta < Na>.
Asegúrese de que los encabezados de las columnas, si están presentes, den lugar a nombres de etiquetas únicos.

Si la línea de encabezado está ausente, los nombres de las etiquetas se establecerán automáticamente en < bucle1>, <bucle2>
para la columna numérica 1, 2, etc. Estas etiquetas se pueden utilizar en el archivo de entrada. < loop1> también se conoce
simplemente como < bucle>.

Los nombres de los bucles, si están presentes, se utilizan exactamente de la misma manera que los nombres de los bucles leídos
con el etiquetas palabra clave. Los nombres del archivo de bucle tienen prioridad.

Una línea en blanco en el archivo de bucle obliga a escribir una línea en blanco en el ' afuera 'archivo en la posición
correspondiente. Esto es útil para crear saltos de línea en gráficos.

Un archivo de bucle se utiliza para generar un conjunto de valores de etiqueta discretos que se pueden utilizar en el Phreeqc
código. Cada fila de valores se selecciona a su vez durante una iteración del bucle z, es decir, el número de filas
determina el número de iteraciones.

4,7 R UNNING PAG HREEQC SIN NINGÚN PLOTEO

Las instalaciones de bucle en PhreePlot que sea útil para algunos tipos de repetición Phreeqc cálculos que no
requieren parcela. Configuración método de cálculo <0 suprimirá cualquier trazado, al igual que la configuración plotFactor
= 0. Si los datos se van a leer de un archivo de datos, como en el ajuste, entonces el cal- culationType = " simular ”Debe
usarse para evitar llamar a la rutina de adaptación. El " simular El ajuste ”también se puede utilizar para realizar un
conjunto de simulaciones después del ajuste, por ejemplo, para trazar una curva simulada.

El archivo de datos de entrada, que probablemente se prepara más convenientemente en una hoja de cálculo o base de datos y se

exporta en formato csv o tabulación, contiene los datos que se utilizarán. Las etiquetas se crean a partir de los encabezados.

El SIs.ppi archivo da un ejemplo del uso de ' simular 'para calcular índices de saturación. Contiene una tabla de
traducción que ayuda a convertir títulos no estándar en el archivo de datos de texto a títulos estándar. Phreeqc
formato. PhreePlot se utiliza para recorrer uno por uno un archivo de datos que contiene análisis de la
química del agua subterránea. Corre un pequeño Phreeqc incluir archivo que contiene
Conceptos básicos de phreeqc 27

la USER_PUNCH código necesario para calcular varios índices de saturación y otros parámetros. Esto se
puede modificar fácilmente. Los resultados se acumulan en el ' afuera ' expediente.

El uso de un archivo de datos para transmitir información es algo similar al uso de un archivo de bucle ( Sección
6.2.1 ).

4.8 Yo ARCHIVOS INCLUIDOS

4.8.1 Uso de archivos 'incluidos'

Los archivos de entrada pueden contener INCLUIR declaraciones para extraer otros archivos, p. ej.

INCLUYE ht1.inc

El texto que sigue al INCLUIR declaración, aquí ht1.inc, es el nombre de un archivo. El nombre del archivo se puede
incrustar opcionalmente entre comillas. Las reglas normales se aplican a la ruta de búsqueda cuando se buscan
archivos de inclusión ( Sección 2.4.6 ).

Todas las declaraciones de este archivo se insertarán línea por línea en el punto de inserción. Esta sustitución
ocurre cuando el archivo de entrada se lee inicialmente, antes de cualquier ejecución de código. Esto hace
posible tener una biblioteca de piezas de código de uso común. La declaración de inclusión es recursiva
- un archivo de inclusión puede contener referencias a otros archivos de inclusión.

El BÁSICO El programa se ejecuta estrictamente en el orden de BÁSICO los números de línea no son necesariamente la
secuencia de líneas del archivo. Si se repite un número de línea, se utiliza el último leído. Esto significa que es posible
agregar ediciones a un archivo de inclusión al incluir un 'archivo de edición' después del archivo principal (ver
p.ej ht1s.inc).
El uso de archivos de inclusión puede reducir la repetición del código de uso común y facilitar la administración de dicho código.

También puede aumentar la legibilidad de los archivos de entrada.

Phreeqc3 contiene su propia versión de 'incluir' en la forma de INCLUYE $ palabra clave. Esta es una
forma más poderosa de inclusión que PhreePlot porque es 'dinámico' (¡dólar por dinámico!): el archivo de
inclusión se lee de nuevo cada vez que se encuentra la directiva. Por lo tanto, una pieza anterior de Phreeqc
El código dentro de la misma ejecución puede escribir o modificar el contenido del archivo de inclusión
usando PUÑETAZO declaraciones por ejemplo. A diferencia de, PhreePlot solo lee el archivo de inclusión una
vez, al principio, antes de Phreeqc se ha ejecutado el código. Conclusión - uso INCLUYE $
si desea leer un archivo que se genera durante una Phreeqc correr. Y en caso de duda, utilice
INCLUYE $ . Recuerde que si el archivo no se encuentra en el directorio actual, PhreePlot 's
INCLUIR comprueba automáticamente el directorio del sistema mientras que INCLUYE $ no es.

4.8.2 Archivos de inclusión suministrados

Se proporcionan varios archivos de inclusión para funciones de uso común. Estos se encontrarán en el
sistema subdirectorio. Los usos de algunos de ellos se resumen en la Tabla 4.1.

ht1.inc se puede utilizar para calcular un diagrama de predominio. Si hay especies adsorbidas,
entonces su concentración se considera especie por especie al igual que las especies en solución.
ht1combined.inc es similar excepto que todas las especies adsorbidas de un elemento y una superficie se
combinan en una sola especie (una 'superespecie') a los efectos de los cálculos de predominio
(clasificación) y para el trazado. Otros archivos de inclusión son variaciones de estos. Vea los ejemplos en
el \ manifestación directorio para su uso.

4,9 U CANTA PAG HREEQC ' S _ CRUDO Y _ MODIFICAR PALABRAS CLAVE

Phreeqc ( La versión 3) introdujo nuevas palabras clave para recuperar y modificar varias estructuras de datos
existentes. Estos se basan en palabras clave existentes con los sufijos. _CRUDO y _MODIFICAR . Están destinados a
proporcionar más flexibilidad en las formas en que se puede definir y modificar el sistema químico, y
proporcionar formas de lectura en estructuras de datos enviadas a un archivo por VERTEDERO . No se espera que
estas nuevas palabras clave se utilicen ampliamente.
28 Guía PhreePlot

Cuadro 4.1. Algunos de los archivos incluidos incluyen y sus funciones

expediente función
ht1.inc para calcular parcelas de predominio
como arriba pero combina todos los campos adsorbidos para una superficie
ht1combined.inc común en un solo campo; también ofrece la opción de utilizar el criterio de
estabilidad mineral para identificar los límites
ht1cCO3.inc como arriba pero incluye una restricción de CO3 total adicional como
ht1cStability.inc arriba pero incluye el criterio de estabilidad
ht1s.inc como ht1.inc pero también agrega '( s) 'a las etiquetas de los nombres de minerales
como ht1.inc pero también escribe una lista de todos los minerales precipitantes y
ht1minerals.inc
potencialmente precipitantes en el archivo de registro (necesita out = TRUE)
como ht1.inc pero también agrega la fórmula mineral debajo del
ht1_phase_formula.inc
nombre del mineral al etiquetar la parcela
minstab1.inc utilizado para calcular diagramas de estabilidad de minerales tradicionales (solo)
como ht1.inc pero agrega automáticamente todos los minerales posibles como fases
ht1allminerals.inc
minerales potencialmente precipitantes
utilizado para imprimir las posibles fases minerales a la Phreeqc.out
printphases.inc
expediente
especievspH.inc utilizado para hacer gráficos de pH de especies
logspeciesvspH.inc utilizado para hacer diagramas de especies con escala log y

Permiten simplificar y quizás acelerar la actualización de concentraciones. Por ejemplo, el SOLUCIÓN


palabra clave siempre hace un cálculo de solución inicial mientras que
SOLUCIÓN_MODIFICAR no es. También puede ser posible evitar el intercambio inicial y los cálculos de
superficie iniciales de una manera análoga.
Archivos de entrada y salida PhreePlot 29

5 archivos de entrada y salida PhreePlot

5.1 Yo ARCHIVOS NPUT / SALIDA

5.1.1 Uso

PhreePlot utiliza varios archivos para entrada y salida. El archivo de 'configuración' predeterminado, pp. conjunto, se utiliza
para leer los valores predeterminados de todas las palabras clave. Estos se modifican, y el Phreeqc La parte de química
se agrega en el archivo de entrada 'normal' (generalmente con un ppi extensión), y finalmente los valores de las palabras
clave se pueden anular con la override.set expediente.

Todos estos archivos de entrada están en formato de texto ASCII, por lo que se pueden leer y escribir con un editor de
texto normal. Los archivos de entrada determinan los cálculos que se realizarán. La extensión se quita del nombre del
archivo de entrada y se utiliza como 'raíz' para nombrar automáticamente los archivos de salida. Muchos de los archivos
de salida son opcionales y su producción se establece mediante una serie de conmutadores lógicos que se pueden
configurar en CIERTO o FALSO.

En modo 'seguro' (la forma PhreePlot se ha configurado actualmente), todos los archivos necesarios para producir los
trazados especificados, y para poder volver a trazarlos, se crearán incluso si sus conmutadores lógicos se han
configurado en FALSO. Donde se especifica que los cambios de archivo sean FALSO, los archivos correspondientes se
eliminarán al final de la ejecución si están presentes, incluso si se crearon a partir de una ejecución anterior.

Todos los archivos existentes con el mismo nombre que los archivos que se crearán / eliminarán se sobrescribirán o
eliminarán sin previo aviso.

5.1.2 Diferencia en la ejecución de archivos de entrada entre PhreePlot y Phreeqc

Aparte de la sustitución de etiquetas con valores en PhreePlot archivos de entrada, el QUÍMICA parte de un PhreePlot archivos
de entrada se parece mucho a un Phreeqc archivo de entrada, y de hecho, a menudo es más fácil probar pequeños
fragmentos de código usando Phreeqc o Phreeqc Interactive. Cuando solo hay una simulación en un archivo,
esencialmente no hay diferencia en términos de ejecución.

Sin embargo, cuando hay más de una simulación, PhreePlot tiene una mayor flexibilidad en la forma en que se
ejecutan las simulaciones individuales. Aquí hay dos características clave: (i) una separación entre las
simulaciones 'pre-bucle' y las simulaciones del 'bucle principal', y (ii) la forma en que se ejecutan las simulaciones
del bucle principal.

El modus operandi de PhreePlot es que se pueden requerir algunas simulaciones para configurar la base de
datos, definir otras cosas fijas, preparar soluciones iniciales, etc. y estas solo necesitan hacerse una vez. Estos se
denominan simulaciones "pre-loop". Después de esto, en términos de diseño y ejecución, puede haber una o
más simulaciones de 'bucle principal' que se iteran o 'buclean'. Normalmente, habrá una o más etiquetas en la
parte del 'bucle principal' que se modificarán durante cada iteración, variando así la salida y, en última instancia,
preparando un conjunto de datos para ajustar o trazar.

Phreeqc necesariamente ejecuta todas las simulaciones de forma consecutiva y sin la intervención del usuario.
Las estructuras de datos se llevan de una simulación a otra y algunos datos de usuario entre simulaciones se
pueden transmitir a través de Basic PONER (), OBTENER () funciones, pero hay pocas otras oportunidades para alterar
dinámicamente los valores dados en el archivo de entrada.

PhreePlot tiene mayores oportunidades ya que tiene la opción de controlar la forma en que se ejecuta un
archivo de entrada de simulación múltiple. Como se indicó anteriormente, existe la división básica entre las
simulaciones de bucle previo y de bucle principal. Existe otra opción importante. PhreePlot alimenta el archivo de
entrada que ha leído en el Phreeqc calculadora, línea por línea. Los cálculos recién comienzan
30 Guía PhreePlot

cuando se ha leído una simulación completa (definida por un FINAL declaración) pero PhreePlot
decide cuándo mirar los resultados de cada simulación saliendo Phreeqc y mirar la salida,
actualizar el diccionario de etiquetas, hacer nuevas sustituciones, etc.

Estas dos opciones: (i) modo 'una simulación a la vez' o (ii) modo 'todo a la vez'. (i) cede el control a PhreePlot
después de que se haya ejecutado cada simulación, lo que brinda la oportunidad de alterar los valores
para la ejecución posterior. (ii) es más rápido en ejecución pero Phreeqc solo vuelve a
PhreePlot después de que se hayan ejecutado todas las simulaciones. Esto significa que no hay oportunidad de
intervenir.

PhreePlot ha tomado de manera un tanto arbitraria la decisión de que:

(i) todas las simulaciones previas al ciclo se ejecutarán 'una a la vez' (al ejecutarse solo una vez, la velocidad no es un
problema, mientras que la flexibilidad adicional puede ser útil).

(ii) existe la opción de ejecutar el bucle principal "uno a la vez" o "todos a la vez".

Estas dos funciones están controladas por el bucle principal palabra clave. p.ej

mainLoop 3 falso

significa que las simulaciones del bucle principal comienzan en la simulación 3 (las simulaciones 1 y 2 son, por lo tanto,
"pre-bucle") y que "una simulación a la vez" es falsa, es decir, todas las simulaciones del bucle principal se ejecutarán
juntas en un bloque.

El predeterminado en pp. conjunto es

mainLoop auto falso

dónde auto normalmente se refiere a la última simulación, es decir, el bucle solo se producirá durante la última
simulación. Para cálculoTipo 's encajar y simular , auto está establecido en 1.

Usando depurar igual a 2 o mayor registrará los detalles de cómo se ejecutan las simulaciones en el archivo de
registro.

5.2 Yo ARCHIVOS NPUT

5.2.1 Diferentes tipos de archivo de entrada

Hay tres tipos principales de archivos de entrada: (i) los que definen ciertos valores o configuraciones de palabras clave
más la definición química del problema y los archivos de diccionario ('archivos de entrada principales'); (ii) aquellos
archivos auxiliares que proporcionan datos adicionales, como datos para ajustar y datos o texto adicionales para trazar
('archivos de entrada de datos'), y (iii) aquellos que contienen fragmentos de Phreeqc código que se incluirá en uno de los
archivos de entrada principales (' Phreeqc archivos de entrada ').

Esta sección describe el primero de ellos, mientras que los separadores utilizados para analizar archivos de entrada se
describen en Sección 5.2.7 .

Usuario
Fichero de entrada Anular archivo
archivo de valores predeterminados

Correr

PhreePlot
pp. conjunto *. ppi override.set
valores predeterminados

'Esc'
interrumpir

Figura 5.1. Diagrama que muestra la secuencia de configuración de las palabras clave.

PhreePlot se ejecuta en respuesta a la configuración de varias listas y pares de palabras clave-valor. Los valores
asociados con estas palabras clave se pueden definir de varias formas (Figura 5.1). En orden de ejecución, estos
son:
Archivos de entrada y salida PhreePlot 31

1. PhreePlot valores predeterminados del programa: establecido por PhreePlot internamente;

generalmente proporcionan una funcionalidad mínima;

2. la pp. conjunto archivo: valores predeterminados definidos por el usuario leídos de un archivo; contiene

preferencias generales;

3. el archivo de entrada principal, el que se proporciona en la línea de comando. Define


valores para el problema particular de interés y normalmente contiene la línea ' QUÍMICA 'en
algún lugar de ella. Esto debe estar en una línea por sí solo. Divide los archivos de
entrada en dos con PhreePlot palabras clave en la sección superior y
Phreeqc- formato de química, en su caso, en la sección inferior. Es mejor si este archivo
de entrada principal tiene la extensión de archivo ppi para que pueda asociarse con la PhreePlot
programa;

4. la override.set archivo: útil para anular una o más configuraciones sin tener que editar
los archivos de entrada principales;

5. entrada realizada durante las interrupciones durante la ejecución de PhreePlot: redefiniciones de


emergencia, por ejemplo, cambiar el nivel de depuración (ver Sección 6.6 ).

El último valor de palabra clave definido o lista de valores siempre se usa desde su punto de definición hacia
adelante.

La lista completa de palabras clave se proporciona normalmente de forma predeterminada. pp. conjunto archivo en el sistema subdirectorio.
El pp. conjunto y override.set los archivos deben estar en el sistema subdirectorio si está presente. El
pp. conjunto El archivo debe modificarse para establecer atributos de uso común que permanezcan constantes entre
ejecuciones, incluidas características específicas del sistema, como la ruta de archivo para Ghostscript así como una
amplia gama de parámetros de trazado, incluidas las unidades de longitud preferidas.

El archivo de anulación ( override.set), si está presente, se lee después del archivo de entrada y se puede usar para anular
cualquier valor definido previamente. Es especialmente útil para cambiar temporalmente los atributos de una serie
completa de archivos llamados a través de un archivo por lotes, por ejemplo, cambiar el método de trazado, una fuente,
un color o apagar el pitido.

5.2.2 Estructura de los archivos de entrada principales

Estos archivos son el archivo del problema (*. ppi), la pp. conjunto archivo y el override.set expediente.

Aunque PhreePlot Los archivos de entrada no están estructurados, lógicamente se dividen en las siguientes
cuatro secciones:

ESPECIACION Detalles de los cálculos de especiación

ENCAJAR Detalles de cualquier ajuste

TRAMA Controla los parámetros de trazado

QUÍMICA Contiene el Phreeqc código.

Los tres primeros títulos de estas cuatro secciones pueden incluirse en cualquier lugar de los archivos de
entrada. Estos encabezados de sección solo se incluyen para mejorar la legibilidad de los archivos y no son
utilizados por PhreePlot. Si está presente, el QUÍMICA la palabra clave señala el comienzo de Phreeqc- escriba input
y, debe aparecer como la última entrada en el PhreePlot sección, es decir, el archivo de entrada principal
siempre debe terminar con la QUÍMICA sección si se espera que realice cálculos químicos.

Por tanto, la estructura de un archivo de entrada típico es:

...

<PhreePlot encabezados de sección y palabras clave que definen varias configuraciones de palabras clave y
valores de etiquetas. Esta sección también define los parámetros de bucle y qué tipo de gráfico, si lo hay, se
producirá>

...

QUÍMICA
32 Guía PhreePlot

...

< Phreeqc- formato de entrada de productos químicos que es normal Phreeqc código pero puede incluir opcional
PhreePlot etiquetas para sustitución durante la ejecución>

...

Básicamente, no hay límite para el número de líneas en el PhreePlot o Phreeqc partes. El


QUÍMICA línea, que debe estar en una línea propia, define la división entre las dos secciones e instruye
PhreePlot para interpretar la entrada en consecuencia.

El QUÍMICA la sección incluye el Phreeqc código. Esto solo se puede incluir en el archivo de entrada principal y
cualquier archivo de 'inclusión' llamado por el archivo de entrada principal. Esto determina lo que se calcula y
tiene casi el mismo formato que un normal Phreeqc fichero de entrada. La principal diferencia es que puede
contener etiquetas especiales ( '<...>') que se sustituyen por los valores adecuados antes de ejecutar Phreeqc.

Resultados de Phreeqc los cálculos se comunican a PhreePlot mediante el SELECTED_OUTPUT


'archivo' que a su vez se genera en respuesta a la Phreeqc USER_PUNCH y SELECTED_OUTPUT
bloques.

Por lo tanto, los QUÍMICA La sección es esencialmente una Phreeqc archivo de entrada con etiquetas. Las etiquetas
proporcionan marcadores de posición para sustituir los valores de variable generados por PhreePlot y dar PhreePlot la
capacidad de realizar un bucle, ajustar datos a modelos, etc. PhreePlot La sección define cómo se generan los valores de
las etiquetas y otros aspectos de los cálculos, incluido el trazado de los resultados. Los valores de las palabras clave
pueden ser de coma flotante, enteros, de caracteres o lógicos.

5.2.3 El preprocesador del archivo de entrada

Cuando una simulación se repite muchas veces con el único cambio que es un incremento en uno o más
números, las simulaciones se pueden reemplazar con una sola simulación de 'plantilla' que tiene
etiquetas que indican el inicio y el final de la secuencia que se repetirá, el incremento y dónde sustituir el
número generado. Esta parte del código se ejecuta antes de que se procese el archivo de entrada. El
preprocesador del archivo de entrada se describe en detalle en Sección 13 .

5.2.4 Excepciones a la regla 'la última definición de palabras clave anula las anteriores'

Normalmente, cuando se leen una palabra clave y su configuración, estas configuraciones anularán todas las anteriores
para esta palabra clave. Las excepciones son para numericTags , characterTags y cubrir donde varias instancias se
agregarán a la lista de etiquetas o archivos de superposición para ser procesados.

5.2.5 Los diccionarios de colores y otros archivos

Hay dos diccionarios de color que almacenan los colores utilizados para las líneas, puntos y rellenos: (i) diccionario de
color de línea para trazados basados en un trazado personalizado, y (ii) diccionario de color de relleno para diagramas
de predominio. Los gráficos de contorno no utilizan los diccionarios.

Estos archivos se pueden editar para cambiar cualquier color. Para los colores de relleno, esto es todo lo que se necesita
hacer. Para los colores de líneas y puntos, es necesario configurar useLineColorDictionary a 1 o 2 para forzar el uso del
diccionario.

También hay archivos de datos para variables de bucle y para datos que se utilizarán en simulaciones o ajustes.

5.2.6 Formato de todos los archivos de entrada

Líneas físicas y lógicas

Todos los archivos de entrada, incluidos los archivos de datos, tienen una estructura similar. Las convenciones de formato de

entrada son similares a las que se utilizan para Phreeqc archivos de entrada. La longitud máxima de las líneas de entrada solo está

limitada por la memoria, pero la mayoría de las cadenas y expresiones de caracteres están limitadas a 10000 caracteres.
Archivos de entrada y salida PhreePlot 33

Una línea física es una cadena de texto que termina con una línea normal que termina en el sistema
operativo Windows < CR> <LF>. Cada línea física aparece como una línea de texto distinta en un editor de
texto. Puede constar de menos de una, una o más de una línea lógica.

Una línea lógica es una cadena que se interpreta como un solo bloque de datos por PhreePlot. La combinación de
palabra clave-valor (es) de PhreePlot los archivos de entrada siempre deben estar presentes en una sola línea lógica.

Las cadenas que contienen espacios (o más específicamente, separadores) deben estar entre comillas,
emparejadas simples o dobles. Uno o más separadores deben preceder y seguir estas comillas para que sea
reconocido.

Cualquier entrada que siga a un carácter de comentario (#) se ignorará durante el resto de esa línea lógica. Esto incluye ;
y \ (ver más abajo). Las líneas en blanco y las líneas que están compuestas en su totalidad por un comentario no se
cuentan como líneas lógicas y se ignoran. Entonces

pdf CIERTO \
<LÍNEA EN BLANCO AQUÍ>

png CIERTO

fallará porque la continuación ignorará la línea en blanco y unirá las otras dos líneas para dar
pdf VERDADERO png CIERTO

Las líneas lógicas terminan con un final de línea normal o con un punto y coma (;). Un carácter de
comentario tiene prioridad sobre ';'. Por ejemplo, el comentario en
# ETAPAS; Fixed_H +; H + = H +; log_k 0.0

comentará las cuatro líneas lógicas.


Las reglas anteriores para # y; incluso se aplica cuando se incluye entre comillas. Su comportamiento especial
tiene prioridad sobre las comillas. Por lo tanto, no es posible utilizar estos caracteres ni siquiera en
cadenas de texto entre comillas, es decir, " Muestra # 76 " y " Bloomington; Rochester ”Produciría errores.
Esto no es cierto en Phreeqc donde las comillas tienen prioridad.

Una línea lógica se puede dividir en dos o más líneas físicas utilizando un carácter de continuación. Un carácter de
continuación es una barra invertida (\) siempre que esté presente como el último carácter que no sea un espacio en
blanco en una línea física después de que se hayan eliminado los comentarios. Tan diferente Phreeqc, esto es cierto
incluso cuando \ va seguido de espacios y un carácter de comentario, es decir

numericTags <logH> = - <eje_x> \ # comentario <pH> = -


<logH> # - pH

es válido como es

# pdf \
T

no es.
Las pestañas, que son espacios en blanco, son ignoradas por Phreeqc pero puede ser significativo en archivos de datos. Las
pestañas consecutivas significan campos en blanco. Sin embargo, una línea que consta solo de tabulaciones se trata como una
línea en blanco. Los archivos de datos preparados pegando desde una hoja de cálculo en un editor de texto pueden contener
pestañas, incluidas pestañas finales. Estos archivos deben leerse utilizando la pestaña como separador. Esto se hace agregando "\ T"

después del nombre del archivo. Una alternativa a esta forma de leer valores nulos es usar explícitamente el
código de 'datos perdidos', a saber, -99999.

Especificar pares de palabras clave-valor y listas de palabras clave

Las palabras clave y sus valores están separados por cualquier número de separadores en una línea lógica.

Las comillas siempre deben usarse cuando hay un espacio o tabulación incrustados dentro de una
variable de carácter. Una variable de carácter nulo se ingresa como un par de comillas con o sin
34 Guía PhreePlot

uno o más espacios en blanco, por ejemplo, '', '', "" o "". Es necesario utilizar este formato al ingresar un valor en blanco
para una variable de carácter.

Los siguientes son algunos ejemplos de líneas de entrada válidas:

título profesional Planchar


título profesional "Hidrólisis de hierro"
título profesional 'Hidrólisis de hierro'
CalculatorType ht1;
cálculoTipo ht1
CalculatorType ht1 #Este es un comentario pxmin 0;
pxmax 10; pymin -10; pymax 20
pxmin 0pxmax 10 pymin 10 pymax 20

Formato de palabras clave y sus valores asociados

La mayoría de las palabras clave van seguidas de un valor único de un tipo específico, ya sea un entero, un número de coma

flotante, una cadena de caracteres o un valor lógico. El caso no es significativo excepto dentro de las cadenas de caracteres y

etiquetas. Algunas palabras clave van seguidas de una lista de longitud variable, p. Ej. especies principales .

Un número entero es cualquier conjunto de dígitos con o sin signo. Un número es cualquier conjunto de dígitos con o sin
un exponente válido (en formato E), punto decimal o signo e incluye todos los números enteros. Una cadena de
caracteres es cualquier conjunto de caracteres válidos (ver más abajo) y opcionalmente se coloca dentro de un par de
delimitadores (un par de comillas simples o dobles). Se puede ingresar un valor lógico como CIERTO o FALSO
o T o F, independientemente del caso. A continuación se dan ejemplos, cada valor está separado por una coma:

Enteros: 0, 12345
Números: 1, 2., 3.1, 4e0, 5E0, 6d0, 7D0
Expresiones de personajes: PhreePlot, "PhreePlot", "Programa PhreePlot ”,“ “,“ “, ' Este es
"PhreePlot" ', " Esto es 'PhreePlot' "
Lógico: t, T, verdadero, VERDADERO, Verdadero, f, F, falso, FALSO

5.2.7 Separadores de datos y análisis de archivos de entrada

Todos los archivos de entrada consisten en un conjunto de líneas lógicas con una colección de cero o más 'palabras' en
una línea. La diferencia entre líneas físicas y lógicas se describe arriba. En muchos casos, la primera línea lógica de un
archivo se utiliza como 'encabezado' para describir los datos que siguen. En algunos casos, estos nombres de
encabezados se convierten en nombres de variables (etiquetas) para las columnas. Todos los archivos de entrada se leen
en 'formato libre', es decir, la posición de la columna de la entrada en la línea no es importante.

Las palabras en una línea están separadas por 'separadores de datos', a veces llamados delimitadores. El análisis de los
archivos de entrada (separando las palabras) depende de la estructura del archivo de entrada y de los separadores de
datos especificados. Debe asegurarse de que los dos coincidan para que el archivo se pueda analizar correctamente.

Los separadores de uso común son espacios, tabulaciones (horizontales) y comas.

Los archivos de entrada principales se leen en 'formato muy libre', en cuyo caso los tres separadores principales
(Un espacio en blanco, tabulación o coma) se tratan como separadores válidos y los separadores consecutivos de cualquier tipo se
tratan como un solo separador.

Deben usarse comillas para especificar cadenas de caracteres que contengan estos separadores ( Sección 5.2.6 ).
Una cadena entre comillas siempre debe ir seguida de un separador o un marcador de final de línea. De lo
contrario, el texto después de la cita de cierre se agrega a la parte citada de la cadena y se agrega una cita
adicional al final de la cadena.

Los espacios y otros caracteres especiales (distintos de; y #) entre comillas (simples o dobles) se
tratan como parte de una cadena de caracteres y no se dividirán.

Dado que los archivos de datos como los que se utilizan para ajustar ( archivo de datos ) o trazado (p. ej. extradat ) puede
provenir de muchas fuentes y puede incluir campos en blanco, se requiere un tipo algo más rígido de 'formato libre' para
este tipo de archivo. El separador de datos predeterminado siempre se toma de la primera entrada en
dataSeparators pero esto se puede anular agregando una cadena de formato después del nombre del archivo.
Archivos de entrada y salida PhreePlot 35

Las entradas válidas para esta cadena de formato son:

"\ W" significa espacio en blanco (uno o más espacios en blanco o pestañas)

"\B" significa uno o más espacios en blanco

"\ T" significa una sola pestaña (a menudo se encuentra en archivos derivados de hojas de cálculo)

"," significa una sola coma (para archivos csv)

"\" o "" ( cadena nula) significa espacios en blanco o una o más comas (si está al final
de una línea, asegúrese de que \ esté entre comillas, de lo contrario se
interpretará como el carácter de continuación de línea). Esta es la opción de
'formato muy libre' que se usa para leer los archivos de entrada y leerá muchos de
los tipos más comunes de archivos formateados.

"carbonizarse" dónde "carbonizarse" significa cualquier carácter único válido.

Tenga en cuenta que cuando se utiliza una sola pestaña, coma o carácter como separadores, los separadores
consecutivos definirán un campo en blanco. Esto significa que los campos en blanco se pueden conservar al leer
archivos basados en separadores de un solo carácter, como los producidos por Microsoft Excel y OpenOffice
Calc.

5.2.8 Sensibilidad a mayúsculas y minúsculas de la entrada

La mayor parte del texto de los archivos de entrada principales no distingue entre mayúsculas y minúsculas. Esto incluye todas las
palabras clave. Las únicas excepciones son los nombres de las etiquetas (cualquier cosa entre corchetes angulares), incluido el
texto dentro de las etiquetas (por ejemplo, < entrada ...>) y los nombres de los encabezados de columna utilizados para definir columnas en un archivo de datos

- estos
entre distinguen
mayúsculasentre
y minúsculas.
mayúsculas y minúsculas. Los nombres de archivo en Windows no distinguen

En términos generales, las cosas que han sido definidas por PhreePlot no distinguen entre mayúsculas y minúsculas, mientras

que las cosas que ha definido sí distinguen entre mayúsculas y minúsculas.

5.2.9 Notificación de errores en archivos de entrada

PhreePlot se detiene si detecta errores en uno de los archivos de entrada de palabras clave. Estos errores incluyen errores de

sintaxis, así como cualquier error basado en inconsistencias de 'tiempo de compilación' en la configuración. Estos se señalan con

un mensaje de error a la pantalla y al archivo de registro si están abiertos, p. Ej.

Archivo: test.ppi: 6
Palabra clave: xmax
Entrada: xmax 1x2
Error: esperando un número.

El mensaje indica el archivo involucrado y la posición en el archivo donde se detectó el error en términos
de la línea física (aquí línea 6). También se dan la palabra clave involucrada (si se conoce), la línea de texto
donde se detectó el error y un mensaje de error. Es posible que no identifiquen la ubicación o la fuente
principal del error con exactitud, pero deberían ser suficientes para ayudar a identificarlo.

Cuando ocurre un error dentro de una sección donde se están usando continuaciones (\), entonces la
línea física indicada será el final de la posición de la sección ofensiva y la palabra será un número negativo
que indica el número de palabras para contar hacia atrás. a la entrada ofensiva (aproximadamente).

Se comprueba todo el archivo de entrada antes de informar del error y salir. Cuando se produzcan varios
errores en la misma línea lógica, solo se informará del primer error.

Los errores en otros archivos de entrada se señalan de forma similar.


36 Guía PhreePlot

5,3 T AGS

5.3.1 ¿Para qué se utilizan las etiquetas?

Las etiquetas son símbolos especiales que tienen valores asociados (es decir, variables). Cada etiqueta tiene un
nombre que es una cadena de texto incrustada entre paréntesis angulares, p. Ej. < x_axis> es la etiqueta que
contiene el valor actual de la variable del eje x.

Cuando se utilizan etiquetas dentro de un archivo, son esencialmente marcadores de lugar que indican dónde se
realizarán varias sustituciones en un momento posterior. Las etiquetas se pueden utilizar para definir variables 'globales'
que conservan sus valores entre simulaciones. Algunas etiquetas son creadas automáticamente por PhreePlot
para que sus valores estén disponibles para su uso posterior.

Las etiquetas vienen en dos sabores. Las etiquetas pueden ser numéricas o de caracteres según el tipo de
valor que representan.

Cada etiqueta tiene una expresión de etiqueta asociada. Estos se evalúan antes de ejecutar Phreeqc
y los valores de etiqueta derivados sustituidos en los lugares apropiados dentro del script. Las expresiones de
etiqueta para etiquetas numéricas pueden incluir expresiones aritméticas simples así como expresiones más
complejas usando otras etiquetas definidas previamente.

Si las sustituciones no se realizan correctamente dentro del Phreeqc sección de código, por ejemplo, porque una
etiqueta no se reconoce o no se define, Phreeqc normalmente fallará debido a los caracteres ilegales encontrados en
tiempo de ejecución.

Las etiquetas se pueden colocar en cualquier lugar de un archivo de entrada y en el opcional extraText y extraSymbol- sLines archivos.

No hay límite para la cantidad de etiquetas utilizadas.

Etiquetas, combinadas con las funciones de bucle dentro PhreePlot, se utilizan para variar los cálculos realizados
por Phreeqc de forma dinámica. Algunas etiquetas están definidas por PhreePlot, otros los define el usuario.
Proporcionan una forma sencilla de definir variables y de dar Phreeqc algunas capacidades básicas de bucle sin
cambiar el formato del Phreeqc archivo de entrada en gran medida.

5.3.2 Reglas para elegir nombres de etiquetas

Los nombres de las etiquetas siempre deben comenzar y terminar con paréntesis angulares abiertos y cerrados, p. Ej. < nombre de etiqueta>.

Los nombres de las etiquetas deben restringirse preferiblemente a letras mayúsculas y minúsculas, números y guiones bajos. Se

pueden incluir otros caracteres, aunque serán reemplazados temporalmente por un punto ('.') Y, por lo tanto, los nombres de

etiquetas con varios caracteres como +, - etc. pueden volverse degenerados. Esto también se aplica a los nombres de etiquetas

creados automáticamente a partir de los archivos de datos de ajuste y salida seleccionados y de los nombres de los parámetros de

ajuste, por lo que los nombres de los padres también deben seguir este consejo.

El primer carácter de un nombre de etiqueta debe ser alfabético, es decir, en los conjuntos az o AZ. Los nombres de las etiquetas

no deben contener espacios

Los nombres de las etiquetas del sistema son nombres "reservados" y no deben
redefinirse. Estos son: < x_axis>, <y_axis>, <loop>, <logloop>, <mainspecies>, <timedate>, <nexecute>,
<systime>, <Phreeqc_status_0>, <pxmin>, <pxmax>, <pymin>, <pymax> , <p2ymin> y < p2ymax>.

El caso es significativo en los nombres de las etiquetas. No hay límite de longitud para los nombres de las etiquetas.

5.3.3 Expresiones de etiquetas

Las expresiones de etiqueta son el texto del lado derecho de una ecuación de etiqueta. Estos se almacenan como cadenas de

caracteres y pueden contener cualquier combinación válida de números, cadenas de caracteres y otros nombres de etiquetas (ver

más abajo). La expresión de la etiqueta puede tener cualquier longitud. Las expresiones largas se pueden subdividir y guardar

como subexpresiones independientes.

Las etiquetas numéricas pueden representar valores variables; las etiquetas de caracteres siempre se refieren a expresiones de

cadena constante.
Archivos de entrada y salida PhreePlot 37

5.3.4 Expresiones de etiquetas numéricas y funciones disponibles

Expresiones de etiquetas numéricas pueden ser números simples como 1, 1.2, 1.2e2, 1.2d-4 o expresiones aritméticas como 2 *
4, log10 (3,5), 2+ (3 * 4) etc. Los operadores aritméticos disponibles son: +, -,
* , / y ̂ (exponenciación).
También se permiten las siguientes funciones: abdominales, exp, log10, iniciar sesión, sqrt, sinh, cosh, tanh,
pecado, cos, bronceado, asin, acos, atan, rand y nrand.

Los generadores de números aleatorios, rand y nrand, devuelve un único valor pseudoaleatorio generado a
partir de las distribuciones uniforme (rango = (0,1)) o normal (media = 0, desviación estándar = 1),
respectivamente. Ambas funciones toman un único argumento entero que actúa como semilla. Si la
semilla es positiva, este valor se usa para iniciar la distribución. El uso de la misma semilla en diferentes
ejecuciones significa que se generará la misma secuencia pseudoaleatoria. Usar 0 o un valor entero
negativo para la semilla significa que la fecha y hora del sistema se usan para generar el inicio de la
secuencia aleatoria. Esto asegurará que se inicie una secuencia diferente para cada ejecución.

Los paréntesis se utilizan para especificar la precedencia de la forma habitual. Todas las etiquetas numéricas se
almacenan y evalúan con alta precisión (doble precisión).

Las expresiones de etiqueta también pueden incluir otras variables de etiqueta siempre que ya se hayan
definido. La secuencia en la que se evalúan las etiquetas está controlada por el orden en que se definen.

Las etiquetas numéricas no definidas tienen el valor INDEFINIDO que se almacena internamente como - 99999.

Las expresiones de etiqueta válidas son:

log10 (<bucle>)
2 * <eje_x>

Cuando se sustituyen los valores de etiqueta, se redondean y luego se recortan los espacios iniciales y
finales. Por lo tanto

- <eje_x>

debería funcionar siempre que el valor de < x_axis> no es negativo.

5.3.5 Etiquetas para variables de caracteres

Estas etiquetas se sustituyen en las posiciones indicadas. Si la expresión de la etiqueta contiene espacios,
escríbalos entre comillas. Las comillas siempre se eliminan antes de la sustitución, por lo que es posible que
deban usarse para rodear la expresión de la etiqueta, p. Ej. "<especies principales>" para que la expresión sustituida se
analice correctamente.

5.3.6 Etiquetas del sistema

Ciertas etiquetas son creadas y actualizadas automáticamente por PhreePlot. Estos son:

<eje_x> el valor de la variable del eje x (numérico)

<y_axis> el valor de la variable del eje y (numérico)

<bucle> el valor de la variable z-loop después de ser exponenciado (10 ^ x̂) si es


necesario (numérico)

<logloop> Iniciar sesión 10 del valor de la variable z-loop (numérico) el

<especie principal> nombre de la especie principal (carácter)

<nexecute> la cantidad de veces que Phreeqc ha sido llamado

<timedate> una cadena de tiempo (hr: min: seg. milisegundos) / fecha con el formato
23: 30: 45.123 23 de septiembre de 2004 (carácter)

<sytime> utiliza el reloj del sistema para obtener el tiempo transcurrido (en segundos) desde que
38 Guía PhreePlot

comienzo de PhreePlot ejecución (esto refleja el 'tiempo de pared', no el tiempo de la CPU).


Resolución de aproximadamente 1 mseg.

<Phreeqc_status_0> devuelve el estado de salida del último Phreeqc ejecutar: 0 = OK,> 0 = error

<pxmin> El valor de pxmin (numérico) el

<pxmax> valor de pxmax (numérico) el

<pymin> valor de pymin (numérico) el

<pymax> valor de pymax (numérico) el

<p2ymin> valor de p2ymin (numérico) el

<p2ymax> valor de p2ymax (numérico).

Estas etiquetas se conocen como etiquetas de 'sistema' y se actualizan a lo largo de una ejecución. Tienen
nombres reservados, lo que los convierte en "solo lectura". No deben aparecer en el lado izquierdo de una
expresión de etiqueta.

También hay algunas etiquetas adicionales que se crean al inicio o después de la instalación:

<command_linen> los valores de la norte argumentos de la línea de comando n = 0 da el nombre


del pp.exe expediente, n = 1 da el nombre del archivo ppi, n = 2, 3, 4, ... dar
cualquier argumento adicional) (carácter)

<R2> el valor de R 2 después de un ajuste exitoso, vea Sección 5.3.7 (numérico)

<RMSE> el RMSE después de un ajuste exitoso (numérico)

<nFit> el número de 'observaciones' en un ajuste (numérico) el

<fitMethod método de ajuste (char)

<objectiveFunction> la función objetivo, " L1 "," L2 ”Etc (char).

Si un archivo de bucle se lee, luego se crea automáticamente un valor de etiqueta separado para cada columna. Estos se
nombran < bucle1>, <bucle2>, ... para la columna 1, 2, .... También se nombrarán según los nombres de los encabezados de
columna, si están presentes.

Otros nombres de etiquetas están reservados para formatear texto ( Sección 7.6.3 ). Estos son:

<sub> y </ sub>


<sup> y </ sup>
<i> y </ yo>
<b> y </ b>
<g> y </ g>
<subsup> y </ subsup>
<br>

Otras etiquetas son definidas automáticamente por el usuario o creadas automáticamente durante el curso de
los cálculos ( Sección 12.12 ) y se puede utilizar en el extraText expediente.

5.3.7 Etiquetas definidas por el usuario

Las etiquetas definidas por el usuario se definen en uno de los archivos de entrada o de datos mediante el numericTags o
charac- terTags palabras clave. El orden de la definición es importante, ya que una vez definidas, estas etiquetas se
pueden utilizar para definir nuevos valores de etiqueta en expresiones de etiqueta posteriores. En última instancia, cada
etiqueta numérica deberá evaluarse para proporcionar un valor numérico listo para la sustitución en un archivo de
entrada.
Archivos de entrada y salida PhreePlot 39

El orden de evaluación de las etiquetas numéricas se da en Sección 5.3.8 . Ejemplos

de expresiones de etiquetas numéricas son:

<log_H> = 7.5
<log_H> = - <x_axis>
<pH> = - <log_H>
<H> = 10 ^ (- <pH>)
<Cu2x> = “TOT (“ Cu ”) * 2”

La sustitución tiene lugar en cada iteración justo antes de la Phreeqc se realizan los cálculos.

Los tipos de etiquetas no se pueden mezclar en una expresión. Las expresiones de etiquetas numéricas pueden incluir otras

etiquetas numéricas, pero las etiquetas de caracteres no deben usarse en expresiones de etiquetas numéricas ni las etiquetas

numéricas deben estar incrustadas en expresiones de caracteres. Por ejemplo

<x> = “4 + <eje_x>” <y> = “6 +


<eje_y>” <z> = <x> + <y>

donde < x>, <y> y < z> son todas etiquetas numéricas válidas. Tenga en cuenta el uso de comillas donde las expresiones de las

etiquetas contienen espacios. La expresión de la etiqueta aparece como una única cadena de texto.

<c1> = "Título" + <x>


<c2> = <especies principales> +6,3
<c3> = <x> + <c1>

donde < c1>, <c2> y < c3> son etiquetas de caracteres, son definiciones de etiquetas no válidas porque la adición mezcla
etiquetas numéricas y de caracteres.

Las etiquetas numéricas y de caracteres se pueden definir en extradat archivos de la misma manera que se definen
mediante la salida seleccionada.

5.3.8 El alcance de las etiquetas, sus valores iniciales y su orden de evaluación

Cada etiqueta está definida por una expresión de etiqueta. Dado que estas expresiones pueden contener etiquetas en sí
mismas, es importante comprender el orden en el que se evalúan para evitar que una etiqueta haga referencia a una
etiqueta aún no definida o que obtenga un valor desactualizado para una etiqueta.

Las etiquetas se pueden definir de varias formas: por PhreePlot en sí mismo (etiquetas del sistema), de las etiquetas definidas por

el usuario en un archivo de entrada, de la lectura de un archivo de bucle o de un archivo de datos de ajuste, del archivo de salida

seleccionado o como resultado del ajuste.

Las etiquetas, sus expresiones y sus valores actuales se almacenan en un diccionario de etiquetas. Se utiliza para
sustituir los valores de las etiquetas que se encuentran en los archivos de entrada antes de realizar la siguiente
simulación. El diccionario de etiquetas completo está disponible para todas las simulaciones.

Las etiquetas también se pueden utilizar en cualquier cadena de texto que se utilice en el trazado: plotTitle , xtitle , puntos y
líneas y sus 2y equivalentes, customXcolumn y en texto líneas y extraText archivos. Etiquetas utilizadas en el ' líneas
' y ' puntos Las listas pueden ser listas en sí mismas.

El valor inicial de todas las etiquetas numéricas se establece en INDEFINIDO (-99999) pero se puede establecer en otro valor
con el valor inicial palabra clave. Este mismo valor se aplica a todas las etiquetas numéricas indefinidas. El valor inicial de
las etiquetas de caracteres se establece en la cadena vacía o nula.

También es posible establecer el valor inicial de una etiqueta individual mediante una simulación previa al bucle,
p.ej
SOLUCIÓN
SELECTED_OUTPUT
- restablecer FALSO
USER_PUNCH
- título z
10 PUNZONES 0.0
FINAL

establecerá el valor inicial de la < z> etiquetar a 0.0. SOLUCIÓN asegura que la salida seleccionada esté realmente
escrita. Una simulación previa al bucle solo se ejecuta una vez.
40 Guía PhreePlot

Después de que un bloque de una o más simulaciones haya sido calculado por Phreeqc, se forman nuevas etiquetas si
es apropiado y todos los valores de las etiquetas se actualizan. Esta actualización solo ocurre después de que se hayan
completado todas las simulaciones dentro del bloque. Phreeqc tiene control total durante esta fase de ejecución. Por lo
tanto, los valores de las etiquetas no se pueden pasar de una simulación a otra cuando son parte del mismo bloque de
ejecución, ya que la ejecución no deja el Phreeqc módulo y, por lo tanto, las etiquetas no se pueden actualizar por PhreePlot.
Esto tiene implicaciones sobre cómo se configura el archivo de entrada.

Las etiquetas se pueden utilizar en la parte 'superior' (la parte anterior QUÍMICA) de un archivo de entrada, así
como Phreeqc sección (la parte que sigue QUÍMICA). Las etiquetas también pueden estar en extraText y extra-
SymbolsLines archivos que, si están presentes, se actualizan durante el trazado.

Una vez configurados, los valores de las etiquetas conservan sus valores hasta que se restablecen. Las etiquetas proporcionan un

mecanismo simple para pasar un valor numérico de una Phreeqc simulación a otro, así como para proporcionar los valores de

ciertas variables del sistema que se pueden utilizar para bucles y otras tareas. Las etiquetas también se pueden utilizar durante la

fase de trazado para controlar la entrada de texto y su posicionamiento.

El orden de evaluación de las etiquetas numéricas (de la primera a la última) es:

etiquetas del sistema definido internamente por PhreePlot (< eje_x>, <eje_y>,
<lazo>, ...);

variables independientes de los encabezados de columna en un bucle o archivo de datos;

etiquetas de archivo extradat etiquetas definidas por un archivo extradat de dos líneas (encabezado y datos);

USER_PUNCH etiquetas los nombres de las etiquetas definidas en la línea de encabezado del
SELECTED_OUTPUT archivo creado en un Phreeqc USER_PUNCH bloque de datos dentro de la
Sección de Química. Los valores son los que fueron ' PERFORADO ';

ajustar parámetros desde fitParameterNames y fitParameterValues como se define en uno de los


archivos de entrada, o después de ajustar (< R2> etc);

etiquetas definidas por el usuario desde numericTags en uno de los archivos de entrada definidos en el orden en que

se leen los archivos y las etiquetas.

Los archivos de entrada se leen en el orden:

(I) el archivo de valores predeterminados del usuario ( pp. conjunto)

(ii) el archivo de entrada principal (*. ppi)

(iii) el archivo de anulación ( override.set).

Las etiquetas no deben usarse hasta después de haber sido definidas, por ejemplo, si una etiqueta se define en la
segunda simulación, no debe usarse hasta la tercera o las simulaciones posteriores). La sustitución de todas las etiquetas
tiene lugar antes de la ejecución de una simulación, por lo que los valores de las etiquetas creadas durante una ejecución
no se pueden utilizar para actualizar otras etiquetas que dependen de los valores creados durante esa ejecución. Por
ejemplo, USER_PUNCH las definiciones de etiquetas no pueden hacer referencia a otras USER_PUNCH etiquetas definidas en la
misma simulación.

Los archivos de entrada pueden contener expresiones de etiquetas que pueden referirse a otras etiquetas, mientras que
las etiquetas de sistema, de usuario y de ajuste son generadas automáticamente por PhreePlot y simplemente tener
valores numéricos asociados con ellos. En ese sentido, sólo es importante el orden de las etiquetas definidas en los
distintos archivos de entrada.

Las etiquetas se pueden usar para pasar valores numéricos de una simulación a otra posterior (esto también es posible usando Phreeqc
's PONER / OBTENER mecanismo). Por ejemplo, se puede querer restar el valor inicial de una variable calculada, como el pH, de todos
los valores de pH generados posteriormente para encontrar el cambio en el pH. Esto se puede hacer generando primero el pH
inicial en una simulación. Envíe este pH a la salida seleccionada usando un USER_PUNCH bloque de datos y un nombre de columna
como ' pHorig '. Esto generará automáticamente una etiqueta < pHorig> con el valor deseado que se almacenará durante la ejecución.
En simulaciones posteriores, escriba el nuevo pH en la salida seleccionada utilizando un nuevo nombre de columna como ' pH 'o
generar el cambio de pH directamente en
Archivos de entrada y salida PhreePlot 41

la USER_PUNCH bloque de datos (p. ej. la ("H +") - <pHorig>) y envíe esta diferencia directamente a la salida
seleccionada. En el primer caso, esto creará un < pH> etiqueta con un nuevo valor cada vez que se ejecuta
la simulación. Usar numericTags restar los dos.

Para ver qué etiquetas se han definido y sus valores, establezca depurar = 1, 2 o 3 y habilite el archivo de registro ( log TRUE).
A continuación, se escribirán en el archivo de registro una lista de las etiquetas definidas en cada iteración y los valores
de todas las etiquetas utilizadas. Estas tablas se pueden utilizar para identificar etiquetas indefinidas.

5.3.9 Ejemplos de uso de etiquetas

El siguiente ejemplo muestra cómo se pueden utilizar las etiquetas definidas por el usuario para manipular Phreeqc
archivo de entrada cuando hay varias simulaciones ( FINAL s) y cuando las primeras simulaciones se
preparan para el bucle en la simulación final.

La adsorción se define con el SUPERFICIE bloque de datos y en una de sus formas requiere valores para el
número de sitios de adsorción (en moles), el área de superficie específica (en m 2 por gramo) y la masa de
adsorbente (en gramos).

SUPERFICIE
nombre del sitio de enlace de superficie, sitios, área_específica_por_gramo, masa

Para ver cómo la cantidad de adsorción de metal puede variar en un sistema a medida que cambia el área de
superficie específica, es razonable en primera instancia suponer una densidad de sitio de superficie constante (es
decir, un número constante de sitios por m2). Para los sitios débiles de HFO, tenemos

isite = sdm / gfa

sdm = isite / isa

dónde

isite = número inicial de sitios (mol)


sdm = densidad de sitios por mol de HFO (mol / mol),

gfw = peso fórmula gramo de HFO,


isa = superficie específica inicial (m 2 / gramo),

sd = densidad de sitios de sitios (mol / m 2)

m = masa (g).

Entonces, para cualquier otra superficie específica, sa, el número de sitios (mol) es

sitio = sa * sdm * m.

Esto se puede implementar definiendo una serie de etiquetas numéricas de la siguiente manera:

<densidad_del_sitio_inicial_w_per_mol> = 0,2 mol / mol Fe \ <gfw> = 89


g / mol \
<densidad_del_sitio_inicial_w_per_g> = <densidad_del_sitio_inicial_w_per_mol> / <wt_molecular> \
<área_específica_inicial_por_g> = 600 m2 / g

Tenga en cuenta que la estructura es

<etiqueta> = <etiqueta_expresión>

donde la etiqueta tiene un nombre único (significativo entre mayúsculas y minúsculas), seguido de un signo igual
(espacios opcionales), seguido de una expresión. La expresión puede contener otros valores de etiqueta proporcionados
42 Guía PhreePlot

ya se les ha asignado un valor. Por


lo tanto

<densidad_del_sitio_w_per_m2> = <densidad_del_sitio_inicial_w_per_g> /
(<área_específica_inicial_por_g>) \

y para cualquier superficie y masa, tenemos

<superficie_area> = 300 m2 / g \
<mass> = 1 \
<sitios> = <superficie_area> * <site_density_w_per_m2> * <mass>

La etiqueta final define el número de sitios que requiere Phreeqc. La densidad de sitios fuertes se puede definir
de manera similar.

El Phreeqc por lo tanto, la entrada se da como:

SUPERFICIE 1
- equilibrar con la solución 1
Hfo_w <sitios> <surface_area> <mass>

Para crear un gráfico de la cantidad adsorbida frente al área de superficie, < superficie_area> debe ser
reemplazado por < x_axis> o redefinido como tal, y la cantidad adsorbida debe escribirse en el archivo de
salida seleccionado. Un ejemplo que implementa este procedimiento se da en Ejemplo 63 .

5,4 O ARCHIVOS UTPUT

Los diversos archivos de salida se utilizan internamente para almacenar datos intermedios, así como los datos
realmente utilizados para trazar (y volver a trazar posteriormente). Los archivos de salida se pueden utilizar para
examinar en detalle el Phreeqc salida, los resultados intermedios generados por PhreePlot, o exportar datos a
otros paquetes para su posterior análisis o trazado. Si la estructura del Phreeqc archivo de entrada es
relativamente sencillo, PhreePlot proporciona una forma rápida de recorrer Phreeqc cálculos que de otro modo
serían bastante tediosos de configurar (ver Sección 6.2 y Ejemplo 71 ).
Phreeqc- Se pueden realizar cálculos de tipo sin generar ningún archivo de trazado configurando plotFactor
a 0.

5.4.1 Archivos de salida producidos

La salida se envía a una variedad de archivos, la mayoría de los cuales derivan sus nombres de la raíz del nombre del
archivo de entrada con una extensión agregada. Por ejemplo, si el archivo de entrada principal para un cálculo de
cuadrícula o ht1 es C: \ PhreePlot \ demos \ amd \ amd.ppi, entonces la raíz se toma como
C: \ phreeplot \ demos \ amd \ que luego producirá una serie de archivos con el formato general

root_ [mainspecies] [loopIndex] .ext

dónde raíz es la raíz, especies principales es el nombre de la especie principal y solo se incluye cuando el número
de especies principales es mayor que una, loopIndex es el valor del índice ( 1 ... nz) de la variable de bucle y solo
se incluye cuando el número de valores de bucle es mayor que uno. ext es la extensión del archivo de
salida. Las posibles extensiones son:

Iniciar sesión archivo de registro (el nombre del archivo es simplemente < raíz> .log)

ptos archivo de puntos (puntos limítrofes, distribución de especies)

trk archivo de seguimiento con salida de cada Phreeqc iteración

vec archivo vectorial para parcelas de predominio y contorno, incluidos los límites

pol archivo de polígono para gráficos de predominio y contorno que definen cada campo

PD Archivo de gráficos Postscript, potencialmente de varias páginas (no eps)

eps archivo de gráficos Postscript (eps) encapsulado con cuadro delimitador adecuado para
incrustar en documentos (solo una página)
Archivos de entrada y salida PhreePlot 43

epsi archivo de gráficos Postscript (epsi) encapsulado con cuadro delimitador y una vista
previa independiente del dispositivo de plataforma adecuado para incrustar en
documentos (solo una página)

pdf archivo pdf (formato de documento portátil)

png archivo de registro de archivo de gráficos png (gráficos de red

Iniciar sesión portátiles) que contiene detalles de la ejecución

laboratorio archivo de etiquetas editable que indica la posición y orientación de las etiquetas en un
diagrama de predominio. Edite y vuelva a escribir con método de cálculo 2 o 3.

afuera archivo de salida tabular con resultados acumulados del SELECTED_OUTPUT


archivo utilizado como entrada por algunas de las rutinas de trazado.

todo salida acumulada de Phreeqc

Todos los archivos se generan como archivos ASCII delimitados por tabuladores o espacios. Los primeros cinco de estos archivos
son principalmente para PhreePlot para uso interno y para depuración, mientras que los últimos proporcionan salida gráfica y de
texto para un análisis posterior. La salida de cada archivo se puede activar o desactivar utilizando una de las palabras clave lógicas
asignadas al tipo de archivo ( Sección 5.4.2 ).

El bucle de la variable principal de la especie siempre produce un ' afuera 'archivo para cada valor de la principal
variable de especie.

Con cálculos personalizados y de ajuste, el bucle de la variable de bucle z produce un único ' afuera 'archivo con, por
defecto, una línea en blanco que separa cada valor de la variable de ciclo. Esta línea en blanco se puede suprimir
configurando la cuarta entrada en dataSeparators a la cadena nula, “”.

Si las parcelas correspondientes están en archivos separados o no depende de la archivo de varias páginas configuración.

Por ejemplo, asumiendo el archivo de varias páginas el ajuste está establecido en FALSO y PD se establece en CIERTO,
si hay dos especies principales, Fe y Zn, y dos iteraciones de la variable de bucle z, se producirán los siguientes
cuatro archivos:

C: \ phreeplot \ demos \ amd_Fe1.ps


C: \ phreeplot \ demos \ amd_Fe2.ps
C: \ phreeplot \ demos \ amd_Zn1.ps
C: \ phreeplot \ demos \ amd_Zn2.ps

Se generan otras extensiones según corresponda. El archivo de registro en el ejemplo anterior se llamará
C: \ phreeplot \ demos \ amd.log.

Si archivo de varias páginas se establece en CIERTO, se producirá un solo archivo:

C: \ phreeplot \ demos \ amd.ps

y contendrá las cuatro parcelas en el orden indicado anteriormente.

Con gráficos personalizados y de ajuste, solo se genera un archivo de gráfico incluso cuando el < bucle> se utiliza la
variable. Los resultados de los diversos bucles se grafican en el mismo gráfico con el etiquetado (de los
encabezados de columna del archivo de salida seleccionado o el etiquetas palabra clave) con un guión bajo y el
número de bucle. Este archivo tiene el mismo nombre que el archivo de varias páginas anterior.

El archivo plot.ps es una copia del último archivo Postscript generado y siempre se produce si se genera un
gráfico. También es el nombre del archivo generado como archivo de trazado de seguimiento temporal
cuando el ' pag' se presiona la tecla durante los cálculos de predominio ( Sección 6.6 ), o cuando los cálculos
se interrumpen (' Esc ') y luego terminado (' s '). Derivadas de la PD archivo bajo tales circunstancias se le dará
los nombres correspondientes tales como plot.pdf, plot.eps etc.

5.4.2 Los conmutadores lógicos

Cada archivo de salida tiene un conmutador lógico asociado ( CIERTO o FALSO). Estos están diseñados para
darle al usuario cierto control sobre la cantidad de archivos producidos. En general, los datos de salida
44 Guía PhreePlot

Los archivos (de texto) necesarios para el trazado se crearán independientemente del valor de su conmutador lógico y no
serán eliminados por PhreePlot al final de una carrera. Esto asegura que los gráficos se puedan editar y volver a trazar
sin tener que volver a calcular los datos subyacentes. Los interruptores más importantes que debe controlar el usuario
son los archivos de registro y de seguimiento, que pueden ser grandes e informativos en lugar de ser esenciales para el
trazado (excepto que el archivo de seguimiento se utiliza para volver a trazar un gráfico de cuadrícula).

Proporcionar plotFactor es mayor que cero, los siguientes archivos definitivamente se producirán y
conservarán durante los siguientes tipos de gráficos: ht1 - puntos, vectores, polígonos y etiquetas; cuadrícula
- pista; personalizado y especies - producción; encajar y especial - puntos y salida. Si alguno de estos archivos se
borra manualmente, no será posible realizar un 'replot'; será necesario recrearlos. A veces, los
archivos se crean pero no se escribe nada en ellos. Esto resultará en archivos de cero bytes.

El archivo de datos de salida principal producido por el ht1 El método es el archivo de puntos. A partir de esto se
generan los archivos de vectores, polígonos y etiquetas. Estos cuatro archivos se utilizan para crear el archivo de
trazado ps durante el trazado y el replanteo. Si el método 'reprocesar y reprocesar' ( método de cálculo 3)
se solicita, luego los cálculos comienzan con un archivo de puntos preexistente y vuelven a crear los otros
archivos. Esto regenerará todas las posiciones de las etiquetas y, si corresponde, reescribirá el archivo de
etiquetas. Esta configuración debe usarse cuando el escala está cambiado. Repitiendo solo ( método de cálculo
2) comienza con todos los archivos de datos existentes, incluido el archivo de etiquetas, y luego regenera los archivos de trazado.

Con esta configuración, se puede editar el archivo de etiquetas para mover las etiquetas.

El gráfico de cuadrícula utiliza el archivo de seguimiento como archivo de datos principal. Los gráficos personalizados y de ajuste

utilizan el archivo de salida. La gráfica de ajuste también usa el archivo de puntos.

A diferencia de los archivos de 'datos', los archivos de trazado son todos opcionales y el conmutador lógico
determina si se crean o no, o más específicamente, si se conservan al final de una ejecución. Existen algunas
interacciones entre los distintos tipos de archivo de trazado porque el archivo ps es el archivo de trazado
principal y es necesario para producir todos los demás archivos gráficos utilizando Ghostscript,
por ejemplo, si la configuración es PD FALSO y pdf CIERTO entonces se creará el archivo ps porque es
necesario para producir el archivo pdf, pero se eliminará al final de la ejecución porque el conmutador ps
se configuró en FALSO.

5.4.3 archivo 'log' ( Iniciar sesión)

El archivo de registro proporciona un registro de los cálculos realizados y para monitorear el progreso. Es más útil para
depurar. La cantidad de información enviada al archivo de registro puede ser muy grande. Aumenta a medida que depurar
el parámetro aumenta de 0 (pequeño) a 3 (grande). Se escribe una copia del archivo de entrada principal (es decir, el
archivo especificado en la línea de comando) en el archivo de registro. Esto incluye cualquier comentario. Si el writeInputFiles
el interruptor está en CIERTO, luego, todos los archivos de entrada se escriben en el archivo de registro. Esto significa que
todos los archivos 'incluidos' más el override.set expediente.

5.4.4 ' afuera ' expediente ( afuera)

El ' afuera 'archivo acumula las líneas de salida seleccionadas del archivo de salida principal seleccionado ( n =
1) y es utilizado por parcelas personalizadas para trazar. El formato del ' afuera 'archivo depende de la tarea que se
esté realizando. En general, el archivo de salida contiene la información acumulada enviada por
Phreeqc para PhreePlot mediante el SELECTED_OUTPUT [1] expediente. Esto no incluye todas las líneas de la salida
seleccionada, sino solo las elegidas por. De forma predeterminada, esta es solo la última línea de la última
simulación (asumiendo que contiene el bloque de salida seleccionado). Se supone que las líneas anteriores
provienen de cálculos intermedios no deseados, como los cálculos de la solución inicial.

No se crea ningún archivo de salida durante una repetición (o simplificación).

En el modo de ajuste, el archivo de salida es una acumulación de la salida seleccionada de cada llamada a
Phreeqc, una línea por punto de datos. El orden de los encabezados viene dictado por la forma en que SELECTED_OUTPUT
El bloque de datos fue escrito pero definitivamente debería contener la variable dependiente (valor
ajustado) y probablemente las variables independientes (ver el - encabezados línea en el
USER_PUNCH cuadra).
Archivos de entrada y salida PhreePlot 45

En ' cuadrícula ' y ' ht1 'cálculos, el' afuera 'archivo contiene una versión acumulativa de los datos enviados a la salida seleccionada
utilizando un PUÑETAZO declaración. Después de una línea de encabezado, el ' afuera 'archivo tiene el siguiente formato:

una lista ordenada de nombre de la especie, valor de la especie pares para cada uno de los cinco tipos de especies
que se indican a continuación. Las listas se ejecutan consecutivamente una tras otra. Si no hay entradas para un
tipo de especie, no se escribe nada. La línea termina con cinco números enteros que sirven como contadores
para cada una de las cinco listas. Los cinco contadores cuentan PhreePlot cuántos pares de nombre-valor de
cada tipo se han PUÑETAZO 'ed. Son utilizados por PhreePlot leer los datos y construir un diagrama de predominio.
Los pares de nombre-valor se pueden ver configurados en el ht1.inc y ht1c.inc incluir archivos .

En resumen, los cinco contadores son:

nout1 el número de especies candidatas predominantes en solución / adsorbidas /


intercambiadas / minerales y sus 'concentraciones' PUÑETAZO 'ed. Puede ser cualquier
número pero, después PhreePlot los clasifica por concentración, solo los tres más
grandes como máximo se pasan para su consideración adicional. En la actualidad, solo
las dos más grandes, la especie dominante y la subdominante, se utilizan realmente
por PhreePlot.

nout2 el número de especies minerales y sus concentraciones PUÑETAZO 'ed - si uno o más
minerales es realmente estable y está presente, entonces cuando se usa el criterio
de estabilidad. estos se clasificarán en términos de "concentración" y el que tenga
la mayor concentración tendrá prioridad sobre todas las especies de solución.
Puede ser cualquier número pero, después PhreePlot los clasifica por
concentración, solo los tres más grandes como máximo se transmiten para su
consideración adicional.

nout3 el número de restricciones PUÑETAZO 'ed como pares nombre-valor - estos pueden anular
el nout1 especies (por ejemplo, pueden utilizarse para imponer los "límites de agua").
Puede ser cualquier número.

nout4 el número de variables de 'acarreo' PUÑETAZO 'ed como pares de nombre-valor: estos son
valores numéricos que no se utilizan en los cálculos de predominio, pero que es posible
que desee examinar por alguna otra razón. Estos pares 'especie'-valor se envían al ' afuera '
y ' trk 'archivos de salida para su visualización y se resumen en el archivo de registro. Los
valores también se agregan al diccionario de etiquetas. Puede ser cualquier número.

nout5 el número de variables de 'sistema' devueltas. ¡Deben ser 5! Siempre en el


orden: pH, pe, PO2 (g), PH2 (g), temperatura ( o C).

Más detalles sobre el formato esperado de la salida seleccionada se dan en Sección 4.5 .

Con gráficos de predominio y de contorno, se escribe una línea en blanco en el ' afuera 'archivo cuando no
se produce una salida seleccionada cuando debería haber sido, por ejemplo, cuando la especiación ha
fallado o cuando se ha omitido un cálculo porque no está en el dominio de cálculo.

5.4.5 archivo 'pista' ( trk)

Esto registra los resultados de cada cálculo de especiación realizado para una parcela de predominio (tanto ht1 como
cuadrícula). Se genera a partir de la salida seleccionada después de la codificación de especies. La línea de encabezado y
la primera línea de datos se ven así:

nxy pe T escalón especies1 isp1 especies2 isp2 c1 c2 1-12.0000


-85.0000 - 12.4518 25.0000 -11 "H2 (g)> 1 atm" -4 "Fe (OH) 3-" 1 0.90370 -2.0100

norte es el número secuencial del cálculo de especiación; X y y son los valores xey, Educación física es el pe
calculado, T es la temperatura, paso es el tipo de paso que se está dando (ver Sección 3.2 ), luego las
especies dominantes y subdominantes (después de que se hayan aplicado las anulaciones) con sus
nombres ( especies.), número de código de la especie y concentración (mol / kgw). Estos datos son
46 Guía PhreePlot

normalmente se hizo eco en la pantalla durante la ejecución.

El archivo de pista también se puede activar durante la adaptación. Contendrá una copia del monitoreo
de convergencia con el número de evaluación de la función, el valor de la función objetivo (RSS) y su
logaritmo, y una lista de los valores de los parámetros actuales. Si se eligen varios métodos de ajuste, los
encabezados del archivo de seguimiento se incluyen en un subíndice con los nombres del método, p. Ej.
RSS_nlls, log10 (RSS) _bobyqa, logK_nlls etc. Esto diferencia los resultados de diferentes algoritmos
con el propósito de graficar.

5.4.6 archivo 'puntos' ( pts)

El formato del archivo de puntos depende de la tarea que lo creó.

Cálculos de parcelas de predominio (solo ht1)

Esto registra los resultados del cálculo de las posiciones de los límites (ver Sección 8.3.2 ). Estos puntos son los
datos brutos para calcular los diagramas de predominio. El número de puntos puede ser muy grande (incluso
mientras se sigue una línea recta), por lo que estos datos se someten a una simplificación para reducir el tamaño
del archivo y mejorar la apariencia del diagrama. Son estas líneas simplificadas las que se escriben en el archivo
de vectores y luego en el archivo de polígono.

Otros calculos

Este es un archivo ASCII en formato delimitado por espacios. Se crea a partir de un diagrama de 'especies' y contiene una
tabla de especies aptas para el trazado. Estas variables en este archivo se agregan automáticamente a la lista de
búsqueda de variables y, por lo tanto, se pueden usar explícitamente para trazar.

5.4.7 archivo 'vectores' ( vec)

Este archivo se genera a partir del archivo de puntos y almacena los límites de los campos en un ' ht1 'diagrama
de predominio como una serie de vectores. El orden de los vectores está determinado por el orden de
seguimiento. Los polígonos individuales se ensamblan a partir de este archivo y se colorean en
consecuencia. Estos vectores dividen dos campos. No se dibujan para el límite del dominio. El archivo
tiene este aspecto:

250 1190 3562 16 25,00000000000 -0,9995420904108 0,2499810326136 20,79331349261


- 12.00000000000 - 83.30000000000 4 1 1-12.04377661614
- 12.00000000000 - 83.12734375000 4 1 1 -12.00061311406
- 10,74000000000 - 83,13000000000 4 1 1 -10,74144424834
- 10,74000000000 - 83,13000000000 3 1 2 -10,74144424834
- 10,74000000000 - 81,77000000000 3 1 2 -10,40145620289

La primera línea contiene los valores de varios parámetros del sistema que estaban vigentes
cuando se creó el archivo: resolución , el número de puntos en el archivo de puntos, el número de
veces que se ejecutó el programa de especiación, el número de especies registradas como
dominantes o subdominantes, la temperatura de la última especiación y tres números que definen
la relación entre pe y x - y variables del eje y.

Las siguientes líneas tienen las siguientes columnas:

valor x valor y especie1 especie2 vector_sequence_number Educación física

donde el valor xey son los valores xey, las especies1 y las especies2 son los códigos enteros para las dos
especies en el límite, número_secuencia_vectorial es el número secuencial asignado al vector y pe es el pe
calculado devuelto por Phreeqc. En un gráfico de contorno, el pe se reemplaza por un parámetro de
distancia: esta es una distancia escalada que refleja la distancia relativa del punto desde la línea dibujada.
Es una medida de la influencia o importancia del punto: una gran distancia significa una gran influencia.

Un código de especie de 99 indica un límite de dominio.

Este archivo se utiliza en gráficos 'ht1' para dibujar los contornos de los campos de predominio. Comentando
Archivos de entrada y salida PhreePlot 47

o eliminando líneas de este archivo combinado con método de cálculo = 2 se puede utilizar para omitir líneas
específicas del gráfico. Esto puede ser útil para eliminar los límites de dominio (aquellos que incluyen un código
99) en una gráfica pe-pH.

A ' vec El archivo 'también se produce mediante un gráfico de contorno. Tiene una línea de encabezado
diferente pero nuevamente el archivo contiene todos los vectores necesarios para dibujar los contornos y
ensamblar los polígonos usados para colorear. Contiene información sobre el tipo de límite,
normalmente los campos (clase 1 y clase 2) difieren en uno, pero si son iguales, esto indica un contorno
que no se cruza (con el límite del dominio) o 'isla'.

Con los gráficos de contorno, el orden de los vértices siempre se escribe con 'el lado alto a la
derecha' al leer el archivo.

5.4.8 archivo 'polígono' ( pol)

Este archivo se genera a partir de los vectores (' ht1 ' y ' contorno ') o pista (' cuadrícula ') y se utiliza para rellenar con color los
polígonos. También se utiliza para determinar una posición de etiquetado predeterminada cerca del centro del polígono
en las parcelas de predominio. Se ensambla a partir del archivo de vectores (' ht1 ' y ' contorno ') seleccionando el conjunto
apropiado de vectores para cada campo basado en la' especie 'involucrada y haciendo coincidir los extremos hasta que
se haya logrado el cierre del polígono. En los gráficos de cuadrícula, la "agregación de píxeles" se utiliza para determinar
los límites del polígono.

La línea de encabezado incluye la resolución x e y, el código de especie al que corresponde el polígono (consulte el
archivo de etiquetas para obtener el nombre completo de la especie en las parcelas de predominio), el número de
puntos representados por cada segmento de polígono y el pe en cada punto. Un código de especie de 99
representa el límite del dominio.

El pol La palabra clave se puede utilizar para omitir campos específicos de un gráfico de predominio.

Comentar todas las líneas de un polígono también se puede utilizar para omitir un polígono en particular del
gráfico, proporcionando método de cálculo = 2 se utiliza. En ' ht1 ' y ' contorno 'gráficos, las líneas que delinean cada
campo se dibujan usando el archivo de vectores pero en un' cuadrícula 'trazar estos contornos se dibujan utilizando
el archivo de polígono.

Si el valor de sp el número de especie) para todos los puntos que componen un polígono particular
en el ' pol 'file son menores o iguales a cero, el campo no se dibujará. Es necesario editar el ' pol 'archivo
y replot ( método de cálculo = 2) para que esto funcione.

5.4.9 archivo 'etiquetas' (labelFile)

Este archivo es generado por parcelas de predominio. Proporciona el diccionario para conectar el número de especie en
los archivos de vector y polígono con un nombre de especie. También incluye el ángulo del texto. La edición de este
archivo proporciona los medios para rotar una etiqueta.

Este archivo se utiliza para indicarle al gráfico dónde centrar las etiquetas, así como para proporcionar una lista de los
nombres de las especies. También incluye otros atributos de la etiqueta, como la rotación (theta en grados desde la
horizontal medida en el sentido de las agujas del reloj). El pe se lleva para que las etiquetas se puedan colocar
correctamente si el eje y se cambia a pe o una derivada de eso. Este archivo se puede editar manualmente para
reposicionar o rotar las etiquetas. Un archivo de etiquetas se parece a esto:

sp X y ángulo
Educación física %zona Especies
#! -.999962564643800 .249990833525500 20.7964049901900 .999997920415700 5
- 8.300 -32.338 4.406 0 61,62 Fe (OH) 3 (a)
1 - 11.541 -81.218 - 11.054 0 0,41 Fe (OH) 3-
6 - 4.789 -61.095 0,735 0 32,10 Fe + 2
10 - 2.371 -12.279 15.333 0 2.10 Fe + 3
11 - 2.854 -11.174 15.15 0 0,49 Fe2 (OH) 2 + 4
3 - 10.189 -81.442 - 9,75 0 0,25 FeOH +
9 - 2.783 -22.242 12.454 0 0,00 FeOH + 2
4 - 6,990 -83,939 - 7.177 0 2,49 H2 (g)> 1 atm
13 - 7.000 -0.212 13.745 0 0,50 O2 (g)> 0,21 atm

El #! La línea da los resultados del ajuste estimado utilizado para estimar pe cuando no está disponible. El
cuarto parámetro es la bondad de ajuste (R 2). Tamaño de etiqueta y color están determinadas por el
48 Guía PhreePlot

Tamaño de la etiqueta y labelColor palabras clave. Las etiquetas individuales y el color de sus polígonos
asociados se pueden eliminar comentando las líneas apropiadas en el archivo de etiquetas. Alternativamente,
hacer que el número de especie (sp) sea negativo significa que la etiqueta no se trazará. Establecer el número de
especie en cero trazará la etiqueta y el campo, pero no lo coloreará. Para no trazar el campo o su etiqueta en
absoluto, use pol para excluir el polígono (ver arriba) o editar el archivo de polígono para dar números de
especies negativos. El minimumAreaForLabelling La configuración y edición del campo de área en el archivo de
etiquetas se puede usar para omitir una etiqueta, por ejemplo, hacer que el área sea negativa y establecer minimu
mAreaForLabelling a 0,1, digamos.

Si labelColor se establece en ' Dakota del Norte ' o Tamaño de la etiqueta se establece en 0.0, no se trazarán etiquetas.

Una especie puede tener más de una etiqueta si ocupa más de un campo distinto. El orden de las
etiquetas es importante y se corresponde con el orden en que se leen los polígonos del archivo de
polígonos. Esto no debería cambiarse.

Los nombres de las especies se pueden cambiar editando este archivo y volviendo a escribir con método de
cálculo 2. Se supone que los nombres de las especies están en Phreeqc el formato de fórmula y los números se
sub-y super-guión en consecuencia. Los nombres de las especies se pueden agregar con un identificador que no
será subescrito o supercriptado. Esto debe seguir al nombre de la especie y estar precedido por un guión bajo.
Para permitir que las especies de la superficie aún se interpreten correctamente, se aplican las siguientes reglas:
el identificador no se incluirá en un subíndice si tiene 3 caracteres o menos, o si al menos otro guión bajo lo
precede, por ejemplo, los números en los identificadores para Cd + 2_1 o Cd + 2__A2014
(dos guiones bajos) no se suscribirá mientras que el cargo en Hfo_Cd + 2 será supercriptado.

Posiblemente, la forma más sencilla de mover etiquetas es utilizar un ' empujar archivo ' . Esto se puede utilizar para todas las parcelas.

5.4.10 Otros archivos de salida

Se producen varios otros archivos, algunos de los cuales son archivos temporales y normalmente se eliminan, otros se
dejan en el sistema de archivos para su lectura.

pag lot.ps siempre es una copia del último archivo ps producido (y el nombre del
archivo de seguimiento producido opcionalmente durante los cálculos)

selected_1.0.out este es el nombre predeterminado del archivo que contiene el último


SELECTED_OUTPUT devuelto por Phreeqc Cuándo ABDOMINALES( depurar) > 0 (se
sobrescribe continuamente con nuevos datos). Se pueden configurar
otros nombres de archivo utilizando el SELECTED_OUTPUT -archivo
identificador en el QUÍMICA sección.

Phreeqc.out esto es lo normal IMPRIMIR salida de Phreeqc para la última iteración


cuando ABDOMINALES( depurar )> 0

*. todo esto es una acumulación de lo normal IMPRIMIR salida de


Phreeqc para todas las iteraciones y solo se produce cuando
ABDOMINALES( depurar )> 1 o cuando el todo la palabra clave está establecida en VERDADERO.
Contiene caracteres de fin de archivo (Control-z) al final de la salida de cada
iteración. Este archivo puede ser muy grande, lo que puede resultar
problemático al abrirlo con algunos editores.

Si los dos últimos archivos se producen o no, está controlado por el depurar palabra clave y posiblemente
el valor de resolución .

Si los archivos del diccionario de dos colores no están definidos y son necesarios, entonces los archivos lineColor.dat y
fillColor.dat se creará automáticamente en el directorio de trabajo, es decir, el mismo directorio que el archivo de entrada
principal. Tenga en cuenta que, dado que las posiciones de las etiquetas se registran en el diccionario de color de línea,
puede ser importante que cada problema que se ejecute desde el mismo directorio reciba un nombre de diccionario
diferente.

Es posible que se generen otros archivos temporales durante una ejecución. Estos normalmente se eliminan en el
Archivos de entrada y salida PhreePlot 49

final de la carrera.

5,5 yo INSERTAR ARCHIVOS DE PARCELA EN METRO ICROSOFT W ORD, PAG OWERPOINT Y OTROS
SOFTWARE

Es probable que la información que se proporciona a continuación varíe con la versión del software que se esté
utilizando y, en cualquier caso, envejecerá rápidamente, así que trátelo como un comienzo y experimente usted
mismo. Sorprendentemente, la situación en 2017 no ha mejorado mucho y realmente tendrás que ver qué
funciona para ti. Desafortunadamente, el formato eps parece una fiesta conmovedora y generalmente no se
transfiere bien. Si puedes pagar Ilustrador Adobe, entonces esta es una buena forma de editar archivos ps / eps
y guardarlos en un formato que se podrá importar a la mayoría de los documentos. Por el momento,
probablemente el enfoque más simple para importar un diagrama a un documento sin recurrir a otro software
es exportar desde PhreePlot en formato png y luego recórtelo.

En principio, los archivos gráficos en varios formatos se pueden importar a un software de oficina como
Microsoft Palabra y Open Office / LibreOffice. Los filtros disponibles dependen de las versiones utilizadas. Con Palabra
2002 y versiones posteriores de Palabra, Posdata ( PD) y PostScript encapsulado ( eps y epsi) los archivos se pueden
importar con Insertar | Imagen | Desde archivo. Tendrá que cambiar los archivos ps y epsi para tener la extensión eps
para que esto funcione o preparar un archivo eps directamente (esto se recortará firmemente al cuadro
delimitador de la imagen). Por supuesto, deben ser archivos ps de una sola página. Todos estos archivos tienen
una vista previa cuando se ven en Palabra.

png y jpg Los archivos también se pueden importar directamente a la mayoría de los documentos de tipo Office de la misma

manera, pero normalmente no serán de tan buena calidad como los archivos Postscript, ya que son mapas de bits en lugar de

estar basados en vectores y, por lo tanto, no se escalarán tan bien.

El eps y epsi Los archivos se recortarán, los otros formatos no. Estos otros archivos de formato se pueden
recortar con software de edición de imágenes como IrfanView, o el recorte realizado directamente en el
archivo importado en Palabra especificando los parámetros de cultivo ( Formato | Imagen).

Si todo lo demás falla, el PD o epsi los archivos se pueden convertir a alta resolución jpg archivos usando GSview -
tendrá más control sobre la resolución de esta manera del que está disponible cuando estos archivos se
generan en PhreePlot.

En lugar de importar los archivos a Palabra de forma única, las 'imágenes' se pueden vincular a un
archivo en particular utilizando la opción 'Vincular al archivo' disponible en el menú desplegable Insertar.
Esto inserta un INCLUYE IMAGEN el código de campo en el documento y reduce el tamaño del documento, ya
que el código real de la imagen ya no se incluye en el archivo. El archivo se actualiza automáticamente en
el Palabra documento cuando se vuelve a abrir el archivo o cuando se actualizan los campos (Cntrl-F9). El
nombre del archivo de enlace se puede ver viendo los códigos de campo (Alt-F9).

Al utilizar la opción 'Insertar y vincular' al importar, se insertará el código de la imagen y se vinculará al archivo para su
actualización. Esto da como resultado un tamaño de documento más grande que el enlace solo.

Probablemente el mejor formato para importar en Palabra en términos de calidad, tamaño y conveniencia es el
formato eps pero tendrás que experimentar.

PowerPoint no puede procesar archivos Postscript. Probablemente el mejor formato para insertar en
PowerPoint es png. Si todo lo demás falla, use alta resolución jpg. Si la resolución predeterminada del png
archivo producido por PhreePlot ( 300 ppp) no es lo que se desea, cambie la resolución con el
segundo png parámetro.

Muchos de los formatos gráficos exportados por PhreePlot también se puede importar a Oficina abierta /
LibreOffice documentos. Por ejemplo, Insertar | Gráficos | Desde archivo importará eps. archivos png, jpg.
Estos archivos también pueden importarse al documento o vincularse a él, como en Palabra.
También es posible recortar. Los archivos png son a menudo los más fáciles de importar y de calidad razonable.

Oficina abierta / LibreOffice no proporciona una vista previa de los archivos eps y la salida debe
imprimirse utilizando una impresora con un intérprete PostScript; de lo contrario, solo se imprimirá el
marcador de posición. Si no tiene una impresora Postscript disponible y aún no tiene instalado un
controlador de impresora Postcript genérico, instale dicho controlador de impresora (por ejemplo, en
Windows 7, Panel de control | Hardware y sonido | Agregar una impresora | Agregar una impresora local | Utilice una existencia
50 Guía PhreePlot

puerto de entrada: ARCHIVO | Lexmark | C935 PS (MS)) ( o cualquier otro controlador de impresora Postcript de buen color).
Luego, seleccione esta 'impresora' al imprimir y asigne un nombre al archivo como archivo ps. Esto producirá un
archivo ps que luego se puede leer, convertir e imprimir en papel con GSview etc.

Si es necesario editar los archivos gráficos, Ilustrador Adobe o Inkscape u otro software adecuado basado en vectores
se puede utilizar. Inkscape está basado en vectores (basado en el formato SVG) y es versátil, moderno y gratuito.
Muchas suites de software (por ejemplo, Microsoft Oficina y Open Office / LibreOffice) ahora puede importar archivos
pdf. CAÑUTILLO es gratuito y potente, pero está basado en ráster. También hay muchas formas de fusionar archivos pdf,
incluido el uso de Adobe Acróbata y métodos basados en la nube (p. ej. http://www.mergepdf.net/ ). Las presentaciones
de diapositivas también se pueden preparar con Adobe Acróbata lo que significa que los archivos pdf se pueden utilizar
directamente para la presentación.

La calidad basada en vectores de los archivos Postscript debe conservarse el mayor tiempo posible y el texto debe
mantenerse como texto en lugar de como mapa de bits. Software que permite la inserción de eps / pdf los archivos
directamente conservarán normalmente la calidad más alta.

5,6 S PEED DE CÁLCULOS Y GRÁFICOS

La velocidad con la que se realizan los cálculos y el trazado depende claramente de la potencia de
procesamiento disponible y del número de cálculos realizados. También depende de ciertos ajustes que
están bajo el control del usuario. Normalmente, la mayor parte del tiempo se ocupa en Phreeqc por lo
que se debe prestar especial atención a la Phreeqc configuración.

Los siguientes consejos pueden ayudar a acelerar los cálculos:

reducir el número de especies consideradas: la velocidad de Phreeqc los cálculos dependen


en gran medida del número de fases puras presentes. Estos se definen en el EQUILIBRIUM_PHASES
bloque de palabras clave. Reducir el número de fases que se están considerando reducirá el tiempo de
cálculo requerido. Por ejemplo, las fases que obviamente no se incluirán en los cálculos pueden
eliminarse de la consideración. Lo mismo es probablemente cierto en menor grado para el número de
especies en solución. Reducirlos implicará cambiar la base de datos utilizada o no incluirlos como especies
en el EQUILIBRIUM_PHASES bloque de palabras clave. Con diagramas de predominio, la ht1minerals.inc expediente ( Sección
8.1.6 ) se puede utilizar para monitorear los índices de saturación ( SI's) de todos los minerales posibles
utilizando el enfoque de "variables de acarreo". Las estadísticas resumidas para estos SI se escriben en el
archivo de registro. Si el valor máximo es cero o muy cercano a él, esto indica que el mineral se ha
precipitado en algún lugar de los cálculos.

Reducir la resolución del gráfico: esto reducirá el número de cálculos realizados a


expensas de la suavidad y tal vez la precisión del gráfico. Una vez que la trama es la deseada,
se puede aumentar la resolución para una trama de producción final.
alterar el PERILLAS ajustes: estos normalmente no necesitan ser ajustados pero pueden afectar la
velocidad con la que Phreeqc converge (e incluso si converge) y, por lo tanto, puede ser importante en
ciertos casos (ver Sección 6.5.5 y Sección 8.12 ). Su impacto puede variar con las diferentes versiones de Phreeqc
debido a cambios en la estrategia de búsqueda de soluciones.

La estructura de la Phreeqc biblioteca utilizada por PhreePlot no se ha optimizado para llevar a cabo los tipos de
cálculos que a menudo se hacen con PhreePlot. Por ejemplo, los cálculos sucesivos suelen ser similares entre sí
con solo una pequeña diferencia. Sin emabargo, Phreeqc comienza esencialmente desde el mismo punto de
partida cada vez. A veces, los cálculos de tipo 'configuración' se pueden sacar 'fuera del ciclo' haciendo uso de la FINAL
palabra clave para separar el código de configuración del código de bucle.
Ejecutando PhreePlot 51

6 Ejecución de PhreePlot

6.1 C CONVENCIONES PARA LA ENTRADA DE DATOS

6.1.1 Tipos de variables

Cada palabra clave tiene un valor asociado o una lista de valores asociados. Estos pueden ser de cuatro tipos,
como se indica en la Tabla 6.1.

Cuadro 6.1. Ejemplos de cómo un Phreeqc El encabezado de la columna se interpretará durante el trazado.

Aporte Salida gráfica Ejemplos de

Entero (I) Entero - 1, 0 1, 123


Número de coma flotante: números no enteros. El rango permitido depende de ber
(F) en el tipo de almacenamiento: generalmente se almacena
bles '(= xxx a + ***) pero los parámetros de trazado son –1.0, 1.23, 1e – 5
como IEEE 'guardado como' singles ', *** a + **
Lógico (L) Valor lógico VERDADERO, FALSO, verdadero, falso, t, f, T, F

Cadenas alfanuméricas (A) que constan de los siguientes caracteres:


(0–9, a – z, A – Z, (espacio),! ”% ^ & * () _ + []:; <>? /
Incluya las cadenas entre comillas simples o dobles si
incluyen un espacio. Si la cadena está encerrada en 1, A, abc, "dos palabras", 'tres pequeñas de la
corchetes, estos se eliminan y el resto de palabras ', “C: \ Archivos de programa \ PhreePlot \
tem \ color.dat ”,“ ”(cadena nula)
cadena se toman literalmente, es decir, no entre
Syspreted.
Los siguientes son no permitido: £ $ ¬! | \ @

6.1.2 Notación Phreeqc para fórmulas químicas

Phreeqc tiene una forma super / libre de subíndices de especificar fórmulas químicas (Tabla 6.2) y esto es
utilizado por PhreePlot para interpretar cadenas de fórmulas al etiquetar parcelas.

Cuadro 6.2. Ejemplos de varias fórmulas químicas en Phreeqc formato

Fórmula o nombre convencional Phreeqc formato PhreePlot

B B B
Br - Br– Br -
2– 4
ASI QUE SO4-2 2– 4
ASI QUE

California 2+ Ca + 2 California 2+

CaSO 4. 2H 2 O CaSO4: 2H2O CaSO 4. 2H 2 O


FeS 1,7 FeS1.7 FeS 1,7
(CH 3) 2 COOH (CH3) 2COOH (CH3) 2 COOH
Hg 0 Hg0 Hg 0
Fenantrolina Fenantrolina Fenantrolina
HFO_s Hfo_s Hfo_s
Fe (3) Fe (3) Fe (3)
18 O [18O] 18O
Como (V) [As5] As5
52 Guía PhreePlot

PhreePlot asume que algunas de las cadenas de caracteres (por ejemplo, especies y etiquetas) utilizadas en
PhreePlot puede representar fórmulas en Phreeqc formato e intenta traducirlos en consecuencia. Los
lugares donde esto ocurre se enumeran en otra parte ( Sección 10.1 ).

Esta interpretación de cadenas como fórmulas se puede desactivar configurando convertLabels para FALSO.
Esta configuración se aplica a todas las cadenas. Un segundo conmutador lógico opcional para convertLabels controla
la conversión de dos puntos cuando el Phreeqc la conversión es verdadera. Esto controla si
ZnCO3: H2O se convierte en ZnCO 3. H 2 O (VERDADERO) o para ZnCO 3: H 2 O (FALSO).

6.2 P Tres PAG LOTE L OOPING

6.2.1 Variables de bucle y su uso

El bucle, o iteración, está en el centro de PhreePlot. La otra característica importante es la separación de Phreeqc
simulaciones en simulaciones previas al bucle y bucle principal (ver Sección 4.6.1 ).

Hay cuatro variables de bucle disponibles en PhreePlot y estos funcionan de forma anidada con el bucle
exterior girando más lentamente. Estos bucles y sus nombres de etiqueta son los siguientes:

Bucle exterior: bucle principal de especies (< especie principal>)

bucle z (< bucle>)


bucle del eje y (< eje_y>)
Bucle interior: bucle del eje x (< eje_x>) ( cambiando más rápidamente)

El 'bucle de especie principal' se repite en una lista de cadenas de caracteres (cada una de hasta 30 caracteres), normalmente

nombres de elementos, pero puede ser cualquier cadena de caracteres que requiera sustitución.

El bucle del eje y y los bucles del eje x se configuran internamente para recorrer los rangos especificados de los
ejes y y x, ymin para ymax y xmin para xmax , respectivamente, con los intervalos de ambos controlados por el
mismo resolución palabra clave. El resolución da el número de Phreeqc iteraciones utilizadas. Entonces, si se
desean cálculos sobre un rango x de 0 a 10 inclusive en pasos de 1, entonces xmin = 0,
xmax = 10 y resolución = 11. Si xmax = xmin entonces no se realiza ningún bucle. resolución = 1 indica un
comportamiento especial. Las variables y se definen exactamente de la misma manera. Las simulaciones previas
al ciclo se ejecutan una vez y solo se enlazan las simulaciones del ciclo principal.

El z-loop se controla de varias formas, la mayoría simplemente mediante las palabras clave loopMin , loopMax ,
loopInt y loopLogVar . Estos generan una secuencia regular de valores numéricos para el < bucle>
variable. Alternativamente el < bucle> La variable se puede establecer en cualquier conjunto discreto de valores, incluida
una serie irregular, utilizando loopFile . El enfoque del archivo de bucle también proporciona un mecanismo para
transportar valores variables de otras variables en paralelo para cada iteración del bucle z, incluidas las variables de
carácter. El bucle z itera tanto en las simulaciones de bucle previo como en el bucle principal.

Tenga en cuenta que los nombres de las etiquetas de los ejes X e Y utilizan guiones bajos, no guiones. Los bucles
de los ejes xey se utilizan en gráficos de predominio donde se requiere movimiento a lo largo de ambos ejes. La
resolución en ambas dimensiones es siempre la misma en este tipo de parcelas. Esta disposición rara vez es útil
en gráficos personalizados. Aquí es más común usar el bucle del eje x para impulsar la principal variable
independiente, como el pH, y el bucle z para alterar algún otro factor o 'nivel' de manera sistemática.

El ciclo de especies principal produce una nueva gráfica para cada especie. Estos pueden o no estar en el mismo archivo
dependiendo de la archivo de varias páginas configuración.

El bucle z produce una nueva gráfica para cada valor o introduce una línea en blanco en el ' afuera 'cada vez que
cambia su valor. Esto da una ruptura en la línea trazada en cada uno de estos cambios. El hecho de que se
produzca o no un nuevo archivo o se introduzca una línea en blanco depende del tipo de gráfico y customLoopManyPlots
configuración. Siempre se generará un nuevo archivo de parcelas para las parcelas de especies.

En las parcelas distintas de las parcelas de predominio, el bucle y normalmente debe dejarse sin definir y sin
usar.

En resumen, de forma predeterminada, se inserta una línea en blanco en los archivos de salida para cada iteración del
Ejecutando PhreePlot 53

<bucle> variable. Esto da como resultado una ruptura en la curva trazada. Esto no sucede con el
<eje_x> o <y_axis> variables. El <eje_x> y <y_axis> Las variables están diseñadas principalmente para variables
continuas, mientras que las <bucle> La variable está diseñada principalmente para recorrer valores discretos de
una variable. Esta diferencia no es rígida, pero hay algunas diferencias en el resultado que reflejan esta
motivación.

Por ejemplo, en las parcelas de predominio, el bucle z se puede utilizar para recorrer un rango discreto de
concentraciones de las especies principales. La variable de bucle z se puede especificar con el loopMin ,
loopMax, loopInt y loopLogVar palabras clave. El loopLogVar La palabra clave se utiliza para señalar si se debe
realizar un bucle sobre un rango lineal (0) o log (1) de valores z.

El bucle z se puede utilizar para repetir Phreeqc cálculos en los que sólo se cambian uno o dos parámetros entre
corridas, como el pH. La opción de trazado personalizado se utiliza para esto.

Estos mecanismos de bucle incorporados siempre generan una secuencia regular de valores. Si se
necesita una secuencia irregular de valores de bucle, o si es necesario cambiar más de una variable de
bucle en cada iteración, utilice loopFile con cálculoTipo = ' personalizado 'o un archivo de datos con cálculoTipo
= ' simular '. Si se establece un nombre de archivo de bucle que no esté en blanco, los valores de este archivo tienen
prioridad sobre los loopMin etc configuración de palabras clave. Una diferencia importante entre estos dos enfoques es
que el enfoque de archivo de bucle repetirá las iteraciones previas al bucle, mientras que el enfoque de simulación no lo
hace.

Phreeqc también tiene sus propios mecanismos de bucle interno, por ejemplo con el REACCIÓN y
CINÉTICA bloques, y también en cierta medida con SOLUTION_SPREAD.

Un ejemplo del simular El enfoque se da a continuación y en el cálculo de los índices de saturación


para un lote de muestras de agua (ver el SI ejemplo en el \ demo \ SI directorio).

6.2.2 Recorrer una lista de variables de caracteres

El mecanismo de bucle en z de 3 parámetros discutido anteriormente está diseñado para recorrer un rango de
valores numéricos. Si desea recorrer una lista de variables de caracteres, utilice un loopFile con columnas de
caracteres o en casos simples de una variable, utilice el especies principales bucle (incluso si las variables
involucradas no son realmente 'especies').

6.2.3 Un ejemplo del uso de varios mecanismos de bucle

Una serie de ejemplos que se describen a continuación muestra cómo se pueden usar los diversos mecanismos de bucle
para calcular la solubilidad del óxido de hierro en función del pH en un medio rico en fluoruro. Estos ejemplos destacan
las diferentes configuraciones que se pueden utilizar para implementar el bucle en PhreePlot.
Todos estos ejemplos se pueden encontrar en el demo \ FeSolubilidad directorio.

Usando la etiqueta <x_axis>

El primer ejemplo usa el <eje_x> variable. El archivo de entrada ( FeSolubilityXaxis.ppi) es:

ESPECIACION
cálculoTipo "personalizado"
método de cálculo 1
xmin 2
xmax 12
resolución 101
numericTags <log_H> = - <x_axis>
TRAMA
plotTitle "Solubilidad de Fe (OH) 3 (a) frente a pH"
xtitle "pH"
ytitle "log <sub> 10 </sub> Fe <sub> T </sub> (mol / kgw)"
pymax 0
customXcolumn 1
color de linea azul
useLineColorDictionary 0
legendTextSize 0
etiqueta 0

QUÍMICA

ETAPAS
Fix_H +; H + = H +; log_k 0
54 Guía PhreePlot

Fe (OH) 3 (a) solubilidad frente a pH


(usando una etiqueta x_axis)

-2

log 10 Fe T ( mol/kgw)
-4

-6

-8
2 4 6 8 10 12
pH

C: \ PhreePlot \ demo \ Fesolubility \ Fesolubilityxaxis.ps

Figura 6.1. Solubilidad del óxido de hierro amorfo en función del pH calculado utilizando el
<eje_x> variable de bucle.

SELECTED_OUTPUT
restablecer falso

USER_PUNCH
títulos pH FeT_
10 PUNCH -la ("H +"), log10 (TOT ("Fe"))

SOLUCION 1
pH 1.8
unidades mol / kgw
Fe (3) 1e-1
N/A 1e-1
F 1e-1
EQUILIBRIUM_PHASES 1
Fix_H + <log_H> NaOH 10
- force_equality verdadero
O2 (g) -0,677
Fe (OH) 3 (a) 0 0
FINAL

El rango de la <eje_x> la variable está dada por xmin y xmax . El intervalo en pH es de 10 unidades y el resolución
es 101, por lo que los cálculos se realizarán en <eje_x> valores de 2.0, 2.1, 2.2 ... 12.0. El <y_axis> La
variable se ha dejado sin definir (aquí y en los otros archivos de entrada) y, por lo tanto, no se utiliza.

El < log_H> etiqueta se define como el negativo de la <eje_x> variable para que pueda ser sustituida en la Fix_H
+ línea. Esta es la única etiqueta que se utiliza en el QUÍMICA sección.

El gráfico producido a partir de este archivo se muestra en la Figura 6.1. Se puede producir exactamente el
mismo gráfico utilizando el <y_axis> variable en lugar de <eje_x> .

El useLineColorDictionary el valor 0 significa que el diccionario de color de línea se ignora como fuente de colores
de línea y punto o coordenadas de etiqueta, incluso si están presentes en el diccionario. Más bien, se utiliza la
coloración automática comenzando con los colores dados en la color de linea ajuste (aquí establecido como azul). El
diccionario de colores siempre se crea si está ausente o se actualiza si está presente con los últimos colores y
coordenadas.
Ejecutando PhreePlot 55

Usando la etiqueta <loop>

Se puede producir exactamente el mismo gráfico utilizando el <bucle> variable. Esto requiere varios cambios en
el ESPECIACION sección pero ninguna a las secciones siguientes. La entrada modificada se muestra a continuación:

ESPECIACION
cálculoTipo "personalizado"
método de cálculo 1
loopMin 2
loopMax 12
loopInt 0,1
numericTags <log_H> = - <bucle>
dataSeparators "\" "\ t" "\ p" "" “\ r” “”

Las dos diferencias principales son que loopMin , loopMax y loopInt reemplazar xmin , xmax y
resolución . El cuarto separador de datos también debe redefinirse para eliminar la línea en blanco que
normalmente se colocaría después de cada iteración del <bucle> variable. Se establece en el separador nulo, lo
que significa que no se coloca una nueva línea (párrafo) entre cada iteración. Dado que las líneas en blanco en el
' afuera 'se interpretan como saltos de línea al realizar un trazado personalizado; sin este cambio en el separador de
datos, se trazarían 101 líneas separadas en lugar de una sola curva.

Por eso es normalmente preferible utilizar el <eje_x> enfoque para variables continuas y dejar el <bucle>
variable para definir intervalos discretos o niveles de una variable.

Usando un archivo de bucle

También es posible leer los 101 valores de un archivo de bucle. Es necesario proporcionar el nombre de un
archivo de bucle y dataSeparators puede que sea necesario redefinirlo. La entrada es:

ESPECIACION
cálculoTipo "personalizado"
método de cálculo 1
loopFile FeLoop.txt
numericTags <log_H> = - <bucle>
dataSeparators "\" "\ t" "\ p" "" “\ r” “”

El FeLoop.txt archivo tiene este aspecto:

# pH
2.0
2.1
2.2
2.3
...
12,0

Tiene 101 filas de datos con un comentario en la parte superior que se ignora. Esto da el mismo gráfico que en la
Figura 6.1.

Usando el método de cálculo 'simular'

Este método también lee los datos de un archivo, esta vez el archivo especificado por el archivo de datos palabra
clave. La parte relevante del archivo de entrada se ve así:

ESPECIACION
cálculoTipo "simular"
método de cálculo 1
archivo de datos FeSimulate.txt
logVariableIn 0
dependienteVariableColumnaCalc 2
numericTags <log_H> = - <pHin>
...
customXColumn 3

El FeSimulate.txt archivo tiene este aspecto:


56 Guía PhreePlot

pHin
2.0
2.1
2.2
2.3
...
12,0

Tenga en cuenta que, en cuanto al archivo de bucle, este archivo tiene una fila de encabezado que define una serie de
etiquetas, una por columna. Si bien la fila de encabezado es opcional para el archivo de bucle, es obligatoria para este
archivo de datos. Aquí el < pHin> se define la etiqueta que se utiliza en la definición de < log_H>. El logVariableIn
También se debe incluir la palabra clave (una lista de 0, 1 o -1) para indicar el número de columnas en el
archivo de datos y si se requieren transformaciones de datos. Aquí, un solo 0 indica una columna sin
ninguna transformación en la entrada.

También es necesario definir dónde se encuentra la variable dependiente (el valor calculado) en el archivo
de salida principal seleccionado; esto se hace con el dependienteVariableColumnaCalc palabra clave. El customXcolumn
también debe configurarse. Este es el único tipo de trama que utiliza la 'pts'
archivo en lugar del ' afuera ', para trazar y este archivo tiene un formato ligeramente diferente del' afuera 'archivo
que consta del número de línea del archivo de entrada, los valores calculados y todas las variables leídas
desde el archivo de datos, ya sea que se hayan utilizado o no.

Bucle sobre dos variables

También es posible trazar varias curvas en el mismo gráfico utilizando dos variables de bucle. un
salto de línea es normalmente el siguiente archivo ( FeSolubilityXaxisLoop.ppi) Haz esto:

ESPECIACION
cálculoTipo "personalizado"
método de cálculo 1
xmin 2
xmax 12
loopmin -4
loopmax -1
loopint 1
looplogvar 1
resolución 101
depurar 0
numericTags <log_H> = - <x_axis>
TRAMA
plotTitle "Solubilidad del Fe (OH) 3 (a) frente al pH"
xtitle "pH"
ytitle "log <sub> 10 </sub> Fe <sub> T </sub> \
(mol / kgw) "
etiquetas "10 <sup> -4 </sup> M F" \
"10 <sup> -3 </sup> M F" \
"10 <sup> -2 </sup> M F" \
"10 <sup> -1 </sup> M F"
pymax 0
customXColumn 1
color de linea azul
useLineColorDictionary 0
legendTextSize 2
etiqueta 1,5

QUÍMICA

ETAPAS
Fix_H +; H + = H +; log_k 0

SELECTED_OUTPUT
restablecer falso

USER_PUNCH
títulos pH FeT_
10 PUNCH -la ("H +"), log10 (TOT ("Fe"))

SOLUCION 1
pH 1.8
unidades mol / kgw
Fe (3) 1e-1
Ejecutando PhreePlot 57

Fe (OH) 3 (a) solubilidad frente a pH


(usando etiquetas x_axis y loop)

0
Fluoruro
10- 4 MF
10- 3 MF
-2 10- 2 MF

log 10 Fe T ( mol/kgw)
10- 2 MF
• 10- 1 MF

-4
10- 1 MF

-6

10- 4 MF
10- 3 MF •

-8
2 4 6 8 10 12
pH

C: \ PhreePlot \ demo \ Fesolubility \ Fesolubilityxaxisloop1.ps

Figura 6.2. Solubilidad del óxido de hierro amorfo en función del pH y la


concentración de NaF calculada utilizando < x_axis> y < bucle> variables.

N/A <bucle>
F <bucle>
EQUILIBRIUM_PHASES 1
Fix_H + <log_H> NaOH 10
- force_equality verdadero
O2 (g) -0,677
Fe (OH) 3 (a) 0 0
FINAL

Es similar a los otros archivos, pero tiene la etiqueta <x_axis> para controlar el eje x (pH) y la etiqueta
<loop> para controlar las concentraciones variables de Na y F. El bucle <loop> oz agrega una línea en
blanco al final de cada iteración. Estos se interpretan como saltos de línea por las rutinas de trazado
personalizadas que luego los trazan por separado con diferentes colores de línea (Figura 6.2). El etiquetas
La palabra clave proporciona una lista de nombres a utilizar para etiquetar las curvas y producir la leyenda.

Si se desea una gráfica separada para cada valor de la variable de bucle z en una gráfica personalizada de valor de z
múltiple, establezca customLoopManyPlots para VERDADERO. También hay parámetros adicionales para elegir si agregar el
índice de bucle a los nombres de las etiquetas para permitir que las curvas se distingan en gráficos de bucles múltiples.

6.2.4 Bucle en archivos de entrada de simulación múltiple: simulaciones previas al bucle y bucle principal

Introducción

Debían tomarse decisiones sobre cómo PhreePlot se ocuparía de archivos de entrada de simulación múltiple,
es decir, aquellos con más de uno FINAL palabra clave (asumiendo que el archivo termina con una FINAL). En principio, estos
archivos pueden ser de cualquier grado de complejidad y pueden incluir simulaciones completamente ajenas.

Debían considerarse dos aspectos.

En primer lugar, qué simulaciones se repiten y cuáles no. Obviamente, existe una penalización de tiempo y
desorden en la repetición de operaciones invariantes que no tienen que repetirse, como la lectura en una base
de datos. Esto condujo al concepto de simulaciones previas al bucle (una sola vez) y bucle principal
58 Guía PhreePlot

Simulaciones (repetidas).

Además, cuando se necesiten ejecutar varias simulaciones, ¿deberían alimentarse a Phreeqc uno a la vez o todos juntos. PhreePlot
solo puede actualizar etiquetas y realizar sustituciones en el archivo de entrada cuando el control se devuelve a sí mismo
entre ejecuciones.

En segundo lugar, qué resultados de las diversas simulaciones se recogen y se envían a los distintos
PhreePlot archivos listos para ajustar, trazar, etc. Algunas simulaciones no producen resultados útiles mientras
que otras producen una o más líneas de resultados útiles.

El formato de la salida producida por un bloque de código dado puede depender de si las
simulaciones se ejecutan una por una o en una sola ejecución.

Controlar estos aspectos de la entrada y la salida es la clave para ejecutar PhreePlot exitosamente.

Estructura básica de un archivo de entrada Phreeqc de simulación múltiple

Cada Phreeqc La simulación en un archivo de entrada se numera consecutivamente de arriba hacia abajo, 1, 2,
3, ... Un archivo de entrada de múltiples simulaciones puede verse como una serie de una o más simulaciones contiguas
o 'bloques' de simulaciones. Por tanto, un bloque de simulaciones se define mediante una serie de simulaciones.

En muchos casos, PhreePlot considera que el archivo de entrada es un solo bloque, pero también puede
tratarse como una serie de bloques no relacionados. Esto es posible con el ' encajar ' y ' simular 'tipos de cálculos
donde cada línea de datos (cada' observación ') en el archivo de datos asociado puede apuntar a un bloque
diferente de Phreeqc código.

Cada bloque se trata en sí mismo como si tuviera dos partes: (i) la parte superior consta de cero o más
simulaciones de 'pre-bucle', y (ii) la parte inferior consta de una o más simulaciones de 'bucle principal'.

Los dos más íntimos PhreePlot los bucles (los bucles de los ejes y y x) actúan solo en las simulaciones del
bucle principal. Esta división entre los dos es designada por el bucle principal ajuste que es el número de
la simulación en el bloque que comienza a contar desde la parte superior del bloque, es decir, el punto de
inicio del bucle.

El valor predeterminado es ' ultimo 'que establece automáticamente bucle principal al número de la última simulación en el
bloque. Configuración bucle principal a 1 significaría que todas las simulaciones de ese bloque se tratan como
simulaciones de bucle principal.

Gran parte de este comportamiento está oculto cuando se ejecuta PhreePlot en modo normal pero configurando depurar
a 1, 2 o 3 hará que más o menos de la ruta de cálculo se escriba explícitamente en el archivo de registro.

Las siguientes decisiones se tomaron en base a la cálculoTipo .


Para cálculos personalizados, de especies y de tipo predominio, se supone que el Phreeqc El archivo de
entrada está escrito para realizar un único conjunto de cálculos y consta de cero o más simulaciones
iniciales para configurar la base de datos, realizar cálculos de solución iniciales y definir otras
configuraciones estáticas. Esto es seguido por una o más simulaciones que estarán sujetas a los ejes Y y X
PhreePlot mecanismos de bucle. Cualquier simulación que contenga una etiqueta que se espera que
cambie en cada iteración debe estar en este último bloque. Esta división en simulaciones de 'pre-bucle' y
'bucle principal' se especifica con el bucle principal palabra clave que especifica el número de
Phreeqc simulación en la que comienza el bucle principal.

En un archivo de entrada de simulación múltiple, PhreePlot el bucle solo se aplica a las simulaciones numeradas desde bucle
principal adelante. Se supone que las simulaciones anteriores a esto son simulaciones "previas al bucle". Cada una de
estas simulaciones previas al ciclo se ejecuta individualmente y el diccionario de etiquetas se actualiza entre ejecuciones
(Figura 6.3). Esto significa que las variables de etiqueta se pueden pasar de una simulación a la siguiente en estas
simulaciones previas al ciclo.

El 'bucle principal' itera lo más rápidamente posible sobre los bucles del eje y y del eje x. Este ciclo se ejecuta con gastos
generales mínimos y está diseñado para los cálculos más repetitivos. Todas las simulaciones de este bucle principal se
ejecutan como un único Phreeqc ejecutar para que no haya posibilidad de utilizar etiquetas creadas en una simulación
en la siguiente. Las etiquetas se actualizan una sola vez y luego se ejecuta todo el bloque de simulaciones.
Ejecutando PhreePlot 59

loopSimulationStartNumber = 3 loopSimulationStartNumber = 4

bucle de especies principales

bucle en z

# Simulación 1 # Simulación 1
... ...
Simulaciones 'pre-loop'
FINAL* FINAL*
Ejecuta estas simulaciones
por separado para cada combinación de los
bucles z- y de especies principales
# Simulación 2 # Simulación 2
Simulaciones 'pre-loop'
... ...
Ejecutar estos individualmente
FINAL* FINAL*

# Simulación 3 # Simulación 3
Simulaciones de 'bucle principal' ... ...
Ejecute estas simulaciones juntos FINAL FINAL*
como una 'carrera' para
cada combinación de # Simulación 4 # Simulación 4
variables de los ejes xey ... Simulación de 'bucle principal' ...
FINAL* FINAL*

* = escribir la salida seleccionada y actualizar las etiquetas aquí

Figura 6.3. Dos ejemplos para ilustrar cómo bucle principal define la división entre las simulaciones 'pre-bucle' y las simulaciones del 'bucle
principal' en las que operan las variables de los ejes xey. En este ejemplo, la diferencia controla el número de veces que se ejecuta la simulación 3 y, en
consecuencia, cuando la salida seleccionada normalmente se escribe en el ' afuera 'archivo y las etiquetas actualizadas. El valor por defecto (' ultimo') es
para el bucle principal para recorrer solo la última simulación, como se ilustra a la derecha. Las simulaciones 'pre-loop' se ejecutan por separado y
secuencialmente. Por el contrario, las simulaciones de 'bucle principal' se ejecutan como un solo bloque sin actualización de etiquetas entre
simulaciones.

Las simulaciones anteriores ('pre-loop') se vuelven a ejecutar para cada valor de la especie principal y z-loop.

El valor predeterminado para bucle principal es ' auto 'que establece bucle principal al número de simulaciones
encontradas en el archivo de entrada, es decir, significa que el bucle solo tendrá lugar durante la última simulación.

Se debe tener cuidado con la salida seleccionada cuando se repite más de una simulación. A USER_PUNCH El bloque
de datos ingresado en la simulación, por ejemplo, permanecerá activo en las simulaciones posteriores, a menos
que se apague específicamente con el - salida_seleccionada identificador en el IMPRIMIR bloque de datos. Si el USER_PUNCH El
bloque de datos se redefine en simulaciones posteriores, entonces la salida puede volverse confusa ya que no se
escribe una nueva línea de encabezado en el ' afuera ' expediente.

Con archivos de entrada de simulación múltiple, selectedOutputLines controla la cantidad de salida seleccionada
que se envía realmente al ' afuera ' expediente. El número especificado se refiere al número de líneas enviadas
desde el SELECTED_OUTPUT en la simulación elegida (el SELECTED_OUTPUT bloque con el número de usuario más alto).

Una ventaja de disponer que un bloque de simulaciones esté en el bucle principal en lugar de en el bucle previo
es que implica menos gastos generales que llamar Phreeqc por separado para cada simulación. Sin embargo,
algunos cálculos solo deben realizarse una vez y, por lo tanto, es mejor colocarlos en la sección previa al bucle.

El ' afuera El archivo 'se usa a menudo directamente para trazar y el desafío es terminar con un archivo bien
formado adecuado para trazar. Normalmente, debe ser una tabla rectangular con una fila de encabezado y
columnas de datos posiblemente con filas en blanco para indicar rupturas en los datos.

La excepción al comportamiento anterior es durante el ajuste y las simulaciones. El ' encajar ' y ' simular ' cálculoTipo Los
s no permiten la creación de bucles, ya que utilizan archivos de simulación múltiple para permitir la posibilidad
de realizar cálculos diferentes para cada punto de datos (observación) o conjunto de puntos de datos. Cada
punto de datos puede, en principio, elegir su propia gama de simulaciones y su propia
bucle principal parámetro. Esto permite optimizar varios tipos diferentes de cálculos dentro del mismo
ajuste ('optimización global'). La simulación o rango de simulaciones que se utilizará para cada punto se
especifica en una columna especial en el archivo de datos de ajuste, el mainLoopCol- umn . La ponderación
de los residuos se convierte en una consideración particularmente importante al mezclar
60 Guía PhreePlot

'manzanas y naranjas' de esta manera.

6.2.5 Cambio dinámico entre modelos Phreeqc (código)

A veces es necesario durante el bucle cambiar entre diferentes piezas de Phreeqc código para obtener la
salida requerida. Este cambio puede reflejar los resultados de una simulación anterior o el valor de alguna
variable de etiqueta.

El enfoque más flexible es diseñar una etiqueta para que sea la etiqueta de 'cambio' y luego usarla en el USER_PUNCH
código para calcular lo que se requiere y enviar la salida requerida a la salida seleccionada. Esto a
menudo se puede hacer posible utilizando el modo 'una simulación a la vez' (ver bucle principal) basado
en el hecho de que en este modo USER_PUNCH ' La salida ed de las simulaciones intermedias se convierte
automáticamente en etiquetas que luego se pueden utilizar en simulaciones posteriores. Además, esta
salida intermedia no se copia en el archivo 'out' y, por lo tanto, no interferirá con la salida utilizada para
trazar o ajustar. Entonces, una simulación puede calcular algo, presionar un valor de cambio en la salida
seleccionada y luego la siguiente simulación puede hacer el cambio en consecuencia, quizás incluso
repitiendo la simulación anterior con una entrada o salida ligeramente diferente.

6.2.6 Definición de la salida esperada en el archivo de salida seleccionado

Usar selectedOutputLines para definir el número de líneas (filas) que se leerán de la salida definida por el
objetivo SALIDA_ELECCIONADO (n) / PUNZÓN_USUARIO (n) bloque, contando las líneas de abajo hacia arriba. Establézcalo en 1
para elegir solo la última línea, 2 para elegir las dos últimas líneas, etc., o ' auto 'para elegir todas las líneas.
Durante el ajuste, el número de líneas seleccionadas se establecerá automáticamente en 1 cuando
un pase es FALSO y al dado por el número de observaciones en el archivo de datos de ajuste cuando un pase es VERDADERO.

Si el selectedOutputLines el valor es 0, no se realizará ninguna transferencia de datos. Esta opción se puede utilizar cuando PhreePlot
se utiliza para producir algún otro archivo de salida, como un archivo de impresión.

Para acumular la salida de todas las simulaciones en un archivo de entrada en un solo archivo de salida
seleccionado (y ' afuera 'archivo), establecer bucle principal a 1 y poner el SALIDA_ELECCIONADO (n) / PUNZÓN_USUARIO (n) bloque
en la primera simulación. Esto asegura que todas las simulaciones se ejecutarán en una sola ejecución y, por lo
tanto, fuerza la acumulación de todos los datos de salida en un solo archivo de salida. No utilice ningún otro
mecanismo de bucle, es decir, recorra todo el conjunto de simulaciones una vez. Sin embargo, tenga en cuenta
que las etiquetas solo se actualizarán y sustituirán una vez al comienzo de la ejecución.

Puede ser necesario definir una 'variable de ruptura' para forzar a las curvas trazadas a romperse entre
simulaciones. Esto se puede hacer con el sexto parámetro del dataSeparators palabra clave. Siempre que se
encuentra la variable de interrupción, se envía una línea en blanco al archivo de salida.

6.2.7 Ejecución de tiempos

Puede ser útil ver la diferencia entre los tiempos de ejecución para diferentes iteraciones. Esto se puede
hacer haciendo uso de la <sytime> etiqueta del sistema. Esto se inicializa a cero al comienzo de un PhreePlot
run y devuelve el tiempo acumulado en segundos para cada iteración a partir de entonces. Se puede
acceder mediante esta etiqueta en el USER_PUNCH sección. El tiempo necesario para cada iteración se puede
calcular utilizando el PONER / OBTENER mecanismo para ahorrar el tiempo de la iteración anterior y restarlo.

Por ejemplo, en un gráfico personalizado, agregue un código como

- títulos nexecute time dt


100 SI (EXISTE (1) = 0) ENTONCES PONER (0,1)
200 dt = <tiempo> - OBTENER (1)
300 PUNCH <ejecutar>, <sytime>, dt 400 PUT
(<sytime>, 1)

y monitorear en el ' afuera ' expediente. Para una gráfica de predominio, agregue algo como lo siguiente como
variables de 'acarreo' en el ht1.inc ( o similar) archivo.
Ejecutando PhreePlot 61

295 SI (EXISTE (1) = 0) ENTONCES PON (0,1) 296


dt = <tiempo> - OBTENER (1)
297 PUNCH "nexecute", <nexecute>, "time", <sytime>, "dt", dt 298 PUT (<systime>, 1)

299 nout4 = 3

y monitorizar en el archivo 'track' ( trk T). Si se desea un gráfico de este tiempo, configure otro archivo ppi
algo como

TRAMA
extradat hfo.trk
customxColumn nexecute
líneas dt
Tamaño de la etiqueta 0
leyenda texto 0
xaxislength 150

y ejecutar los dos junto con un archivo por lotes.

6.2.8 Acelerar los cálculos

A veces, los cálculos son notablemente lentos porque el cálculo de la solución inicial es una estimación
deficiente de la solución final. En estos casos, puede ser posible acelerar los cálculos significativamente
guardando el resultado del último cálculo y usándolo como punto de partida para el siguiente cálculo.
Esto hace uso de uno o más de los '_ MODIFICAR ' Phreeqc palabras clave.

Un escenario típico para preparar un diagrama de predominio sería:


# simulación 1 - preloop, una sola vez SOLUCIÓN
1
....
EQUILIBRIUM_PHASES 1
Fix_H + - 7 NaOH
- force_equality verdadero
O2 (g) - 45
- force_equality verdadero
...
GUARDAR SOLUCIÓN 2
GUARDAR EQUILIBRIUM_PHASES 2
FINAL

# simulación 2 - bucle principal, iterar aquí USE solución


2
USE equilibrium_phases 2
USE la superficie 2
EQUILIBRIUM_PHASES_MODIFY 2
- componente Fix_H +
- si - <eje_x>
- componente O2 (g)
- si <y_axis>
GUARDAR solución 2
GUARDAR equilibrium_phases 2
GUARDAR superficie 2
FINAL

Si están involucradas otras reacciones, como reacciones superficiales, estas también deben ser AHORRAR' d y
USAR lo haría de la misma manera. Este enfoque tiene más sentido para los cálculos de tipo cuadrícula, pero
también se puede utilizar para acelerar los cálculos de estilo "buscar y rastrear". Hace poca o ninguna diferencia
cuando la química es 'simple' y los cálculos son relativamente rápidos, p. Ej. demo \ Fe \ hfo.ppi.

Un ejemplo para demostrar este enfoque, FeAsS (cd-música) -mod.ppi, se da en el


C: \ PhreePlot \ demo \ FeAsS-cd-music \ carpeta.

Un enfoque similar usando RUN_CELLS también es posible.

6,3 P TIPOS OSIBLES DE CÁLCULOS Y GRÁFICOS

Los tipos de cálculos realizados y el tipo de parcela producida están controlados por el calcular
62 Guía PhreePlot

lationType palabra clave (Tabla 6.3).

Table 6.3. Types of calculations undertaken by PhreePlot

calculationType Use
makes one or more predominance diagrams using the ‘hunt and track’ algorithm. The
ht1 scope of calculations is given by xmin , xmax on the x axis and ymin , ymax on the y
axis. The step size during hunting and tracking is controlled by resolution . makes one
or more predominance diagrams using the ‘brute force’ or grid algo- rithm. The
grid
number of cells along each axis (nx = ny) is controlled by resolution .
custom any calculations requiring a series of straightforward iterations (default)
fit fitting model parameters to observations and plotting the resultant fit.
like fit but only calculates the fitted values rather than adjusting parameter values to
simulate
get a good overall fit
calculates the percentage or log concentration of all species present for a given ele-
species
ment in a well-defined system

La otra palabra clave crítica que debe incluirse en cada archivo de entrada es la de método de
cálculo que tiene los siguientes valores:

0 = do calculations but do not plot anything


1 = do calculations and plot everything from scratch

2 = don’t re-speciate or reprocess data but replot using existing plot data files

3 = as for 2 but goes back one stage further and reprocesses the output from speciation.

6.4 P REPARING THE SELECTEDOUTPUT FILE

6.4.1 Normal behaviour

PhreePlot receives output from Phreeqc via its selected output ‘file’ mechanism. Originally
Phreeqc had just one combination of SELECTED_OUPTUT and USER_PUNCH keyword blocks but this has
now been extended to any number of SELECTED_OUPTUT n and USER_PUNCH n blocks where the
integer n defines a specific combination. The main (default) selected output is n = 1, and it is this
file that provides the data that are extracted to the ‘ out ’ file.
Although the selected output file was originally a permanent file that could be accessed via the
operating system in the usual ways, one of the options with the Phreeqc library used in
PhreePlot is to make this transfer entirely in memory. Storing the results in memory reduces I/O
and speeds up execution. However, it does not leave a file to be inspected after execution has
finished. PhreePlot uses this memory approach when debug =0 but uses the permanent file
approach when ABS( debug )>0.

It is also often neater to turn off the default selected output using the - reset false option in the SELECTED_OUTPUT
keyword block. This minimises the transfer of unwanted data. If this option is not used,
default selected output variables, like ‘ state ’, ‘ simulation ’ etc. will be included in the output files.

The selected output ‘file’ (physical or actual) is constantly being overwritten with the results of
the last iteration. The ‘ out ’ file (see Section 5.4.4 ) accumulates the relevant lines (see selected-
OutputLines ) that are produced each time the selected output is ‘punched’ (once per iteration
of the USER_PUNCH block providing that it is not blank and that the output has not been turned
off with PRINT; -selected_output FALSE or SELECTED_OUTPUT 1; -active FALSE).

6.4.2 The use of the ‘headings’ identifier

The - headings line in the USER_PUNCH block defines the column labels that are output to the first
line of the selected output file. These column labels in turn are used to define the tag
Running PhreePlot 63

names for the variables that are automatically produced from the selected output.

Because of the way that headers are used to define variable names in PhreePlot and because of
the limitations of the PhreePlot function parser, the choice of header names is somewhat more
restrictive in PhreePlot than in Phreeqc. In particular, the following special characters
+ - /*()<>^\ can
cause problems. Quotes are not treated specially. Therefore quoted strings should not
be used for headings and spaces are not allowed within an individual heading name

– spaces are used as separators.

If one or more of the special characters is found, PhreePlot will replace each of them with a period
(.). This means that “ a+b ” and “ a-b ” will both be translated to “ a.b ”, leading to an error if both are
present. Providing that such degeneracy is avoided, the use of special charac- ters in headers
should cause no problem. The reporting of tag values in the log file and the use of column headers
in defining plot variables is based on the original names.

The list of column headings are associated in turn with each of the punched variables:

SELECTED_OUTPUT
- high_precision true
- reset false
USER_PUNCH
- headings pH Zn Cd ZnOam
- start
10 sorbedZn=SURF("Zn","Hfo")
20 totZn=SYS("Zn")
30 sorbed1=100*sorbedZn/totZn
40 mineral=100*equi("ZnO(a)")/totZn
50 punch -la("H+") sorbed1 60
sorbedCd=SURF("Cd","Hfo")
70 totCd=tot("Zn")*tot("water")+sorbedCd
80 sorbed2=100*sorbedCd/totCd
99 punch sorbed2 mineral

pH will head the column containing values of - la("H+"). Zn will head the column
containing values of sorbed1. Cd will head the column containing values of sorbed2. ZnOam will
head the column containing the percentage of Zn in the mineral ZnO(a).

The column headings are used by PhreePlot in four specific ways:

(i) to generate tag names like < pH>, <Zn> etc

(ii) to label the curves plotted in the main plot area (suppress with labelSize <=0) (iii)
to label the legend to the plot (suppress with legendTextSize =0)
(iv) to control whether the data column is to be plotted as points, lines, both or not at all.

If convertLabels is TRUE, then column headings are checked by PhreePlot to see if they are
consistent with Phreeqc chemical formulae format and if so are interpreted accordingly when used
as in-plot labels for the curves and in the legend. This means that numbers within the text string will
normally be interpreted as a stoichiometry and subscripted. A check is made to see if the numbers
could be interpreted as valences rather than stoichiometries. This checking is not particularly
thorough and some strings may be interpreted as formula when in fact they are not.

If certain characters are found in the heading which indicate that the string is not a formula
then this prevents the translation to Phreeqc formula format. These characters are:
¬~@?|!£$%^&*_’. Some of these (¬£) are non-plotting characters with ASCII encoding and so
they can be used to force interpretation as a non- Phreeqc formula on a one-off basis with-
out affecting the appearance in the plot, e.g. ¬Zn8 will plot as Zn8 rather than as Zn 8. How-
ever, these non-plotting characters should be used with caution as their behaviour is non-
standard and may be unpredictable. They are plotted using the Latin-1 character set.
64 PhreePlot Guide

Starting a heading with a lowercase character will force it to not be interpreted as a formula.

The backslash has special behaviour in a heading since on printing Phreeqc strips out the \ and the
following character from the name. It is therefore necessary to use \\\ if a backslash is wanted. In PhreePlot,
a backslash is also used to indicate that the next character is to be inter- preted as a Greek
character so \\\b in a heading would print the Greek character beta. Some examples which
demonstrate these rules are given in Table 6.4.

Table 6.4. Examples of how a Phreeqc column heading (label name) will be interpreted during plotting

Input Graphical output Interpretation

CH4 CH 4 normal Phreeqc formula (first character is uppercase)

cH4 cH4 not a formula (first character is not uppercase) Phreeqc

C(-4)H4 C(-4)H 4 formula but (-4) is a valence not a charge Phreeqc

C(-4) C(-4) formula as above

C-4 C 4- Phreeqc formula but -4 is treated as a charge


Non-printing character at beginning prevents interpretation as a Phreeqc
¬CH4 CH4
formula (ASCII encoding)
Phreeqc removes backslash and first character after it and the remaining is
\C(-4) (-4)
interpreted literally (it is not a formula)
the first \ removes the second \ and the remainder is interpreted as in the
\\C(-4) C(-4)
first example above
the first two \’s are removed leaving a single \ which indicates that the
\\\C(-4) ••••• next character should be treated as a Greek character (here chi). This
indicates that it is not a formula.

Remember that # and ; have special meanings in Phreeqc input files and should be avoided in
headings. Single and double quotes may also be interpreted in a special way in strings includ- ing
headings. Tags such as < sub>...</sub> will always be interpreted as indicated and so can be used to
force certain behaviour, e.g. % Zn<sup>2+</sup> will appear as %Zn 2+.

Unpaired quotes should not be used in column names. Strings enclosed in square brackets will be
stripped of the brackets and then interpreted literally.

Controlling the plotting of individual columns

Data from the selected output are accumulated in one or more output files. These files may then be
used for plotting the data.

The points and lines keywords (and their 2y counterparts) control whether points and/or lines are
selected for plotting. Properties of these points and lines such as colour, size or width are controlled
by a series of keyword lists such as lineWidth , pointSize (and lineWidth2y and
pointSize2y ). Each dataset selected to be plotted with points and lines has a corresponding
entry in a property list, or if the list is short, is either generated automatically (pointColor or
lineColor), or recycled from the existing list.
For example, if pointSize is set to 0.0 or the pointColor is set to ‘ nd ’ then no symbol will be drawn for
any of the selected point datasets. If pointSize is set to 5.0 3.0 and pointColor is set to red blue then
the symbols for the selected datasets will alternate red-blue-red-blue ... as needed with sizes
alternating 5, 3, 5, 3 ....

The six standard filled symbols can have a coloured rim with their colours and widths set by the
corresponding rimColor and rimFactor keyword lists.

Use of labels in a custom plot and the minimum text size

The labels are used for labelling the lines/points in a custom plot and its legend. The size of the
label text is given by labelSize . The minimum height of text is 0.01 inch and is reset to this value if it
is entered as a smaller positive value than this. 0.0 suppresses plotting of text alto-
Running PhreePlot 65

gether.

The headings can contain super- or subscript tags, e.g. H<sub>2</sub>O or Fe<sup>2+</sup>,
and Greek characters as per the normal rule (only to the first level – no superscripted Greek
characters are allowed).

Label headings must not be duplicated.

6.5 D EBUGGING

6.5.1 Types of problem

If a file has not run as expected or has crashed then some debugging is required. Providing that the
run has not returned an immediate error report giving the file:line:word location of a syn- tax error,
the input file must be syntactically correct and the problem must lie deeper. An audi- ble low beep
signifies a recognised calculation problem of some sort.

First check the screen and log files if present to see if there are any messages which might give a
clue to the problem. Then it is necessary to work out whether it is Phreeqc/ chemistry prob- lem or a
Phreeplot problem.

If the problem has failed on its first iteration of Phreeqc, there is probably something wrong with
the input file, either the PhreePlot part or the Phreeqc part.

It may be helpful to get the Phreeqc code working first by pasting the chemistry code into a
standalone version of Phreeqc, Phreeqci or Phreeqc for Windows. It will be necessary to
substitute values for all the tags before running the code.

PhreePlot problems should be reported to the address given on www.phreeplot.com.


The flags for ancillary output files such as the track file in the case of a predominance diagram
should be set to TRUE. Also make sure that all Phreeqc output is sent to the various log files by
ensuring that

PRINT; -reset TRUE

has been set in the Phreeqc input ( CHEMISTRY) section. If there are several PRINT data blocks in the CHEMISTRY
section, it is the value of the last one that is used. This is useful since several of the include files use - reset
false which means none of the normal Phreeqc output will be printed. Therefore during debugging,
providing the line above is included after the include file, reset will be set to TRUE and the Phreeqc output
will be sent to the Phreeqc output files without needing to edit the include file.

One this has been set, you can use debug = 2 or debug =3 to get a listing of all the Phreeqc
output copied to the file *. all ( see below). Examine this carefully making sure that all the expected
substitutions have been made properly. The values of all the tags just before execut- ing Phreeqc can
be found in the log file so it should be able to tell if it is a PhreePlot problem or Phreeqc problem.

You may just need a few iterations run. You can interrupt a run by pressing Esc and entering ‘ s ’ for
Stop.

When the run is crashing later on and the early runs look good, it is more likely to be a failure to
converge in Phreeqc. This is most likely to be due to a user error in setting up the Phreeqc
input file leading to extreme chemistry of some kind. Failure of Phreeqc on well-defined and well
setup problems is rare enough to be dismissed as the most likely explanation. However, failure of Phreeqc
to converge can be quite a common problem and is usually due to the cal- culations straying into
some region of ‘unrealistic’ territory. Occasionally the chemistry may be too complex and Phreeqc struggles
to find a solution – this can be tested by simplifying the problem including reducing the number of PHASES.

The problem is usually solved by tweaking the convergence parameters. The FeAsS.ppi exam- ple is
an example in which Phreeqc fails to converge in one place with the default convergence
66 PhreePlot Guide

tolerance. Relaxing the criterion from 1e-12 to 1e-10 solves the problem.

6.5.2 Checking the return status of a Phreeqc run

It is possible to check the status of a Phreeqc run by outputting the status return using the
<Phreeqc_status_0> tag
in a USER_PRINT or USER_PUNCH block. This system tag is automati- cally created
and updated after each run. The 0 reflects the thread number of the run. A status return of
zero indicates successful completion while a positive value gives the number of errors
detected.
In principle, it is possible to check the status of a run, take avoiding action if it has failed and
then rerun the simulation, all in one script. Fore example, it is possible to automatically switch
the chemical used to achieve the target value in an EQUILIBRIUM_PHASES block, see the
\demo\switch examples.

6.5.3 General approach to debugging

Debugging is an acquired skill and some general principles apply whatever the language.
David Agans has nine general rules for debugging. In a review of Agans’ book, David A.
Wheeler listed them as:

Understand the system: Read the manual, read everything in depth, know the fundamen-
tals, know the road map, understand your tools, and look up the details.

Make it fail: Do it again, start at the beginning, stimulate the failure, don't simulate the
failure, find the uncontrolled condition that makes it intermittent, record everything and find
the signature of intermittent bugs, don't trust statistics too much, know that "that" can
happen, and never throw away a debugging tool.

Quit thinking and look ( get data first, don't just do complicated repairs based on guess- ing):
See the failure, see the details, build instrumentation in, add instrumentation on, don't be
afraid to dive in, watch out for Heisenberg, and guess only to focus the search.

Divide and conquer: Narrow the search with successive approximation, get the range,
determine which side of the bug you're on, use easy-to-spot test patterns, start with the bad,
fix the bugs you know about, and fix the noise first.

Change one thing at a time: Isolate the key factor, grab the brass bar with both hands
(understand what's wrong before fixing), change one test at a time, compare it with a good
one, and determine what you changed since the last time it worked.

Keep an audit trail: Write down what you did in what order and what happened as a result,
understand that any detail could be the important one, correlate events, under- stand that
audit trails for design are also good for testing, and write it down!

Check the plug: Question your assumptions, start at the beginning, and test the tool.
Get a fresh view: Ask for fresh insights (just explaining the problem to a mannequin may
help!), tap expertise, listen to the voice of experience, know that help is all around you, don't
be proud, report symptoms (not theories), and realize that you don't have to be sure.

If you didn't fix it, it ain't fixed: Check that it's really fixed, check that it's really your fix that
fixed it, know that it never just goes away by itself, fix the cause, and fix the pro- cess.

The ‘divide and conquer’ rule applies well for solving PhreePlot- type problems. Simplify the
failing example until it works and then work forward, narrowing the range of possibilities until
the source of the error is found.
Sometimes it is the data that is giving the problem and the ‘divide and conquer’ approach can
Running PhreePlot 67

work well for that too. Split the data into two and see if both halves cause a failure. If only one half
does, keep dividing the failing half into two until the data giving the problem can be iden- tified.
Then work out what is special about those data.

Phreeqc rarely fails from programming errors or bugs but calculating predominance plots can
explore a large range of chemistries in terms of redox, acid-base, mineral stability, adsorption etc.
and only the best speciation programs are robust enough to complete such a challenging set of
calculations reliably.

6.5.4 Using the debug keyword

You often need to know exactly what is being computed especially when there appears to be a
problem. The higher the debug setting ( 0-3), the more information is returned to the screen and log
file. If there has been a failure in Phreeqc, the relevant Phreeqc output is normally sent to the log
file and echoed to the screen and so examining this output should be the first thing to do. The
exception to this is during the calculation of predominance plots with
debug = 0 when PhreePlot will record a NA species and attempt to battle on. In this case, setting
debug = 1 will induce PhreePlot to stop immediately it has detected an error.

In general, with the default (‘ auto ’) settings for the Phreeqc.0.out and all keywords, debug
works in the following way:

debug = 0 minimal diagnostic output

debug = 1 selected_1.0.out and Phreeqc.out produced

debug = 2 selected_1.0.out, Phreeqc.out and *. all produced


debug = 3 as for debug = 2 except that the input is echoed to the screen on each itera- tion
and the Phreeqc output is also inserted into the log file.

selected_1.0.out is
the SELECTED_OUTPUT file from the last iteration and if produced, will be found in
the working directory. Phreeqc.out contains the normal Phreeqc output from the last iteration
and is controlled by the Phreeqc PRINT keyword. A copy of this is also sent to the log file and
the screen.
Debug also controls the degree to which the input files are echoed to the log file. With debug
= 0, only the main input file is written. With higher debug levels, all include files and the
override.set file are also copied.
The file *. all file is generated with debug = 2 or greater, or when the all keyword switch is set to TRUE.
This accumulates Phreeqc.out from all of the iterations. This can produce a very large file but it is
the definitive record of all that Phreeqc has done. It may be necessary to change the - reset option
in the PRINT keyword block to - reset TRUE to ensure that all of the
Phreeqc output is written to the output file.

The log file will also give the value of many of the PhreePlot settings, including all the tag val- ues
and loop variables that have been generated. It will also have a copy of input to Phreeqc
after substitution. In the case of a failure, this should be checked for errors to make sure that
Phreeqc is receiving valid code. This input can also be seen on the screen by setting debug =3.

If Phreeqc fails (usually because of syntax or setup errors), then the Phreeqc output is usually
written to the log file and echoed to the screen, and calculations stop. The exception to this is that
with debug =0 and when calculating a predominance or contour plot, or when stopOnFail
is set to 0, computations continue unless stopped manually with the Esc key.

The selected_1.0.out file will indicate whether the expected output is being sent from
Phreeqc to PhreePlot. If Phreeqc has failed to converge, this file may not be formed properly.

6.5.5 The most common reason for a failure to converge

As mentioned above, Phreeqc is a very reliable and well-tested program and rarely fails to con-
verge given ‘reasonable’ chemistry. We have run it through millions of iterations without prob-
68 PhreePlot Guide

lems. However, it can be easily be made to fail if it is forced to make calculations under conditions
for which it was not designed, namely very high ionic strengths (e.g. above 5 mol/ kgw). Such
conditions can arise from rather benign starting conditions if the system is sub- jected to extreme
constraints. For example, at the extremes of pe, water decomposes leading to small volumes of
water remaining. This concentrates the initial solutes and Phreeqc may, not unreasonably, then fail
to converge. This is exacerbated at high temperatures. Therefore in non-obvious cases of failure
always check for high ionic strengths or diminishing volumes of water.

A second common failure is when a phase is designated to adjust the activity of some species but in
reality cannot. In the present context, this most often arises when trying to fix the pH by adding an
acid or base but choosing the wrong one. For example, trying to change the pH of a solution initially
at pH 3 to pH 9 by adding HCl is impossible. Phreeqc attempts to do this by adding negative
concentrations of HCl (removing HCl) but if there is not enough Cl in the system to do this, Phreeqc will
fail. For example,

PHASES
Fix_H
H+=H+
log_k 0
SOLUTION 1
units mol/kgw
pH 3
Na 1e-3
Cl 1e-3
EQUILIBRIUM_PHASES
Fix_H - 9 HCl
END

will fail. If the initial pH was 4, there is sufficient Cl available to be removed and Phreeqc
converges without difficulty. Of course, if NaOH is specified as the reactant, Phreeqc does not fail
even starting at pH 3.

Our problem is that it is neither always obvious what reactant should be used nor is it neces- sarily
possible to specify a single reactant to cover the entire range of conditions desired (this can be very
wide when constructing pe-pH diagrams). For example, redox reactions can pro- duce or consume
large amounts of acidity. So changing a sulphate-rich oxidising solution to a reducing one at a
higher pH may actually require acid not base to be added because of the large amount of OH-
released as a result of sulphate reduction.

One way around this problem is to try and arrange for it not to happen by starting at an
extreme pH such that addition of the specified acid/base will always succeed.

Alternatively, add a ‘large’ amount of the co-solute (here Cl-) such that the above balancing
reaction can always be used to withdraw negative quantities of HCl. More generally when ‘large’
is not known, add a relatively benign equilibrium phase such as NaCl such that it always
maintains a finite (but probably small) concentration of the co-solute to allow the required
removal to be achieved, e.g.
SOLUTION_MASTER_SPECIES
[Na] [Na]+ 0 23 23 [Cl]
[Cl]- 0 35 35

SOLUTION_SPECIES
[Na]+ = [Na]+
log_k 0

[Cl]- = [Cl]-
log_k 0

PHASES
Salt
[Na][Cl] = [Na]+ + [Cl]- log_k
0

Fix_H+
Running PhreePlot 69

H+=H+
log_k 0

SOLUTION 1
units mol/kgw
pH 3
Na 1e-3
Cl 1e-3

EQUILIBRIUM_PHASES
Fix_H+ - 9 H[Cl]
Salt - 12 [Na][Cl] dissolve
END...

By defining [Na] and [Cl] as new ‘elements’, there will be no additional side-effects arising from
reactions in which Na and Cl are involved. These new notional ions will be included in the
calculation of the ionic strength though this can be avoided by making their atomic masses
0.0. Adding ‘ dissolve ’ means that this action is only taken when needed, i.e. when Na needs to be
added – this becomes more important when simple Na and Cl are used as it prevents the
disappearance or ‘precipitation’ of Cl. Of course this approach does not actually reflect a plau- sible
reaction path.

An alternative approach is to run a simulation, then in the following simulation check whether Phreeqc
has run properly by testing the < Phreeqc_status_0> tag, then using this information either re-run
the original simulation or change it in some way and then rerun,
e.g. change the chemical used in EQUILIBRIUM_PHASES.
Using the - force_equality TRUE option in the EQUILIBRIUM_PHASES keyword block may be necessary to
ensure that the target value for one of the axis variables, such as Fix_H+, is reached exactly. This
setting should only be used for phases that are definitely present, not for condi-
tional phases. It may be helpful to use it for CO 2( g) at high pH but this can cause problems at low
pH.

There can be occasional lack of convergence to a reasonable solution brought about by exces-
sive mass transfers from one of the PHASES, e.g. of O 2( g) or CO 2( g). For example, the mass
transfers of O 2( g) required to fix the pe in most systems is rather small, usually much less than
0.1 mol/kgw and so unless there are compelling reasons otherwise, include a limited reservoir
size as the second parameter in the definition of a the activity of a phase (the default is large, 10
mol), e.g. use

EQUILIBRIUM_PHASES
O2(g) <y_axis> 0.1

rather than

EQUILIBRIUM_PHASES
O2(g) <y_axis>

or

EQUILIBRIUM_PHASES
O2(g) <y_axis> 10.

Similar comments apply to CO 2( g). High concentrations of carbonate (> 0.1 mol/kgw) can be created
when solutions above pH 10 are equilibrated with CO 2( g) at atmospheric partial pres-
sures or above. Even at lower pH’s, it may be necessary to limit the size of the CO 2( g) reservoir to a
value less than the default value of 10 moles. This can prevent rare problems in Phreeqc
convergence.

Limiting the reservoir in this way is part of the normal Phreeqc setup. No error is triggered by
Phreeqc when the target phase activity is not achieved because of insufficient reservoir size.
Therefore care is necessary with the setup to ensure that what is being calculated is what is
required.
70 PhreePlot Guide

6.5.6 Changing Phreeqc’s convergence parameters

It is occasionally necessary to alter the default KNOBS settings in Phreeqc to get convergence.
We have found the four most critical options to adjust are - iterations, -convergence_tol- erance, step
and - pe_step_size. The ‘nuclear’ option for testing would be to set KNOBS as:
KNOBS
- iterations 1000
- convergence_tolerance 1e-10
- step 3
- pe-step_size 1.5

The - high_precision setting should be changed from TRUE to FALSE either in the ht1.inc file or by
redefining it later in the input file. Another KNOBS setting that can help convergence is:

KNOBS
- diag T

Note that KNOBS only applies to the simulation in which it is placed so if two simulations are used, as
is common in calculating predominance diagrams, KNOBS should be placed in the sim- ulation which
does the mass transfer calculations.

Another approach to solve the lack of non-convergence is to add the following fictitious spe- cies:

SOLUTION_SPECIES
H2O + 0.01e- = H2O-0.01; log_k -9.0

This can help convergence (see the Phreeqc_3 manual , KNOBS p 117) as demonstrated in the
demo\Cuedta example.

6.6 I NTERRUPTING EXECUTION AND CHANGING KEYWORD VALUES

PhreePlot can often be stopped or interrupted using the Esc key. This returns the following prompt:

Press "s" to stop, "i" for input or <CR> to continue

<CR> ( the Enter key) resumes execution, “ s ” stops the execution and “ i ” gives the following

prompt:

Enter keyword-value pairs/lists, "s" to stop or <CR> to continue:

at which keyword-value pairs or lists can be entered in the same way that they are entered for input
files. These new settings will take effect immediately on resumption of the calculations. No checking
on the reasonableness of the new settings is made and since it is clearly possible to cause great
confusion, this option should be used with care. A blank < CR> ends the input.

If the letter ‘ s ’ is entered, execution will be stopped as soon as possible. If a fit is being pro- cessed,
then execution will not stop until the calculations have been completed for a whole set of data
points. If a fit plot has been requested, a plot will be produced that reflects the best fit up to that
point. For other calculations, the stopping will be almost immediate.

If a run is stopped during the execution of a batch file, the next line in the batch file will be
executed. Control-break will enable execution of the whole batch job to be halted.
Pressing the ‘ p ’ key (case insensitive) during the execution of a ht1 or grid plot will write a plot
file, plot.ps, showing the progress of the calculations (this does not work for ‘ grids ’ plots). This
plotting can be automatically done on a regular basis by setting the plotFrequency key- word
to the frequency of the speciation calculations for which the automatic plotting is to be done.
The plot file will then be renewed every n ’th iteration. A message, ‘ File "plot.ps" written ’, is sent to
the screen whenever this file is written. This option can only be used when
Running PhreePlot 71

the multipageFile option is set to FALSE, i.e. a separate file is being created for each plot within a run.
This is because only one instance of the plotting routine can be in operation at any time (a single
thread) and multipage plots leave the plot file open between plots.

6.7 R UNNING THE STANDARD P HREEQC EXAMPLES

It is possible to run most of the Phreeqc example input files distributed with Phreeqc from
within PhreePlot.
These examples can usually be run using a minimal template such as:

calculationMethod -1 # calculate but don't attempt to plot


all T # accumulate output in *.all file

CHEMISTRY

include ".\examples\ex1"

The output will be sent to the directory from which the example is run and will include the
normal Phreeqc output in the *. all file.
The main challenge with these examples is to isolate the data that need plotting or tabulating
from that which does not. In most cases, the aim is to get a well-formed ‘ out ’ file. This can
usually be achieved with judicious use of PUNCH and the - selected_output switches in the
Phreeqc code, and the mainLoop , selectedOutputLines and dataSeparators in the PhreePlot
section.

6.7.1 Going round for just one iteration

In predominance plot calculations, it is useful to know the set of minerals that could theoreti- cally
form given the input chemistry and database used. Setting the resolution to 1, all to T
and ensuring that PRINT is TRUE in the Chemistry section automatically includes a commented block
of USER_PRINT statements in the cumulative Phreeqc output (*. all) that give a com- mented list of
all possible mineral species in the system being considered. This text can be pasted back into
an EQUILIBRIUM_PHASES data block and those which can realistically be expected to form activated
by un-commenting them.

6.8 R ETURN STATUS AND EXIT CODES

PhreePlot will normally give a return status of 0 if it has run without errors. If it returns with one or
more errors, the return status is normally 1. This can be useful when constructing sequences of
runs in a batch file or script.
For example, the following Windows batch file script will only run the second input file if the first
one exited successfully:
pp file1.ppi
IF %ERRORLEVEL% EQU 0 (
pp file2.ppi
)
72 PhreePlot Guide
Plotting basics 73

7 Plotting basics

7.1 I NTRODUCTION

PhreePlot will normally attempt to produce a plot after a run. The type of plot produced is
determined by the plot type, currently grid, ht1, custom, species, fit or simulate. See the appropriate
Sections below for details.
The Chemistry section of the input file largely governs the type of data generated. What is plotted
and its appearance is governed by a series of keyword settings. A full list of these can be found in
the pp.set file and are described in more detail in Section 14.

7.2 T YPES OF PLOT

There are six options for generating potentially plottable output. These are controlled by the
calculationType setting:

grid ‘brute force’ method for making predominance or ‘pe-pH diagrams

ht1 hunt and track method for making predominance or ‘pe-pH diagrams

contour 2D contour plots


custom direct plotting of output from the SELECTED_OUTPUT file (the default)
species plotting species distribution plots, e.g. % species vs pH

fit calculating and plotting the fit of observations to a Phreeqc chemical model.
The observations and associated independent variables are read from an
external file.

simulate similar to fit but without the observations and so no fitting.


There are only two basic types of plots: (i) an x-y filled-area plot used for displaying predomi- nance
diagrams and contour plots, and (ii) an x-y plot with lines and points for displaying other data. The
two types of predominance diagrams use (i) while all the other types of calcu- lations use (ii).

It is possible to overlay lines and points on predominance plots but not vice versa.

In order to suppress the generation of any plot file(s), set plotFactor to 0.0 or use a negative
calculationMethod .

7.3 S UMMARY OF BASIC PLOTTING

7.3.1 Introduction

A plot can be produced directly after the generation of the data or by replotting an existing plot
without generating the chemical data a second time. This is governed by the calculation- Method keyword.

7.3.2 Setting up the plotting area

A plot is positioned on a notional piece of paper. The size of the paper is set with the paperSize
keyword. It can be either one of the ISO sizes (A0-A5, B4-B5), US sizes (Ledger, Letter or Legal)
or Note. This should be set to your preferred units in the pp.set file.
74 PhreePlot Guide

The pageOrientation can be set to 0 (portrait) or 1 (landscape).

It is simplest if all dimensions use the same units as defined by the units keyword. The units can be ‘ mm
’, ‘ inch ’ or ‘ pt ’. The units used during plotting are determined by the last set value of the units keyword
as read from the various input files. This applies to any features defined in the extraText or extraSymbolsLines
files. This is best set in the pp.set file so that it is read in first and does not need to be reset. All of the
other default settings that use these units should also be changed in the pp.set file.

The font can be set for the document as a whole but the font used cannot be changed for indi-
vidual text strings except through the extra text mechanism. It is best to set your default font in the pp.set
file.

The plot area is set on this piece of paper. The bottom left-hand corner (‘origin’) of the plot area is
offset by xoffset from the left and yoffset from the bottom of the paper. The length of the x axis is
given by xaxisLength and the y axis by yaxisLength .

The colorModel used is either ‘ rgb ’ for red-green-blue, ‘ gray ’ for grayscale, or ‘ b&w ’ for black and white.
Colours for text, lines, symbols and fills are specified on the rgb scale by colour codes such as red4 and,
if necessary, transformed to the other colour models.

The background colour of the plot area (within the axes) is given by backgroundColor(1) . This
setting is less useful with predominance plots as they are normally completely filled with
colour (including ‘ white ’) anyway. The background colour of the whole page is given by back-
groundColor(2) .
plotFactor can be used to rescale everything plotted by a given factor.

7.3.3 Setting up the axes scales, tick marks and grid lines

The axis scales are set up by minimum and maximum values of the axes on user coordinate x- ( pxmin
, pxmax ) and y- scales ( pymin , pymax ) with the ‘p’ standing for ‘plot’. The first tick mark, a major tick,
for both axes is placed at the plot origin (bottom left-hand corner) by default but this can be
modified by the optional second parameter to pxmin or pymin which indicates the location of the
first major tick mark (and label). Major tick marks are then added at intervals of pxmajor and pymajor
and minor ticks at pxminor and pyminor . By default, minor axis ticks are plotted at the centre of
each major tick interval. The minor ticks can be turned off by setting pxmajor or pymajor to 0.

If any 2y lines or points have been specified, a second y axis (‘2y axis’) will be used on the right-hand
side of the plot with settings p2ymin , p2ymax , p2ymajor , and p2yminor . It shares a common x-axis
scale with the main y axis. It is used by specifying the lines2y or points2y
variables.

All or any of these settings can be set to ‘ auto ’ for automatic scaling based on the range of data being
plotted.

The colour of the axes is set with axisLineColor and the width with axisLineWidth . Four axes will
always be drawn, each with major and minor tick marks. Tick lengths are set with tickSize
and colour with tickColor . Separate tick sizes can be chosen for each of the major and minor x axes,
major and minor y axes, and major and minor 2y axes and up to six tick colours can be similarly
specified. The line width of the major tick marks is the same as the axis line width while the width of
the minor tick marks is half the axis line width. By default, the minor ticks are half the length of the
major ticks.

tickSize can also be used to specify the position of the ticks in relation to the axis – ‘ inside ’ or ‘ outside
’. Just add the ‘ inside ’ or ‘ outside ’ qualifier to the end of the list of ticksizes.
Grid lines can be plotted by setting the appropriate gridLines setting to TRUE or choosing a very
large tick size (more than half the length of the ‘other’ axis). These can be dashed if the
corresponding gridLineType style is greater than 1. Alternatively, a negative tick size can be used.
The appearance of the dashed line is also controlled by the gridColor and gridDashes- PerInch settings.
Plotting basics 75

7.3.4 Axis numbering and annotation

Axis numbers will be drawn at the major tick marks. The numbers of digits after the decimal point
are determined by pxdec , pydec and p2ydec . -1 means integer. These can be ‘ auto ’.

Very large and very small numbers automatically invoke scaling of the numbers using the
‘divide/multiply by a power of ten’ approach.
The size of the axis numbers is given by axisNumberSize and their colour by axisNumber-
Color .
Axis titles are given by xtitle and ytitle along with axisTitleSize and axisTitleColor . An optional
second string for the axis title is put after any ‘divide by a power of ten’ scaling so that the units can
be correctly placed to give dimensionless scales.

An overall plot title is given by plotTitle , plotTitleSize and plotTitleColor . This is centered above
the plot.

7.3.5 Adding fills, lines and points

Fills can only be added in predominance and contour plots. Lines and points (or symbols) can be
added to these plots or more commonly used to generate their own ‘custom’ plots. All this plotting
is controlled by reading data from files, either from files generated during the run or from existing
files. These files are all ASCII files and so can be viewed and edited with a text editor. These files
should normally be in a spreadsheet-type format in rows and columns. They should have a header
row which is used to name each column. The separators can be specified as spaces, tabs or
commas.

Predominance plots maintain a fillColorDictionary which holds the colour to use for each
species. If the dictionary is not initially present or a species not found, a sequence of pale fill
colours will be automatically generated and used. The fill colour dictionary will always be
updated with the colours used at the end. A labels file is also generated with the positions of
the labels used. This can be edited to move the labels.
Contour plots normally derive their properties from a series of lists, one value for each con- tour,
specified by settings such as contourFillColor . These lists are recycled if they are shorter than
required.

points , points2y , lines and lines2y are used to specify the lists of custom data series to plot. The
names used are the column names normally from the outfile though data series from extra files can
be added with extradat providing that they share a common x-axis name given by cus- tomXcolumn
name. Column numbers can also be used for specifying a column starting with the outfile and then
the extradat files in the order specified.

Points are plotted with symbols, some of which are ‘filled’ symbols which have separate fill and rim
colours. The filled colour can be white and so when combined with a coloured rim , can give the
appearance of open circles. Point size(s) are determined by pointSize and colour(s) by
pointColor . The colour(s) for points from data series for which the colour has not been defined
by pointColor are either automatically selected based on a rotating 15-colour pallette or are
taken from the line colour dictionary depending on the useLineColorDictionary set- ting.

All lines are drawn with a thickness given by lineWidth . Negative values will give dashed lines. The
dash density is given by dashesPerInch . As with the points, the starting line colour(s) are either
determined by the lineColor setting and then automatically follow the default sequence, or are
taken from the line colour dictionary.

The line colour dictionary also contains information about the in-plot position of labels for the lines
and can be edited and replotted accordingly. labelSize and labelColor can be used to adjust the
appearance of the labels or turn them off completely. Label names for lines are auto- matically
generated from the column names but can be overridden with the labels keyword.

It is possible to synchronise the point and line color for the same data series with points-
76 PhreePlot Guide

SameColor .
A simple legend with an optional legendTitle and legendBox is automatically drawn to the right of
the plot. It can be turned off by setting legendTextSize to 0. The position of the leg- end can be
moved with a line of text or extraText file.

Additional lines, points, symbols and text can be added to a plot with extraLinesSymbols , text
and extraText as described in more detail below. Points or lines from additional files can be added
with extradat .

7.4 C ONTROLLING THE STYLE OF LINES AND POINTS (SYMBOLS) IN C USTOM


PLOTS

7.4.1 The default style and colour for lines and points (symbols)

Each lines variable has a lineType associated with it. This defines the line style and is specified by a
number from 1 to 20:

1 solid line

2-10 dashed line with an increasing proportion of space 11

dotted line

12-20 dot-dashed line with an increasing proportion of dash

The appearance of a line can also be changed with lineColor and lineWidth as described below.
There are 2y equivalents of these keywords.

Similarly, the symbol styles of points are defined by their respective pointType . See below for a
description of the symbols.

Each dataset (lines, points, lines2y, points2y) has its own list of 15 colours. These are picked off one
by one as needed. Specifying specific colours in an input file promotes that colour or colours to the
top of the list.

Each list starts with the same default list of colours. This is:
red
blue
green
orange
cyan
magenta
brown
sky
purple
gray
yellow
maroon
lawn
spring
black

So by default, the first colour to be used will be red, the second blue, etc. The default colour
density is 4, i.e. red4, blue4, ...
The various colour keywords such as lineColor provide a mechanism for promoting a colour to the
top of the list.

l ineColor purple green


means that the line colour list becomes:
purple
green
red
blue
orange
cyan
magenta
Plotting basics 77

brown
sky
gray
yellow
maroon
lawn
spring
black

Once the list is exhausted, it is recycled but the colour density may also be cycled 4, 6, 8, 2,
4... depending on the changeColor setting. Points are plotted after lines and may inherit the same
colour as the corresponding line by using the pointSameColor setting.

7.4.2 Lines

Line styles

The line style pattern is defined by a number in the range 1-20. These are shown in
Figure 7.1 using a dash density of 5 dashes per inch. The demo file, \ demo\linestyle\linestyle.ppi,
can be used to generate a figure similar to that below for a range of dash densities.

5 dashes per inch line


width = 0.02 inch

10

11

12

13

14

15

16

17

18

19

20

Figure 7.1. Examples of the 20 line style patterns available. These are specified with
the lineType , lineType2y , contourLineType or gridLineType settings. The appearance
can also be altered by varying the dash density ( dashesPerInch ), line width ( lineWidth )
and line color ( lineColor ) settings, and their 2y and grid rela- tives.
78 PhreePlot Guide

Automatic colouring of lines and points

The colour of lines and points are automatically selected based on the amended colour sequence in
effect (see above). The colour picked is determined by the position of the variable being plotted in
the input list ( lines , lines2y , points , points2y ) and the position of any colours specified explicitly in
the corresponding colour setting ( colorLines , colorLines2y , colorPoints ,
colorPoints2y ) if necessary taking into account the recycling rules, e.g.
lines pH Ca Mg Na K lineColor
purple green

will give the following colours: pH = purple4, Ca = green4, Mg = purple4, Na = green4, K = purple4.

Colours can be set multiple times to force a particular colour. Rims for open-filled symbols also have
their own colours that follow the same colouring rules.

Sometimes there are subsets of data with the same heading. This occurs where a line break (blank
line) in the data file has been found. The colour for all lines from this column will fol- low the colour
selected above but the colour density will change if the colour was specified without a colour
density (no number at the end, e.g. red) and if changeColor is TRUE. If the colour is specified explicitly
as red4 then this will always be used with no change in density.

‘ auto ’ can also be used as a colour. This will cause different colours to be used following the
colour sequence in effect. ‘ nd ’ (‘not drawn’) is also a colour that is distinct from the back-
ground colour.
When there are multiple plots/datasets per run, restartColorSequence controls whether the line
color sequence for auto-generated colours is restarted from the beginning of the sequence for each
plot/dataset.

Colours can also be controlled explicitly with the line colour dictionary ( Section 7.9.4 ). All points and
line segments within a given sequence will have the same colour. If different attrib- utes are wanted
for each point or line segment, use an extraSymbolsLines file.

The selection strategy outlined above is followed for the colour of all lines and points, y and 2y.

7.4.3 Points (symbols)

Symbols can be plotted to represent the data points in a curve. The symbol used is specified with
the pointType keyword and can be specified by a number or a name. The available sym- bols and
their symbol codes are shown in Appendix 3 and Figure 7.5 .

The six standard filled symbols and their code numbers are:

1 filled circle
2 filled square

3 filled triangle

4 filled upside down triangle

5 filled diamond

6 filled octagon

The list of symbols is recycled as needs be. The default symbol type is 1.

If pointsSameColor is FALSE, pointColor controls the colour of the symbols using the point colour list
as for the lines described above.

If pointsSameColor is TRUE and lines are plotted, the symbols will always have the same colour as
their corresponding lines irrespective of the pointColor setting.
Plotting basics 79

There is no guarantee that all symbols will be centered exactly though the first six should be. The

size of symbols is specified by the pointSize keyword list.

Filled symbols can have a separate rim colour ( rimColor ) and rim width specified as a fraction of the
corresponding symbol size ( rimFactor ). This enables open circle symbols to be specified. If these
lists are short, the values are recycled.

The minimum size of positively-sized symbols is set to 0.01 inch. A size of 0.0 suppresses plot- ting
of symbols.

7.4.4 Order of plotting of lines and points (symbols)

The general order of plotting of lines and points (symbols) is controlled by the plotOrder key- word.
The default is lines then points. Within a given class, e.g. ‘lines’, the order of plotting of individual
lines is controlled by their order of definition in the keyword in the input file(s).

The order of plotting affects any overprinting - the last plotted will appear on top.

Although plotOrder does control the order of plotting of separate sets of lines and points, when the
same variable is plotted as both a line and a set of points, the line is always plotted first. This means
that the points will always overprint the line.

7.5 L ABELLING PLOTS

Fields and lines in plots will normally be labelled, although the precise way this is done
depends on the type of plot and the various settings available.
Labelling of plots is important but it can be difficult to automate effectively. It is therefore always
possible to edit a ‘labels’ file to rename labels or to move their positions. Some details on the choice
of label names and their positioning is given below.

7.5.1 Label names and label position

Label names (up to 30 characters long) are automatically assigned a value depending on the type of
plot.

In ‘ ht1 ’ and ‘ grid ’ plots, label names are derived directly from the species names and x- and y-
coordinates of the label positions are approximately centered in the field. The species name is in
turn derived from the database and any changes subsequently made by the ht1.inc or sim- ilar file.
The labels file can be edited to change the label positions and/or the label attributes and the plot
replotted ( calculationMethod = 2). The plot should not be recalculated ( calcula- tionMethod = 3) as
this will recalculate the label positions and return them to their original positions.

The label position for predominance plots is, by default, placed near the centre of each field.
In custom and fit plots the positioning is more complex and an attempt is made to place the
labels in a legible place ( Section 7.10.3 ). This can take a lot of effort to calculate – a brute force
(simulated annealing) approach is taken. The time taken is broadly controlled by the
labelEffort setting ( 0-3). The second parameter, if present, provides an upper limit to the time taken
(in sec).

In custom plots, the centre of the label position is stored in the line colour dictionary which can be
edited and the plot remade. The label name can be edited in the same way. Automatic label
positioning is affected by the labelEffort setting.

Label names for each of the ‘curves’ (including a set of points) can be overridden with a list of names
given by the labels keyword. ‘label’ names are simply picked from this list one by one as required.
Multiple curves generated in the same iteration because of the presence of line breaks will be
picked first, then multiple values of the loop or z-variable, then any more ‘outer’ itera- tions. The list
is recycled if necessary. Label names for custom plots can also be read from the first column of the loopFile
if present though the labels setting takes priority if not null.
80 PhreePlot Guide

When labels are derived from column headings, these may be set in the input file or in the case of a
simulate or fit plot, from the column headings of the fit data file.

Label names are automatically tested to see if they are plausible Phreeqc chemical formulae and if
so, subscripted and superscripted appropriately. Whether a label name is interpreted as a formula
or not depends on its format ( Section 6.4.2 ). This conversion can be bypassed by set- ting convertLabels
to FALSE or by including a non-printing character in the label name ( Sec- tion 6.4.2 ).

Label names stored in the line colour dictionary and used as labels in plots and legends are
automatically appended with a special character when referring to the secondary (2y) axis. By
default this is a ‘*’ but this can be changed (see ytitle ). This character should not be used as the last
character in undecorated label names.

7.5.2 Overriding calculated label positions and angles

Sometimes it is necessary to omit a particular label from a plot or move its position or change its
angle.

For predominance plots, removing a label can be done by changing the relevant species num- ber
in the labels file to a negative number, e.g. change 4 to -4.

This can also be achieved in other plots by editing the line colour dictionary as described
above.
The label positions and angles can be changed by ‘nudging’ them with the nudge or nudgeFile
keywords. A nudge file is simply a collection of nudges. These specify either an incremental
shift (‘ diff ’) or an absolute position (‘ abs ’) for x, y and angle for a label. The justification of the
label string can also be set for the absolute definition.
These files should have a single header line (e.g. to remind yourself of the column headings)
followed by 6 or 7 columns of data in free format as follows:
plot labelno species_name type xmm ymm angle pos
auto 1 "H2(g) > 1 atm" diff1.2-6 16 0 # left-justified
auto 2 "O2(g) > 0.21 atm" diff1.25.516 1 # centered
1 0 “Fe+3” diff 4 6 0 2 # right-justified

plot refers to the sequential plot number (as given by the info block) of the file for which this

override applies. ‘ auto ’ or 0 means that it applies to all of the plots. labelno refers to the
sequential label position (see the log file) and is necessary because the same label can be used
several times in a plot. ‘ auto ’ or 0 means that it applies to all of the labels with the given label
name.
If the type keyword parameter is ‘ abs ’, this sets a new value for x,y coordinates and angle. The
position set by the coordinates is for the centre of the label in the units used for plotting (mm, inch,
etc). This contrasts with the labels file where the x,y coordinates are specified in terms of graph
units and so a nudge labels file can be useful for automating shifts in batch processing where
different coordinate systems are used. x and y are for the anchor position of the label; y is located
at the vertical centre of the label (when horizontal), and the angle is in degrees from the horizontal,
rotated clockwise. The seventh column, pos, is only used for ‘ abs ’ shifts and specifies whether the
anchor position given is for the left end of the label ( 0), middle ( 1) or right end ( 2).

If the type parameter is ‘ diff ’, then this does the same but specifies the shift in the position and angle
of the label from its calculated position. The pos column is not used.

The overrides only apply if the plot number and species name match that in a plot.

It is possible to delete a label from plotting by making the x-y coordinates off plot. A nudge file
can also be useful for rotating the labels for the water limits in predominance plots. The angle
for this is given in the log file.
Plotting basics 81

7.5.3 Legend

A legend is automatically is automatically drawn for custom plots .

Normally a simple legend will be drawn to the right of the plot. This shows the colour of the plotted
lines and symbols against their label names. The size of the legend text is controlled by
legendTextSize and the line thickness is the same as in the plot. The colour of the legend text is
controlled by legendTextColor .

The order of items in the legend is controlled by the plotOrder setting and the orders specified in
the lines and points settings in the input file(s).

The legend will not be drawn if legendTextSize is 0.0 or if all of the lines or symbols have the same
colour.

The legend and all labelling can therefore be suppressed by setting both legendTextSize and
labelSize to zero. Individual labels can be suppressed by setting their colour to ‘ nd ’ in the line colour
dictionary and forcing the dictionary to be used by setting useLineColorDictionary >
0.
A legend box can be drawn around the legend using legendBox .

The placement of the legend can be changed by specifying its position in a text line or extra- Text ’
file using the special < legend> option. < legend> is not like a typical tag but rather acts as a placeholder
for the legend contents.

This approach can also be used to suppress the legend by specifying its coordinates to be out- side
of the page area.

A legend title can be also be added by preceding the < legend> tag with text, e.g.

auto 9 -20 “<b>Concentration</b><br> mg/L<legend>” 1.5 blue

auto in
the line above means that the text will be applied to every plot. Any text after < leg- end> but
within the double quotes is ignored. The position of the legend can be automatically
controlled using the < pxmin> etc tags (see Section 7.12 ).

7.6 I NPUTTING TEXT STRINGS

7.6.1 Available fonts and character sizes

Fonts from the Helvetica, Helvetica-Narrow, Bookman, Avantgarde, Times, Palatino,


NewCenturySchoolbook and Courier font families are available (see font ). These are the eight font
families included in the 35 standard Postscript fonts. The regular, italic and bold faces of these
fonts can be specified with PhreePlot and should be able to be displayed and printed by
Postscript-conforming devices. The italicized ZapfChancery font is also available.
The symbol and dingbats fonts are also used for plotting Greek characters, symbols and vari- ous
icons.
All of these fonts are available with the standard Ghostscript distribution.

However, the fonts cannot be mixed. Only one of the font families can be specified for the main text
(in titles etc) although text enhancements such as bold and italic can be used. Text in other fonts
can only be written using the text or extraText mechanism.

The set of characters available within a font depends on the character encoding used. The
default is ‘ Latin-1 ’ which includes many of the accented characters of Western European lan-
guages plus a few other symbols. The popular Windows-1252 character set adds a few extra
accented characters to this (plus the euro sign) but is not available here. The alternative, ‘ Standard
’ encoding, includes all 7-bit ASCII characters plus a smaller range of extended char- acters
which depend on the setup of your PC. This standard set was the default character set in PhreePlot
until January 2014. The ‘ASCII’ encoding only includes the 7-bit ASCII codes (decimal 0-127)
which includes all the numbers, lower and upper case Latin alphabet, punctu-
82 PhreePlot Guide

ation as well as some special characters (as found on most keyboards). This was used in earlier (pre-
2014) versions of PhreePlot.

The size of characters can usually be specified by a character size parameter. These are nominal
character sizes and do not usually match the actual size of the characters as plotted. For exam- ple,
an uppercase ‘O’ in Helvetica font with a specified size (height) of 10 mm will actually be about 12.8
mm high. Other fonts will differ somewhat from this.

7.6.2 Available characters and inserting ‘special’ characters

Text is required as input for various options such as the plot title, axes titles and extra text. General
features of text input are:

All standard ASCII characters (32-126) are available including numbers, alphabetic characters
and some special characters. These include: \|! ”£$%^&̂*()_-+={}[]:;@~#<,>.?/. A space can be included
but when this is done, the entire text string must be included in single or double quotes, e.g.

“Zinc concentration” or ‘Zinc concentration’


The two types of quote should not be mixed. If a single quote character itself needs to be included
as well as a space, embed the text string in double quotes; vice versa for including a double quote
character. A warning will be given if an unpaired quote is found without being embedded in quotes.
In this case, the string will not be plotted. Note that the quotes should be of the simple vertical type,
not the angled open/closing quote marks beloved of word pro- cessors and their fancy fonts (as
here, so be careful not to copy/paste these!)

“It’s easy”

and

‘A double quote (“) can also be used.’

are acceptable.

It’s easy

and

(“)

are not. If in doubt, include the text string in paired quote delimiters.

Ultimately the fonts available to the printer and display device will determine which charac- ters are
available. In principle, most devices are able to print the standard ASCII set of charac- ters without a
problem. Example 68 provides a view of many of the available characters. The full range of
characters is determined by the encoding and can include accented characters .

Text strings can contain system and user-defined tags. These should be assigned values using the numericTags
or characterTags keywords or have their values assigned by PhreePlot.

If the character is not readily available on your keyboard or input device, then any valid char- acter
can be added to a text string by using a backslash followed by the 3-digit octal code for the
character from the character set in force (\000-\377). For example, using the Latin-1 encoding, 20¢
(twenty cents) can be entered as 20\242 since 242 is the octal code for cent (decimal 162). In order
to avoid backslashes being misinterpreted when wanted as such rather than being interpreted as
part of the octal code, enter them as double backslashes. They will print as single backslashes.

7.6.3 Text enhancements (bold, italic, subscript, superscript) and Greek characters

A certain degree of text enhancement is possible although the possible combinations are rather
Plotting basics 83

limited. The following tags are available for modifying the appearance of text. Case is signifi- cant.
All text enhancement tags should be in lowercase.

Most of the tags are paired and should be turned ‘on’ and ‘off’ in their nested order otherwise
unpredictable output may result.

Bold: < b>This is bold text</b>


Italic: < i>This is italic text</i>
Italic: < b><i>This is text</i></b> # N.B. tags must be properly nested
Superscript: e = m c<sup>2</sup>
Subscript: Ca(NO<sub>3</sub>)<sub>2</sub>

Sub and superscript: Sum <subsup>under over</subsup>


over
Subscript first then the superscript separated by a space. This gives Sum .
under
Greek strings: <g>abcdef</g> gives •••••• .

The mapping of lower and uppercase Greek characters is:

abcde fghij klmno pqrst uwxy


abcde fghij klmno pqrst uwxyz

ABCDE FGHIJ KLMNO PQRST ¡WXY


ABCDE FGHIJ KLMNO PQRST UWXYZ

An alternative way of getting a single Greek character is to precede the corresponding letter with a
backslash:

\a gives •

\mg/L gives • g/L

If a backslash itself is wanted and is immediately succeeded by a character, use two consecutive
backslashes or insert a blank enhanced string immediately after the backslash, e.g. \< i></i>p
will print \ p.
Characters embedded in a Greek string for which there is no translation to a Greek character will be
replaced by a space.

Break: < br> produces a line break. Each line is treated as a separate text string. Therefore any
other tags such as < b> </b> must be properly paired tags before and after any < br> and may
need to be repeated, e.g. < b>bold1</b><br><b>bold2</b>.
All but < br> are paired tags. If one of the pair is missing or has been mistyped or the tag has not
been recognised, that part of the string will be printed as is.

In most cases, text enhancement tags (i.e. Greek, bold, italics, subscript, superscript, subsuper-
script) cannot be embedded within one another, e.g.

<sup><i>this gives superscript but not italics</i></sup>

and

<b>this will not be bold<br>this will not be bold</b>

will not work and may produce incorrect output but

<b>bold</b><i>italics</i>
84 PhreePlot Guide

and

<b>bold</b><br><b>bold again</b>

will work. The exceptions are that bold can be used with other tags: < b><i>...</i></b> and
<i><b>...</b></i> will
both produce the bold-italic font and < b>Cu<sub>T</sub></b> will work as hoped.
Note that the order of the ‘off’ tags is important to maintain the correct nest- ing otherwise
unpredictable results may occur. Illegally nested tags will be ignored or incor- rectly
translated.
It is not possible to define subscripted superscripts such as a by
Fe 3+
a<sub>Fe<sup>3+</sup></sub> ( illegal)

or superscripted superscripts

a<sup>Fe<sup>3+</sup></sup> ( illegal)

or superscripted Greek characters.

It is not possible to enhance any Greek characters, e.g. Greek italics or Greek bold are not sup-
ported.

It is possible to embed many PhreePlot tags such as < loop> and < mainspecies> ( but not
<input>) between text enhancement tags since the text substitution has already taken place before
being interpreted for plotting:

“As = 10<sup><loop></sup>M”.

Ensure embedded spaces are enclosed using single or double quotes.

7.6.4 Accented and other ‘foreign’ characters - the Latin-1 encoding

The default or ‘Standard’ encoding is based on the ASCII 7-bit characters plus a variable num- ber of
characters from an ‘extended’ character set as found on many keyboards. Many Western European
languages have accented characters which are not in this set. These are found in the ISO-8859-1
character encoding which is similar to the Windows 1252 (Western European) character set minus a
few characters.

The Latin-1 character encoding is supported in Postscript and in the Postscript fonts supplied by
Ghostscript and many other Postscript interpreters. The full character sets are shown in
Appendix 4 .
There are two ways of entering accented and foreign characters not available directly from
your keyboard:
(i) most Windows text editors such as Notepad and Notepad++ support the Latin-1
encoding (and others) and accented characters can be entered by using Alt-num key codes.
This is done by holding the Alt key and then typing the decimal code for the character with the
numeric keypad including the leading zero, e.g. Alt-0200 for È. The editor must be con- figured to
view and export the text with the correct encoding (i.e. ISO-8859-1 or ANSI) which may not be the
default.
(ii) Postscript interprets 3-digit numeric strings preceded by a backslash as octal codes and
associates these with the appropriate characters according to the encoding in force, e.g.
\310 forÈ and \ 350 for è with Latin-1. So these octal codes can be included directly in
text strings, e.g. caract\350res europ\351ens for caractères européens.
The first method is probably better if the Latin-1 encoding is being used since this follows
closely the Windows encoding and so the text can be read and checked visually in the moni-
tor. The second method is less easily interpreted on-screen but avoids any problems with
encoding of the text from editor/monitor to Postscript. Internally, the extended characters are
Plotting basics 85

always replaced by their octal codes in the Postscript output.

The usual limit on the length of plotted text strings of 200 characters remains. This includes the
necessary replacement of the extended characters using their octal representation, i.e. each
extended character takes four ASCII characters. Long lines will either be truncated or any
translation aborted.

The default is to interpret text strings with the Latin-1 encoding. In order to enable the Stand- ard
encoding, use the font keyword

font Helvetica Standard

or to retain the current font

font Standard

The encodings for both ‘ Standard ’ and ‘ Latin-1 ’ encodings are given in Appendix 4 . Alterna-
tively visit a website such as http://en.wikipedia.org/wiki/ISO/IEC_8859-1 for Latin-1.
As well as the accented characters, umlauts and inverted marks, Latin-1 includes some other useful
characters such as the degree (°), plus-minus (±) and some common fractions. On the other hand,
the standard encoding has some characters that Latin-1 does not, such as the per- mil symbol and
the oe ligature.

7.6.5 Non-printing characters

It is sometimes useful to add a non-printing character to the plotted output. Postscript inter-
preters usually just ignore these characters.

Whether a character (decimal code) will print or not depends on the font and its encoding. With the ASCII
encoding, the ¬ (‘Not sign’) character does not print and is found on many keyboards. This does print with Latin-1
and Standard encodings so other characters are required. Characters not available on keyboards can be entered
with either of the two methods discussed above, namely Alt-num key codes and octal codes. Characters with
decimal codes from 129 to 159 (octal codes 201 to 237) may not be defined and are not normally printable but
avoid those before decimal 138 (octal 212) as these are used internally by PhreePlot.

7.6.6 Justification

This can usually be specified as either left, centre or right justified horizontally. The text is also
aligned on the text baseline (bottom of the letter a) though the exact position can depend on the
particular characters and font. Where a < br> is included, the x and y coordinates refer to the bottom
of the first (top) line.

For accurately centered symbols, use the extraSymbolsLines symbols rather than the extraText
symbol font.

7.6.7 Angle

The text can be rotated. The angle of rotation is given in degrees from the horizontal, rotating
clockwise.

7.6.8 Tags in text strings

Tags can be added to text strings and their values, if known, substituted at plot time. Tags gen-
erated during a run are not stored and so will be UNDEFINED on replotting.

7.7 S PECIAL P HREE P LOT VARIABLES OR TAGS

7.7.1 Available tags

A number of special variables, or tags, can be included in a PhreePlot input file or extra text file.
These are substituted by values or specific operations at run time. These are:
86 PhreePlot Guide

<x_axis> The current value of the x-axis variable The

<y_axis> current value of the y-axis variable The

<loop> current value of the loop (z) variable

<logloop> The current log10 value of the loop (z) variable The

<mainspecies> name of the main species

<legend> The entire legend key as used in the current plot Part of the

<input...> input file (only in text lines or extraText files) The value of

<pxmin> etc pxmin etc at plot time

<command_line0> etc The values of the command line arguments

In addition, several special tags are automatically produced during a fit which contain infor- mation
about the fit.

7.7.2 System pH, system pe and system temperature

Internally, PhreePlot needs to know certain system variables to convert from one yscale to another.
Sometimes this information is passed through standard PUNCH output formats, e.g. for
predominance plots ( ht1.inc etc), but sometimes it is not done automatically, e.g. for contour plots.
However, this information can be passed by PUNCH ’ing the appropriate columns and naming the
columns in a particular way. These three variables, pH, pe and temperature (Cel- sius) are
recognised by the column headings, “ pH ”, “ pe ” and “ TC ” (case sensitive), respectively.

7.8 A XIS SCALING

7.8.1 Auto or user-defined axis scaling

Axis scaling is set with keywords such as pxmin , pxmax etc. Axis scaling can either be auto- matic or
manual. A keyword value of ‘ auto ’ means that PhreePlot attempts to choose the axis scaling so that
all valid data in the data file are included in the plot and the tick intervals are at ‘pretty’ intervals.

Manual scaling by setting pxmin etc gives more control over the minimum and maximum range,
the numbering of the axes and the positioning of tick marks. It also enables ‘zooming in’ on
particular parts of the plot without recalculation though this is often better done by recalculating
with the new domain settings. Automatic label placement for lines is only carried out after a new
calculation.

The first major tick mark for both axes is placed at the plot origin (bottom left-hand corner) by
default but this can be modified by the optional second parameter to pxmin or pymin
which indicates the location of the first major tick mark (and label). The x and y axes are then
labelled every pxmajor (or pymajor ) graph units until xmax (or ymax ) is reached. There is a major
tick mark at each label. There is not necessarily an axis label at the maximum value. Additional tick
marks are calculated according to the value of the pxminor and pyminor .

When a plot has a max-min range of 0–100, say and a lot of data are at or close to 0., then this can
create a lot of untidy plotting and labelling close to the lower x axis. This can be avoided either by
removing the offending columns completely from the plot or by shifting the y-axis scale by a small
amount, e.g. to 0.001 and 100.001, respectively. This will remove the col- umns where all the data
are below 0.001 from both the plot and from the key. Of course, some information is lost in the
process. It is also possible to eliminate lines by setting the min- imumYValueForPlotting keyword at
an appropriate value.

If the scope of a predominance plot calculation (set by xmin , xmax etc) is changed and the plot is
replotted rather than recalculated then the scale and positioning of the polygon label- ling and axis
scaling will reflect the selected data from the original files and may appear some- what odd - not
much of the original data may be selected if the plot area is a small proportion
Plotting basics 87

part of the original area or if not many points are selected from the polygon file. The corre-
sponding polygon and label files should therefore be regenerated using ‘reprocess (labels) and
replot’ ( calculationMethod = 3) or ‘Calculate and plot’ ( calculationMethod =1) to ensure the correct
display of labels within the specified domain.

7.8.2 Secondary y axis (the 2y axis)

The left-hand vertical axis is the main y axis. The ticks on this axis are normally mirrored on the
right-hand y axis. It is also possible to define different scaling for the right-hand y axis (the
secondary or ‘2y’ axis) using keywords such as p2ymin , p2ymax , 2ytitle etc. Variables for this axis
are specified for this scale using points2y and lines2y keywords as for the main y-axis vari- ables. An
example in which the 2y axis is used as an expanded y-scale is shown in Figure 7.2.
Al solubility vs pH
(with 2y axis)

2 0.1

0 SI Gibbs*
0.0
log concn (mol/kgw)

-2 - 0.1

SI Gibbs
Gibbsite
Al 3+
-4 AlF 2+
Al T - 0.2

Al(OH) 4 -

-6
Al 3+
- 0.3
AlF 2+
Al(OH) 4 -
-8
Al T
- 0.4
Gibbsite
SI Gibbs*
- 10 - 0.5
2 4 6 8 10 12
pH

C:\PhreePlot\demo\Alvsph\Alvsph2y.ps

Figure 7.2.

The 2y title is plotted if any variables have been defined with points2y or lines2y . If 2ytitle is set to ‘ auto
’, the first variable name from points2y or lines2y is used. If labels or a legend are drawn, the names
of any labels referring to the 2y axis have, by default, an asterisk (‘*’) appended to their label name.
This modified name is also stored in the line colour dictionary. The asterisk can be replaced with any
single character using the third parameter of the 2ytitle
setting.

There is no corresponding minimumYValueForPlotting for the 2y axis.

7.9 C ONTROLLING THE PROPERTIES OF TEXT, SYMBOLS, POLYGON FILLS AND


LINES

7.9.1 Principles

Text, symbols, polygon fills and lines have various properties associated with them such as
type, size and colour.
88 PhreePlot Guide

Some of these are fixed by PhreePlot but many can be set in PhreePlot. However, the way that this
is done can depend on the type of plot involved – predominance plot, custom plot or contour plot.
These properties often take on default values specified in the pp.set file but many of the colours, such
as those for lines and symbols, can either be auto-generated or set more explicitly.

Some properties such as the colour of the plot title only have a single value and these are usu- ally
set by a separate keyword, here plotTitleColor . Other properties, e.g. those of lines and points
(symbols) in custom and contour plots, have an array of values, one for each separate line or set of
symbols.

In custom plots, these array properties are set in two ways: line and point colours are automat-
ically picked from a sequence of 15 colours including black while other properties such as line
width, point size and where appropriate, rim colour and size, are recycled from the list associ- ated
with the various keywords such as lineWidth , pointSize , rimColor and rimFactor . The principle here
is that some properties such as lineWidth are often constant within a given plot and so it would be
tedious to specify them for each line. Hence properties such as these only need to be specified once
and are then recycled.

However, it is often desirable to colour each line separately (within reason) and so here a longer list
is recycled. There is always a default and ordered list of colours associated with the plotted lines but
specific colours can be promoted to the top of the list to ensure that they are used first. Four of
these colour lists or sequences are stored, one for points (symbols), one for lines, and one each for
their 2y counterparts.

Lines of a particular dataset are always plotted before the points. This ensures that the points will
overwrite the lines.

The ways that these colour sequences are used and their interactions are controlled by three
keywords: pointsSameColor (ensures points have the same colours as any associated lines),
changeColor (individual datasets are plotted with different colours as far as possible), and
restartColorSequence – if true, restarts the auto-generated color sequence for each new plot and
for each new plot type (lines, points).

Colours from custom plots are stored in the line colour dictionary. This can be edited to
change the line and symbol properties (see useLineColorDictionary ).
With contour plots, the properties of each contour are derived from a corresponding list, e.g.
contourLineColor .
Fill colours used in predominance diagrams are also automatically selected from a colour sequence
but unlike line and point colours cannot be preset. They can however be changed by editing the fill
colour dictionary and replotting.

While the colours used are always stored with their Cohort colour names, the rendered colours may
be changed if the grayscale or black & white colour models are used.

Details about how to add additional text to a plot and how to format numbers is given in Sec- tion
7.12 .

7.9.2 The colour palette

Colours are defined using the Cohort rgb colour palette ( Cohort Software, 2004 ). This has 14
base colours, each one with 10 shades of increasing colour density or darkness (Figure 7.3)
plus ‘ black ’, ‘ white ’ and ‘ nd ’ (for ‘not drawn’). The base colours are centered on number 4,
e.g. ‘ red4 ’ is pure red. Numbers from 3 to 0 have increasing amounts of white in them while numbers
from 5-9 have increasing amounts of black in them. Therefore ‘ red0 ’ is the palest red (more like a
pink) and ‘ red9 ’ the darkest red. Colour names are not case sensitive.

A null colour string, ‘’, is interpreted as ‘take the next auto colour’ and so is different from
‘nd’.

If a colour name is not recognised, then black or white are used depending on the context
Plotting basics 89

(black for text and lines; white for fills).

Figure 7.3. The Cohort colour palette used by PhreePlot ( Cohort Software, 2004 ).

The actual colour of the plotted lines, fills and symbols will depend on the colorModel setting:
rgb for colour, gray for grayscale and b&w for black and white.

7.9.3 Automatic or explicit

The colour of text, symbols and lines can be explicitly specified in the input files. If this is not done, PhreePlot
will choose its own colours according to a set of rules. These are described below. The colours used
in the plots can be changed without recalculating the original plot. This is done either by specifying
or changing the relevant attribute in the input file or editing one of the colour dictionaries and then
re-running the problem with calculationMethod set to
2( just replot) or 3 ( reprocess and replot).

7.9.4 The colour dictionaries

There are two colour dictionaries which control the placement of labels and the colour of fills
and lines. The location of these is specified by the fillColorDictionary and lineColorDiction- ary settings
in the input files. Both files are automatically created and maintained by
PhreePlot but can be edited to change their settings, e.g. the colours, or in the case of the line
colour dictionary, the placement of the labels in a custom plot (repositioning/removing labels in a
predominance plot is achieved by nudging or editing the labels file).
The dictionaries are read in free format in the same way as the input files. The species name can
contain blank characters if embedded in single or double quotes. If the labels appear to be chemical
formula in Phreeqc format, sub- and superscripts are substituted as appropriate.
If the dictionaries are not present, then they will be automatically created with the name
spec- ified. Default names are ‘ fillColor.dat ’ and ‘ lineColor.dat ’.

Fill colours

The fill colours are used for the area fills of predominance plots and the line colours are used for
the lines in custom plots including fit plots. By default and in the absence of a fill colour dictionary,
or when the species is absent from the dictionary, the colour fill is chosen from a sequence of pale
colours (starting at sky1...). These default colours are overruled by settings in the fill colour dictionary.
The fill colour dictionary contains a list of the ‘species’ names (as returned by Phreeqc) and their
corresponding colours.
90 PhreePlot Guide

Line colours and auto line colouring

The line colour dictionary is used for custom and fit plots and contains a list of the label name,
x and y location (in graph coordinates) and colour of the various plotted lines. The col- ours
are only used if the line or symbol is plotted, and by themselves do not dictate whether this is
the case. For example, if a line has zero width or a symbol has zero size, it will not be plotted.

The line colour dictionary is used or created whenever a custom plot is made. If the file
already exists, then it may be used to determine the line colour associated with a particular
‘species’ if it is present.
The line colour dictionary consists of seven columns of data containing: the label name, x- and y-
plotting positions in graph coordinates and three colours, the first applies to the line colour, the
second to the points colour and the third to the rim colour of filled symbols, for each label. The last
column is the code number for the type of symbol used ( pointType ), 0 for no symbol. If a points
colour has not been defined, it will be written as a blank field ( “”). The x-position refers to the
horizontal centre of the label and the y-position refers to the baseline.

UNDEFINED refers to an undefined (‘not set’) coordinate, e.g. when labels are not plotted. An empty
string (“”) for a colour will force automatic selection of the colour, if necessary. This is the default
when the colour dictionary is rewritten and the when the point or line colour has not been set.

An example of a line colour dictionary is:

# label x y lines points rims symbol


"Cd+2" 9.7065 48.624 green4 red4 “” 0
"Cd2OH+3" 9.3670 - 3.5947 orange4 blue4 “” 1
"CdCl+" 8.1980 2.2705 cyan4 black “” 1
"CdCl2" 8.5480 - 3.5722 magenta4 nd “” 0

Whether the settings in these dictionaries are used or overridden in a custom plot is deter- mined
by the useLineColorDictionary and changeColor settings. If useLineColorDictionary
is 0, then the labels and line colours are either taken from the lineColor setting in one of the input
files or are automatically generated. The line colour dictionary is ignored. If useLine-
ColorDictionary is 1 or 2 then the line colour dictionary will be searched for the species being plotted
and if found will use the colour (= 1 or 2) and label position (= 2) from the line colour dictionary. changeColor
determines whether all the curves have the same base colour (=
FALSE) or
not (= TRUE). If changeColor is set to FALSE and useLineColorDictionary is 1, then the line
colour dictionary will take precedence.
If the species colour is not found or if useLineColorDictionary is 0, then a line colour will be
automatically selected according to the line colour sequence starting at the top of the list of colours
in effect at the time. The default sequence is:

red
blue
green
orange
cyan
magenta
brown
sky
purple
gray
yellow
maroon
lawn
spring
black

Yellow is not plotted by default as a line or point colour as it is often hard to see (it will be
included if explicitly given a colour density, e.g. yellow4). The sequence specified by this list is
modified by the lineColor settings which promotes the given colour(s) to the top of the 15-
long list. If the number of lineColor ’s is greater than 15, the list is extended to accommodate
Plotting basics 91

all of these. The default lineColor setting in pp.set is ‘auto’ which means the colour sequence will
be red, blue, green, ... as above. If lineColor setting is set to blue, then the sequence would be: blue,
red, green, ... . If the number of colours required is greater than the length of the list, the list is

recycled. If this is not wanted, use the colour dictionary to specify colours.

Autocolours only consider the basic colors (colors without a number). If the lineColor setting is
red2, red6, black, the autocolour selected for the next (fourth) color would be blue4, the next unused
colour in the sequence.
If a dataset is not plotted because there is no valid data in the plotting domain, then the corre-
sponding auto-generated colour for that dataset is skipped.

If changeColor is set to FALSE and useLineColorDictionary is 0 then the colour(s) in the line-
Color list will be used first (unless this colour is ‘ auto ’). If there are several subsets of data for
the same variable the actual colour will rotate the colour density, 4, 6, 8, 2, 4..., e.g. red4, red6,
red8, red2, red4,... providing the colour was defined without a density, i.e. as ‘ red ’ rather than ‘ red4 ’. If
a density is given, this colour will always be used.
With calculationMethod 2 or 3 (replot), PhreePlot uses the dictionary coordinates if present
otherwise it omits the label. Use this to change the colour or position of labels, lines and mark- ers.
Use calculationMethod 1 to regenerate a fully populated dictionary.

When there are several plots produced per run, for example due to use of the loop variable, there is
an option of whether to restart the auto-generated colour sequence at the beginning for each plot,
or whether to continue where the colour sequence ended on the previous plot. This is controlled by
the restartColorSequence keyword. TRUE will restart it, FALSE will not.

If the trackSymbolSize is greater than zero and trackSymbolColor is not ‘ nd ’ then a coloured track
symbol or anchor point is drawn at the point on the line to which any automatically positioned
labels have been associated. This symbol is not drawn on replots.

The x,y position of the label placement is calculated by PhreePlot when calculationMethod 1
(calculate) although whether this position is actually used is determined by the various settings
described above. The position is always read from the file when calculationMethod 2 or 3 (replot) is
used.

The line colour dictionary is always updated with the latest species and colours at the end of each
plot and the results written to the dictionary file at the end of each run.

If a record from a colour dictionary cannot be read properly, it is ignored.

Line widths are set by the lineWidth setting for each particular line (recycled as necessary). Negative
line widths indicate dashed lines. The appearance of dashed lines is controlled by their respective dashesPerInch
and lineType settings.

Point colours

Points are coloured in the same way as lines except that the initial colour is defined with point-
Color . If pointsSameColor is TRUE, then the points will always have the same colour as the lines if
defined. If the line colour dictionary is present, the second colour setting can be used to override
the automatic selections. Delete or rename the dictionary or set useLineColorDic- tionary to 0 if this
is not wanted.

The interactions between the changeColor and pointsSameColor settings for the automatic
selection of colours ( useLineColorDictionary set to 0) are illustrated in Figure 7.4. These
examples can be found in the autocolor n. ppi files found in the demo\Phreeqcloooping
directory.

Filled symbols with a different rim colour

Normally points are plotted as simple symbols. However, there are six filled symbols which can
have a separate rim colour. The filled colour is controlled by the points , pointSize , point-

También podría gustarte