Está en la página 1de 84

92 Guía PhreePlot

ecolor = naranja, pointcolor = azul, changecolor = T, pointsSamecolor F ecolor = naranja, pointcolor = azul, changecolor = T, pointsSamecolor T

1.0 sin_1 1.0 sin_1


sin_2 sin_2
sin_3 sin_3
sin_4 sin_4

0,5 sin_5
0,5 sin_5

• •
sin_3
0.0 sin_4 sin_2
0.0
sin_3 sin_4 sin_2
sin

sin
• • • •
sin_5 sin_5
• •
sin_1 sin_1
• •

- 0,5 - 0,5

- 1.0 - 1.0
0 2 4 6 8 10 0 2 4 6 8 10
X X
linecolor = naranja, pointcolor = azul, changecolor = F, pointsSamecolor f ecolor = naranja, pointcolor = azul, changecolor = F, pointsSamecolor T

1.0 sin_1 1.0 sin_1

sin_2 sin_2

sin_3 sin_3

sin_4 sin_4

0,5 sin_5
0,5 sin_5

• •
sin_3
0.0
sin_3 sin_4 sin_2 0.0 sin_4 sin_2
sin
sin

• • •

sin_5 sin_5
• •

sin_1 sin_1
• •

- 0,5 - 0,5

- 1.0 - 1.0
0 2 4 6 8 10 0 2 4 6 8 10
X X

Figura 7.4. Efecto de la changeColor y pointsSameColor ajustes en la coloración automática de líneas y puntos para un archivo de datos
(el ' afuera ') que contiene varios conjuntos de datos creados utilizando el mecanismo de bucle incorporado de PhreePlot. El
color de linea fue establecido como naranja4 y el pointColor estaba configurado para azul 4. Estos proporcionan los valores iniciales de la secuencia de

colores seleccionada automáticamente. Arriba a la izquierda: changeColor = TRUE y pointsSameColor = FALSE; parte superior derecha,

changeColor = TRUE y pointsSameColor = TRUE; abajo a la izquierda, changeColor = FALSE y puntos-


SameColor = FALSE; abajo a la derecha, changeColor = FALSE y pointsSameColor = TRUE.

Color y changeColor ajustes.


Los puntos se trazarán siempre que su tamaño sea mayor que cero y su color no es ' Dakota del Norte '. Se agregarán llantas si
el color de la llanta definido por rimColor no es ' Dakota del Norte 'y el ancho de línea de la llanta definido por rimFactor es
mayor que cero. Si changeColor es FALSO para que todas las líneas sean del mismo color (según lo establecido por color de
linea (1)), luego pointColor se utiliza para todas las líneas.

7.9.5 Directorios para los diccionarios de colores

Si solo se proporciona el nombre del archivo, entonces el archivo especificado se busca siguiendo las reglas de ruta de búsqueda

habituales ( Sección 2.4.6 ). En caso de duda, proporcione un nombre de ruta completo.

7,10 litros ABELLING

De forma predeterminada, todas las gráficas de contorno rellenas se etiquetan automáticamente y se genera una
leyenda a la derecha de la gráfica. Se intenta hacer esto "bien", pero esto puede llevar mucho tiempo, especialmente
cuando hay una gran cantidad de etiquetas y cuando existe la posibilidad de superposición. Es difícil encontrar un
conjunto universal de criterios que definan una buena ubicación y puede ser necesario mover etiquetas manualmente
usando etiquetas individuales. empujar so editando el archivo de etiqueta apropiado. En el caso de los gráficos de
contorno, las etiquetas también se pueden mover a lo largo del contorno utilizando el contourShift- Etiqueta configuración.
Conceptos básicos de trazado 93

Los algoritmos empleados en la actualidad son "experimentales" y bastante ineficaces. El tiempo necesario para el
etiquetado aumenta aproximadamente como el cuadrado del número de etiquetas y, por lo tanto, puede volverse
excesivo rápidamente. El esfuerzo realizado y el número de posibles posiciones de etiqueta se pueden controlar
utilizando el labelEffort palabra clave (ver más abajo).

Con líneas solo trazados de contorno, el etiquetado solo se realiza a través de la leyenda que toma los atributos
de las líneas de contorno.

7.10.1 Gráficas de predominio

Las etiquetas se centran automáticamente en el centro de cada campo. Se hace un esfuerzo para intentar resolver las
etiquetas superpuestas en caso de que se identifique alguna y para garantizar que las etiquetas estén centradas dentro
de sus respectivos polígonos. El enfoque actual no puede tratar con polígonos con huecos o islas en ellos. método de
cálculo 2 utiliza las coordenadas de la etiqueta del archivo de etiquetas si está presente, mientras que método de cálculo 3
vuelve a calcular las coordenadas de la etiqueta. Esto último es necesario para volver a centrar las etiquetas si se ha
cambiado el dominio de trazado. Para polígonos cóncavos, si el centro aparente del polígono está fuera del polígono, es
una locura intentar moverlo hacia adentro.

Normalmente con método de cálculo 1 y 3, las posiciones de las etiquetas se recalculan automáticamente, pero es
posible forzar PhreePlot para tomar las propiedades del archivo de etiquetas (si está presente) configurando useLabelsFile
VERDADERO. Esto permite preajustar la posición o el ángulo de una etiqueta.

7.10.2 Gráficos de contorno

Las etiquetas se colocan automáticamente en el centro de la parte 'más larga y recta' de un segmento de
contorno. Si esto no es satisfactorio, la opción alternativa es colocar todas las etiquetas en el centro de su
contorno; esto se hace configurando el contourOptions labelPosition = centro.

También es posible cambiar las etiquetas de contorno individualmente mediante ' empujones '. También vea el contourShift-
Etiqueta establecimiento de un enfoque alternativo.

7.10.3 Gráficos personalizados

El método de recocido simulado se utiliza para determinar la posición de ubicación de la etiqueta en gráficos
personalizados. Esta es la razón por la que la 'temperatura' aparece en la salida a medida que la 'temperatura' teórica se
reduce gradualmente, lo que permite menos libertad para moverse aleatoriamente en busca de un mejor conjunto de
posiciones de etiquetas. Este enfoque es experimental y puede ser muy lento. El labelEffort La palabra clave controla la
cantidad de esfuerzo que se dedica a buscar una buena ubicación de etiqueta. Solo aplica con método de cálculo 1 o 3.

Los principales objetivos son hacer que las etiquetas sean legibles y su atribución inequívoca. El tamaño de las etiquetas es un

parámetro importante ( Tamaño de la etiqueta ) ya que las etiquetas pequeñas, obviamente, tienden a superponerse menos que

las etiquetas grandes. Frente a esto está la legibilidad general de las etiquetas.

El labelEffort El parámetro se utiliza de la siguiente manera:

labelEffort = 0 Las etiquetas se trazan aproximadamente a la mitad del eje x; evita el


problema de la superposición de etiquetas, etc., pero rara vez es satisfactorio

labelEffort = 1 Esfuerzo mínimo; esto no debería tomar más de unos segundos.

labelEffort = 2 Esfuerzo medio; Más lento

labelEffort = 3 Mucho esfuerzo; mucho más lento, puede llevar muchos minutos,
diseñado para el procesamiento por lotes donde el tiempo no es un
factor tan importante.

Se buscan los siguientes objetivos a la hora de decidir dónde colocar las etiquetas:

evitar que las etiquetas se superpongan con otras

etiquetas evitar que las etiquetas se superpongan a las líneas


94 Guía PhreePlot

evitar que las etiquetas se coloquen fuera del área de trazado coloque

las etiquetas lo más cerca posible del centro del trazado

Para los gráficos personalizados, un segundo parámetro, si está presente, proporciona un límite superior al tiempo necesario (en

segundos) para optimizar la ubicación de la etiqueta.

Estos objetivos entrarán en conflicto hasta cierto punto y PhreePlot trata de encontrar un compromiso
razonable. Esto es computacionalmente exigente y es posible que no se encuentre la solución óptima en el
tiempo disponible.

Interrumpiendo este proceso usando el Esc saldrá elegantemente conservando las mejores posiciones de
etiqueta encontradas hasta ese momento.

En los gráficos personalizados, cada etiqueta está anclada a uno de los puntos calculados. Este ancla se muestra
mediante un pequeño círculo relleno (por defecto rojo) que está controlado por el símbolo de la pista ( trackSymbol-
Color y trackSymbolSize ). Este símbolo no se dibuja si se ha empujado la etiqueta.

7,11 R EPLOTAR SIN RECALCULAR

7.11.1 La opción 'retransmitir'

A menudo es necesario 'afinar' la apariencia de las parcelas existentes. El método de cálculo


El parámetro controla el grado de recalcular: 1 = calcular desde cero y trazar; 2 = simplemente repita; 3 = reprocesar
los datos, volver a etiquetar y volver a enviar, pero no volver a especializarlos. Esto permite cambiar la
apariencia de un gráfico sin repetir los cálculos subyacentes.

1 hace cálculos de especiación; 2 y 3 no. Las opciones de replanteo hacen uso de los archivos de salida generados
durante un cálculo anterior. Estos archivos deben estar presentes.

Es posible realizar los siguientes cambios durante una repetición:

cambiar la fuente base cambiar el tamaño y color de todo el texto,

símbolos y líneas

agregar, eliminar o cambiar cualquier texto, símbolos y líneas adicionales que estén especificados por un texto línea
o el ' extraText ' y ' extraSymbolsLines 'archivos

implementar cualquier cambio realizado en el archivo de etiquetas o los diccionarios de colores, incluida la eliminación o

el reposicionamiento de etiquetas

cambiar de una escala nativa del eje y a otra escala en las parcelas de

predominio cambiar el signo en el eje xo y

cambiar qué archivos gráficos de salida se producen ( pdf, png etc).

cambie de una serie de archivos gráficos de una sola página a un archivo de varias páginas y viceversa.

Se producirán resultados impredecibles si:

cambiar cualquier cosa que tenga que ver con el alcance de los cálculos involucrados, por ejemplo, xmin,
xmax, ymin, ymax, bucle, número y tipo de especies principales, parámetros de ajuste, grado de
simplificación

cambiar la resolución

cambiar la base de datos termodinámica utilizada.

Todos los archivos requeridos deben estar presentes y en el formato correcto para que funcione la reubicación.
Si no es así, regenerarlos desde cero ( método de cálculo = 1). Los siguientes archivos de salida son necesarios
para volver a trazar:

ht1 vec, pol, lab método de cálculo = 2) pts,


vec, lab ( método de cálculo = 3)
Conceptos básicos de trazado 95

cuadrícula pol, laboratorio método de cálculo = 2) trk ( método


de cálculo = 3) vec, pol ( método de cálculo
contorno = 2) fuera, vec, pol ( método de cálculo = 3)
fuera

encajar o simular

personalizado afuera

especies afuera

Adobe Acrobat Reader bloquea los archivos abiertos, por lo que pdf El archivo no se puede volver a crear mientras un
archivo con el mismo nombre ya esté abierto. Ciérrelo primero. Esta limitación no se aplica a los archivos abiertos por
GSview.
Es posible utilizar la opción de retransmisión para habilitar PhreePlot para hacer un gráfico de cualquier dato en un archivo de

texto derivado del usuario siempre que el formato y el nombre del archivo sean correctos, es decir, datos en columnas regulares

con la primera línea que contiene las etiquetas. El nombre del archivo debe ser el nombre del archivo base con la extensión ' afuera '.

El cálculoTipo debiera ser ' personalizado ' y mainSpecies = '', digamos. Alternativamente, se puede agregar un archivo de datos para

hacer un gráfico personalizado con la palabra clave extradat. Esto también se puede utilizar para agregar datos a las parcelas de

predominio.

El cálculoTipo debiera ser ' personalizado ' y especies principales = ''.

7.11.2 La opción 'reprocesar y reprocesar' para las parcelas de predominio

La opción reprocesar y reprocesar ( método de cálculo = 3) retrocede una etapa más allá del simple
replanteo y comienza con la salida almacenada de los cálculos de especiación. Para el tipo de cálculo ht1,
este es el ptos archivo en lugar del vec expediente. Con ' cuadrícula 'parcelas, esta es la' trk 'archivo y con' rejillas 'trama
este es el' afuera ' expediente. En todos los casos, los polígonos se vuelven a ensamblar y las posiciones de
las etiquetas se vuelven a calcular antes de volver a trazar. En el caso de la ht1 tipo de cálculo, esto permite
cambiar el grado de simplificación sin volver a calcular la química.

En el caso de la ' cuadrícula ' y ' rejillas 'parcelas, si los cálculos de especiación se han terminado antes por alguna
razón, los archivos de seguimiento y salida, respectivamente, no estarán completamente poblados y es
posible que no sea posible completar la parcela. Esto puede suceder cuando Esc se ha utilizado para
terminar los cálculos antes de tiempo o si PhreePlot ha fallado en parte durante los cálculos de
especiación, por ejemplo, si el sistema operativo se ha quedado sin memoria virtual.

Reiniciando ' rejillas 'parcelas con método de cálculo = 3 intentará llenar incompleto ' afuera 'archivos
preservando así el esfuerzo de cálculos anteriores.

7,12 A DDING LÍNEAS EXTRA, SÍMBOLOS Y TEXTO

Se pueden agregar líneas y símbolos a los gráficos de predominio utilizando el método de 'líneas' y 'puntos' utilizado por
los gráficos 'personalizados' (estos leen los datos de los archivos de datos) pero si esto no es apropiado, o si hay texto,
símbolos o líneas adicionales individuales deben agregarse a cualquier gráfico, estos se pueden especificar usando texto y
símbolosLíneas palabras clave o sus equivalentes de archivo, extraSymbolsLines o texto extra . Las etiquetas también se
pueden utilizar en estas cadenas de texto.

7.12.1 Líneas y símbolos

Los puntos en las parcelas se trazan con símbolos. Se pueden agregar símbolos adicionales a un gráfico personalizado o
gráfico de predominio con símbolosLíneas o un extraSymbolsLines expediente. Cada entrada tiene el formato:

plotnumber, x, y [, lw, [linecol, [isymb, [sizeymb, [symbcol, [rimcol, [rimfactor, [line-type,


[dashesperinch]]]]]]]].

Ver símbolosLíneas para más detalles. Una lista completa de los números de símbolo y sus nombres se da en Apéndice
A3 y Figura 7.5 . El valor predeterminado es dibujar una línea negra, pero la mayoría de las combinaciones de
96 Guía PhreePlot

Símbolos, dingbats y líneas

0 1 2 3 4 5 6 7 8 9
#% ∗ + -. ? ⊥ _
10 11 12 13 14 15 dieciséis 17 18 19
⎯|′≤♣♦♥♠↔←
20 21 22 23 24 25 26 27 28 29
↑→↓∼©
30 31 32 33 34 35 36 37 38 39

40 41 42 43 44 45 46 47 50 51 52 53 54 55 56 57 71 72 73 74 75

60 61 62 63 64 66
sesenta y cinco 67 70 76 77 111 112 113 114 115 116 117
! "# $% & '() * +, -. / 0 1 2 3 4 5 6 7 8 9:; <=>? @
100 101 102 103 104 105 106 107 110 131 132 133 134 135 136 137 151 152
ABCDEFGHIJKLMNOPQRSTU VWXYZ [\] ^ _
120 121 122 123 124 125 126 127 130 153 154 155 156 157 171 172 173 174

140 141 142 143 144 145 146 147 150 175 176177 21122 2132 214 215 216

160 161 162 163 164 165 166 167 170 217 231

200 201 202 203 204 205 206 207 210 233223323523523623725125225325425525625727127227327427527627731131231331431531631733133233333433533633735135235335435535635737137233733743

220 221 222 223 224 225 226 227 230


`abcdefghijklmnopqrstu vwxyz {| } ~? ?? ?? ?? ?? ?? ?? ?? ?? ??
240 241 242 243 244 245 246 247 250
?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ??
260 261 262 263 264 265 266 267 270

300 301 302 303 304 305 306 307 310

320 321 322 323 324 325 326 327 330


¡¢ £ ¤ ¥ ¦ § ¨ © ª «¬ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º» ¼
340 341 342 343 344 345 346 347 350

360 361 362 363 364 365 366 367 370

Todos los símbolos tienen una altura nominal de 2 mm (sin llantas).

C: \ PhreePlot \ demo \ symbols \ symbols.ps

Figura 7.5. Los símbolos disponibles en las fuentes nativas, Symbols y ZapfDingbats y sus correspondientes isymb
códigos. Este diagrama se puede generar a partir del ... demo \ simbolos \ simbolos.ppi expediente.

El tamaño, color y tipo de línea y símbolo es posible especificándolos explícitamente. Una vez establecidas, estas
propiedades permanecen vigentes hasta que se modifican.

Los primeros diez símbolos son símbolos centrados:

1 = círculo lleno
2 = plaza llena
3 = triángulo relleno
4 = triángulo lleno al revés
5 = diamante lleno
6 = octágono lleno
7 = circulo abierto
8 = más
9 = multiplicar

10 = estrella

Los seis símbolos "rellenos" de arriba pueden tener cada uno un color de borde separado y un grosor de borde asociado.
Por lo tanto, es posible trazar un círculo abierto utilizando el código de círculo relleno, pero especificando que el color del
punto o símbolo es ' Dakota del Norte '. Especificando el color del símbolo como ' blanco 'tendrá un efecto similar en el' papel
'blanco, excepto que eliminará cualquier característica subyacente.

7.12.2 Texto

Se puede colocar texto adicional dentro o fuera del área de trazado (según lo definido por los ejes) utilizando una
línea de texto o un archivo que contenga una o más líneas de texto. El formato para estos se define en detalle en
el texto y extraText palabras clave. Cada entrada tiene el formato:

número de parcela, x, y, texto [, altura, [color, [ángulo, [justificar, [dígitos, [fuente]]]]]]

Número gráfico es el número de parcela ( auto para todos'), X y y son las coordenadas xey de la posición de anclaje, y texto
es la cadena de texto única (generalmente entre comillas). Esta cadena de texto puede contener etiquetas del
diccionario de etiquetas o etiquetas especiales. trazar etiquetas como subíndice / super-
Conceptos básicos de trazado 97

texto. También hay otros etiquetas especiales que se puede utilizar.

Los demás parámetros son opcionales. Aunque estos son opcionales, es necesario mantener los
parámetros en orden, es decir, puede omitir fuente e incluir el resto pero no puede omitir color y mantener ángulo,
justificar, dígitos y fuente. Si es necesario, especifique todos los parámetros de forma explícita.

Los valores predeterminados para los parámetros opcionales si se dejan en blanco son:

altura = legendTextSize

color = ' negro '


ángulo = 0 ( grados)
justificar =0
dígitos = - 3 ( si se están imprimiendo números, esto proporciona cierto control sobre el
formato: el valor predeterminado es tres cifras / lugares decimales según el tipo de
número involucrado; el signo negativo indica que se eliminarán los ceros finales)

fuente = la fuente (nombre o número, 1-44), o la fuente actual si no está definida.

Número gráfico es el número de parcela (comienza en 1) para el que se aplica el texto. ' auto 'significa todas las parcelas. El
número de la parcela es el número secuencial de la parcela y siempre se imprime en la primera línea de la info bloque si
se imprime todo ese bloque. Para obtener más detalles sobre la numeración, consulte la texto
resumen. El texto se trunca a 200 caracteres. Esto incluye cualquier texto utilizado para especificar etiquetas (ver más
abajo). Incluya el texto entre comillas simples o dobles emparejadas si el texto contiene un delimitador (espacio, coma o
tabulación). Esto mantendrá el texto como una entidad de cadena única.

X y y se puede dinamizar haciendo uso de la < pxmin> etc etiquetas que se establecen después de que se han determinado
los límites de trazado., por ejemplo, primer conjunto

numericTags <px> = “<pxmin> + 0.3 * (<pxmax> - <pxmin>)”

luego usa < px> en lugar de decir X en la línea de texto.

La posición y siempre se refiere al eje y principal. Si un punto necesita hacer referencia al eje 2y, entonces el
valor y correspondiente debe calcularse por separado. Esto se puede hacer usando una expresión de etiqueta
numérica como:

<p2y> = "(<2y> - <p2ymin>) / (<p2ymax> - <p2ymin>) * (<pymax> - <pymin>) + <pymin>"

donde < 2 años> es la posición deseada en el eje 2y y debe definirse utilizando numericTags . El < p2y> La
etiqueta se puede utilizar en un texto / extraText o symbolsLines / extraSymbolsLines entrada.

Al imprimir, las pestañas iniciales se reemplazan con tres espacios y las etiquetas posteriores se reemplazan por espacios
simples. Los espacios múltiples también se reducen a un solo espacio. Los espacios pueden aparecer con longitud
variable con fuentes proporcionales.

justificar: se refiere a la justificación de la cadena ( 0 = izquierda, 1 = centrar, 2 = derecha) independientemente del


ángulo, es decir, como si se girara sobre el carácter apropiado, por lo que justificar = 2 con ángulo = 180 rotará
alrededor del último carácter mientras que justificar = 0 rotará alrededor del primer carácter. El X
y y Por lo tanto, las coordenadas especifican de forma predeterminada la línea de base a la izquierda (esquina
inferior izquierda) del texto. X define el borde izquierdo; y define la línea de base de la cadena de texto ('g' se
extiende por debajo de la línea de base). Donde hay más de una línea debido al uso de saltos de línea
incrustados, < br>, y se refiere a la primera línea. Si el texto desaparece de la parte inferior de la pantalla, aumente
desplazamiento para reposicionar el trazado más alto o aumentar el tamaño de la página. Recuerde que el tamaño de página del
dispositivo de impresión o visualización controla qué parte del gráfico se verá realmente.

dígitos: especifica el número de dígitos que se imprimirán cuando una etiqueta numérica se sustituya por un valor.
Está especificado por un número entero, norte. norte da el número de dígitos impresos después del punto decimal
(rango válido 0> = n> = 16). 0 imprime el entero más cercano. Si se proporciona un número entero negativo, se
eliminan los ceros finales. Si el valor absoluto del número es menor que 1e-3, está impreso en científico
98 Guía PhreePlot

( x.xEee) formato. Este formato se aplica a todas las etiquetas numéricas en la cadena de texto (predeterminado n = -3).

fuente: La fuente se especifica mediante un nombre de fuente definido (consulte fonts.dat, si está presente) o por un

número de fuente, numerados consecutivamente a lo largo y a lo ancho del fonts.dat tabla, si está presente, p. ej.
Times-Roman o 17. Si no se reconoce la fuente o el número de fuente, se utiliza la fuente actual si está definida; de lo
contrario, vuelve a la fuente número 1 (Helvetica).

Cualquier etiqueta se puede incluir según corresponda en texto adicional. Algunas etiquetas especiales y algunas de uso común

se describen en detalle a continuación.

<entrada>

Un fragmento de texto especial para copiar todo o parte del texto de los archivos de entrada junto a un gráfico es:

<entrada> imprime todas las líneas de los archivos de entrada.

“< entrada: str1> " imprime todas las líneas de los archivos de entrada comenzando en la
primera línea que contiene str1 a la última línea del QUÍMICA sección.

“< entrada: str1, str2> " imprime todas las líneas de los archivos de entrada comenzando en la
primera línea que contiene str1 a la primera línea que contiene str2 inclusivo.

str1 y str2 son cadenas de caracteres ASCII. El caso es significativo para ambos str1 y str2. Utilice las comillas
para la segunda forma; de lo contrario, se analizará la coma y str2 se establecerá en columna
y luego el texto ignorado por completo. La justificación, si está presente, se ignora. La entrada buscada es la
entrada concatenada final de todos los archivos de entrada con comentarios y líneas en blanco eliminados,
incluye archivos expandidos pero etiquetas no sustituidas.

El texto impreso se justificará a la izquierda, alineado verticalmente con la parte superior del texto en ypos y comenzando
en X. x, y puede estar fuera de los ejes de la trama. mjus se ignora: el texto siempre se justifica a la izquierda. Los espacios y
tabulaciones múltiples se reemplazan por espacios simples, excepto que se conservan los espacios iniciales (sangría).
Una pestaña inicial se reemplaza por tres espacios. Se omiten las líneas en blanco.

El primer ejemplo imprimirá el archivo de entrada completo. Esto se basa en el archivo de entrada como entrada, no en el archivo
de entrada expandido que se crea después de expandir cualquier incluir archivos .

El segundo ejemplo imprimirá el archivo de entrada a partir de la primera línea que contiene str1 y
terminando en la primera línea que contiene str2. Si str1 = ””, La impresión comienza en la primera línea; si
str1 no está en blanco y str2 = ””, la impresión continúa hasta la última línea. Si str1 se encuentra pero no
str2, entonces el texto se imprime desde str1 hasta el final del archivo pero si str2 se encuentra y str1 no es, entonces
no se imprimirá nada.

<br> no se reconoce dentro de esta etiqueta. Si str1 = str2, sólo se imprime esa línea. El ángulo es el

ángulo en grados desde la horizontal, que gira en el sentido de las agujas del reloj.

El tamaño y color del texto se da en el < entrada> línea o por defecto toma los valores de legendTextSize
y ' negro ', respectivamente. La leyenda se puede apagar configurando
labelColor para ' Dakota del Norte '.

Si información (1) se establece en ' Dakota del Norte ', este texto de entrada no se imprimirá. Esto permite producir
gráficos limpios sin editar los archivos de texto extra individuales, posiblemente mediante el uso de override.set
expediente.

<bucle> o <bucle ...>

Sustituye el valor numérico actual del apropiado círculo variable. La variable del bucle primario es < bucle>
que si es una secuencia regular, puede definirse en un archivo de entrada usando el
loopMin , loopMax , loopInt y loopLogVar ajustes.
Si la secuencia de valores de bucle es irregular o si es necesario establecer más de un valor de variable en cada
iteración, utilice el método de archivo de bucle en su lugar ( Sección 4.6.2 ). < bucle> es equivalente a
<loop1>, la primera columna de números en el archivo de bucle. Las columnas numéricas sucesivas se establecen en < bucle2>,
<bucle3> etc si no hay un encabezado con nombres de columna presentes. Si una fila de encabezado
Conceptos básicos de trazado 99

está presente, se utiliza para generar los nombres de las etiquetas.

La variable de bucle se imprime como un número entero si es un número entero; de lo contrario, se imprime en formato
de coma flotante. No se agregan espacios adicionales al número. El valor de la variable de bucle utilizada es el valor en el
momento del trazado.

<leyenda>

Inserta la leyenda para gráficos personalizados en x, y en lugar de en su posición normal a la derecha de la parcela. Si se
encuentra, se ignora el resto del texto de la cadena. Altura y color se puede incluir, pero si está ausente, los valores
predeterminados son:

altura del texto = la legendTextSize ajuste de

color = negro.

p.ej

automático 4-12 “<b> Tecla </b> <legend>” 2 azul

insertará la esquina superior izquierda del cuadro de leyenda en aproximadamente ( 4, -12) basado en la escala de la
trama. Las líneas de leyenda se justificarán a la izquierda en 4 y la línea de base de la línea superior colocada en - 12. Los
símbolos, si están graficados, se justifican ligeramente a la derecha de este. Si se dibuja un cuadro de leyenda, la esquina
superior izquierda estará en ( 4, -12).

Cualquier texto antes de < leyenda> se trata como el título de la leyenda y anulará la legendTitle configuración. Por
lo tanto, el título de la leyenda será 'Clave' en el ejemplo anterior. Si no se define ningún título en el < pierna- final> línea,
legendTitle se utilizará.

Texto después de < leyenda> se ignora. Etiquetas de texto como < b> será ignorado si se divide por un < br>.

Esta opción permite que la leyenda se mueva dentro del área de la gráfica, o mediante el uso de coordenadas xy
/ o y fuera de rango, eliminada completamente de la gráfica. Un enfoque alternativo con un poco más de
flexibilidad es utilizar el legendBox palabra clave.

<especie principal>

Inserta el nombre de la especie principal actual en la cadena de texto, p. Ej. "<especies principales>" sustituiría
"Fe" si esa era la especie principal.

7.12.3 Dar formato a números en gráficos: variación del número de cifras significativas mostradas

Las etiquetas se pueden usar para escribir números en un archivo de trazado cuando las etiquetas numéricas se colocan dentro

de una cadena de texto que se va a trazar. Esto se aplica a las etiquetas en la parte superior ( PhreePlot) sección de un archivo de

entrada.

La representación predeterminada de los números de punto flotante en la salida graficada es redondearlos a 3


cifras significativas y eliminar los ceros finales. Se utiliza un formato de coma flotante (por ejemplo, 7,98) cuando
se puede mantener 3 significativos, pero el formato de exponente (E) se utiliza para números más grandes y más
pequeños.

Puede ser útil poder controlar el número de cifras significativas que se muestran explícitamente, p. Ej.
6.58928137 podría mostrarse como 6.59 (3 cifras significativas) o 6.589281 (7 cifras significativas).
Esto se puede controlar agregando un guión bajo al número o etiqueta seguido del número de
cifras significativas requeridas, por ejemplo, 6.58928137_3. El número de cifras significativas ( sigfigs) puede
variar de 1 a 16 (aunque normalmente solo 14 son significativas). Un valor negativo para el número
de cifras significativas se formateará para ABS (sigfigs) y luego elimine los ceros finales.

Muy grande ( ABS (x)> 1e15) los números siempre tendrán el formato de exponente por defecto. Los números muy
pequeños, números menores que un valor absoluto de 1e-15, se grafican como 0.

Si se desea un formato de exponente, use $ en lugar de _, p. Ej. 1.3463 $ 3 trazará como 1,35E + 00 y
Guía de 100 PhreePlot

Cuadro 7.1. Uso del signo de dólar / subrayado adjunto para especificar el número de dígitos significativos utilizados en el trazado.
cadenas numéricas

Cadena de texto Aparición en la parcela

"6.58928137" 6.59
"6.58928137_4" 6.589
"6.58928137 $ 6" 6.58928E + 00
"125734.123_4" 125700
6.100 6.1
"6.1_3" 6,10
"6.1_-3" 6.1
6,1 $ 3 6.10E + 00
"6.1¬_3" 6.1_3
"<a>" donde <a> = 1.23456789e-20 0
"<a> _5" 1.2346E-20
“<bb>” donde <bb> = -1.23456789e20 - 1,23E + 20
<bb> _6 - 1.23457E + 20
<bb> $ 6 - 1.23457E + 20

1.34600 $ -5 como 1.346E + 00.

This approach is especially useful for formatting numeric strings derived from a tag in a text
line or extraText file, or in a plot or axis title. Some examples are shown in Table 7.1 It is used
to format fit output in the extraText file of the demo\kineticsSi\kineticsSifit1.ppi demo file.

7.12.4 Making fancy plots

There is a limited capability in PhreePlot to add additional features to a plot (see Section 8.9 ).
Firstly it is possible to add text, lines or symbols using the text , extraText and extraSymbol- sLines keywords.

Secondly it is possible to add lines or points to a predominance or contour plot by including the lines
or points keywords (but not the 2y equivalents) and making sure that the data are read in correctly.
This could include the following additions to your input file:
extradat filename.dat # cargue este archivo con una línea de encabezado dando nombres de columna
customxcolumn xcol # haga de esta columna la variable x
lines ycol # hacer de esta columna una variable y (puede haber varias) puntos col # ibid

linecolor rojo
punto color azul

El archivo que contiene los datos adicionales podría haberse generado durante la etapa de trazado principal o leído
desde un archivo externo. Se pueden ejecutar varios archivos ppi y luego trazar los datos combinados de alguna manera.
Los archivos por lotes pueden orquestar esto.

En tercer lugar, es posible superponer uno o más gráficos uno encima del otro utilizando el cubrir palabra clave.

Finalmente, es posible cambiar la trama de manera que PhreePlot no puede hacer editando uno de los archivos
de trazado usando un editor de imágenes interactivo como Inkscape. También sería posible ejecutar
PhreePlot desde dentro de otro programa como Pitón o R y utilizar la salida en una de sus
parcelas.
Parcelas de predominio 101

8 parcelas de predominio

8.1 CONFIGURAR UN ARCHIVO PARA CALCULAR UN DIAGRAMA DE PREDOMINANCIA

PhreePlot ofrece un enfoque flexible para dibujar la trama de predominio. Los criterios de selección como
especie predominante son definidos por el usuario en USER_PUNCH bloques (a menudo en C ª archivos) que se editan
fácilmente. Estos simplemente deben devolver una serie de pares de nombre-valor y es el par con el mayor valor
el que se considera predominante. Los valores devueltos podrían ser simplemente concentraciones de especies,
ya sean disueltas, sólidas, superficiales o gaseosas. Podrían basarse solo en especies acuosas, podrían sumar
todas las especies adsorbidas y tratar el total como una 'súper' especie, o podrían tener en cuenta algún otro
factor, como el estado redox.

Para dibujar un diagrama de predominio, PhreePlot espera que la última simulación ejecutada devuelva
las especies predominantes en el formato esperado. Puede haber otras simulaciones previas al ciclo y al
ciclo principal, pero estas deben preceder a esta simulación final.

A partir de ese momento, PhreePlot trata todos los datos de la misma manera e intenta dibujar un diagrama 2D
que muestre los campos de predominio. De hecho, PhreePlot contiene dos métodos distintos para dibujar
parcelas de predominio - los enfoques de 'cuadrícula' y 'caza y seguimiento' - y estos difieren en la forma en que
muestrean el espacio de datos 2D para identificar los límites del campo.

Otro enfoque es delinear alguna variable, como la concentración total disuelta de un elemento o especie,
también posible en PhreePlot - pero el diagrama de predominio sigue siendo una manera
sorprendentemente simple de describir el comportamiento químico de sistemas complejos.

Los resultados deben ser bastante cercanos a los obtenidos utilizando enfoques analíticos tradicionales como el
utilizado por el banco de trabajo del geoquímico ( Bethke, 2005 ). Sin embargo, no serán exactamente iguales ya
que las condiciones de simplificación requeridas en el enfoque analítico son a menudo poco realistas y pueden
ser difíciles de lograr en la práctica. El enfoque de especiación completa requiere que todas las partes del
dominio en estudio sean accesibles a través de una ruta de reacción plausible y especificable. Se considera que
las actividades reflejan todas las interacciones en el sistema en lugar de simplemente imponerse al sistema.
Lograr actividades constantes a lo largo de un límite generalmente requiere que estén presentes cantidades
variables de un elemento, mientras que los sistemas más realistas tienen concentraciones totales constantes de
elementos y actividades variables.

Los resultados de PhreePlot debería ser similar a otros programas que producen diagramas de
predominio utilizando un enfoque riguroso de la especiación. HYDRA / Medusa es uno de esos programas
de uso gratuito. Produce una serie de diagramas geoquímicos que incluyen parcelas de predominio
utilizando el HALTAFALL ( o SOLGASWATER) programa de especialización y una interfaz de usuario simple
pero eficaz (incluida una versión de Java). El dominio de interés se muestrea en una cuadrícula regular.
Una característica notable del programa es que al dibujar diagramas de predominio, rastrea la
especiación por encima y por debajo de los "límites del agua" con facilidad. Esta es una región donde Phreeqc
falla porque simplemente queda poca o ninguna solución acuosa. La diferencia aquí parece ser que Phreeqc mantiene
un balance de masa en el agua mientras que Medusa aparentemente no lo hace. Esto significa que Medusa no
solo ignora la descomposición del agua en los extremos del pe, sino que presumiblemente no tiene en cuenta la
pérdida de agua en la formación de minerales (por ejemplo, yeso) o debido a la evaporación forzada. Sin
embargo, dada esta limitación, la simplificación es particularmente útil cuando se dibujan diagramas de
predominio tradicionales de pe (Eh) -pH ya que el agua es inestable hasta en la mitad del dominio. Al agregar los
límites de agua al diagrama, se muestra al usuario la región donde se produce la descomposición del agua.
102 Guía PhreePlot

8.1.1 Los enfoques 'grid' y 'ht1'

Enfoque de cuadrícula

PhreePlot es capaz de calcular diagramas de predominio basados en una especiación completa del sistema
utilizando los algoritmos grid y ht1. El enfoque de cuadrícula es un enfoque de búsqueda directa que calcula la
especiación en una cuadrícula mientras que el enfoque ht1 encuentra y rastrea los límites del campo. Si la
cantidad total se mantiene constante, entonces las concentraciones de especies dominantes en los límites
estarán cerca de la mitad de la concentración total, mientras que en los puntos triples estarán cerca de un tercio
de la concentración total.

El método de cuadrícula es un método de 'fuerza bruta' en el sentido de que PhreePlot simplemente calcula la
especiación en cada punto en una cuadrícula rectangular e informa la especie dominante. El rango y el espaciado de los
puntos de la cuadrícula está determinado por el xmin , xmax , ymin , ymax y resolución parámetros. Este método requiere nres
2 cálculos de especiación más cualquier cálculo previo al ciclo, por ejemplo, cálculos de solución inicial.

La matriz de especies predominantes se puede representar directamente coloreando cada especie de manera diferente,
pero esto no identifica los límites del campo y da como resultado archivos de imágenes bastante grandes.
PhreePlot utiliza una técnica de "agregación de píxeles" para identificar los límites. Esto permite que los campos se
llenen de polígono con color y, por lo tanto, evita la pixelación de la imagen generada. Esto da como resultado una mejor
representación de los gráficos y tamaños de archivo mucho más pequeños.

Se pueden especificar una o más especies principales. Con el ' cuadrícula ', se repite un nuevo conjunto de
cálculos de especiación para cada especie principal a pesar de que la cuadrícula es la misma. Con el ' rejillas 'enfoque,
los cálculos de especiación se realizan para todas las especies principales en una sola pasada y los
resultados se escriben en el individuo' afuera ’ files in the normal way. Progress during the speciation calcu-
lations is shown by a series of dots on the screen. Each dot represents 10 speciation calcula- tions and a
full line of dots 500 calculations. The individual ‘ out ’ files are then processed in a second pass to give the
plots.

This approach needs different USER_PUNCH statements to export the data since the ‘ grids ’
option requires that the full speciation for all elements be returned and written to the
appro- priate ‘ out ’ files in one call to USER_PUNCH. ‘ grid ’ uses the ‘ ht1.inc ’ file or similar, while ‘ grids
’ uses the ‘ grids.inc ’ file or similar.
It is possible to add a z-loop to ‘ grid ’ and ‘ grids ’ plots. Normally the z-loop is inside the main species loop but
in ‘ grids 'parcelas, los resultados de todos los cálculos de especies principales se devuelven en un cálculo de
especiación y, por lo tanto, en este caso, el ciclo z debe estar fuera del ciclo de especies principal. Este
caso especial se intercepta cuando se ejecuta el primer bucle z. Esto se refleja en la salida del archivo de
registro y afecta el cálculo de los tiempos impresos de los gráficos individuales. Estos tiempos se estiman
dividiendo el tiempo total de especiación por el número de especies principales para dar un tiempo
aproximado tomado por especie principal.

Esta construcción también significa que no es posible cambiar la resolución de ' rejillas 'traza con el
iterador de bucle z.

El ' rejillas 'El enfoque conlleva considerablemente más gastos generales, pero puede ser más rápido para dos o
más especies principales, especialmente cuando los cálculos de especiación son relativamente lentos. Ver el
demo \ grids directorio para un ejemplo.

Enfoque de 'caza y seguimiento'

El método ht1 utiliza un enfoque de "búsqueda y seguimiento" para encontrar y rastrear los límites del
campo. Se basa en el supuesto de que todos estos límites pueden alcanzarse desde los límites del
dominio ("eje"), es decir, que no hay "islas". De hecho, pueden aparecer islas (ver Ejemplo 43 ) y, si bien
este método suele ser más rápido que el enfoque de cuadrícula, no es tan confiable y, por lo tanto, los
resultados del enfoque ht1 siempre deben compararse con el enfoque de cuadrícula.

El enfoque ht1 funciona primero a lo largo de los límites del dominio buscando un cambio en las especies
dominantes. Este es el modo de "caza". Una vez que ha encontrado un cambio en el límite,
Parcelas de predominio 103

pistas internamente a lo largo de él. Durante este seguimiento, solo realiza evaluaciones (cálculos de
especiación) en una cuadrícula fija definida por los mismos parámetros que utiliza el método de cuadrícula.
Rebota a lo largo del límite y sigue la pista de dónde ocurren los cambios en las especies dominantes y observa
dónde ocurren los puntos triples, la intersección de tres especies igualmente dominantes. Cuando es posible, las
posiciones de los límites más precisos se estiman por interpolación a lo largo del borde de una celda utilizando el
logaritmo de las concentraciones dominantes y subdominantes.

Es posible definir restricciones que anulen los criterios de predominio normales. Los 'límites
de agua' tradicionales se aplican comúnmente al presentar diagramas de predominio. El
ht1.inc El código proporciona una verificación para ver si estos se han excedido y PhreePlot los eleva a la parte
superior de la lista si es así. Tenga en cuenta que los límites especificados en ht1.inc son para una presión de
> 1 atm H 2 ( g) en el lado reductor y> 1 atm O 2 ( g) en el lado oxidante. Estos límites se pueden
cambiar fácilmente editando ht1.inc o archivo equivalente. También se realiza un control del metano

presión parcial, ya que puede ser alta en sistemas fuertemente reductores que contienen carbono.

La estrategia general se aprecia mejor examinando la ht1.inc y ht1c.inc archivos que proporcionan piezas genéricas
de Phreeqc código para devolver la especie predominante. Estos se utilizan tanto en los métodos de búsqueda
como en los de seguimiento y cuadrícula. ht1.inc es el más simple de los dos scripts en el sentido de que trata a
todas las especies adsorbidas como especies distintas, mientras que ht1c.inc combina todas las especies
adsorbidas en una sola 'súper' especie con el propósito de contar y mostrar.

PhreePlot espera el SELECTED_OUTPUT to have a specific format in order to be able to draw a


predominance diagram. The list of data required consists of five different blocks of data, each of
which can contain a variable number of species name-number (often a concentration) pairs. The
counts for each of these blocks is given by five numbers at the end of the list. These can be zero if
no pairs are returned. This ensures that PhreePlot knows how to read the data list returned. All the
data are written by USER_PUNCH statements in ht1.inc. Do not write any out- put using the SELECTED_OUTPUT
keyword data block as this will contravene the expected struc- ture and will lead to a mismatch in
the expected and found number of columns received.

The structure of the ht1.inc file is summarised in Figure 8.1.

nout1 nout2 nout3 nout4 nout5

Dominant species Dominant minerals Constraints Carry variables 5 system variables 5 counts

Figure 8.1. Data structure expected to be returned to PhreePlot en la salida seleccionada para calcular un diagrama de
predominio utilizando los tipos de gráficos ht1 y grid.

ht1c.inc también ofrece la opción de calcular un diagrama de predominio o de estabilidad ( Sección 8.1.5 ). En
un diagrama de estabilidad, las especies minerales asumen predominio sobre las especies en solución sin
importar sus concentraciones relativas. Esto se hace comentando la línea 20 o 30 (usando un # o movimiento
rápido del ojo declaración).

El script define los cinco bloques de especies que deben ser devueltos por PUÑETAZO inglos. Estos bloques
son:

1. the three dominant species (solution, mineral, gas or adsorbed), (normally


nout1 <= 3 aunque se puede devolver cualquier número y PhreePlot los clasificará para encontrar el más grande)

2. the three dominant mineral species, i.e. those which account for the largest con-
centraciones de las principales especies ( nout2 <= 3)

3. cualquier restricción: estas anularán todas las demás consideraciones y, si la restricción es


verdadera, obligará a la especie a ser tratada como la dominante. Límites de las presiones parciales
de H 2 ( g), O 2( g) and CH 4( g) are usually included ( nout3=3 usually) and can be used to plot the
usual ‘water limits’. Other constraints are possible. See the carbonate example with con-
straints on the total carbonate in the system ( Example 25 )
104 PhreePlot Guide

4. cualquier variable de 'acarreo' ( nout4)

5. las variables del 'sistema' - pH, pe, las presiones parciales logarítmicas de O 2 ( g) y H 2 ( g) y
temperature ( o C) (always these five pairs of values in that order).

The final items PUNCH ed are the five counts, nout1-nout5. PhreePlot receives the five groups of species,
their values and their counts as one long list. The counts tell PhreePlot how to read the list.

The minimum output required to prepare a predominance diagram is one dominant species ( nout1
= 1) and five system variables ( nout5 = 5).

‘Carry’ variables are user-defined numeric variables that are wanted to be output but which play no part in
the calculation of the predominance diagram. They are sent as name-value pairs. For example, the script ht1minerals.inc
script can be used to list all the minerals that precipitate somewhere in a predominance diagram. This can
be used to reduce the mineral phases considered during the speciation calculations. In this example, a list
of the summary statistics (count, minimum, mean and maximum value) for each species output as a
variable is listed in the log file provided the out file has been turned on ( out T). Las variables de 'acarreo'
se escriben en los archivos de salida y seguimiento y se agregan automáticamente al diccionario de
etiquetas. El archivo de seguimiento utiliza los nombres de las especies que se encuentran en la primera
iteración como encabezado de columna, por lo que debe asegurarse de que se produzca la misma lista
ordenada en todas las iteraciones posteriores.

El ht1.inc y ht1c.inc los scripts usan el SYS () función para devolver una lista de la concentración de todas las especies
del elemento de interés, las llamadas 'especies principales'. Esta lista se devuelve de Phreeqc preseleccionado en
cantidad decreciente del elemento principal de la especie. Esto no es necesariamente en términos de
concentraciones de especies decrecientes donde están involucradas especies polinucleares.

Los tres primeros se envían de vuelta a PhreePlot como bloque 1 a través del SELECTED_OUTPUT 'archivo' por
PUÑETAZO inglos en la secuencia:

nombre1 concn1 nombre2 concn2 nombre3 concn3

dónde nombre1 tiene la mayor concentración y nombre3 el más bajo. Si existen menos de tres
especies, entonces se devuelve una o dos dependiendo del número disponible (el diagrama
de predominio es trivial si solo hay una especie).
La salida restante se escribe en el 'archivo' de salida seleccionado de manera similar, es decir, siempre como un nombre
de especie seguido de un valor numérico, generalmente una concentración.

Un ejemplo en el que se escribe una gran cantidad de variables de acarreo en cada punto calculado de
una gráfica de predominio se da en demo \ grid \ gridhfo_with_carry.ppi. Aquí, las variables de acarreo están
contenidas en un archivo separado, carry.inc, y ofrecer un desglose detallado del sistema en términos de
concentraciones de especies para las 'especies principales' y los minerales y gases presentes en cada
punto. Es bastante sencillo adaptar este archivo a sus necesidades particulares.

8.1.2 Uso del ht1.inc código para devolver la especie dominante

Un diagrama de predominio se calcula más fácilmente usando el ht1.inc código descrito anteriormente. A
continuación se ofrece un ejemplo sencillo para preparar un diagrama pe-pH para Fe (ver Ejemplo 3 ).

El QUÍMICA La sección comienza con el archivo de inclusión (su posición dentro de una simulación dada no es
importante) y luego tiene un SOLUCIÓN Bloque de palabras clave para definir las condiciones iniciales: la cantidad
total de cada elemento presente en el sistema. Esto es constante y, por lo tanto, se puede configurar en una
simulación separada.

A esto le sigue una segunda simulación que incluye un EQUILIBRIUM_PHASES bloque de palabras
clave. Esto proporciona el mecanismo para atravesar los ejes xey, y para definir las fases
minerales que pueden precipitar (o disolverse). Esto significa que las dos etiquetas, < x_axis> y
<y_axis> tienen que estar presentes, ya sea explícita o implícitamente. Tenga en cuenta que el eje x está controlado por
Fix_H + ( definido en ht1.inc) y es por tanto el pH. Las condiciones iniciales incluyen la
concentración total de Fe 3+.
Parcelas de predominio 105

El pH se ajusta agregando (o restando) NaOH. Tenga en cuenta que el pH inicial es bajo (y preferiblemente se establece
en menos del pH mínimo requerido en el eje x) El eje y está vinculado a un
presión parcial fija de O 2 ( g) suministrado por un depósito externo de O 2 ( 10 mol). La trama crea-
ated es, por tanto, uno de log F O 2 ( g) vs pH. Esto funciona más rápido que usar un ' Fix_pe ' Acercarse. Dado que el
pe siempre se incluye en los cálculos y en los archivos de salida, un cambio de escalas y puede
puede hacerse cuando se está generando la trama o posteriormente volviendo a trazar utilizando el escala
configuración ( pe, eh o mV).

QUÍMICA
incluir 'ht1.inc'
SOLUCION 1
pH 1.8
unidades mol / kgw
Fe (3) 1e-2
N/A 1e-1
Cl 1e-1
FINAL

UTILICE LA 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 el signo negativo directamente delante de < x_axis> etiqueta. Esto permite especificar el eje x
directamente en términos de pH. Esto funciona porque la sustitución de la etiqueta se realiza sin introducir
espacios adicionales alrededor de la etiqueta. Este enfoque funciona proporcionando el valor de < x_axis>
no se vuelve negativo. La alternativa es utilizar un numericTags relación para definir una nueva etiqueta
como - < eje_x>.

En resumen, debe proporcionar las condiciones iniciales de la solución (concentraciones totales), los
medios para atravesar los ejes xey incluyendo el < x_axis> y < eje_y> etiquetas, y debe incluir cualquier
fase que pueda precipitar en un EQUILIBRIUM_PHASES bloque de palabras clave.

Es posible modificar el ht1.inc archivo para alterar la lógica por la cual una especie es promovida a la cima. Por
ejemplo, el minstab1.inc y minstab2.inc Los archivos están diseñados para resaltar los minerales más abundantes o más
probables presentes. También es posible modificar la forma en que se presentan los nombres de las especies,
por ejemplo, para los minerales, agregando la fórmula del mineral debajo del nombre del mineral (por ejemplo,
ver un ejemplo de esto) o en lugar del nombre del mineral.

8.1.3 Problemas con el enfoque de 'búsqueda y seguimiento' - 'polígonos sin cerrar'

Aunque inicialmente se pensó que los problemas numéricos en el rastreo eran el mayor problema
probable con el enfoque de 'cazar y rastrear', la mayor dificultad en la práctica ha sido unir las partes de
'cazar' y 'rastrear' del procedimiento en los límites de la trama. Si un límite de campo coincide con, o está
muy cerca, de un límite del dominio de cálculo, esto puede resultar en muchas 'burbujas' y, en última
instancia, fallará debido a los 'polígonos no cerrados'. Todos los polígonos deben estar perfectamente
cerrados para permitir la coloración y el etiquetado.

Si está utilizando el ' ht1 'tipo de cálculo, lo primero que debe hacer es probar el' ht2 ' tipo.

Aunque PhreePlot puede reiniciarse automáticamente con una resolución diferente, lo que
potencialmente desplaza el límite del campo fuera del límite del dominio, esto no es garantía de
éxito. Aumento del tamaño del dominio de cálculo ( xmin , ymin , ...) es una mejor solución: el
dominio de trazado ( pxmin , pymin , ...) no tiene por qué coincidir con el dominio de cálculo.

Es mejor evitar que los límites del campo estén muy cerca de los límites del dominio siempre que sea posible.
Un problema común es cuando el límite superior de agua se establece exactamente en 1 atm O 2 ( Ginebra ht1.inc y
luego ymax para (log O2 (g)) se establece en 0. Esto coloca el límite para los cálculos exactamente en un
límite de campo: en este caso, el límite artificial creado por el límite superior del agua. Es mejor establecer
el límite superior ( ymax ) del dominio de cálculo para ser algo mayor, digamos 1 o más, o para alterar
ligeramente el límite de agua. La alternativa es establecer el límite de agua exactamente
106 Guía PhreePlot

1 atm pero para configurar ymax algo más alto.

8.1.4 Optimización de la eficiencia del cálculo

Minimizar el tamaño del diccionario de etiquetas puede aumentar significativamente la velocidad de los cálculos
y, por lo tanto, las etiquetas no utilizadas deben eliminarse siempre que sea posible. Minimizar el número de
fases minerales consideradas también mejorará la velocidad de cálculo.

8.1.5 Diagramas de predominio vs estabilidad mineral

Un diagrama de predominio siempre muestra las especies predominantes (a menos que sea anulado por
una restricción). La especie predominante es la que representa el mayor número de topos de las
principales especies. Un diagrama de estabilidad es similar, excepto que si una especie mineral está
presente, anula todas las especies en solución en precedencia sin importar su concentración. Los
diagramas no son muy diferentes ya que los minerales a menudo son bastante insolubles y dominan la
especiación general no lejos de los límites solución-mineral. Si hay más de una especie mineral presente,
prevalece el mineral más abundante (en términos de moles de la especie principal).

La opción de calcular los diagramas de predominio y estabilidad mineral puede implementarse


fácilmente al incluir el ht1c.inc código en el Phreeqc código.

Si se desea un diagrama de estabilidad mineral que contenga solo especies minerales, la especie principal debe
establecerse con el valor especial ' minerales 'y lo más importante, el minstab1.inc incluir archivo usado en lugar de ht1.inc
( Ejemplo 54 ). Luego se calcula la precedencia en términos de las especies minerales más abundantes (en
términos de moles de mineral), si están presentes. Por tanto, la precedencia en este caso puede depender de la
fórmula mineral utilizada.

8.1.6 Uso ht1minerals.inc para determinar los minerales presentes

Muchos de los minerales de una base de datos nunca llegarán a ser estables en ninguna parte de una parcela de
predominio, incluso cuando todos los componentes necesarios estén presentes en el sistema. Es posible que nunca
estén cerca de la saturación o pueden estar protegidos de la precipitación por un mineral estrechamente relacionado
pero más estable.

Estos minerales que no precipitan pueden excluirse de los cálculos de especiación sin ninguna
pérdida de precisión. Esto es significativo ya que excluir estos minerales innecesarios de la
EQUILIBRIUM_PHASES El bloque de datos puede acelerar los cálculos considerablemente.

El archivo de inclusión, ht1minerals.inc, es parecido a ht1.inc excepto que también escribe como variables de 'acarreo'
todos los minerales que tienen un índice de saturación de cero o superior para cada cálculo de especiación, es
decir, estas son las especies que están saturadas o sobresaturadas.

PhreePlot analiza automáticamente todas las variables de 'acarreo' en el archivo de salida, si está presente, y
envía estadísticas de resumen al archivo de registro. En este caso, habrá una tabla de todas las especies de
minerales para las que SI> = 0 en algún momento. Mirando a la ' max La columna 'de esta tabla proporciona la
información necesaria. Todas las especies que tienen un valor máximo de 0 (o muy cercano a él) han precipitado
y ya deben haber sido incluidas en EQUILIBRIUM_PHASES. Aquellos con un valor máximo significativamente mayor que
0 podrían precipitar si se incluyen y, por lo tanto, son potencialmente relevantes.

Los minerales sobresaturados serán aquellos que existen en la base de datos y que pudieron
haber precipitado pero no lo han hecho ya que no se han incluido en el EQUILIBRIUM_PHASES
bloque de datos. La repetición con todos estos minerales incluidos permitirá identificar un conjunto mínimo de
minerales, es decir, aquellos que luego tengan un valor máximo cercano a cero.

Usando ht1minerals.inc por lo tanto, identifica todos los minerales en una base de datos que pueden ser relevantes para el
sistema actual, así como aquellos que definitivamente no lo son. Esto incluye todos los minerales, no solo los que
contienen las especies principales.

Esta opción requiere que el archivo de salida se genere realmente, no lo es de forma predeterminada. Esto se
logra estableciendo ' fuera de T 'en el archivo de entrada. Aparte de eso, simplemente reemplace ' ht1.inc ' por ' ht1min-
erals.inc 'en el archivo de entrada.
Parcelas de predominio 107

Dado que este enfoque solo analiza los cálculos de especiación realmente realizados, es necesario cubrir
todo el dominio de interés de manera bastante sistemática. Esto se hace mejor con el ' cuadrícula 'método.

Un enfoque alternativo es incluir automáticamente todos los minerales posibles en el EQUILIBRI-


UM_PHASES bloque de datos. Este es el enfoque adoptado por ht1allminerals.inc incluir archivo y el demo
\ minstab \ allminerals.ppi ejemplo.

8,2 T ÉL ' CUADRÍCULA ' ACERCARSE

El enfoque de la cuadrícula ( Ejemplo 1 ) es simple y confiable pero relativamente lento,


especialmente a altas resoluciones. Una ventaja es que no depende de poder acceder a todos los
límites internos desde los límites del dominio ni requiere límites relativamente libres de ruido. El
enfoque ht1 requiere ambas condiciones. La desventaja es que puede pasar mucho tiempo
analizando partes del dominio donde no hay cambios en las especies dominantes.

El resolución especificado para un gráfico de cuadrícula divide los rangos de los ejes xey en una cuadrícula
cuadrada con el número especificado de nodos en cada dirección. Por tanto, hay resolución-1 celdas de cuadrícula en
cada dirección, cada una con un nodo en su centro. Dado que las celdas están centradas en los nodos y la gráfica
se recorta en los límites del dominio, el conjunto periférico de celdas alrededor de la gráfica se representa en
realidad como medias celdas.

Los cálculos de especiación se llevan a cabo en cada nodo y las especies dominantes se identifican para cada celda
centrada en el nodo. Los resultados de estos cálculos se almacenan en el archivo de seguimiento. Este es el archivo que
se utiliza para volver a dibujar.

Cada celda o píxel se 'colorea' de acuerdo con la especie dominante y los límites entre las especies
ubicados para dar polígonos. Este enfoque no desciende al nivel del vector (segmento de línea
individual), lo que significa que no es posible simplificar los límites utilizando el mismo algoritmo
que se utiliza en el enfoque ht1. Por tanto, se conservan los pasos característicos en los límites de
píxeles originales.

De forma predeterminada, todos los polígonos están coloreados y etiquetados. Esto incluye polígonos como H 2 ( g)
y el 'no disponible' o un N / A campo que se produce cuando el Phreeqc la especiación falla. Ningún
El campo se puede omitir de una réplica estableciendo el número de especie (sp) en el archivo de etiquetas (*. laboratorio)
a un valor negativo.

Los polígonos se representan en orden decreciente de tamaño, el más grande primero.

Los resultados de la especiación se almacenan en la pista (' trk ') expediente. Dado que estos se calculan de una manera
bien definida, los cálculos se pueden reiniciar a partir de un conjunto de cálculos parcialmente completo producido por
un accidente o mediante el uso de una interrupción y una parada. Para hacer esto, configure método de cálculo
a 3 y reinicie. Esto debería reanudar los cálculos desde donde lo dejaron y se aplica tanto al archivo de
seguimiento como al archivo de salida, si se selecciona. Esto funciona tanto con el ' cuadrícula ' y ' rejillas 'métodos
de cálculo.

8,3 T ÉL 'H UNT Y TRACK ' ACERCARSE

8.3.1 Estrategia

El enfoque de "caza y seguimiento" encuentra y sigue los límites internos en los diagramas de predominio
y estabilidad mineral. Comienza cazando a lo largo del eje y de la izquierda hasta que encuentra un cruce
de especies predominantes y luego lo usa para rastrear internamente. Una vez que se ha agotado, caza a
lo largo de los ejes restantes. Fundamentalmente, este enfoque se basa en el supuesto de que todos
estos límites pueden alcanzarse desde un límite de dominio (eje), es decir, que no hay "islas". Este es a
menudo el caso ( Ejemplo 1 y Ejemplo 3 ), pero no siempre ( Ejemplo 2 y Ejemplo 43 ).

El ' ht1 El algoritmo rastrea los límites internos utilizando pasos únicos de longitud fija a lo largo de una cuadrícula
imaginaria. En cada punto, el algoritmo solicita que se realice un cálculo de especiación y espera que el
programa de especiación devuelva la concentración y el nombre de las tres especies principales,
108 Guía PhreePlot

es decir, las tres especies más abundantes. Estos se transmiten a través del SELECTED_OUTPUT expediente. La
forma precisa en que se calculan la controla el usuario mediante declaraciones dentro del
USER_PUNCH bloque de un Phreeqc fichero de entrada. También es posible proporcionar restricciones
definidas por el usuario que anulen la secuencia de predominio normal. Esto permite definir claramente
las áreas inviables del diagrama.

El archivo de entrada también controla todos los demás aspectos de la química, incluida la configuración química
inicial, por ejemplo, las concentraciones totales de elementos y una lista de todas las fases de gas, minerales y
adsorbidas potencialmente presentes, y la forma en que los ejes x e y de la El diagrama se debe recorrer en
respuesta a las solicitudes del algoritmo ht1.

El algoritmo ht2 es similar a ht1 pero puede hacer frente mejor a múltiples uniones (incluidas las uniones de
límites) dentro de una celda determinada.

El tamaño del paso y la resolución de la cuadrícula están controlados por el resolución parámetro. El tamaño del
paso es simplemente el intervalo de cada eje (valor máximo - valor mínimo) dividido por la resolución-
1. La resolución es siempre la misma para los ejes x e y. Cada celda está centrada en un punto de
cuadrícula calculado.

8.3.2 Detalles del algoritmo de 'caza y seguimiento'

Aplicar los conceptos de caza y rastreo a nivel práctico

Suponemos que presentado con valores para las dos variables 'maestras' (que representan los ejes xey en
el diagrama de predominio), el programa de especiación puede devolver una especiación completa o al
menos la especie predominante. Esto es lo que ht1.inc el guión lo hace.

Como se mencionó anteriormente, la estrategia ht1 para ubicar los límites del campo presupone
que todos los límites del dominio y del eje están interconectados, es decir, no hay "islas"
(Kinniburgh y Cooper, 2004).

El enfoque de cuadrícula, por otro lado, es bastante ineficaz, ya que muchos de los puntos evaluados
estarán lejos de un límite y, por lo tanto, aportarán poca información útil. También es difícil garantizar la
ubicación de todos los campos sin un esfuerzo computacional bastante grande. El enfoque ht1 se
concentra en localizar y rastrear los diversos límites y no pone ningún esfuerzo en los cálculos lejos de los
límites. No requiere una cuadrícula inicial de puntos. El algoritmo es similar al que se usa a veces para
ubicar 'líneas de fracción de fase cero' en diagramas de fase y comienza buscando sistemáticamente a lo
largo de cada límite de eje por turno hasta que se encuentra un cambio en el campo de predominio. Una
vez que se ha localizado un cambio, el algoritmo rastrea a lo largo del límite hasta que alcanza otro eje,
recordando cualquier unión con otras especies predominantes a medida que avanza. Luego regresa a
estos cruces para seguir estos caminos hasta que se hayan seguido todos los límites internos. Luego
busca a lo largo de los ejes restantes, de nuevo rastreando los límites internos hasta que se hayan
buscado los cuatro ejes.

Nuestro algoritmo de búsqueda y seguimiento se basa en una cuadrícula regular fija sobre el
dominio de interés definido por los ejes xey. El dominio suele ser rectangular, con sus límites (ejes)
también en la cuadrícula. El algoritmo asume que al menos un límite de predominio realmente
cruza un eje (si ninguno lo hace, debe haber una sola especie predominante).

La primera tarea es identificar dicho punto de cruce buscando a lo largo de los límites. Comenzando en
una esquina seleccionada del dominio, se identifica la especie predominante. El siguiente punto para el
cálculo es el punto de cuadrícula más cercano en el eje que define el límite del dominio, moviéndose en
una dirección seleccionada. Si tiene la misma especie predominante, el algoritmo avanza a puntos
sucesivos de la cuadrícula en el eje hasta que se encuentra un cambio. Esta es la parte de "caza" del
algoritmo. Una vez que se ha identificado un punto de cambio, el algoritmo pasa al modo de
"seguimiento", siguiendo el límite de predominio dentro del dominio.

Figure 8.2 shows an example with a predominance boundary (shown as a dashed line), whose
precise location is unknown, crossing the y axis of a rectangular domain. Grid points where
speciation calculations are undertaken are identified in Figure 8.2 by numbered open and
filled circles. The numbering indicates the order in which the grid points of interest are vis-
Predominance plots 109

ited.

(a) (B)

9 10 11

C ary
und
e bo D
4 5 Tru 7 12 2
cies
spe
a
ing B

log concn
ck
3 Tra 6 8
spec
ies1
Domain boundary

2
Especie 1 dominante
Especie 2 dominante
Hunting

1 X1 XB X2
(5) (7)

Figure 8.2. Strategy for tracking the boundary between two fields. (a) after locating a change in dominance on a
domain boundary, cells are explored in the order a, b, c…. The numbers indicate the order and location where spe-
ciation calculations are undertaken and the filled and open symbols at the grid intersections indicate the dominant
species returned by these calculations; (b) method of linear interpolation used to establish boundary location in cell
d).
En este ejemplo, el primer punto de la cuadrícula de la secuencia está en el eje y,
donde el algoritmo está en modo de búsqueda. Continúa por los puntos 2 y 3,
donde no hay cambio de especies predominantes, llegando al punto 4 donde se
identifica un cambio. Por lo tanto, debe haber una intersección del eje y con el
límite de predominio entre los puntos 3 y 4. El modo de seguimiento comienza
ahora con valores de predominio calculados en los puntos 5 y 6, que completan
el rectángulo a de la cuadrícula. El límite de predominio debe salir por uno de los
tres lados restantes de este rectángulo. Esto se identifica inmediatamente como
el lado que une los puntos 5 y 6. Este lado de salida del rectángulo a se convierte
en el lado de entrada del rectángulo b, el segundo que se construirá.

Esta técnica rastrea una secuencia de cuadrados de cuadrícula a través de los cuales corre el límite
de predominio. No proporciona coordenadas por las que pasa la línea. Estos pueden aproximarse
por interpolación lineal a lo largo de cada lado de entrada o salida. Se requieren cuatro valores para
realizar esta interpolación (Sección 8.2). Estas son las concentraciones de las especies dominantes y
subdominantes en los puntos finales del lado. Denote los puntos finales (x1, y1) y (x2, y2), y las
concentraciones de log10 dominantes y subdominantes son d1, s1, d2 y s2. Entonces, la ubicación
aproximada interpolada linealmente (xb, yb) del límite de predominio cuando cruza la línea que une
(x1, y1) y (x2, y2) es:

En una cuadrícula rectangular, x1 = x2 o y1 = y2, por lo que una u otra de las ecuaciones siempre
estará degenerada, con xb = x1 o yb = y1. Es sencillo extender este concepto a tres componentes.
Esto mejora la ubicación importantísima de los puntos triples.

La construcción sucesiva de líneas de entrada / salida y rectángulos en la cuadrícula fija continúa


hasta que sale del dominio o se identifica una unión en el límite de predominio. Se indica una unión
cuando más de dos especies se identifican como dominantes entre las cuatro esquinas de un
rectángulo. Si, por ejemplo, hay tres especies dominantes, estas definen dos lados de salida de un
solo rectángulo. Las dos líneas limítrofes de este rectángulo se siguen a su vez, con la señalización
adecuada de la secuencia de operaciones necesaria. Para ejemplos más complejos, un límite de
predominio puede volver a una unión previamente identificada. El algoritmo realiza un seguimiento
de cuándo ocurre esto. Finalmente, los segmentos de línea se ensamblan en polígonos.

El límite del dominio debe buscarse exhaustivamente en el modo de búsqueda para garantizar que no se
pierdan los límites de predominio. Una vez que se ha establecido un punto de cruce, su ubicación se refina
progresivamente con precisión de subcuadrícula. A veces es necesario aumentar la resistencia de la red.
110 Guía PhreePlot

Solución para garantizar que las secuencias de caza y seguimiento se unan correctamente. Esto se hace
automáticamente pero requiere un reinicio completo.

El enfoque actual de avanzar secuencialmente a través de cada punto de cuadrícula de


límite de dominio se reconoce como ineficaz, aunque se garantiza que detecta todos los
cruces dentro de la resolución (espaciado de cuadrícula) elegida. Si la cuadrícula es
demasiado gruesa, la ubicación de los cruces puede estimarse mal. Para un algoritmo de
cuadrícula fija de este tipo, habrá un compromiso entre eficiencia y precisión
computacional. Un espaciado de cuadrícula equivalente a una resolución de 1/500 del
límite del dominio normalmente da curvas suaves y confiables. La ventaja de utilizar una
cuadrícula fija es que se pueden rastrear curvas bastante complejas. Sin embargo, el
esquema no tiene plenamente en cuenta las características conocidas de algunos límites
de predominio inherentes al modelo químico subyacente. Esto puede provocar cierta
ineficiencia.
Se puede seguir un procedimiento de seguimiento similar cuando se utiliza el criterio de estabilidad o cuando se
El límite artificial se agrega como resultado de una restricción definida por el usuario, por ejemplo, H 2 ( g) = 1 atm. En
estos casos, la interpolación lineal ya no se puede utilizar para refinar el punto de intersección y, por lo tanto, la
siempre se elige el punto medio.

Definiciones de 'predominio' y estabilidad mineral

En los diagramas clásicos de estabilidad mineral, la posición del límite de la solución mineral depende de
la supuesta actividad de los componentes de la solución en el límite. Garrels y Christ, siguiendo a
Pourbaix, definieron el límite como el punto donde la "suma de las actividades de los iones en equilibrio
con el sólido excede algún valor elegido". Eligieron 10-6 como valor predeterminado sobre la base de que
si es menor que este valor, el sólido tenderá a comportarse como un constituyente inmóvil en el medio
ambiente. En el enfoque de especiación completa, la actividad en la frontera está determinada por la
especificación del sistema y el cálculo de la especiación y normalmente estará especificada por una
cantidad total fija de los diversos componentes o por una actividad / fugacidad fija, por ejemplo, para
gases. No hay necesidad de una simplificación excesiva del sistema, por lo que dichos diagramas se
pueden personalizar para sistemas de interés particular. La única decisión es si se traza el límite para el
dominio de predominio o el dominio de estabilidad.

Cuando se incluyen reacciones de adsorción, es posible comparar el número total de moles de las especies principales en cada

una de las fases (gas, sólido, solución, adsorbido) para determinar la fase predominante (de las cuatro posibilidades).

Alternativamente, se pueden revelar más detalles si cada especie se considera de forma independiente, como se hace

normalmente en los diagramas de predominio de sólo solución. La especie predominante se define entonces como la especie que

representa el mayor número de moles en todo el sistema. El ht1.inc El código trata a cada especie adsorbida como una entidad

separada, al igual que una especie en solución. La definición de "especie" se vuelve más ambigua cuando se considera una fase

"adsorbida", ya que la definición normal de una especie adsorbida es en términos del tipo de sitio de unión y, por lo tanto, haría

que los diagramas fueran muy sensibles al modelo de adsorción adoptado. Probablemente, un enfoque más útil es agrupar todas

las especies adsorbidas en una sola 'súper especie' para fines de clasificación. Este es el enfoque adoptado en el ht1c.inc

código. Si la especiación adsorbida detallada es de particular interés, entonces ht1.inc debería ser usado.

8.3.3 Fallo del enfoque de 'caza y seguimiento'

Una ventaja del enfoque de "búsqueda y seguimiento" es que puede crear un diagrama vectorizado directamente. Esto
conduce a un tamaño de archivo de trazado pequeño y, después de suavizar los límites del campo, se pueden producir
límites de apariencia suave en contraposición a los límites irregulares del enfoque de cuadrícula.

En principio, el enfoque de "búsqueda y seguimiento" puede producir diagramas de mejor calidad con menos
esfuerzo computacional; el esfuerzo depende de la longitud de los límites que se deben rastrear en lugar del
cuadrado de la resolución como con el enfoque de cuadrícula. Pero la advertencia importante es que puede
pasar por alto campos potencialmente importantes si no cruzan ninguno de los límites del dominio. Esto puede
ocurrir cuando las 'cuñas' se cruzan con el límite del dominio.
Parcelas de predominio 111

Estas islas parecen ser bastante raras y la regla de la fase indica que es probable que estén confinadas a
especies en solución. Se da un ejemplo en Ejemplo 43 . Hemos comprobado todos los demás diagramas de
este informe y no hemos encontrado otras "islas".

Sin embargo, siempre es importante comprobar que no hay islas cambiando el calculationType
desde ' ht1 ' para ' cuadrícula 'y reduciendo el resolución ajuste a un valor más razonable.
Un segundo problema es que para generar los límites de campo requeridos y los polígonos asociados, es
necesario que todos los diversos segmentos de línea producidos durante el seguimiento se ajusten
exactamente. Debido a los errores numéricos implícitos en el enfoque numérico utilizado por Phreeqc, este
no es siempre el caso y es posible que algunos polígonos no se cierren.

A veces también es problemático conectar la parte de 'caza' que se mueve a lo largo de los límites del
dominio y la parte de 'seguimiento' que se mueve a lo largo de los límites internos. Esto es especialmente
cierto cuando un límite de campo se cruza, o corre muy cerca, de un límite de dominio. Esto puede
provocar que no se cierren todos los polígonos, es decir, que se creen los polígonos limpios necesarios
para el relleno de color. Esto a veces se puede evitar cambiando la resolución del gráfico y PhreePlot intentará
hacer esto hasta cierto punto automáticamente, pero si esto falla, cambiar manualmente los límites del
dominio para que no haya una intersección muy cerca debería ayudar. Alternativamente pruebe el ' cuadrícula
' Acercarse.

8.4 F DOMINIOS FACILES Y ELABORACIÓN DE mi H (PE) -P H DIAGRAMAS

8.4.1 Principios generales

The classical Pourbaix diagrams extend from pH 0 or less to pH 14 and over a wide range of redox
conditions effectively ranging in oxygen partial pressures, say frommore than 1e0 to less than
1e-100 atm. Extreme conditions such as these may not be physically realistic and are only
considered in classic Pourbaix diagrams because the constraints of a full speciation are not
imposed. This is also not entirely within the domain within which Phreeqc is able to operate (at
least using its ion association activity model) especially under the extremes of redox condi- tions
where water is itself not stable – making the concept of ‘dissolved’ species a nonsense.
Phreeqc realiza un seguimiento de la masa de agua y cuando la mayor parte se ha evaporado, la concentración
de los solutos restantes puede llegar a ser extremadamente alta en la pequeña cantidad de agua que queda.
Este dominio de falla se puede mapear y se muestra usando el enfoque ht1 (Figura 8.3). El enfoque de cuadrícula
da un resultado similar.

A los 25 o C, la falla ocurre en el registro inferior F O 2 ( g) de -96 atm y surge debido a la fuerte
descomposición del agua en estas condiciones - se descompone liberando H 2 ( gramo). Esta falla ocurre en
un registro más alto F O 2 ( g) a temperaturas más altas, por ejemplo, en log F O 2 ( g) de -86 a 60ºC. Hay
también un límite al máximo de O 2 ( g) presión parcial que se puede sostener en sistemas acuosos ya que
se combina con H + para producir agua. Phreeqc eventualmente fallará bajo estos extremos
condiciones, aunque no sin esforzarnos (y tomarnos mucho tiempo para intentar encontrar una
solución).

Como consecuencia de estas reacciones y de los límites a los límites prácticos de O 2 ( g) que son
razonables, un típico Eh (pe) -pH tiene líneas diagonales superior e inferior que demarcan regiones donde
el diagrama no se evalúa.
En un tronco ortogonal F O 2 ( g) -pH diagrama, estas regiones 'sin evaluación' pueden ser simplemente
excluidos de ser calculados especificando los límites superior e inferior apropiados para el O 2 ( g)
fugacidad.

Por lo tanto, un diagrama pe-pH se puede preparar más fácilmente especificando la variable del eje y que se
Iniciar sesión F O 2 ( g) y luego convertir la escala redox con el escala configuración. Es posible
conducir el eje y con el pe definiendo el pe de forma análoga a la utilizada para el pH:

Fixed_e-
e- = e-
log_k 0.0
112 Guía PhreePlot

20
O 2 ( g)> 0,21 atm

0
Fe 2 ( OH) 24+
Fe 3+
- 20
log f O 2( g)

Fe (OH) 3 ( a)
- 40

- 60 Fe 2+

Fe (OH) 3 -
- 80 FeOH +
H 2 ( g)> 1 atm
N/A
- 100
0 2 4 6 8 10 12 14
pH

Figura 8.3. Iniciar sesión F O 2 ( gramo) vs Diagrama de pH para el Fe-H 2 O sistema en 25 o C calculado utilizando el enfoque
de búsqueda y seguimiento para un rango de dominio de -100> log F O 2 ( g)> + 20 y 0 <pH <14. Eso
muestra las regiones con log F O 2 ( g) <-95 y pH <1 donde Phreeqc no converge (etiqueta = NA).

y luego
...

EQUILIBRIUM_PHASES
...
Fijo_e- <loge-> O2 (g)

donde el signo de la variable del eje y se invierte usando

numericTags <loge-> = - <y_axis>

8.4.2 Etiquetas de dominio: evitar cálculos de especiación

El dominio de cálculo para un diagrama de predominio o una gráfica de contorno es siempre un área
rectangular definida por ( xmin , xmax , ymin , ymax ). Puede ser útil omitir ciertas partes de este dominio de
los cálculos de especiación, por ejemplo, porque se sabe que la especiación no tiene éxito o es innecesaria
en algunas regiones.

Un conjunto especial de etiquetas llamado etiquetas de dominio se puede utilizar para recortar el dominio de especiación, p. ej.

<domain1_value> = “<x_axis> + <y_axis>” \


<domain1_min> = -2 \
<dominio1_máx> = 22

Puede haber hasta 9 conjuntos de etiquetas de dominio, a saber < domain1_value> hasta <domain9_value>
y sus correspondientes etiquetas mínimas y máximas.

Estas etiquetas se definen en la forma habitual numericTags cuadra. < dominio norte_ valor> se evalúa antes de
cada cálculo de especiación y se compara con los valores mínimos y máximos correspondientes
establecidos con el < dominio norte_ min> y < dominio norte_ max> etiquetas. Si alguno de los valores está fuera de
este rango, se omite el cálculo de especiación.
Parcelas de predominio 113

Tenga en cuenta que es necesario determinar el valor del dominio antes de los cálculos de especiación y por lo tanto la
definición de la < valor_dominio1> La etiqueta solo debe usar aquellas etiquetas que sean conocidas antes de
especiación. Los más obvios son los < x_axis> y < eje_y> etiquetas.
La prueba anterior solo se aplica a las simulaciones de bucle principal. Las simulaciones previas al bucle siempre se calcularán en

su totalidad.

Estas etiquetas pueden ser útiles al generar un diagrama de pe-pH para eliminar los cálculos de
especiación de áreas fuera de los límites superior e inferior para la estabilidad del agua.

El ' ht1 El método de cálculo de un diagrama de predominio requiere que el acceso a los límites esté
disponible desde uno de los límites del dominio. Por lo tanto, no es posible reducir el tamaño del
dominio en los cuatro lados, ya que no habrá acceso a la región interna. Sin embargo, el ' cuadrícula 'enfoque
funcionaría con estas condiciones.

Al cálculo omitido se le asigna por defecto el nombre de 'especie' "Saltar" y los valores de especiación se establecen en INDEFINIDO.
Los resultados se incluyen en el archivo de seguimiento como de costumbre. Un signo '-' precede al número de iteración
del resumen progresivo que se muestra en la pantalla durante los cálculos.

El nombre de la especie y, por lo tanto, la etiqueta utilizada se puede renombrar editando el archivo de etiquetas
y volviendo a dibujar, o agregando una etiqueta de carácter especial con el nombre < nombre_dominio1>. El nombre
puede ser la cadena vacía, “”. El nombre del campo utilizado se toma del primer criterio de búsqueda fuera del
dominio del 1 al 9.

8.4.3 Fallo de especiación cuando no hay suficiente reactivo presente

Esto ocurre con mayor frecuencia cuando se intenta fijar el pH con el 'Fix_pH' táctica. Phreeqc
no convergerá a un pH bajo si la reacción que se utiliza para lograr el pH deseado no es factible. Por
ejemplo, si se usa NaOH para cambiar una solución de pH 2 a pH 1, es probable que finalmente falle. En
presencia de un electrolito de fondo que contiene Na tal como NaCl, esta falla no ocurrirá exactamente a
un pH 2 sino a un pH algo más bajo dependiendo de la cantidad de Na presente. Phreeqc intentará
alcanzar el pH bajo retirando NaOH (adiciones negativas de NaOH) hasta que todo el Na haya
desaparecido, momento en el que fallará. Este problema se puede resolver conectando el Na a un gran
depósito de un mineral que contiene Na ( Sección 6.5.5 ) como NaCl (halita), pero esto en sí mismo puede
tener efectos secundarios indeseables. El problema puede ser más complicado cuando otras reacciones
secundarias, como las reacciones redox, están produciendo / consumiendo protones. Luego, cuando se
cambian tanto el pe como el pH, no es necesariamente obvio si es necesario agregar ácido o base para
cambiar el pH.

8.5 C OPCIÓN DE LA RESOLUCIÓN DE LA PARCELA

La velocidad de cálculo depende de muchos factores, incluida la complejidad de la química, especialmente el


número de fases minerales, la duración de la USER_PUNCH código y la resolución de la trama. Un enfoque razonable
es comenzar con una resolución baja, digamos 50-100 para una gráfica ht1 o 20-50 para una gráfica de
cuadrícula, y aumentarla cuando se requiera una gráfica de calidad de producción. La resolución debe ser 10 o
mayor y normalmente debe ser menor que 2000. El algoritmo ht1 puede fallar al resolver las uniones a bajas
resoluciones, lo que puede llevar a que no se cierren correctamente todos los polígonos.

Si se requieren más detalles para un área en particular, amplíe reduciendo el tamaño del dominio con el
xmin , xmax , ymin , o ymax parámetros y recalcular en lugar de simplemente volver a trazar en la nueva escala.

PhreePlot a veces anula la resolución establecida originalmente en los archivos de entrada y la


aumenta o disminuye. Lo hace cuando necesita más resolución para resolver aparentes uniones de
4 vías o cuando una unión está demasiado cerca de un límite de dominio: Cambiar los límites de
dominio relevantes ( xmin , xmax , ymin , o ymax ) evitaría el último problema. A veces es necesaria
una reducción de la resolución si la salida de Phreeqc es por alguna razón inestable.
114 Guía PhreePlot

8,6 M SEGUIMIENTO DEL PROGRESO DE UN ' CAZA Y PISTA ' CORRER

Siempre que no se haya desactivado la salida de la pantalla, el progreso del seguimiento se mostrará en
la pantalla. A continuación se ofrece un ejemplo:

* * * PhreePlot *** Versión preliminar 0.01 (3 de enero de 2008)


Incorporación de la biblioteca Phreeqc de DL Parkhurst, SR Charlton (USGS),
Y CAJ Appelo (Amsterdam)
Hunt & Track por DG Kinniburgh, BGS y DM Cooper, CEH (NERC) Montaje por MJD
Powell (Universidad de Cambridge)
Trazado posdata por KE Kohler

<mainspecies> = Se
1 2.0000 - 80.0000 11 Se H2Se - 3.0010 - 5.6388
2 2.0000 - 76,8000 11 Se H2Se - 3.0000 - 7.2388
3 2.0000 - 73.6000 11 Se H2Se - 3.0000 - 8.8388
4 2.0000 - 70.4000 11 Se H2Se - 3.0000 - 10.439
5 2.0000 - 67,2000 11 Se H2Se - 3.0000 - 11.847
6 2.0000 - 64.0000 11 Se H2Se - 3.0000 - 13.447
7 2.0000 - 60,8000 11 Se H2Se - 3.0000 - 15.047
8 2.0000 - 57.6000 11 Se H2Se - 3.0000 - 16.647
9 2.0000 - 54.4000 11 Se H2Se - 3.0000 - 18.247
10 2.0000 - 51,2000 11 Se H2SeO3 - 3.0000 - 18.105
11 2.0000 - 48.0000 11 Se H2SeO3 - 3.0000 - 14.905
12 2.0000 - 44,8000 11 Se H2SeO3 - 3.0000 - 11,705
13 2.0000 - 41.6000 11 Se H2SeO3 - 3.0000 - 8.5055
14 2.0000 - 38.4000 11 Se H2SeO3 - 3.0029 - 5.3055
15 2.0000 - 35,2000 11 H2SeO3 HSeO3- - 3.1277 - 3.5938
dieciséis 2.0000 - 36,8000 11 Se H2SeO3 - 3.1333 - 3.7055
17 2.0000 - 35,2000 11 H2SeO3 HSeO3- - 3.1277 - 3.5938
18 2.0000 - 36.0000 11 H2SeO3 HSeO3- - 3.1277 - 3.5938
19 2.0000 - 36.4000 11 H2SeO3 Se - 3.3055 - 3.4738
20 2.0000 - 36.6000 11 Se H2SeO3 - 3.2358 - 3.5055
21 2.0000 - 36.4000 11 H2SeO3 Se - 3.3055 - 3.4738
22 2.0000 - 36.5000 11 Se H2SeO3 - 3.3256 - 3.4055
23 2.0000 - 36.4000 11 H2SeO3 Se - 3.3055 - 3.4738
24 2.0000 - 36.4500 11 H2SeO3 Se - 3.3555 - 3.3892
25 2.0000 - 36,4750 11 Se H2SeO3 - 3.3553 - 3.3805
26 2.0000 - 36.4500 11 H2SeO3 Se - 3.3555 - 3.3892
27 2.0000 - 36,4625 11 H2SeO3 Se - 3.3680 - 3.3717
28 2.0000 - 36.4687 11 Se H2SeO3 - 3.3634 - 3.3743
29 2.0000 - 36,4625 11 H2SeO3 Se - 3.3680 - 3.3717
30 2.0000 - 36,8000 21 Se H2SeO3 - 3.1333 - 3.7055
31 2.0000 - 36.0000 22 H2SeO3 HSeO3- - 3.1277 - 3.5938
32 2.0800 - 36.0000 23 H2SeO3 HSeO3- - 3.1496 - 3.5356
33 2.0800 - 36,8000 24 Se H2SeO3 - 3.1415 - 3.7055
34 2.0000 - 36,8000 11 Se H2SeO3 - 3.1333 - 3.7055
35 2.0000 - 36.4687 11 Se H2SeO3 - 3.3634 - 3.3743
36 2.0000 - 36,8000 21 Se H2SeO3 - 3.1333 - 3.7055
37 2.0000 - 36.0000 22 H2SeO3 HSeO3- - 3.1277 - 3.5938
38 2.0800 - 36.0000 23 H2SeO3 HSeO3- - 3.1496 - 3.5356
39 2.0800 - 36,8000 24 Se H2SeO3 - 3.1415 - 3.7055
40 2.0800 - 36.0000 22 H2SeO3 HSeO3- - 3.1496 - 3.5356
41 2.1600 - 36.0000 23 H2SeO3 HSeO3- - 3.1744 - 3.4804
42 2.1600 - 36,8000 24 Se H2SeO3 - 3.1514 - 3.7055
43 2.2400 - 36.0000 23 H2SeO3 HSeO3- - 3.2026 - 3.4285
44 2.2400 - 36,8000 24 Se H2SeO3 - 3.1638 - 3.7055

The columns are from left to right:

iteration number (number of speciation calculations)

x-axis value

y-axis value

type of move

sign: a -ve sign means a ‘constraint’ (a forced value) is in operation 1 =

first digit: hunting along an edge 2 = tracking an internal boundary

second digit: 1-4, side being traversed (starting with the left-hand y axis as 1 and
counting clockwise).

‘00’ is used for ‘grid’ plotting. ‘20’ for a ‘multi-point’ point


dominant species name

subdominant species name


Predominance plots 115

log concentration (mol/kgw) of dominant species

log concentration (mol/kgw) of subdominant species.

Where a constraint is operating, the indicated ‘dominant species’ is the constraint species, such as a
gas or in the case of a mineral stability diagram, a mineral. The indicated ‘subdominant’ species is
the species that would be dominant in the absence of the constraint. The numeric values of
constraints are the log’s of the constraint value. In the case of pure phases (gases and minerals),
this is the saturation index.

In the above example, the algorithm starts hunting along the y axis, finds a boundary crossing the
axis between -36.4625 and -36.8 and then starts tracking inwards along that boundary.
The boundary being tracked is between H 2 SeO 3 and Se. A

full record of the tracking is recorded in the track file.

A graphical display of the grid or ht1 tracking can be obtained by using the ‘ Esc p ’ combina- tion. A plot file ‘ plot.ps
'luego se escribirá en el directorio de archivos de entrada que muestra el progreso. En un gráfico ht1, el
círculo relleno de azul muestra la posición de cálculo actual. Este gráfico solo registra la fase de
seguimiento, no la fase de caza.

8,7 P LOTE Y R EPLOTACIÓN

método de cálculo 1 hace un conjunto completo de cálculos de especiación y generará todos los archivos necesarios para
trazar (la mayoría de los cálculos)

método de cálculo 2 no recalcula la especiación ni rehace el cálculo de los límites del polígono, pero
lee estos resultados del archivo de polígono y los nombres y posiciones de las etiquetas del archivo
de etiquetas (cálculos mínimos).

método de cálculo 3 no recalcula la especiación, pero recalcula los polígonos y la ubicación de


la etiqueta (cálculos intermedios).

8,8 M ODIFICAR LA APARIENCIA DE LAS PARCELAS DE PREDOMINANCIA

La apariencia de la trama se puede modificar mediante muchas de las palabras clave. Estos se pueden cambiar
en el archivo de entrada y volver a ejecutar el archivo con una de las dos opciones de reprogramación; no es
necesario rehacer los cálculos a menos que se requiera una resolución diferente.

Los colores de los campos se pueden modificar editando el diccionario de colores de relleno apropiado, es decir,
un archivo con el nombre predeterminado de fillcolor.dat.

Los campos se conocen principalmente por el número que se les asigna. El archivo de etiquetas traduce este número en
un nombre de campo. La coloración de polígonos individuales se puede desactivar estableciendo el número de especie
en el archivo de etiquetas en cero.

La apariencia de las líneas de límite internas se controla mediante la configuración: color de linea , grosor de línea ,
tipo de línea y guionesPerInch . El ' ht1 'utiliza el archivo vectorial para trazar el límite y solo traza
cada límite una vez. El ' cuadrícula ’ method uses the polygon file to plot the bounda- ries and
common boundaries will be plotted twice. This is likely to affect the appearance of dashed
lines in ‘ grid ’ plots since the overwriting may have different starting points.
Individual polygons, and their boundaries, can be removed from the plot by setting the species
number for all points (‘lines’) for the polygons of interest in the polygon file to zero or a nega- tive
number (reversing the sign in a text editor is the most convenient way of doing this).

The label position and orientation can be changed by nudging or editing the labels file. Edit- ing the
labels file can include changing the species name even to a blank field name, “”. The label is known
internally by its species number. Normally the label attributes are recalculated each time new field
boundaries are generated ( calculationMethod 1) but this can be changed by setting useLabelsFile to
TRUE. This ensures that the readings from the labels file will be used if possible. If the file does not
exist, it will be created. calculationMethod 2 has the same effect
116 PhreePlot Guide

for a replot.
It is possible to change the y scale (native, pe, mV or V) without recalculation using yscale .
Plot limits can be changed using pxmin etc but beware that if a larger range is specified there will
be a blank area around the plot and if a smaller domain is chosen the field boundaries will appear
correspondingly coarse – would be better to recalculate at the new resolution which will also
calculate the label positions better.
The ‘steppiness’ of the boundaries in ‘ht1’ plots can be controlled with the simplify palabra clave. El valor
predeterminado es 1, así que elija un valor mayor (hasta 10 digamos) para suavizar más la línea. Vuelva a calcular
los límites y vuelva a trazar utilizando método de cálculo 3 en lugar de 2, ya que el suavizado debe rehacerse. A simplificar
el valor de 0 mostrará todos los puntos límite. ' cuadrícula 'las parcelas son por definición' escalonadas 'y simplificar no
tiene ningún efecto sobre esto.

Se puede agregar texto adicional, incluidas etiquetas, con texto o extraText . Existe un control total sobre la trama
en la que se aplica el texto más la fuente, el tamaño, el color, la justificación y la orientación del texto agregado.

Se pueden agregar datos adicionales de otros archivos al gráfico usando el puntos y líneas palabras clave
combinadas con extradat palabra clave para agregar los archivos de datos adicionales a la ruta de búsqueda.
Estos datos deben estar en formato de salida tabular regular. La columna x de cada archivo debe etiquetarse con
' X 'en el encabezado, ya que esta es la etiqueta que siempre se usa en los archivos de gráficos de predominio. No
hay etiquetado automático o generación de una leyenda para líneas o puntos agregados de esta manera.
texto o extraText se puede utilizar para agregar etiquetas manualmente. símbolosLíneas o extraSymbolsLines
se puede utilizar donde se desee más control sobre los símbolos utilizados o los anchos de línea.

Se puede cambiar la escala de toda la trama con plotFactor .

Algunas de las configuraciones principales se muestran en la Figura 8.4. Para un control más completo sobre la
apariencia del gráfico, transfiera los datos a un paquete de gráficos más potente. Esto se puede hacer a nivel de
imagen (archivo ps) o de datos (archivos pol y vec).

plotTitle
plotFactor
plotTitleSize
plotTitleColor

fuente Fe-O 2- H 2 O
(solo precipitados de HFO: escala pe)

dominio
pymax 25

pymajor minimumAreaForLabeling tickSize


tickColor
pydec 15 Fe 3+
Fe 2 ( OH) 24+
O 2 ( g)> 0,21 atm
axisLineWidth
escala axisLineColor
yaxisLength

5
pe

Fe (OH) 3 ( a) Tamaño de la etiqueta

labelColor
ytitle Fe 2+

grosor de línea
-5 color de linea

changeSignOnYaxis H 2 ( g)> 1 atm simplificar


FeOH +
Fe (OH) 3 -
pyminor

pymin - 15 axisNumberSize
2 4 6 8 10 12 axisNumberColor

xoffset pxminor pxdec pH pxmajor


desplazamiento
pxmin pxmax
xtitle
axisTitleSize
changeSignOnXaxis axisTitleColor

xaxisLength

Figura 8.4. Gráfico de predominio típico de 'ht1' que muestra algunas de las palabras clave que controlan la
apariencia del gráfico.
Parcelas de predominio 117

8,9 A DDING LÍNEAS Y PUNTOS A UNA PARCELA DE PREDOMINANCIA

La forma habitual de agregar líneas y puntos a una gráfica es a través de símbolosLíneas o un extraSym- bolLines expediente.

Sin embargo, también es posible agregar líneas y puntos a una gráfica de predominio usando el líneas y
puntos palabras clave y datos leídos de un archivo. Sin embargo, estos datos no se incluyen en la escala
automática; esto será determinado únicamente por la gráfica de predominio. customXcolumn será
necesario definirlo, aunque no es necesario que coincida con la variable del eje x en la gráfica de
predominio. No se producirá ninguna leyenda. La opción de 2 ejes no funciona en este modo.

También es posible superponer uno o más gráficos existentes (en forma de PhreePlot- archivos ps generados) en
la parte superior de la parcela existente utilizando un cubrir . Esto puede resultar útil para agregar líneas de otro
gráfico de predominio.

8,10 C REGISTRO DEL ETIQUETADO DE LAS PARCELAS Y LA PLOTEACIÓN DE CAMPOS

Las posiciones de las etiquetas se toman del archivo de etiquetas y, por lo tanto, es posible que no se centren si se ha
cambiado la escala del gráfico. No se trazarán si sus centros están fuera del área de la parcela. En tales casos, realice un
nuevo cálculo completo o simplemente un nuevo cálculo de las posiciones de las etiquetas ( método de cálculo 1o
3, respectivamente) o edite el archivo de etiquetas. El ajuste fino de las posiciones de las etiquetas se puede realizar
editando el archivo de etiquetas (si está presente) o utilizando un archivo de empuje , o simplemente usando el empujar palabra
clave. La forma más sencilla de hacer esto es configurar empujar CIERTO y repita para crear un archivo de empuje vacío que
contenga todas las etiquetas. Luego use el archivo nudge especificando su nombre de archivo con el nudgeFile palabra
clave y replot. Puede especificar posiciones en un sentido absoluto (posición x, y en mm, etc.) o en un sentido relativo
(cambio en la posición x, y en mm, etc.).

La activación y desactivación de la impresión de etiquetas individuales se puede controlar automáticamente con el


minimumAreaForLabelling según el tamaño de los campos (útil para excluir el etiquetado de campos pequeños)
o editando los archivos de etiquetas y estableciendo el número de especie en un valor negativo. Todo el
etiquetado se puede desactivar configurando Tamaño de la etiqueta a cero. Una sola etiqueta se puede omitir
empujándola al olvido. El trazado de polígonos completos se puede desactivar con la lista de exclusión de la
pol palabra clave. En un ' ht1 ', los límites del dominio se pueden desactivar con dominio - más relevante
cuando se ha utilizado la pe yescala dejando los límites del dominio original dentro de la parcela.

El trazado de etiquetas también depende de la método de cálculo ajuste - elija el método 2 o 3


after editing the labels file (Table 8.1). The labels file provides the link between species num- ber
and species name so editing this file can change the appearance of labels and their position during
a replot. The exclude list of the pol keyword can be used to omit specific fields com- pletely
including their boundary lines, coloured infill and labels.

Label names are regenerated whenever calculationMethod 1 is used. If you want to override a
label name at this stage, then you can edit the ht1.inc file to make the appropriate substitu- tion.
For example, in the demo\Fe\hfo.ppi file, say you wanted to rename Fe(OH)3(a) to Hfo
then add the following line
131 IF (n$(i) = "Fe(OH)3(a)") THEN n$(i) = "Hfo"

e interceptará el nombre y lo cambiará. Guarde el archivo con un nombre diferente y utilícelo en el archivo ppi.
Alternativamente, por una sola vez, puede agregar la línea anterior directamente a su archivo ppi

...

incluir 'ht1.inc'
131 SI (n $ (i) = "Fe (OH) 3 (a)") ENTONCES n $ (i) = "Hfo"

...

ya que el intérprete básico ejecuta las líneas en orden de número de línea.

El dominio La palabra clave controla si los límites del dominio se trazarán o no. El
118 Guía PhreePlot

Cuadro 8.1. Influencia de la método de cálculo establecer cuándo y dónde se trazan las etiquetas,

Configuración Acción
Hace un cálculo de especiación completo. Genera nuevas etiquetas y archivos poligonales que se
utilizan para colocar etiquetas e identificar campos. Si existe un archivo de etiquetas con el formato
correcto * antes de los cálculos, entonces un signo negativo delante de un número de especie
método de cálculo = 1
suprimirá el trazado de esa etiqueta. El archivo de etiquetas normalmente se reescribirá, pero esto se
puede evitar configurando useLabelsFile to TRUE in which case edits to the file will be preserved even
with calculationMethod = 1.
Does not carry out any new speciation calculations and does not regenerate the labels
and polygon files. If a labels file of the correct format* exists before calcula- tions, then
método de cálculo = 2
a negative sign in front of a species number will suppress the plotting of that label.
You can also rename the species name including to blank (“”).
Does not carry out any new speciation calculations but does regenerate the labels and
polygon files. Reassembles and resimplifies the field polygons starting with the results
método de cálculo = 3 of the initial speciation which are read in from the points (‘ht1’) or track (‘grid’) files. The
labels file names (not species numbers) can be edited as for 2 above.

* Cada fila de un archivo de etiquetas (* .lab) con el formato correcto corresponde uno a uno en orden y número de especie con las especies (sp)
especificadas en el archivo de polígono (* .pol).

por defecto es CIERTO) que trazará los límites. Si se eligen la escala nativa y el escalado automático del eje, los
límites del dominio coincidirán con los límites de los ejes. Puede ser útil desactivar los límites del dominio cuando
se cambia la escala de una parcela y existe una restricción como la presión parcial de un gas, por ejemplo, para
eliminar las líneas externas que especifican los límites de agua en las parcelas de pe-pH.

Los límites xey predeterminados de una gráfica de predominio se establecen en el dominio de cálculo como lo especifica xmin
, xmax etc., y se recorta cualquier campo con límites fuera de la parcela. Los límites de la parcela se pueden restablecer
con pxmin , pxmax etc.

Dado que las parcelas de predominio calculadas con el ' cuadrícula 'tienen valores de especiación centrados en las celdas, la
primera y la última fila y columna de la cuadrícula se recortan a la mitad cuando se especifican los límites xey
predeterminados (automáticos).

Se permite que las etiquetas se extiendan más allá del dominio de la parcela en un 15% de la longitud del eje. Cualquier cosa más

allá de eso está recortada.

8,11 W HY DO I NO VE GAS METANO AL USAR llnl.dat?

A diferencia de cuando se usa el wateq4f.dat base de datos, es poco probable que vea gas metano ( CH 4 ( gramo)) como
especie predominante cuando se utiliza el llnl.dat base de datos incluso en condiciones muy reductoras
tions and in the presence of carbon. Why is this since it appears to be in the database?

The answer is that the llnl.dat has many more ‘exotic’ species in its database compared with
wateq4f.dat. This
includes the dissolved species CO, C 2 H 4 and C 3 H 6 as well as CO(g). Perhaps
surprisingly, given the relative abundance of methane in the natural environment, these spe-
cies are calculated to be thermodynamically dominant over methane in many reducing envi-
ronments. The fact that they are not so abundant in most natural environments suggests that
kinetic factors may be preventing their dominance in the ‘real’ world.

Therefore in order to see methane in predominance diagrams using PhreePlot, remove these
‘exotic’ species from consideration either by adding the species to an input file and changing the log_
value para que sea insignificante o, para una solución más permanente, elimínelos del archivo de la
base de datos con comentarios.

Por supuesto, todo esto se vuelve más claro si traza un diagrama de predominio con C como las principales especies.

8.12 F ALCANCE DE COMPLETAR UN DIAGRAMA DE PREDOMINANCIA

El enfoque de cuadrícula siempre debe producir un diagrama válido, aunque su calidad estará determinada
Parcelas de predominio 119

minado por la resolución elegida. No existe ningún requisito de continuidad espacial entre celdas
adyacentes.
No hay garantía de que el enfoque de "caza y seguimiento" siempre funcione. Ya sea Phreeqc
puede fallar o el seguimiento puede fallar. Posibles razones del fracaso de Phreeqc han sido discutidos en
otra parte ( Sección 6.5.5 ).

El simple algoritmo de 'caza y seguimiento' utilizado en PhreePlot asume que la especiación se devuelve sin errores y
realiza el seguimiento en consecuencia. Claramente, dado que todos los programas de especiación, incluidos
Phreeqc, utilizan métodos numéricos para derivar su solución, los límites entre campos deben contener algo de
"ruido". Esto puede significar que los campos notificados cerca de los límites del campo pueden ser erróneos, p.
Ej. 1212 más bien que 1122. Esto, a su vez, puede significar que los campos (polígonos) no se pueden cerrar
correctamente y, por lo tanto, no se pueden trazar como polígonos de colores. Esto es normal para el curso y no
es un error en Phreeqc per se pero en la forma en que se está utilizando.

En Phreeqc, la tolerancia_convergencia parámetro en el PERILLAS El bloque de palabras clave especifica un error


relativo para el balance de masa de un elemento y controla cuándo se considera que se ha logrado una solución
válida. Normalmente, este parámetro se establece en 1e-12 cuando SELECTED_OUTPUT; - alta precisión se establece en
verdadero. Cualquiera de los dos usos PERILLAS para aumentarlo (por ejemplo, a 1e-8) o establecer - alta precisión a
falso. Puede resultar útil cambiar esta configuración cuando exista un problema de convergencia que
normalmente se observa cuando los residuos son muy pequeños pero superan 1e-12. Se han discutido otras
posibilidades más temprano .

Si la cuadrícula de seguimiento cae en o muy cerca de un límite de predominio real, PhreePlot podría terminar
rastreando ruido, o más probablemente, algunos de los resultados del cálculo de especiación podrían ser
erróneos, dando lugar a confusión para el algoritmo de rastreo como se indicó anteriormente. Esto también
puede ocurrir cuando una intersección de límite de campo-límite de dominio está muy cerca de una de las cuatro
esquinas del dominio. Si se detecta, PhreePlot intenta solucionar esto automáticamente reduciendo la resolución
del gráfico en aproximadamente un 10% y volviendo a calcular, pero esto no siempre funciona. Un '*' en el norte columna
de la pp.log archivo indica que se ha realizado un reinicio automático. El
Mn.ppi , fluoritapredominancia.ppi y fluoritestability.ppi las demostraciones son ejemplos de esto.

También ocurre a veces que el ' ht1 El método 'requiere una resolución mayor que la dada para
resolver una unión o cerrar todos los polígonos. En estos casos, PhreePlot se reiniciará
automáticamente al duplicar la resolución. Este aumento se repetirá si es necesario hasta una
resolución máxima de 2000.
Otras acciones que pueden usarse para resolver fallas del método implican mover la cuadrícula de
otras formas: cambiar el dominio de los cálculos ( xmin , xmax , ymin , ymax ) o reduciendo la
resolución de forma más radical.
En casos raros, Phreeqc no converge en absoluto. Esto suele ser, pero no necesariamente, claramente
señalado por PhreePlot y a menudo se puede ver por el hecho de no escribir el SELECTED_OUTPUT expediente.
La convergencia a veces se puede ayudar (i) cambiando el - alta precisión entorno en el
SELECTED_OUTPUT sección de la ht1.inc archivo (si se usa) para FALSO; ( ii) reducir la tolerancia de convergencia,
(iii) reducir el pe_step_size (bajo PERILLAS ), o (iv) aumentar el número máximo permitido de iteraciones
(también bajo PERILLAS ). Sin embargo, la razón más común por la que no convergen es debido a una
construcción deficiente. Phreeqc archivo de entrada, es decir, química inconsistente en alguna parte.

Con depurar > = 1, falla, si se detecta, resultará en una detención inmediata de la ejecución y un volcado
de la infracción Phreeqc.out archivo, y en el caso de depurar = 2 y 3, de todos los Phreeqc salida a ese punto.
Con depurar = 0, la región fallida se mapeará como su propia especie (' N / A ') y se agregará un signo de
interrogación al pp.log archivo para indicar una falla.
120 Guía PhreePlot
Gráficos de contorno 121

9 parcelas de contorno

9,1 W ¿QUÉ SON LAS GRÁFICAS DE CONTORNO?

Los gráficos de contorno son el tipo de gráficos que se ven cuando se mira un mapa topográfico, es decir,
un diagrama que muestra líneas de igual altura. Cada altura se llama "contorno". Los contornos
normalmente no se cruzan entre sí y siempre cambian en una secuencia regular, un contorno seguido por
uno de sus vecinos más cercanos. No deben faltar contornos intermedios.

Este concepto de 'altura', por supuesto, se puede generalizar a cualquier variable continua y eso es lo que se
hace aquí. Sin embargo, tenga en cuenta que no todas las variables geoquímicas son variables continuas. Los
cambios de fase, por ejemplo, pueden introducir cambios escalonados y esto puede causar problemas en el
contorneado.

Las gráficas de contorno proporcionan otra forma de ver los datos x, y, z donde z es la variable que se está
contrastando. En cierto sentido, complementan los diagramas de predominio.

Los gráficos de contorno solo funcionan bien para variables relativamente uniformes y de variación
continua, de las cuales la última característica es la más importante. A veces, los gradientes en las
variables geoquímicas pueden ser tan grandes que no parecen continuos o el informe de la variable
se ha truncado hasta tal punto que la variable ya no es continua. Entonces el contorneado no
funciona bien.

Los contornos se producen generando una cuadrícula uniforme de datos sobre el dominio xey dado. Se
asume que no hay puntos faltantes o indefinidos en este conjunto de datos.

Además, se supone que todos los datos contorneados son datos válidos, es decir, que todos Phreeqc los
cálculos han convergido correctamente. Si la variable x y / o y se 'fijan' agregando una fase de equilibrio,
por ejemplo, como en Fix_H +, entonces conviene comprobar que se ha alcanzado realmente el valor
objetivo. Algunas veces, Phreeqc no dispara un error cuando ha habido una falla en la convergencia; solo
da una advertencia. Tampoco emitirá un error si el depósito se ha agotado. Si tiene alguna duda, agregue
el '- force_equality TRUE 'identificador para todas las fases.

Esta verificación a menudo se puede hacer agregando los valores alcanzados y los valores objetivo a la
salida seleccionada, por ejemplo, si se supone que el eje x es el pH, luego comparando el pH real
alcanzado, - la ("H +"), con el < x_axis> La etiqueta indicará si se ha producido la convergencia. El archivo de
seguimiento también dará valores de salida en blanco donde ha habido una falla en la convergencia y
donde se ha indicado un retorno de error.

En principio, los contornos pueden verse desde varios ángulos. Aquí solo nos ocupamos de una vista
directamente desde arriba, como en un mapa topográfico.

9.2 Yo PLEMENTACIÓN

9.2.1 Generar los datos de contorno

El algoritmo de contorneado requiere datos uniformes y con cuadrículas regulares. Esto es generado por
PhreePlot de la misma manera que se hace para ' cuadrícula 'parcelas usando xmin , xmax , ymin , ymax y
resolución . La resolución debe ser mayor que 1 y normalmente debe estar en el rango de 10 a 100. Los
datos cuadriculados se obtienen del ' afuera ' expediente.

Por lo general, se hace un gráfico de contorno especificando el cálculoTipo ser - estar ' contorno 'y especificando un contourZvariable
. Este es el nombre de una de las variables en el ' afuera ' expediente. También se puede especificar un tipo especial de
gráfico de contorno, a saber, una suma residual de cuadrados o un gráfico de función.
122 Guía PhreePlot

desde el ' encajar ' cálculoTipo con el fitMethod ajustado a ' contorno '.
Debe proporcionar el Phreeqc código para calcular un valor z en cada punto x, y. Esto normalmente se hace
usando el SELECTED_OUTPUT y USER_PUNCH bloques de datos. El nombre de esta variable viene dado por el contourZvariable
palabra clave definida en un archivo de entrada y debe corresponder con uno de los USER_PUNCH ' afuera 'encabezados
de archivo.

Si el gráfico va a utilizar una escala y transformada, como Eh, entonces pe (- la ("e-")) y temperatura TC) también
deben exportarse para permitir que se realice la transformación; estas columnas deben tener los
encabezados ' Educación física ' y ' TC ', respectivamente, para que sean reconocidos como tales. Pueden
ubicarse en cualquier posición. Ver el archivo \ demo \ contour \ contour_hfo_pretty.ppi y el Ejemplo para alguna
discusión.

Si el contourZvariable no está definido o no se encuentra, se emite un error fatal.

No es necesario generar los valores correspondientes de las variables xey, ya que estos se definen
implícitamente por sus respectivos rangos, la resolución de la cuadrícula y el número de iteración. Sin
embargo, si los datos de salida van a ser utilizados por algún otro paquete de software, puede ser útil
generar sus valores. Simplemente agregue el < x_axis> y < eje_y> etiquetas a la lista de variables a ser
'perforadas'.

Tenga en cuenta que debido a que los valores xey son implícitos, debe tener cuidado de asegurarse de
regenerar todo el conjunto de datos al cambiar cualquiera de los parámetros que definen el dominio de la
cuadrícula o los cálculos de especiación. El paquete de contorneado no tiene conocimiento de estos
valores xey explícitamente; calcula sus valores a partir de su posición en el ' afuera ' expediente. Si la
especiación falla y no hay salida, una INDEFINIDO El marcador de posición de valor normalmente se escribe
en el afuera y trk archivos. Esto se puede prevenir configurando writePlaceholder para FALSO.
A FALSO La configuración es útil cuando una especiación fallida se repite como en el \ demo \ switch ejemplos.

Los datos z se pueden suavizar utilizando un algoritmo de promedio móvil de cinco puntos del vecino más
cercano. Esto se especifica con el contourOptions suave = 1 declaración. Se puede obtener un suavizado algo mayor
usando suave = 2. Este es un algoritmo de vecino más cercano de 9 puntos. Los datos suavizados no se almacenan
externamente, sino que se generan a partir de los datos sin procesar según sea necesario. Un escenario de
suave = 0 apaga todo el suavizado.

9.2.2 Elección de los niveles de contorno

Los niveles de contorno se especifican con el contornos palabra clave. Puede ser una lista de valores definidos
por el usuario en orden ascendente o puede ser uno de varios conjuntos de valores seleccionados
automáticamente. Ver contornos para detalles. El valor predeterminado es que se genere automáticamente una
lista de 17 valores al subdividir el rango de los valores de datos z en 16 intervalos iguales (valores empíricos).
También es posible elegir los valores de contorno basados en percentiles.

El principal requisito para la selección de un conjunto de valores de contorno es que los valores estén bien
separados; no deben estar tan cerca unos de otros como para entrar en el área de 'ruido' creado por los
procedimientos numéricos utilizados para generar los datos que se están contorneando. . Tampoco es
aconsejable establecer un contorno exactamente en un valor que por alguna razón (amortiguación química,
numéricos) es muy común. Esta estrategia evitará el problema del contorno que se extiende a lo largo de un
límite que conduce a una sensibilidad a los errores numéricos.

El número de contornos utilizados se reducirá automáticamente si se considera que los valores de los contornos
vecinos están demasiado próximos entre sí. Los contornos sucesivos siempre deben diferir en al menos 1e-8 X valor
medio de los sucesivos pares de valores. Esto es para intentar minimizar el efecto de pequeños errores
numéricos en el dibujo de los contornos. Los 'percentiles simplificados' auto La opción requiere una mayor
separación entre los valores de contorno y poda el conjunto de valores de contorno de forma aún más agresiva
(ver contornos ).

9.2.3 Tipos de gráficos de contorno

Hay dos tipos de gráficos de contorno disponibles:

(i) un gráfico que consta de líneas de contorno con relleno de color entre los contornos (a veces
Gráficos de contorno 123

llamado gráfico de 'nivel') (ii) un gráfico de 'sólo líneas'. El contourOptions La palabra clave

determina cuál de estos dos tipos de gráfico se utiliza.

Un gráfico con rellenos de color suele ser el más agradable y se puede personalizar en términos del número y la
posición de los niveles de contorno, los colores de relleno y de línea, y los estilos de línea, etiqueta y final de
leyenda.

Las líneas solo trazan ( contourOptions complete FALSE joinSegments FALSE) utiliza la forma más sencilla de
producir un gráfico de contorno, ya que no requiere que los diversos segmentos producidos por el
algoritmo de contorno se combinen entre sí y con segmentos de borde para producir los polígonos
necesarios para el relleno de color. El gráfico de "sólo líneas" tiene dos variantes: el más simple es
simplemente un gráfico de los segmentos cortos producidos por el algoritmo de contorneado que
explora el dominio en cada nivel de contorno. En este caso, no es necesario que los segmentos se tracen
en ningún orden en particular. Esta es una ventaja en los gráficos de alta resolución ruidosos donde
definir los numerosos polígonos puede ser bastante lento y los numerosos segmentos de línea a veces
pueden ser difíciles de ensamblar en el orden correcto - el joinSegments FALSE
La opción evita esta posibilidad y, por lo tanto, es la opción de 'retroceso'.

Si cambia el joinSegments opción, tendrá que regenerar el gráfico desde cero (no solo volver a
trazarlo) ya que la estructura del archivo vectorial varía entre los dos enfoques.
La falta de segmentos de línea unidos puede dar lugar a curvas visiblemente deficientes, ya que no se pueden utilizar las
uniones de línea de mejor apariencia. Tampoco es posible tener en cuenta la longitud total de la línea al calcular la mejor
posición para los guiones en líneas discontinuas que dan como resultado líneas de guiones deficientes, especialmente
cuando la resolución es alta. En particular, con líneas discontinuas, cada segmento de línea tendrá al menos un 'guión' y,
por lo tanto, la densidad del guión puede ser mayor que la especificada por el contorno- DashesPerInch entorno (a
diferencia de la leyenda). Es mejor evitar las líneas discontinuas con esta opción.

Finalmente, no se lleva a cabo ninguna simplificación de líneas, lo que proporciona contornos más intrincados y archivos de trazado más grandes.

Una mejor estrategia es clasificar al menos los segmentos en líneas de contorno continuas que luego se pueden
simplificar y trazar como una sola línea curva con uniones de línea adecuadas ( contourOptions llenar FALSO
joinSegments TRUE).

Agregar los diversos segmentos de límite a las líneas de contorno ordenadas permite que los polígonos se
cierren y se llenen de color ( contourOptions llenar VERDADERO). También permite un lugar para colocar una etiqueta
de contorno en línea. Este es el tipo de gráfico predeterminado.

Por supuesto, los colores de relleno se pueden establecer en ' Dakota del Norte ' o ' blanco 'para producir lo que parece una trama
de solo contornos. Sin embargo, todavía existen diferencias sutiles en la forma en que se etiquetan los contornos y el
tipo de leyenda que se produce.

Si se selecciona un gráfico de relleno de color pero PhreePlot no cierra correctamente todos los polígonos por alguna
razón, entonces los polígonos que no pudieron cerrarse no se dibujan. A veces, cambiando la opción de suavizado de 0 para
1 o 2, o viceversa, es suficiente para permitir que la trama se complete correctamente. Un diagrama de solo líneas
siempre debería funcionar.

9.2.4 Cambiar la apariencia de las curvas de nivel.

El contourLineType La palabra clave permite especificar los tipos de línea para las curvas de nivel utilizando las
reglas de reciclaje habituales. contourDashesPerInch define la densidad del guión, contourLineColor
define el color y contourLineWidth define el ancho de la línea. Para normal ( contourOptions
llenar VERDADERO) parcelas contourLabelSize controla si una etiqueta se imprime en la línea de contorno y qué tan
grande es. Si el llenar la opción es FALSO, los valores de contorno solo se darán en la leyenda, por lo que
normalmente llenar debiera ser VERDADERO.

9.2.5 Colorear la trama

Las líneas de contorno, el relleno de contorno y la etiqueta de contorno se pueden colorear de forma independiente
utilizando con tourLineColor , contourFillColour y contourLabelColor como listas de colores que se reciclan
124 Guía PhreePlot

según sea necesario. Cada uno de estos tiene un ' auto 'por defecto, lo que significa que PhreePlot elegirá los
colores.

Todos los colores de una lista determinada, o los individuales, se pueden 'apagar' estableciendo el color en 'no dibujado'
(' Dakota del Norte '). Para los rellenos de color, es más seguro establecer un color no deseado para el color de fondo,
p.ej ' blanco 'en lugar de usar' Dakota del Norte 'ya que en el caso de niveles de contorno cerrados, los niveles de
colores se rellenan de afuera hacia adentro y la coloración se basa en sobrescribir sucesivamente un color
externo por el siguiente color interno.

9.2.6 Etiquetas y leyenda

Si se produce un gráfico de solo líneas, la leyenda o clave simplemente consta de líneas con el color y el ancho de
las líneas de contorno correspondientes y etiquetadas con el valor del contorno. El tamaño de este texto está
controlado por el contourLabelSize configuración.

Las etiquetas se colocan dentro del segmento de línea más largo en el contorno simplificado, pero la posición de
todas las etiquetas de contorno se puede cambiar rápidamente cambiando el labelPosition opción en
contourOptions . Si esta configuración se establece en ' centrar ' más bien que ' mas largo ', las etiquetas se colocarán
en el centro de cada línea trazada.

Un contorno puede constar de varios segmentos no conectados. Como máximo, hay una etiqueta por segmento.
La posición de la etiqueta en cada segmento se puede mover usando el empujar o contorno- ShiftLabel palabras
clave. nudge es libre de mover la etiqueta a cualquier lugar mientras que contourShiftLabel
lo mueve a lo largo de la línea de contorno, hacia adelante o hacia atrás, punto por punto. La fuente, el tamaño y
el color de la etiqueta se pueden cambiar con contourLabelFont , contourLabelSize y contourLabelColor ,
respectivamente. El número de dígitos significativos en las etiquetas está controlado por contourLabelFigs .

Si se produce un gráfico lleno de color, la leyenda consta de una clave de color con el rango de valores
para cada uno de los campos.

Se puede especificar una leyenda o un título de clave con legendTitle . LabelColor determina el color del título de la
leyenda. El legendTextSize La palabra clave controla el tamaño del texto utilizado para el título de la leyenda (si lo hay) y el
texto de la leyenda (los números). También determina si se produce una leyenda o no: un valor positivo coloca
automáticamente una leyenda en la parte superior derecha del gráfico. Un tamaño cero significa que no se produce
ninguna leyenda.

Se puede agregar o mover un cuadro de leyenda con legendBox .

La clave de leyenda se puede mover usando el <leyenda> etiqueta en una línea de texto o un archivo de texto extra. Esto también
puede proporcionar el título de la leyenda. Si está presente, esto anula cualquier título dado por legendTitle .

9.2.7 Flujo de datos

El trazado de contornos se realiza en tres pasos: (i) cálculo de la cuadrícula regular de datos de espe- ciación con Phreeqc;
( ii) contorneado de estos datos para producir una lista de segmentos sin clasificar que denotan los contornos, y
(iii) clasificación de estos segmentos en sus contornos, agregando segmentos limítrofes para producir polígonos
para el relleno de color. Esta secuencia se muestra en la Fig. 9.1.

9.2.8 ¿Qué pasa si Phreeqc falla?

Las gráficas de contorno son mejores si los datos son uniformes y continuos y si no hay "datos faltantes" en el conjunto
de datos de cuadrícula que se van a contornear.

Si hay 'datos faltantes' pero un valor como - 99999 o - 99 ha sido sustituido como ocurre cuando Phreeqc no
converge, entonces la trama aún se intentará pero no prestará especial atención al valor faltante. Se
tratará como un valor válido e intentará trazar un contorno alrededor de él, probablemente trazándolo
como un área muy baja o 'agujero'. Esto aún puede producir una trama informativa, aunque es poco
probable que sea digno de publicación.

Si Phreeqc no converge y no produce ninguna salida, entonces se supone que el valor z no está
definido (esto se almacena en la memoria para trazar) y un solo INDEFINIDO valor (- 99999.000)
escrito al ' afuera 'archivo para replanteo.
Gráficos de contorno 125

Trama contourOptions

liso . vec solo lineas líneas Solo T


(desacoplado) linesOnly_join F
Unir segmentos
Especiación Contorno y simplificar

. ppi .afuera sin clasificar . vec . vec solo lineas líneas Solo T
PHREEQC líneas
segmentos (Unido) linesOnly_join T
. vec

cerrar
polígonos

método de cálculo método de cálculo método de cálculo


=1 =3 =2 . vec &
. pol
líneas &
líneas Solo F
relleno de color

Figura 9.1. Flujo de datos utilizados para generar un gráfico de contorno.

9,3 A EJEMPLO SIMPLE

Un ejemplo simple es obtener otra visión de la solubilidad del Fe (Fe total = 1e-2 mol / kgw) en un
sistema donde el mineral Fe (OH) 3 ( a) puede precipitar. Esto complementa el diagrama de
predominio producido por el archivo de entrada. demo / Fe / hfo.ppi. El archivo de entrada se vería algo
me gusta:

ESPECIACION
cálculoTipo "contorno"
método de cálculo 1
contourZvariable FeT
xmin 2.0
xmax 12,0
ymin - 90,0
ymax 0.0
resolución 50

TRAMA
plotTitle "Fe solubilidad <br> (a) contornos percentiles" pH
xtitle
ytitle "log <i> f </i> O <sub> 2 </sub> (g) (atm)"
extraText extratextcontour_hfo.dat

QUÍMICA

# primera simulación - bits fijos FASES

Fix_H +; H + = H +; log_k 0.

SELECTED_OUTPUT
- restablecer FALSO
- high_precision TRUE

USER_PUNCH
- títulos FeT
10 PUNCH log10 (TOT ("Fe"))

SOLUCION 1
pH 1.8
unidades mol / kgw
Fe (3) 1e-2
N/A 1e-1
Cl 1e-1
FINAL

# segunda simulación - bucle en este


USE
EQUILIBRIUM_PHASES
la solución 1 1
126 Guía PhreePlot

Fix_H + - <x_axis> NaOH 10


- force_equality verdadero
O2 (g) <eje_y> 0,1
Fe (OH) 3 (a) 0 0
FINAL

Las palabras clave que controlan la apariencia del gráfico de contorno se establecen implícitamente en sus valores
predeterminados como se leen en el pp. conjunto expediente. Las siguientes son estas configuraciones predeterminadas:

contornos automático 17 p
contourFillcolor auto
contourLineWidth auto
contourLineColor auto
contourShiftLabel C
contourLabelSize 2
contourLabelFont "Helvética"
contourLabelColor auto
contourlabelFigs auto

El dominio de trazado es de pH 2 a pH 12 (eje x) y de -90 a 0 atm log F O 2 ( g) (eje y) y la


variable z está definida por FeT. La tarea principal del usuario es configurar el cálculo.
de los datos z. Esto requiere definir (a) una variable z, aquí el Fe total disuelto, FeT, en el
USER_PUNCH bloque de datos, y (b) una resolución, aquí un 50 X 50 cuadrícula.

FeT se calcula con:


USER_PUNCH
- títulos FeT
10 PUNCH log10 (TOT ("Fe"))

El nombre de esta columna ( FeT) coincide con eso en el contourZvariable configuración y esto proporciona
el enlace necesario. El valor de las variables xey son implícitos y no son obligatorios, pero estas y otras
variables también podrían exportarse, por ejemplo, con
USER_PUNCH
- partidas xy FeT Fe (OH) 3 (a) agua
10 PUNCH <x_axis>, <y_axis>, log10 (TOT ("Fe")), MOL (“Fe (OH) 3 (a)”), TOT (“agua”)

Si se hace esto, entonces el USER_PUNCH El bloque de datos debe moverse de la primera a la segunda
simulación, de lo contrario < x_axis> y < eje_y> no se actualizará en cada iteración.

El gráfico producido a partir de este archivo de entrada se muestra en Figura 9.2 (a). Se ha omitido la leyenda.
Este gráfico se ha realizado con valores de contorno generados automáticamente y el color predeterminado que
va desde el azul oscuro (bajo) al rojo oscuro (alto). Es posible especificar cualquier conjunto de valores de
contorno y cualquier conjunto de colores.

La tarea principal al generar un gráfico de contorno es decidir sobre un conjunto de valores de contorno adecuados. Con
los valores predeterminados en funcionamiento, esto se hace dividiendo los datos z en 17 intervalos aproximadamente
ocupados por igual. Esto se llama el 'percentil' o ' pag 'opción como en Figura 9.2 (a).

La mayor variación en la concentración de Fe disuelto mostrada por la gráfica ocurre donde


Fe (OH) 3 ( a) ha precipitado. En condiciones más ácidas y más reductoras donde
Fe (OH) 3 ( a) no precipita, la concentración de Fe disuelto es necesariamente muy próxima a la
añadida, es decir 1e-2 mol / kgw. Esto da como resultado varios contornos con el mismo truncado
etiqueta (- 2) dado que los valores de contorno reales utilizados (del archivo de registro) son: 2.000191900824, -
2.000191868200, y así. La variación pequeña pero sistemática en la concentración de Fe en el
ausencia de Fe (OH) 3 ( a) la precipitación se debe a pequeños cambios en la masa de agua que a su vez
refleja diversas reacciones de hidrólisis.

Una segunda opción cuando se genera automáticamente un conjunto de valores de contorno es comenzar con
los valores de percentiles y luego eliminar cualquier valor que sea bastante cercano en valor entre sí (dentro de
una diferencia relativa de menos de 1e-4 del rango de datos z). Esto se llama el 'porcentaje simplificado' (o ' s ')
opción ( Figura 9.2 (B)).

Una tercera opción automática es definir los contornos dividiendo el rango de valores z (z máximo - z mínimo)
por el número de contornos, por defecto, 17, para dar intercalaciones espaciadas aritméticamente.
Gráficos de contorno 127

Fe solubilidad Fe solubilidad
(a) contornos percentiles (b) contornos de percentiles simplificados

- 10 - 10

-2
-2

- 7.49
- 7.49

- 7.25
- 7.25

- 6.86
- 6.86

- 6.41

- 5.12
- 6.41

- 6.02

- 4.68
- 5.12
- 6.02

- 4.68
- 30

- 5.6
- 30

- 5.6

log f O 2( g) (atm)
log f O 2( g) (atm)

-2
- 50 -2 - 50 .8
.8
2 - 3.8 2 - 3.8
8 8
-2

- 70 - 70

- 2-2
- 2-2 -2
-2
- 90 - 90
2 4 6 8 10 12 2 4 6 8 10 12
pH pH
0,01 mol / kgw Fe total 0,01 mol / kgw Fe total
Concentraciones de Fe disuelto en log (mol / kgw) Concentraciones de Fe disuelto en log (mol / kgw)
C: \ PhreePlot \ demo \ contour \ contour_hfos.ps
C: \ PhreePlot \ demo \ contour \ contour_hfop.ps

Fe solubilidad Fe solubilidad
(c) contornos empíricos (d) contornos de usuario
- 2.3

- 2.1

- 10 - 10
Iniciar sesión F O 2 ( g) (cajero automático)

Iniciar sesión F O 2 ( g) (cajero automático)

- 7.5
- 7.28
- 6,97

-7
- 6,66

- 5,41
- 6,35

- 6.5
- 6.04

- 4,79
- 5.1

- 5,5
- 5,72

-5
- 30 - 30

-6
-4 -4
-2 .4 .5
.6 8 -2
1 .5
--32-3..5
- 50 .92 --4 3
234. 7
- 50 - 3- 3
.5
-4
8.16

- 70 - 70

-2
- 90 - 90
2 4 6 8 10 12 2 4 6 8 10 12
pH pH
0,01 mol / kgw Fe total 0,01 mol / kgw Fe total
Concentraciones de Fe disuelto en log (mol / kgw) Concentraciones de Fe disuelto en log (mol / kgw)
C: \ PhreePlot \ demo \ contour \ contour_hfoe.ps C: \ PhreePlot \ demo \ contour \ contour_hfou.ps

Figura 9.2. Cuatro opciones para definir intervalos de contorno para los mismos datos z: (a) contornos ' auto 'opción con contornos percentiles (' pag ');
(b) lo mismo con las opciones de percentiles simplificados (' s '); (c) lo mismo con empírico (' mi ') opción; (d) un conjunto de valores de contorno
proporcionado por el usuario.

vals. Esto se llama el 'empírico' (o ' mi ') elección ( Figura 9.2 (C)).
Por supuesto, también se puede ingresar explícitamente una lista de cualquier número de valores de contorno ( Figura 9.2 (D)).

Sin embargo, derivado, el conjunto de valores de contorno define un conjunto de valores de clase inferiores, a
saber, <contorno (1), contorno (1) -contorno (2), contorno (2) - <contorno (3), ... > contorno (n). Siempre habrá una
clase más para el relleno de color que el número de contornos especificado. Internamente, se agrega
automáticamente un valor de contorno muy grande adicional al conjunto de contornos para que todos los
valores de datos quepan en uno de los intervalos de contorno definidos. Si un valor se encuentra exactamente
en un límite de contorno, se asigna a la clase superior.
128 Guía PhreePlot

9.4 S OME DETALLES DEL TRATAMIENTO DE DATOS

9.4.1 Algoritmo

Los datos de especiación generados por Phreeqc se almacenan en el ' afuera 'archivo como de costumbre.

Estos datos se escanean línea por línea para producir los contornos. La calidad de la trama depende obviamente
de la resolución de la cuadrícula. Normalmente esto debería ser 10 o mayor para borrador, y 50
o mayor para la producción.

El procedimiento de contorneado, CONREC ( Bourke, 1987 ), que se utiliza para calcular la ubicación del contorno es 'local' y
solo hace uso de los cuatro puntos de la cuadrícula que la encierran. Esto puede no ser tan eficiente como algunos
procedimientos de interpolación más sofisticados, pero ha demostrado ser robusto debido a algunos de los cambios
extremos en la pendiente y las discontinuidades que se encuentran en las gráficas de contorno basadas en geoquímica.

Una vez que se han generado los datos z en la cuadrícula requerida, el dominio se escanea horizontalmente,
celda por celda, de arriba hacia abajo, y se establecen los distintos cruces de contorno. En cada celda donde hay
un cruce, el nivel del contorno forma un plano horizontal que se cruza con un plano inclinado formado por la
superficie z. Esta intersección se genera como un segmento corto y eventualmente todos esos segmentos para
un nivel de contorno dado se unen para formar el contorno. Los datos de contorno sin procesar se tratan de la
misma manera que en un ' ht1 'grafica en que los datos primero se someten a una simplificación de línea para
reducir el número de puntos. La intención es reducir el tamaño del archivo sin cambiar sustancialmente la
precisión del gráfico. Por lo general, esto se puede lograr con un simplificar valor de 1. Los valores más pequeños
incluirán más puntos, valores más grandes, menos puntos. Un valor de 0 incluirá todos los puntos originales, es
decir, sin simplificación.

Los vectores simplificados se escriben en el vector (' vec ') junto con los vectores de límites. Los
vectores individuales o segmentos de línea se ensamblan en polígonos (' pol ’ file) for colouring. The
vector and polygon files include ‘direction’ information – walking forward along the con- tour in the
sequence given in the file, the high side is always on the right. This is sometimes necessary to
differentiate between ‘peaks’ and ‘holes’. The polygons are also listed (and plot- ted) in order of
decreasing polygon area.

A given contour may give rise to more than one polygon if it leaves and enters the plotting
domain more than once.
Finally, the domain boundary segments are added for each contour level to enable closed pol-
ygons to be formed and therefore for the polygons to be filled with colour.

Once these ‘ vec ’ and ‘ pol ’ files have been written, they are used to produce a plot.

9.4.2 Problematic cases

El contorneado es normalmente exitoso, pero los límites muy pronunciados y los cambios escalonados que pueden
producir los datos geoquímicos, por ejemplo, en los límites de la solución mineral, pueden dar lugar a contornos
prácticamente convergentes. También puede ocurrir la situación inversa: la superficie puede ser extremadamente plana
(e inevitablemente algo 'ruidosa'), lo que lleva a un error relativamente grande en la localización de los contornos. Esto
puede provocar contornos 'ondulados'. Esto sucede a menudo cuando los valores de contorno se generan
automáticamente con la opción 'percentiles'. La elección acertada de los valores de contorno generalmente puede
reducir el impacto de ambos problemas.

Estos problemas pueden llevar a intentos de contornear a lo largo de un límite que es particularmente "ruidoso".
Esto, a su vez, puede conducir a una cantidad excesiva de saltos a través de un límite de contorno y
eventualmente conducirá a la finalización del trazado con el mensaje:

“Error: demasiados segmentos de contorno separados. ¿Contorno 'ruidoso'? Intente cambiar los valores del
contorno, por ejemplo, auto 10 e ”.

Este problema generalmente se puede evitar cambiando los valores de contorno de modo que las posiciones de
los límites no se correspondan con la región ruidosa, por ejemplo, como se sugiere al elegir un conjunto de
valores de contorno "empíricos" igualmente espaciados.
Gráficos de contorno 129

Un buen ejemplo de esto es cuando se contornea la variación de un índice de saturación de un


precipitando mineral en un pH-log dado F O 2 ( g) dominio. El índice de saturación será negativo en
las áreas donde el mineral es inestable, pero será cero o 'muy cerca de él' donde el mínimo
eral es estable. Dependiendo de la configuración de convergencia en Phreeqc, el valor de 'muy cerca de él'
variará, pero puede ser: 3e-14 para 3e-14 o menor. Es completamente razonable que el valor SI pueda estar
en cualquier lugar de este rango. Por lo tanto, si un valor de contorno de 0,0 ( exactamente) se elige manual
o automáticamente, es probable que haya un número excesivo de cruces de contorno cuando el contorno
intenta seguir el límite.

Esto empeora en este caso debido a la discontinuidad en la pendiente en el límite de precipitación mineral y al
hecho de que el cambio es de una pendiente bastante empinada mientras está subaturada a una pendiente de
exactamente cero cuando el mineral está presente.

En este y otros casos similares, establecer un valor de contorno de exactamente 0.0 debería ser evitado. Un pequeño valor
negativo, por ejemplo: 1e-6, probablemente evitaría estos problemas y aún así identificaría el límite de precipitación con la
suficiente precisión.

Es probable que se seleccione un valor de contorno cero (o muy pequeño) en este caso cuando se elige la opción
autopercentual, ya que es probable que muchos de los valores SI sean 0.0 o muy cerca de él. Configure los valores
de contorno manualmente como se describe arriba para evitar la región 'ruidosa' alrededor 0.0 o elija la opción
'empírica' para la selección automática de valores de contorno que probablemente evitarán esta región de todos
modos.

Para llenar los niveles de contorno con color, es necesario cerrar los polígonos para el llenado. Si PhreePlot
no cierra un polígono, incluidos los límites del dominio, se emite un mensaje a tal efecto y solo se
trazan los polígonos cerrados. El problema puede desaparecer si se elige un conjunto diferente de
contornos o si se aumenta la resolución.

9,5 M ODIFICAR LA APARIENCIA DE LA PARCELA

El número de contornos, sus valores y la apariencia general del gráfico se pueden cambiar explícitamente
con una serie de palabras clave relacionadas con el contorno. Estos se enumeran en la Tabla 9.1 y se
discuten con más detalle bajo sus títulos individuales en Sección 14 .
130 Guía PhreePlot

Table 9.1. Contour-related keywords

Keyword Action Valores predeterminados

contours list of increasing values at which to draw ‘ auto 15 p ’ = choose 15 contours with spacing
contours or ‘ auto [n [p|e]] ’ for auto- based on approximately equally-spaced percen-
selection of contour values tiles. Round values to three figures and remove any
replicates. Could also choose the e option which
spaces the n contours equally across the z- data
range.

contourFillColor lista de colores para rellenar los intervalos de contorno ‘ auto ’ = range of colours initially from dark blue to
light blue to light red to dark red with other colours
added as the number of classes increases.

contourLineWidth list of line widths of contours. Negative ‘ auto ’ = same as main line width
los anchos definen líneas discontinuas.

contourLineColor lista de los colores de las curvas de nivel ' auto '=' negro ',' rojo ',' azul ',' verde ',' naranja ',' cian
',' magenta ',' marrón ',' cielo ',' púrpura ',' gris ','
amarillo
bajo ',' granate ',' césped ',' primavera '
contourShiftLabel lista de etiquetas para mover y por cuánto c = trazar como valores de contorno y no mover ninguna
etiqueta de sus posiciones predeterminadas, c 1 5 +2
desplazaría la etiqueta número 5 en la gráfica 1 hacia adelante
2 posiciones.
n = número de etiqueta de parcela en su lugar - útil para
definir posteriormente el turno a aplicar

contourLabelSize lista de tamaños de etiquetas ' auto '= igual que el tamaño de la etiqueta principal' auto '=

contourLabelFigs lista del número de cifras significativas en las depende del valor pero normalmente 3 o menos
etiquetas

contourLabelFont lista de fuentes para etiquetas ' auto '= igual que la fuente principal' auto

contourLabelColor lista de colores para etiquetas '= color de la etiqueta principal

contourOptions controla el suavizado, el relleno de color y el dibujo suave 0 llenar VERDADERO joinSegments TRUE

de líneas

En principio, aparte de contourShiftLabel , las listas anteriores tienen una longitud que es igual al número de
contornos + 1. Se proporciona una lista de estos contornos en el archivo de registro. Si la lista especificada es
más corta de lo necesario, se recicla. Si es más largo, se ignora el exceso.

La propiedad asociada con cada contorno simplemente se selecciona de la lista apropiada en función de
la posición correspondiente del contorno de interés dentro de la lista de contornos.

De esta forma, es fácil repetir secuencias de propiedades, por ejemplo, si contourLineWidth 0,3 -0,3,
then this would alternate a full line and a dashed line.

It is also possible to add extra text, lines and symbols with text , extraText and extraSymbol- sLines in
the normal way.

Figure 9.3(a) shows the above example plotted with user-defined contour values and default values
for most of the other settings. contourFillColor has been set to ‘ nd ’ in order to give a black and white
plot. This could also be achieved using the contourOptions fill FALSE set- ting but in this case there
would be no inline contour labels.

Figure 9.3(b) shows the same example but with some tweaking – the grid resolution has been
increased from 50 to 200 to remove the ‘wiggle’ in the - 2.10 contour, the label size has been reduced,
the number of digits in the label reduced to 2 and the labels moved to increase legi- bility, the
contour line width has been reduced and now alternates full line–dashed line with corresponding
colours black-gray4. The settings were:
resolution 200
Gráficas de contorno 131

(a) Fe solubility (b) Fe solubility

- 10

Iniciar sesión F O 2 ( g) (cajero automático)


- 10
Iniciar sesión F O 2 ( g) (cajero automático)

- 7.5

- 7.0

- 6.5
-7

- 6.0

- 5,5

- 5.0
- 30

-5
- 30

-6
-4
.0

-2 -3
.5 .5

- 50 -3 - 50 -4
-4 .5

-2
.1
-3
.0

- 70 - 70

- 2.0
-2
- 90 - 90
2 4 6 8 10 12 2 4 6 8 10 12
pH pH
0.01 mol/kgw total Fe
0.01 mol/kgw total Fe
Concentrations of dissolved Fe in log (mol/kgw)
Concentrations of dissolved Fe in log (mol/kgw)
C:\PhreePlot\demo\contour\contour_hfond.ps

Figure 9.3. Black and white versions of the contour plot. (a) version made with a grid resolution of 50
and mainly default settings; (b) the same but with a grid resolution of 200 and minor tweaking to the plot
settings.

contornos - 8 -7,5 -7 -6,5 -6-5,5 -5 -4,5 -4 -3,5 -3 -2,5 -2,1 -2,0


color de contorno Dakota del Norte

contourLineWidth 0,2 -0,15


contourLineColor gris negro4
contourShiftLabel C 1 10 1 171 1 8 -1 1 12 60
contourLabelSize 1,5
contourLabelFont "Helvética"
contourLabelColor gris negro4
contourlabelFigs 2

9,6 R EFINANDO UNA PARCELA - REPLOTAR SIN RECALCULAR

9.6.1 ¿Por dónde empezar?

Al igual que con las parcelas de predominio, es posible cambiar varios parámetros de trazado y volver a
trazar sin pasar por el proceso potencialmente lento de regenerar los datos geoquímicos. Los distintos
puntos de entrada se muestran en la Figura 9.1.

método de cálculo = 1 usos Phreeqc para producir el ' afuera 'archivo que contiene la cuadrícula z de valores
basados en los cálculos de especiación especificados. Luego produce el intermedio ' vec ' y ' pol 'archivos de
datos y la trama. Dado que los cálculos comienzan desde el principio, se puede cambiar cualquiera de los
parámetros de contorneado (esfuerzo de cálculo máximo)

método de cálculo = 2 comienza con el existente ' vec ' y ' pol 'y los utiliza para generar un nuevo gráfico. No
hay recálculo de contornos ni simplificación de líneas. Puede cambiar los parámetros de trazado, incluido
el desplazamiento de las etiquetas, pero no los parámetros de "cálculo", como la resolución de la
cuadrícula o el número o valores de los niveles de contorno.

método de cálculo = 3 comienza con el existente ' afuera 'archivo de datos, recontornea los datos y regenera
el' vec ' y ' pol 'archivos con simplificación de línea renovada antes de replantear (esfuerzo de cálculo
intermedio).

Por lo tanto, si se cambia el número o los valores de los intervalos de contorno o se modifica el factor de
simplificación de la línea o se usa una opción de suavizado diferente, es necesario utilizar método de
cálculo = 3 de lo contrario, algo más rápido método de cálculo = 2 se puede utilizar.

If the geochemical model has changed in any way or the resolution changed, it will be neces- sary
to regenerate the geochemical data with calculationMethod = 1.
132 PhreePlot Guide

9.6.2 Smoothing the z-data

A ‘low pass’ moving-average filter is available to smooth the z-data before contouring. This is invoked with
one of the ‘ contourOptions smooth=0 ’ options: smooth=0 no aplica suavizado; 1 aplica el vecino más cercano
NSEW (4) más el promedio de la celda central, y 2 promedia los 8 vecinos más cercanos más la celda
central. Los datos suavizados no se guardan, sino que se generan internamente a partir de los datos
brutos (no suavizados) cada vez que se trazan los datos.

También es posible simplificar los límites de contorno con el simplificar configuración.

9,7 O ETIQUETA MUERTA O DESPLAZADA

Normalmente se traza una etiqueta para cada segmento de contorno distinto. La posición de la etiqueta
normalmente se elige para que esté en el centro de la parte más larga y "más recta" del contorno. Esto se
deriva del resultado del procedimiento de simplificación de línea si se ha utilizado. Esta estrategia a
menudo produce una ubicación satisfactoria, pero ciertamente no siempre. Por ejemplo, no se tiene en
cuenta la relación espacial entre las distintas etiquetas; pueden superponerse.

Si esto no es satisfactorio, el cambio más rápido a realizar es colocar las etiquetas de contorno cerca del
centro de su contorno utilizando el ' contourOptions labelPosition = centro.

Para un gráfico determinado, el tamaño de la etiqueta de contorno y su probabilidad de superponerse a otras


etiquetas se rige en parte por la altura del texto de la etiqueta ( contourLabelSize ) y en parte por el número de
dígitos realmente impresos en la etiqueta ( contourLabelFigs ). Si PhreePlot piensa que no hay suficiente espacio
para imprimir un contorno en la posición deseada, no se imprimirá en absoluto.

Es común, especialmente donde hay condiciones que cambian rápidamente cerca de los límites de la
solución mineral, que dos o más etiquetas se superpongan haciéndolas ilegibles. Una estrategia para
lidiar con esto (además de cambiar los intervalos de contorno o reducir el tamaño de la etiqueta) es
mover una o más de las etiquetas ofensivas con contourShiftLabel , incluso moviéndolos tan lejos que no
se trazan en absoluto. Con un poco de esfuerzo, debería poder obtener posiciones de etiqueta
satisfactorias.

Un segundo enfoque es mover o empujar una o más de las etiquetas usando el empujar palabra clave y
posiblemente una nudgeFile .

El contourLabelSize también se puede configurar en 0.0 o la contourLabelColor ajustado a ' Dakota del Norte '. Esto suprimirá
todo etiquetado de este contorno. Sin embargo, el enfoque de 'desplazamiento' es más versátil cuando hay más de una
etiqueta por contorno, ya que se ocupa de etiquetas de contorno individuales en lugar de todas las etiquetas para un
nivel de contorno dado.

Alternativamente, todas las etiquetas se pueden suprimir con la escala que depende de los cuadros de leyenda.

9,8 W QUE SUCEDE SI Phreeqc ¿FALLAS DURANTE LOS CÁLCULOS DE CONTORNO?

El paquete de contorneado espera un conjunto completo de datos espaciados regularmente y actualmente no puede
tratar con "datos faltantes". Los cálculos se detienen y no se produce ningún gráfico.
Parcelas personalizadas 133

10Parcelas personalizadas

10.1 O VER

Las parcelas 'personalizadas' no tienen ninguno de los entresijos de los diagramas de predominio o del
ajuste. Simplemente toman la salida seleccionada que se ha acumulado de uno o más Phreeqc simulaciones
y hacer un gráfico utilizando las columnas de datos encontrados. El desafío es obtener los resultados para
producir un ' afuera 'archivo listo para trazar.

Una columna debe definirse como un 'eje x' y todas las demás columnas elegidas se trazan utilizando un
'eje y' común. Se puede elegir un eje y secundario si se desea. Los encabezados dados en el
SELECTED_OUPTUT archivo se convierten en etiquetas de columna en el normal Phreeqc fashion y estos se utilizan
para seleccionar la columna ('variable') para trazar y etiquetarla. Se pueden agregar texto, líneas y símbolos
adicionales al gráfico a través de archivos de datos y texto "extra".

El enfoque más simple es utilizar el USER_PUNCH keyword data block to only send the results that need
plotting, or at least, to ensure that these results are the last thing written following any output from
any initial solution etc calculations. If the problem is similar to one of the examples given here, use
the example as a template to get started.

Keep it simple to begin with, and use the log file with debug = 2 to take a close look at what is being
done. Decide which calculations can be put into pre-loop simulations and which belong best to the
main loop.

A loop file provides a flexible way of defining variables if more than one is wanted since the
variables do not have to increment in any particular way, and any number of variables can be
made to change ‘in parallel’. Each row in the loop file results in a separate iteration. The results
are accumulated in the ‘ out ’ file which can be used to produce a custom plot. Data from
pre-existing ‘ out ’ files (or other files with a similar tabular format) can be imported and added
to the plot.
If no SELECTED_OUTPUT file is created or the plotFactor is set to zero or calculationMethod is negative,
then no plot will be created. Therefore custom-type plots can be used to do Phreeqc
type calculations in the normal way without any plotting. PhreePlot has the advantage that it is
possible to do some simple looping and so generate a stream of output suitable for viewing or for
input to other software. For example, it is possible to accumulate all of the normal
Phreeqc output from a series of runs in the *. all file (see Example 71 ).

10.2 P REPARATION OF THE INPUT FILE

10.2.1 Introduction

Las parcelas personalizadas se utilizan para todas las parcelas xy distintas de las parcelas de predominio. Esto incluye parcelas de

especies y parcelas de ajuste.

Un cálculo de trazado personalizado normalmente espera Phreeqc para producir datos de salida seleccionados
con una variable x en la columna definida por customXcolumn , y y1 ... yn-1 en las otras columnas donde n = no. de
columnas. Los datos para graficar se seleccionan de estas columnas usando el líneas y
puntos palabras clave.

El ' afuera 'archivo es el archivo principal que se utiliza para trazar, pero se pueden incluir archivos adicionales utilizando el extradat
palabra clave. El especificado customXcolumn debe estar presente en cada archivo.

Los datos seleccionados se copian de la salida principal seleccionada al ' afuera ' expediente. Normalmente esto será
134 Guía PhreePlot

solo la última línea que se copia, pero se pueden transferir más líneas usando el selectedOutputLines
palabra clave. PhreePlot obtiene los nombres de las etiquetas de la línea de encabezado de salida seleccionada. Solo se utilizarán

los primeros 198 caracteres para definir los nombres de las etiquetas.

El Phreeqc identificador de encabezados que debe incluirse como parte del SELECTED_OUTPUT
el bloque de datos tiene el formato

- títulos xxxx xxxx ...


dónde xxxx no debe contener espacios en blanco (espacios o tabulaciones) o \ o /. Las comas no son necesarias como
separadores y, por lo tanto, no deben incluirse.

Valores transferidos con el valor valor que falta se tratan como datos faltantes.

Si no se encuentran datos dentro del área de trazado, la etiqueta se imprime en la leyenda pero no se envía ninguna
entrada al lineColor.dat archivo y no se traza ninguna etiqueta en el gráfico.

El tamaño de las etiquetas de la leyenda está controlado por Tamaño de la etiqueta - el mismo ajuste que se utilizó para
las etiquetas. Si una especie aparece en la leyenda pero no se muestra en la parcela, es porque no se encuentra dentro
del área de la parcela.

Las etiquetas se toman de los nombres de los encabezados de columna enviados desde Phreeqc a la
salida seleccionada utilizando el identificador de encabezado: Las etiquetas se interpretan por defecto
como Phreeqc especies y formateado en consecuencia (ver Sección 6.4.2 ). Este comportamiento se puede
anular con el convertir- Etiquetas palabra clave. Para evitar generar situaciones como < sub>. <sub> ... </sub>. </
sub>, no se intentará traducir los encabezados de columna si contienen < sub> o < sup>
antes de la traducción.

La posición de las etiquetas se puede ajustar con un ' archivo de empuje '. El < x_axis> el

incremento es controlado por xmin , xmax y resolución .

10.2.2 Controlar el alcance de los gráficos personalizados

La ejecución de gráficos personalizados está controlada por:

xmin , xmax etc controla el alcance del eje x.

ymin , ymax no importa ya que y se calcula


loopMin , loopMax y loopInt se utilizan como una variable de bucle adicional (la dimensión z)
por el < bucle> t1.inc.

Si loopInt = 0., entonces solo se hace un circuito alrededor del bucle. Esto usa < bucle> = loopMin . Esto es útil para
verificar el archivo de entrada para una configuración específica. Alternativamente el < bucle> La variable se puede
omitir de la QUÍMICA sección que luego solo se ejecutará a través del bucle una vez asumiendo la configuración
predeterminada normal.

10,3 S BUCLE IMPLE

Un uso de un procedimiento de trazado personalizado es simplemente repetir un cálculo muchas veces


cambiando una o más variables en cada iteración. No es necesario producir realmente una trama. Esto es algo
que puede resultar incómodo de hacer en Phreeqc en el presente. El Phreeqc_looping \ Fespe- cies ejemplo de
demostración Ejemplo 71 ) muestra cómo se puede hacer esto. El archivo de entrada tiene este aspecto:

ESPECIACION
cálculoTipo "custom"
método de cálculo -1
xmin - 10.0
xmax - 4.0
resolución 3
todo T

QUÍMICA
PRINT
- reset false # don't output initial solution calculation PHASES
Custom plots 135

Fix_H+
H+ = H+
log_k 0
SOLUTION 1
pH 2
units mol/kgw
Fe 1e-2
Na 1e-1
Cl 1e-1
# no reaction so no need to SAVE solution 1 END

USE solution 1
PRINT
- equilibrium_phases true
- species TRUE
EQUILIBRIUM_PHASES
Fe(OH)3(a) 0 0
Fix_H+ <x_axis> NaOH
- force_equality true
END

where the pH is controlled by the <x_axis> tag which is generated from xmin , xmax and reso- lution .
Phreeqc will be run resolution times with the values -10, -6 and -4 being substituted in turn for the
< x_axis> tag.

The Phreeqc code is split into two simulations, an initialization (pre-loop) simulation and a second
iteration which is the one that is iterated.

all is set to T so as to create the *. all file which contains the accumulated Phreeqc.0.out salida de todas
las iteraciones. Todo lo normal Phreeqc la salida se apaga primero con - restablecer falso
y luego se activa la salida de especies para minimizar el tamaño del archivo.

El método de cálculo se establece en -1 para no producir un gráfico. No se produce ninguna salida seleccionada.

También es posible utilizar un archivo de bucle para proporcionar los valores sucesivos de la (s) variable (s) de bucle (ver

loopFile ). Otro enfoque es utilizar el tipo de gráfico 'simular' que toma valores de bucle de un archivo de datos de
ajuste.

Uno de los desafíos de ejecutar cálculos personalizados para ejemplos más complejos es garantizar que se
produzca un archivo de salida 'bien formado' para que cualquier trazado que se necesite produzca los resultados
deseados. Por lo general, esto se puede lograr dividiendo el Phreeqc parte de entrada en el número 'correcto' de
simulaciones (utilizando FINAL 's), usando bucle principal para definir la división entre las simulaciones de bucle
previo y de bucle principal controlando así el bucle y la salida seleccionada de estas simulaciones, y finalmente
utilizando selectedOutputLines para controlar el número de líneas (filas) de datos enviados al ' afuera ' expediente ( Sección
4.6 ).

10,4 C ALCULANDO LA ESPECIACIÓN EN UN 2-D CUADRÍCULA

Aunque el ' cuadrícula 'enfoque para calcular los diagramas de predominio y el' contorno Ambos
métodos calculan la especiación en una cuadrícula, continúan haciendo otras cosas. La forma
más sencilla de calcular la especiación en una cuadrícula 2-D es usar el ' personalizado 'con los
parámetros del eje xy del eje y definidos. Usar SELECTED_OUTPUT y USER_PUNCH para definir la salida
que desea. Estos luego se escribirán en el ' afuera ' expediente.

10,5 millones ODIFICAR LA APARIENCIA DE LAS PARCELAS PERSONALIZADAS

10.5.1 Resumen

Many of the keywords can be used to control the appearance of the final plot (Figure 10.1). Axis

scaling can either be ‘ auto ’ or can be forced using keywords such as pxmin , pxmax etc.

Note the use of the x-axis scale factor, a dividing factor, which is automatically used by
PhreePlot for very small or large numbers. Since this approach always produces some confu-
136 PhreePlot Guide

sion, it is usually better to avoid the problem altogether by rescaling (changing units) in the selected
output to bring the scale somewhere in the range 1e-3 to 1e3.

A second, independent y-axis scale can be used for the right-hand y axis. Point and lines that use
this scale are specified with points2y and lines2y in the same way as for points and lines .

Tags se puede utilizar para dar texto con superíndice y subíndice, cursiva, negrita o saltos de línea. Se pueden
ingresar caracteres griegos individuales con la notación \ letra o, de manera más general, se puede agregar
texto griego con < g> ... </g> ( Sección 7.6.3 ).

Se pueden agregar datos adicionales de otros archivos al gráfico usando el puntos y líneas palabras clave
combinadas con extradat palabra clave para agregar los archivos adicionales a la ruta de búsqueda. Estos datos
deben estar en formato de salida tabular regular. extraSymbolsLines se puede utilizar donde se desee más
control sobre los símbolos utilizados o los anchos de línea.

plotTitle
plotTitleSize
plotFactor plotTitleColor

fuente

Cinética de oxidación de pirita

Eje 2y ( points2y Y lines2y )


pymax

8O 0,1 M KCl 6 extraText con <br>


1500 μ S / cm
pymajor
<sub> etiquetas 25 C
Carácter griego (\ m)
6 5
yaxisLength

PAG CO2 (g) (%)

O
P O2(g) (%)

ytitle 2ytitle
4 4
O O• 2 ( gramo)*
líneas O PÁGINAS
datos de extraSymbolsLines
2 3
PAG O
• PÁGINAS
pydec CO 2 ( gramo) puntos
PAG points2y
PAG O O
pxminor O
pymin 0PAG 2
0 2 4 6 8 10 12 14
pxmin pxmax
2)
pxdec Tiempo (horas) (/ 10 pxmajor
axisNumberSize
xtitle factor de escala insertado automáticamente por
axisNumberColor
axisTitleSize PhreePlot (significa 0-1400)
axisTitleColor

xaxisLength

customXcolumn

Figura 10.1. S

10.5.2 Personalización del gráfico

Proporcionar legendTextSize es mayor que cero, el valor predeterminado es imprimir una leyenda simple justo fuera del
área del gráfico, cerca de la esquina superior derecha del gráfico. Esta leyenda proporciona una clave para las líneas y los
símbolos trazados. La posición de la leyenda se puede mover dentro o fuera del área de la parcela usando el <leyenda> etiqueta
en un texto línea o extraText expediente. auto por X o y posición de coordenadas elige el valor predeterminado.

Las etiquetas asociadas con cada elemento de la leyenda se derivan de varias formas. De manera más simple, se
generan a partir de los nombres de las columnas en el archivo de datos del gráfico del cual se derivaron los
datos graficados. A menudo, estos se derivan de la ' afuera 'archivo que se genera automáticamente a partir del Phreeqc
salida seleccionada. Las etiquetas aparecen en el orden de salida de la columna que a su vez está determinado
por el PUÑETAZO pedido. Los datos y etiquetas utilizados también pueden derivarse de otro archivo siempre que
esté en el formato de archivo tabular out y que esté definido en la ruta de búsqueda dada por
extradat .
Parcelas personalizadas 137

Where there are completely blank lines in the plot data file, these generate line breaks and each
line is labelled separately in the legend. Consecutive blank lines count as a single break. Com- ment
lines do not produce breaks. By default, the column name is appended with “_ n ” where
n starts at 1 and increments by 1 for successive datasets.

These names can be replaced with your own names by using the labels keyword. This provides a
list, one name for each successive value of the loop variable. This list is recycled as needed, or
names can be read from a loop file or from the plot data file used in simulations and fitting. If only
one loop name is given, then the plot data file providing the data plotted is searched to see if this
name appears as a column label. If it does, then this column is used to provide the legend label for
that dataset. Since only one name is needed per dataset, this is taken from the first row of each
dataset. Variable values can also be ‘posted’ next to plotted points using the
post keyword.

A legend is automatically placed to the right of a plot if the legendTextSize is greater than zero. It is also often
useful to include a heading for the legend. This can be done using the legendTi- tle keyword or the <legend> enfoque
en el texto palabra clave que también se puede utilizar para mover la leyenda a otro lugar. Cualquier texto en la
cadena de texto que precede <leyenda> se utiliza como título de leyenda. Esto puede incluir etiquetas de mejora
de texto y saltos de línea. Si un conjunto de datos tiene el ' Dakota del Norte 'coloque entonces ese conjunto de datos
no se dibujará y no se hará ninguna entrada en la leyenda.

La coloración de líneas y puntos se puede dejar para PhreePlot o definido en el diccionario de colores de línea. Las
curvas de línea se etiquetan automáticamente si Tamaño de la etiqueta es mayor que cero y el labelColor no es ' Dakota del
Norte '. Cuando hay muchas líneas superpuestas, encontrar la ubicación de la etiqueta "óptima" puede ser lento. La
optimización se puede desactivar reduciendo labelEffort a cero. Las posiciones de las etiquetas se pueden microajustar
usando un ' archivo de empuje '. Se utiliza un símbolo de "seguimiento" rojo para mostrar los anclajes de las etiquetas.
Estos se pueden desactivar configurando trackSymbolSize a cero.
138 Guía PhreePlot
Parcelas de especies 139

11 parcelas de especies

11,1 W EL SOMBRERO ES ESPECIAL EN UN ' ESPECIES ' ¿TRAMA?

Una gráfica de 'especies' es un tipo especial de gráfica personalizada que muestra la distribución de especies
para un elemento en particular en términos de su concentración o distribución porcentual versus alguna variable
maestra, como el pH. El elemento se especifica con el especies principales palabra clave. El porcentaje se calcula
en términos de los moles de un elemento en una especie dada como un porcentaje del número total de moles de
ese elemento presente en todas las especies.

A menudo el especies principales es un elemento químico como ' Fe 'pero hay una serie de
especiales' especies principales ': (I) " elementos ”, ' etapas ',' aq ',' equi ',' ex ',' familiares ',' navegar ', 's_s ' y ' gas 'que
devuelven subconjuntos del sistema (ver el SYS () función en ' El intérprete básico 'sección de la
Phreeqc guide for details of each of these subsets); (ii) ‘ all ’ which will plot the percentages or
concentrations of all species for all elements. These options provide considerable flexibility in the
subsets of species included.

Two common types of species plots are shown in Figure 11.1 and discussed in more detail in the
Examples section ( Example 73 and Example 74 )

Especiación de cd log de concn de especies vs pH


(usando speciesvsph.inc) (usando logspeciesvsph.inc)

CD 2+
CD 2+
CdCl + -5 +
CD 2+ Cd (OH) 2 CdCl + CdNO 3
80 CdNO 3 + CdOH +

CdOH +
Cd (OH) 2 CdOHCl
concentración logarítmica (mol / kgw)

Cd (OH) 3 - - 10
2-
Cd (OH) 4 CdCl 2
60 CdOHCl
Cd (OH) 2
CdCl 3-
% en especies

- 15
CD 2+ CD 2 OH 3+
-
Cd (OH) 3 CD 2 OH 3+

40
CdCl +
CdCl 2
Cd (OH) 3 - CdCl 3-
- 20 CdNO 3+
CdOH +
CdOH + Cd (OH) 2
Cd (OH) 3 -
Cd (OH) 4 2-

20 CdOHCl
- 25
+ CdOHCl
CdNO 3 Cd (OH) 4 2-

CdCl +
0 2- - 30
6
Cd (OH) 4
8 10 12 6 8 10 12
pH pH

Figure 11.1. Two common types of species plots produced using the ‘species’ method showing the distribution of Cd
species with pH. The two plots use different ‘include’ files to generate the selected output.

A species vs pH plot is obtained by setting calculationType to ‘ species ’ and by including one of the special ‘ include
’ files in the CHEMISTRY section. An example of using the ‘ spe- ciesvspH.inc ’ include file is given in Figure 11.1
(left). The ‘ logspeciesvspH.inc 'se utiliza para generar un gráfico de las concentraciones de especies
logarítmicas frente al pH (Figura 11.1, derecha). Estos archivos se pueden editar para filtrar especies no
deseadas: las especies H y O que normalmente dominan los sistemas acuosos se filtran de forma
predeterminada.

Era necesario hacer de la parcela de especies un tipo especial de parcela personalizada ya que Phreeqc no puede generar

automáticamente un conjunto de nombres de encabezados (títulos de columnas) en tiempo de ejecución para corresponder con

las especies encontradas. Por lo tanto, es necesario escribir el nombre de la especie en el archivo de salida seleccionado.
140 Guía PhreePlot

junto con cada valor. Además, el SYS () La función que se utiliza para extraer el conjunto de especies presentes y
sus concentraciones se escribe en el archivo de salida seleccionado en orden ordenado por concentración en
lugar de ordenado alfabéticamente. Esto significa que es probable que el orden de clasificación varíe y deba
reordenarse para poder trazar las curvas de distribución de especies.

El ' especies 'espera que se devuelva un tipo específico de entrada en la salida seleccionada. Consiste en una
serie de pares nombre-valor de especies. Los nombres de las especies se utilizan para las etiquetas
mientras se trazan los valores. El customXcolumn debe establecerse en la columna donde se encuentra la
variable del eje x. Se supone que los otros pares de columnas contienen valores y (porcentajes o
concentraciones de especies) que se deben representar. Por ejemplo, si la variable del eje x es PUÑETAZO 'ed
primero, luego el customXcolumn se establecería en 2 y el nombre predeterminado del eje x se toma del
nombre dado en la columna 1. Las columnas restantes son los pares nombres-especies para trazar.

Seis incluir archivos para hacer parcelas de especies se incluyen en el directorio del sistema. Estos son para
analizar especies en solución o especies adsorbidas y se informan en concentraciones relativas (%) o en
concentraciones absolutas (mol / kgw), consulte la Tabla 11.1. Los archivos se pueden editar fácilmente para
personalizar su comportamiento. Por ejemplo, en lugar del pH como variable independiente, se pueden elegir
otras variables o se pueden editar los archivos para excluir varias especies del gráfico.

Table 11.1. The two standard include files used for generating species plots

Name of file Purpose

<mainspecies> specifies the ‘element’, or ‘elements’, to analyse,


e.g. “Cd” or “aq”, “phases”, “elements”, “surf”, “s_s”, “gas”, “all” for
all species for a specific element or aqueous, solid, etc spe- cies.
especiesvsph.inc Output is in terms of the relative concentration (in %) of all
species, including minerals and adsorbed phases, containing the
main element vs pH. If the < mainspecies> es "elementos", entonces
el análisis se realiza a nivel de elemento para todos los elementos.
Como para especiesvsph.inc pero la salida está en términos de
logspeciesvsph.inc
Iniciar sesión 10 ( mol / kgw) concentración de cada especie.

Estos archivos recogen las principales especies del especies principales ajuste y utilice el SYS () función para
obtener una lista de las especies presentes para este 'elemento' y sus cantidades (en moles). Estos luego
se convierten en porcentajes de la cantidad total presente o se convierten en concentraciones
logarítmicas y se perforan en pares de nombre-valor al SELECTED_OUTPUT archivo que, a su vez, se copia a la afuera
archivo, una fila por pH.

Puede haber más de una especie principal. Se produce una parcela separada para cada uno.

Los encabezados de columna en el ' afuera 'archivo son los dados por Phreeqc para columnas sin nombre, a
saber, no_heading_1 para la columna 1 y así sucesivamente. Las especies están escritas en el ' afuera ',
comenzando con las especies más abundantes, seguidas de todas las demás especies en orden
decreciente de abundancia. El orden de las especies escritas tenderá a variar con la química del sistema.

Una tabla ordenada de los resultados de la especiación se escribe en el pts ' archivar si el ' ptos 'se ha establecido en CIERTO en
uno de los archivos de entrada principales. Esto se puede utilizar para trazar los resultados con otro software o con el líneas
o puntos palabras clave.

PhreePlot muestra automáticamente la distribución de todas las especies como líneas. No líneas Se requiere una
línea en el archivo de entrada. El color de las líneas dibujadas se determina mediante el algoritmo de coloración
de línea normal, es decir, mediante la selección automática de color o el diccionario de color de línea, según useLineColorDictionary
configuración. El ancho de la línea está controlado por el grosor de línea configuración. El minimumYValueForPlotting
El entorno es útil para eliminar especies menores de la parcela.

Si especies principales se establece en " elementos ”, the distribution is over the total concentrations of all dis-
solved elements and valence states (solution master species) in the system rather than for the
concentrations of all species of a particular element.

The ‘adsorbed’ option considers the distribution of adsorbed species vs pH either for just one
element or of all elements, as determined by the mainspecies setting.
Parcelas de especies 141

También se puede especificar una lista de especies principales para obtener múltiples parcelas. El archivo de varias
páginas la configuración controla si todos los gráficos ps y pdf producidos se combinarán en un archivo o no.

Si la especie principal se establece en ' todo ', luego se grafican los porcentajes o concentraciones
logarítmicas de todas las especies de todos los elementos (con la excepción de ciertas especies, incluida el
agua; consulte el código básico en especiesvsph.inc y logspeciesvsph.inc). Los porcentajes se calculan como el
porcentaje de la cantidad total del 'elemento' principal que se está considerando (calculado con el SYS () función).
Es posible filtrar otras especies no deseadas modificando el código básico en el
*. C ª archivos.

Se puede lograr el mismo efecto usando un gráfico personalizado ordinario, pero aquí la clasificación
debe hacerse con BÁSICO código en el USER_PUNCH cuadra ( Ejemplo 60 ).

El método de cálculo de 'especies' discutido anteriormente se puede modificar para trazar una variedad de cosas
siempre que la salida seleccionada esté configurada para producir un conjunto fijo de pares nombre-valor.

Tenga en cuenta que en la Figura 11.1 (izquierda) se han omitido las curvas de varias especies menores para
mayor claridad. Esto se logró estableciendo minimumYValueForPlotting hasta un valor de 5. Sólo se trazan las
curvas con un valor máximo superior al 5%.

Si la variable del eje x deseada no es pH sino alguna otra variable, entonces es sencillo editar los archivos
de inclusión para asegurarse de que la variable requerida sea la primera en ser perforada en la salida
seleccionada y asociar customXcolumn con eso.

Es posible hacer múltiples gráficos usando la variable de bucle.

11,2 M ODIFICAR LA APARIENCIA DE LAS PARCELAS DE ESPECIES

Si el título del eje x predeterminado es para una parcela de especies, se establece en ' auto ', el título del eje x se
establece en el nombre de la columna X personalizada, por ejemplo, "pH" y el título del eje y es "% en especie "Para
una gráfica de escala lineal o" concentración logarítmica (mol / kgw) "Cuando se ha inferido una escala logarítmica,
es decir, cuando minimumYValueForPlotting es menor o igual a cero y no hay variables de eje 2y para trazar. El
título de la trama se establece automáticamente en " Distribución de <mainspecies> con pH ”. Todos estos valores
predeterminados se pueden anular desde los archivos de entrada.

Las parcelas de especies se producen con el procedimiento de parcelas personalizadas y, por lo tanto, se aplican las mismas

configuraciones de palabras clave discutidas para las parcelas personalizadas. Muchos de ellos se ilustran en la Figura 11.2.

Puede haber una variedad desconcertante de líneas en las parcelas de especies y puede ser útil si el etiquetado
está coloreado tan bien como las líneas. Esto se puede lograr configurando labelColor para ' auto '. Las líneas y
etiquetas tendrán el mismo color tanto en el gráfico como en la leyenda.

11,3 A ADJUNTAR OTRAS VARIABLES A UNA PARCELA DE ESPECIE

Es posible graficar otras variables en una gráfica de especies.

Agregue cualquier variable adicional a la lista de PUÑETAZO elementos ed en el especiesvsph.inc expediente. Se


pueden agregar en cualquier lugar siempre que la columna x siga siendo la primera en ser PUÑETAZO 'ed.
Normalmente, se agregarían antes o después de que las especies reales hayan sido PUÑETAZO 'ed. Esto
asegura que se incluirán en el archivo de salida. A partir de entonces, se tratan como si fueran especies
ordinarias, es decir, se trazarán en el eje y principal.

Los nombres de las columnas en el archivo de salida de un gráfico de especies estarán en pares comenzando no_heading_1,
no_heading_2 .... para las especies más abundantes seguidas de las otras especies en orden de abundancia
decreciente.

Para las parcelas de tipos de especies, se requiere una tabla con posiciones de columna fijas. Esto se da en el ' ptos '
expediente. Este archivo se agrega automáticamente a la ruta de búsqueda y, por lo tanto, las especies indicadas se
pueden trazar con el líneas o puntos ajustes.
142 Guía PhreePlot

plotTitle
plotTitleSize
plotFactor plotTitleColor

fuente Especiación de cd
(usando speciesvsph.inc)

legendTitle está en blanco

pymax 100 Cd2 + legendTextSize


CdCl +
pymajor CdNO3 +
Cd (OH) 2 • CdOH +
80 Cd (OH) 2
Cd (OH) 3 -
trackSymbolSize Cd (OH) 4 2-
trackSymbolColor CdOHCl
% en especies

60 (método de cálculo = 1)
yaxisLength

• líneas
Cd2 +
grosor de línea

Cd (OH) 3 •- color de linea

40 useLineColorDictionary

ytitle CdOH + Tamaño de la etiqueta



labelColor
20 labelEffort
pydec CdOHCl


• CdNO3 + Cd (OH) 4 •2-
minimumYValueForPlotting
CdCl +
pymin 0
6 8 10 12
pxminor
pxmin pxdec pH pxmajor pxmax

xtitle
axisTitleSize
customXcolumn axisTitleColor

xaxisLength

Figura 11.2. Algunas de las palabras clave utilizadas para controlar la apariencia de gráficos
personalizados.
Montaje y simulaciones 143

12 Montaje y simulaciones

12.1 Yo NTRODUCCIÓN

Calibrar modelos es una parte clave del modelado, pero puede resultar bastante abrumador al principio.
Encajando con PhreePlot definitivamente pertenece a la categoría de tareas 'avanzadas'. Tienes que hacer
que algunas cosas funcionen correctamente juntas para tener éxito y, si bien sería bueno tener un
enfoque de 'disparar y olvidar' para esto, rara vez es tan sencillo.

The setup for fitting is very flexible. Each observation can be simulated using either the same block
of Phreeqc simulations (containing variable tags) or a different block of simulations as specified in
the fit data file. This enables different models to be applied to different observa- tions – a form of
‘global’ optimization. For example, several ‘metals’ could be fitted to a similar model, or each ‘metal’
could be fitted to a different model, at the same time. It is also possible to globally fit parameters by
combining data from potentiometric titrations for proton bind- ing with sorption data for metal
binding, for example.

El principio fundamental es que cada línea en un archivo de datos de ajuste se corresponde con una
observación y que deben emparejarse uno a uno con los valores calculados correspondientes en el
archivo "out". Entonces, debe haber formas de definir cómo calcular los valores esperados para cada
observación y de ponderar las diversas observaciones, o más específicamente, los residuales.

PhreePlot incluye una serie de algoritmos de optimización fáciles de usar que se pueden utilizar para ajustar los
modelos a los datos, es decir, ajustan automáticamente un conjunto de valores de parámetros definidos en un Phreeqc
archivo de entrada a sus valores óptimos basados en un conjunto de observaciones (datos) y una función
objetiva para proporcionar una medida de la bondad general de ajuste. La función objetivo utilizada aquí para
esto es la suma ponderada de cuadrados de los residuos.

El algoritmo a utilizar se elige con fitMethod . Los cinco optimizadores disponibles actualmente son:

(I) ' nlls ': este procedimiento de Levenberg-Marquadt modificado se describe en Powell (1965) .
La versión utilizada aquí se basa en el VA05 rutina de la biblioteca de subrutinas de Harwell ( HSL )
Archivo;

(ii) ' lm ': el procedimiento Levenberg-Marquadt implementado en el MINPACK-1 empaquetar


por Más, Garbow y Hillstrom . Utiliza un método de diferencia directa para aproximar el jacobiano.

(iii) ' newuoa '(NUEVO algoritmo de optimización sin restricciones): este no es específicamente un
optimizador de mínimos cuadrados, aunque se usa aquí como tal. NEWUOA es un optimizador de
propósito general que utiliza un modelo cuadrático para aproximar la función objetivo en una 'región de
confianza' ( Powell, 2007 ). La 'región de confianza' es una parte restringida de la función objetivo en la que
se 'confía' en que la aproximación cuadrática es correcta. Esta región se agranda progresivamente a
medida que mejora la aproximación. NEWUOA es robusto y ha demostrado ser capaz de manejar un gran
número, es decir, cientos, de parámetros ajustables. Ha sido reemplazado en gran medida por
BOBYQA.
(iv) ' bobyqa '(Optimización limitada por aproximación cuadrática): BOBYQA es parecido a NEWUOA
excepto que permite especificar límites superior e inferior para cada parámetro ajustable ( Powell,
2009 ).

(v) ' subplx '(Algoritmo simplex que busca en subespacios) por Rowan (1990) es una
generalización del método simplex de Nelder-Mead. Se dice que es adecuado para situaciones en
las que las funciones son ruidosas y discontinuas en la solución.
144 Guía PhreePlot

Se puede proporcionar una lista de estos métodos a fitMethod y luego los métodos se ejecutarán secuencialmente en el
mismo conjunto de datos con todas las configuraciones iguales (aunque algunos parámetros pueden adquirir
significados algo diferentes).

Todos estos métodos no tienen derivadas, lo que significa que no es necesario proporcionar funciones para
calcular las derivadas. Esto hace que la adaptación de nuevos modelos sea mucho más fácil, e incluso posible.
- pero hay una penalización en términos de velocidad de ejecución y, lo que es más importante, estabilidad.
Cuando las derivadas numéricas se calculan a partir de un modelo numérico que en sí mismo conlleva errores
de estimación, como todos Phreeqc Si los cálculos lo hacen, se debe tener cuidado para asegurar que las
derivadas se obtengan con suficiente precisión para ser útiles. En la mayoría de las implementaciones
anteriores, esto está en gran parte fuera del control del usuario, pero puede controlarse hasta cierto punto por
el criterio de convergencia elegido y con el ' nlls 'optimizador por el fitFiniteDiffStepSize

parámetro.

Los parámetros a optimizar y las variables independientes utilizadas se identifican mediante etiquetas
definidas por el usuario y colocadas en el Phreeqc código de entrada de la sección Química del archivo de
entrada principal. Cada uno de los parámetros ajustables se varía sistemáticamente de manera que se
encuentre el valor mínimo de la función objetivo. Esto debería corresponder con un ajuste óptimo entre
los valores calculados y observados de la (s) variable (s) dependiente (s) teniendo en cuenta el peso
asignado a cada observación.

Las opciones de ponderación son: ponderación unitaria (a todas las ponderaciones se les asigna automáticamente un valor de 1),

ponderación relativa (las ponderaciones son 1 / valor observado), o las ponderaciones de cada observación se pueden leer en el

archivo de datos.

Los cálculos se pueden ejecutar en simulación (' simular ') o apropiado (' encajar ') modo. 'Simulaciones' ( cálculoTipo
' simular ') en el contexto actual significa usar la misma configuración que un archivo de entrada de ajuste
pero solo calcular la variable' dependiente 'una vez para cada observación en lugar de usar estos valores
para refinar los valores de los parámetros ajustables. Esto es útil para tener una idea de los resultados
que dará el conjunto inicial de valores de parámetros.

El modo de simulación también es útil cuando un Phreeqc Se desea que el archivo de entrada se ejecute con
varios conjuntos de valores de parámetros o variables (a veces llamadas 'variables independientes'). Estos
valores pueden ingresarse en el 'archivo de datos' y tomarse desde allí con cada fila en el archivo de datos
correspondiente a una simulación separada. Los encabezados del archivo de datos se utilizan para generar
nombres de etiquetas. Las etiquetas correspondientes se utilizan para marcar la posición de una sustitución en
el archivo de entrada.

Si el número de grados de libertad en un archivo de ajuste es 0, es decir, hay el mismo número de parámetros ajustables
que puntos de datos, entonces la optimización por mínimos cuadrados no es apropiada ya que existe una solución
exacta. PhreePlot asume que el problema es entonces uno de 'búsqueda de raíz' e intentará encontrar la solución por
iteración. Esto también se aplica cuando no se proporciona ningún archivo de datos, es decir, el nombre del archivo de
datos de ajuste está en blanco. En este caso, los valores 'objetivo' se establecen automáticamente en cero.

12,2 F ITTING ES ESPECIAL

El ajuste incluye su propia forma de bucle y está fuera del bucle normal integrado en
PhreePlot. Por lo tanto, los bucles x, y, z (bucle) y mainpecies no funcionan. Y como se describe a continuación, la forma
en que trata los archivos de entrada de simulación múltiple también es diferente de la normal. La división entre
simulaciones previas al bucle y simulaciones del bucle principal se basa en un subconjunto de simulaciones,
potencialmente único para cada punto de datos, en lugar de todo el conjunto de simulaciones. Esto proporciona la
máxima flexibilidad en la forma en que se pueden optimizar globalmente diferentes tipos de datos.

12,3 A APROXIMACIÓN A LA INSTALACIÓN

Hay dos componentes distintos para ajustar:

(i) definir la función objetivo, es decir, definir lo que se debe minimizar sujeto a cualquier restricción
sobre los valores que pueden tomar las variables de función ('parámetros ajustables'). Aquí usamos una suma de
cuadrados de los residuos ponderados. Son posibles otras funciones;
Montaje y simulaciones 145

(ii) ajustar el conjunto dado de variables de tal manera que se ubique un valor mínimo aceptable de
la función objetivo;
Dado (i), el desafío de (ii) se define simplemente, pero encontrar enfoques rápidos y confiables ha ejercitado a los
analistas numéricos durante mucho tiempo. Todos los optimizadores deberían, en principio, converger al mismo
mínimo dado el mismo (i).

En nuestro caso, la función objetivo en sí consta de tres componentes:

(i) el modelo químico utilizado para calcular el valor de las variables dependientes; (ii) las

observaciones correspondientes de la (s) variable (s) dependiente (s);

(iii) la ponderación aplicada a cada observación o más particularmente a los residuos (la diferencia
entre (i) y (ii)) para cada observación.
Una vez más, dado un modelo químico bien definido (incluida la base de datos termodinámica) y el mismo
esquema de ponderación, todos los programas de ajuste deberían, en principio, converger hacia la misma
solución final: el "mejor" ajuste. Esto se puede probar comparando los valores de los parámetros ajustados y los
residuos individuales. El grado relativo de éxito del ajuste mediante varios procedimientos se puede juzgar
mediante una medida de la 'bondad del ajuste' general, como la raíz del error cuadrático medio (RMSE) o el
coeficiente de determinación (R 2). El objetivo es que el ajuste sea al menos mejor que asumir el valor medio de la
variable dependiente en todo momento; por supuesto, puede ser peor si se obtiene una R negativa
aparentemente improbable al principio. 2.

En última instancia, los detalles de cómo exactamente el modelo calculó las contribuciones individuales a la
función objetivo no deberían hacer ninguna diferencia. Se asume que esto se ha hecho de manera confiable,
aunque, por supuesto, es una suposición crítica y es en sí misma una medida de la calidad del modelo.

Los errores en el ajuste implican converger a un mínimo local, no global, y no encontrar un mínimo único
quizás debido a dos o más variables altamente correlacionadas. Esta última situación lleva a que el
optimizador "deambule a lo largo de un fondo de valle largo y plano" y es un signo de un modelo sobre
parametrizado. Esto no significa que el modelo sea incorrecto, solo que no hay datos suficientes para
definir de forma única todas las variables. La solución habitual a esto es reducir el número de variables
fijando una o más de las variables en un valor aceptable, o agregando una o más restricciones a los
valores que las variables pueden tomar ('optimización restringida').

12,4 P RÁCTICO S ETUP

12.4.1 Aproximación

Es útil dividir la tarea general en varias subtareas más manejables:

1. Organiza tus datos


Es necesario crear un archivo que contenga los datos ('observaciones') que se van a ajustar. Debe ser un
archivo plano codificado en ASCII. Puede prepararse fácilmente en una hoja de cálculo y exportarse en
formato de pestaña o csv. Debe tener una línea por observación con columnas que incluyan todas las
variables independientes. La primera línea debe ser un encabezado que contenga las etiquetas de las
columnas; manténgalos simples evitando espacios y otros caracteres especiales, por ejemplo, use solo
caracteres en mayúsculas y minúsculas, números, el signo de dólar ('$') y el guión bajo (' _ '). Los datos
deben comenzar en la segunda línea válida (sin contar los comentarios y las líneas en blanco). Las
columnas pueden contener datos numéricos o de caracteres (no mezclados dentro de una columna). De
forma predeterminada, se supone que todas las columnas son numéricas. Si el último carácter de la
etiqueta de una columna es un signo de dólar, entonces se supone que esa columna es una columna de
caracteres. Si se asumió que una variable en esta segunda línea es numérica pero se encuentra un valor
de carácter (no numérico) en la primera línea de datos, entonces se asumirá que toda la columna es de
carácter. Si es necesario, reorganice el orden de las filas o inserte una línea ficticia de 'formato' para
asegurarse de que sea así. También decida qué separador (es) de datos se va a utilizar y dígale PhreePlot
ya sea con el dataSeparators palabra clave o con el segundo parámetro opcional de la archivo de datos palabra
clave. Tenga cuidado con las pestañas y otros caracteres "invisibles" en su archivo de datos. Si desea que
varias pestañas consecutivas indiquen que falta un conjunto de datos
146 Guía PhreePlot

el separador de datos explícitamente a "\ t", aunque una línea completa de pestañas sin otros caracteres
siempre se trata como una línea en blanco. Si desea que las pestañas y los espacios se traten por igual, y
que varias pestañas y espacios se traten como un solo separador, use "\". Suele ser una opción
adecuada.

Si es necesario incluir líneas adicionales pero no usarlas en los cálculos, conviértalas en comentarios
haciendo que el primer carácter que no esté en blanco sea un hash (#).

Al leer las entradas, las comillas se eliminan de la entrada y la entrada se lee como numérica o de
caracteres de acuerdo con el formato establecido anteriormente. Se supone que los valores no
numéricos son caracteres. Las comillas por sí solas no definen un valor de carácter, por ejemplo, "1.23",
"4.56", ... se interpretarán como valores numéricos válidos.

Los campos vacíos reciben el valor que falta si la columna se designa numérica o como la cadena
vacía (“”) si se designa un carácter. Un ' N / A 'en un campo numérico también se le da el valor
faltante. El valor faltante se trata como un valor válido en los cálculos a menos que se le asigne el
valor de INDEFINIDO (-99999) en un archivo de entrada. El valor faltante predeterminado se establece
como INDEFINIDO.

Si es adecuado, deberá decidir cómo desea ponderar las observaciones y, si es necesario, incluir
una columna de 'ponderaciones'.

2. Ponga en funcionamiento el modelo químico


Cada observación está asociada con un bloque de simulaciones, es decir, un conjunto contiguo de
Phreeqc simulaciones. Cada observación puede referirse al mismo bloque de simulaciones (con algunas
etiquetas dentro del bloque que varían el código real para cada observación) o cada observación puede
tener su propio bloque distinto de simulaciones, o en cualquier lugar entre estos dos extremos. Esto
permite la optimización global, ajustando conjuntos de datos / modelos esencialmente no relacionados
al mismo tiempo.

Cada bloque se divide en dos partes:

(i) cero o más simulaciones previas al bucle (ii)

una o más simulaciones del bucle principal.

Todas las simulaciones previas al bucle para todos los bloques especificados se ejecutan secuencialmente solo
una vez por ejecución antes de que comience la adaptación adecuada. Esto permite que el código estático, como
la carga de bases de datos o la preparación de soluciones, se ejecuten una sola vez. Cuando el modelo es similar
para todas las observaciones, a menudo es conveniente asociar las simulaciones previas al bucle solo con la
primera observación. Los bloques de código para cada observación y la división de bucle anterior / bucle
principal se especifican junto con las observaciones utilizando el blockRangeColumn y main- LoopColumn en el
archivo de datos de ajuste como se describe a continuación.

Cada observación y su bloque de Phreeqc El código incluirá etiquetas que especifiquen las
variables independientes y finalmente generará el valor de la variable dependiente en un
USER_PUNCH bloque de palabras clave. Por lo tanto, cada bloque de código normalmente contendrá al
menos el SOLUCIÓN y USER_PUNCH bloques de palabras clave. Compruebe que el código funciona
correctamente comprobando el cálculo de un solo punto. Puede ser conveniente desarrollar esto usando Phreeqci
después de sustituir manualmente las etiquetas por valores razonables. Los encabezados de columna
definidos en el USER_PUNCH El bloque de datos se usa para nombrar las columnas en los archivos de salida
(y por lo tanto se puede usar para identificar qué columnas usar para trazar), así como para decir PhreePlot
dónde esperar el valor calculado de la variable dependiente. Se puede hacer referencia a las columnas
por nombre de columna o número de columna.

Si debug se establece en 2, entonces una tabla que muestra el Phreeqc Las simulaciones que se ejecutan como
simulaciones de bucle previo y de bucle principal se envían al archivo de registro. Contiene una entrada para
cada observación.

3. Cree el archivo de entrada PhreePlot


Si es posible, elija un archivo de entrada existente de un problema de ajuste similar como plantilla y
edítelo en consecuencia. Esto le recordará los parámetros que deben tenerse en cuenta. Deberá definir
el nombre del archivo de datos ( archivo de datos ), la columna de ese archivo contiene
Montaje y simulaciones 147

mantener las observaciones ( dependienteVariableColumnaObs ) y la columna del archivo de salida


seleccionado que contiene el valor de la variable dependiente ( dependienteVariableColumnaCalc ).
Cada columna del archivo de datos se convierte en una etiqueta que se puede utilizar en el Phreeqc
código modelo para indicar dónde se debe realizar una sustitución.

Decidir qué algoritmo de ajuste usar (' fitMethod ') y qué variables deben definirse como
parámetros del modelo (por lo general, estos son todos los parámetros que pueden necesitar ser
ajustados en alguna etapa) y definir los nombres del modelo y otros cambios de parámetros en
consecuencia ( numberOfFitParameters , fitParameterNames , fitAdjustableParameters ). El numberOfFitParameters
debe establecerse en el número de parámetros distintos especificados por las etiquetas en el
archivo de entrada; debe incluir tanto parámetros fijos como ajustables. Establecer los valores de
los parámetros iniciales para todos los parámetros ( fitParameterValues ) y los límites de estos
parámetros si procede. Es importante que esta combinación de valores de parámetros funcione,
así que si es necesario, consulte con Phreeqc o por otros medios. Puede que tenga que ajustar
algunos de los ajustes operativos del algoritmo de ajuste controlando cosas como el tamaño del
paso, el número máximo de iteraciones, etc. Finalmente, decida cuál será el gráfico más
diagnóstico y defina customXcolumn y puntos respectivamente. Cualquier columna definida en el ' ptos
'archivo se puede utilizar para trazar, incluido el generado automáticamente' observado ',' calculado ' y ' derechos
residuales de autor 'columnas. Los refinamientos incluyen agregar texto adicional ( texto o extraText ) y
etiquetar puntos individuales usando correo .

Cada punto de datos tendrá que estar asociado con un bloque de uno o simulaciones que se
utilizarán para calcular el valor ajustado para esa observación. Es mejor (a) identificar todas las
'constantes' Phreeqc bloques, es decir, aquellos bloques que son siempre iguales y no cambian
- estos se pueden poner en una simulación previa al bucle; (b) identificar todos Phreeqc bloques que son
constantes para todas las observaciones (puntos de datos) pero que pueden variar durante el ajuste; estos
pueden incluirse en la simulación para la observación 1; (c) identificar la simulación o el rango de simulaciones
que se utilizarán para cada observación; estas deben contener principalmente bloques de datos no constantes,
es decir, aquellos que contienen una etiqueta que variará. Esto también puede incluir simulaciones adicionales.

Para la velocidad máxima, en el paso (c) anterior, asocie todas las observaciones con el mismo
rango de simulaciones, p. Ej. 2-11 y usa el onePass VERDADERO opción. Esto significa que todas las
simulaciones se calcularán en una sola llamada a Phreeqc.

4. Ejecute el archivo
Ejecute el archivo usando debug = 2 o 3 si es necesario. Es posible que deba ajustar algunos de los
parámetros de ajuste, particularmente fitFiniteDiffStepSize . El valor R2 es una guía de qué tan bien el
modelo se ajusta realmente a los datos. Si el modelo parece estar funcionando correctamente pero
PhreePlot se niega a ajustar los valores ajustables, compruebe cuidadosamente el modelo y los datos,
por ejemplo, mirando la tabla de valores observados y calculados cerca del final del archivo de
registro. Este tipo de falla generalmente se debe a que el modelo no puede resolver cómo mejorar
el ajuste y, a menudo, es una señal de que algo anda mal con el modelo. Cuando crea que tiene un
buen ajuste, confirme su singularidad comenzando con un conjunto diferente de valores de
parámetros iniciales, o incluso usando uno de los otros algoritmos.

12.4.2 Flujo de datos e información durante el ajuste

En la Figura 12.1 se muestra un resumen del flujo general de datos e información durante el ajuste. Los datos se
leen desde el archivo de datos ( archivo de datos ). Si es necesario, los datos se transforman antes de almacenarse
en la memoria ( logVariableIn ). Estos datos contienen valores para la variable dependiente (para un ajuste), el
peso que se aplicará a cada observación si corresponde y cualquier variable independiente necesaria en los
cálculos. Puede contener columnas de datos adicionales, pero se ignoran. Los encabezados de las columnas se
utilizan para definir etiquetas especiales de "datos de ajuste". Estos se utilizan en el
QUÍMICA parte del archivo de entrada para identificar las variables que se sustituirán al calcular el valor de
la variable dependiente. También es necesario identificar qué columna contiene la variable dependiente.
Esto se hace por la posición de la columna o el nombre ( dependienteVariableColum- nObs ). El Phreeqc Las
simulaciones utilizadas para cada punto de datos se indican mediante el valor entero
148 Guía PhreePlot

o rango entero encontrado en la columna del archivo de datos dado por el blockRangeColumn . Estas simulaciones pueden ser

compartidas por diferentes observaciones o pueden ser diferentes para cada observación.

También puede haber una columna en el archivo de datos de ajuste para indicar qué simulaciones dentro de cada rango
de bloque son simulaciones previas al bucle y cuáles son las simulaciones del bucle principal. Como el bloque-
RangeColumn , esto se puede especificar por separado para cada observación. El nombre de la columna viene dado por
el mainLoopColumn palabra clave. Si esto no se especifica y el bucle principal palabra clave tiene una configuración válida,
entonces esta configuración se utiliza para todas las observaciones. Esta configuración es relativa al inicio del bloque de
simulaciones utilizado para cada observación.

La configuración predeterminada de bucle principal es auto que para el ajuste y las simulaciones se establece en ' 1 ',
es decir, todas las simulaciones se ejecutarán en cada iteración. Recuerda eso ' 1 ’ refers to the first simulation in
the specified block not the first simulation in the whole set of simulations.

All pre-loop simulations are executed only once per run – at the very beginning of the run. Pre-loop
simulations should include static data such as database blocks. If there are data blocks that vary but
apply to all data points in a given set of function evaluations and so only need to be run once per
iteration, include them in the block of simulations specified for the first data point. The simulations
specified for the second and subsequent data points should only refer to the simulations specifically
required for those data points.

The input files define the number and names of parameters used by the chemistry model to calculate the value
of the dependent variable ( numberOfFitParameters and fitParameter- Names ) para un conjunto dado de
condiciones. Los parámetros pueden ser fijos o ajustables ( fitAdjustableParameters ) y puede ajustarse como
valores de parámetros logarítmicos ( fitLogParameters ). Los valores de parámetro establecidos ( fitParameterValues
) se utilizan como estimaciones iniciales si son ajustables o como valores fijos.

El QUÍMICA La sección contiene el código que se utiliza para calcular la variable dependiente y normalmente se
genera a través del 'archivo' de salida principal seleccionado. La columna para esto viene dada por
dependienteVariableColumnaCalc y si debe ser transformado o no por logDepVaria- ble . Las
observaciones del archivo de datos se comparan con el valor calculado de la variable
dependiente y la diferencia (el 'residual') multiplicado por el peso dado o calculado ( fit-
WeightingMethod y pesoColumna ). Este residuo ponderado se pasa al optimizador.
El optimizador ajusta los parámetros ajustables, identificados por fitAdjustableParameters hasta que el criterio
de convergencia de algún otro factor señale una salida. Después de la convergencia, se calculan las estadísticas
resumidas, se producen algunos resultados tabulares y se hace un gráfico. La trama está hecha de la ' ptos 'archivo
con las columnas utilizadas especificadas por el líneas y puntos palabras clave. Datos de otros archivos, incluido
el ' afuera ', se puede usar agregando los archivos relevantes a la ruta de búsqueda con extradat . El valor de customXcolumn
controla la variable del eje x. Si no se logra una convergencia satisfactoria, se emite un mensaje en consecuencia.

12.4.3 Los parámetros

Los parámetros son variables que permanecen constantes durante una simulación, es decir, tienen el mismo
valor para todas las observaciones con un conjunto de datos dado. Los parámetros pueden ser fijos o ajustables
dependiendo de si deben ser ajustados por PhreePlot para proporcionar el mejor ajuste o no.

El número de parámetros debe definirse primero utilizando el numberOfFitParameters palabra


clave. Cada parámetro tiene varios atributos asociados, como su nombre, su valor y si es fijo o
ajustable, si el registro del parámetro debe optimizarse y cualquier restricción (límites inferior
y superior). Estos se especifican mediante una serie de listas, una entrada por parámetro.

A diferencia de la mayoría de las otras configuraciones, el orden de numberOfFitParameters La palabra clave en el


archivo de entrada es importante. Específicamente, esta configuración siempre debe ir antes que cualquier otra
configuración de la lista de parámetros en el archivo de entrada, ya que reinicializa automáticamente todas estas otras
configuraciones de parámetros en matrices de la longitud especificada y con los valores predeterminados del sistema.
Esto es para asegurar que todas las listas de parámetros tengan la longitud correcta. Los ajustes de la lista de
parámetros (todos tienen una longitud de number- OfFitParameters ) están: fitParameterNames , fitLogParameters , fitAdjustableParameters
, fitPa- rameterValues , fitLowerParameterValues , y fitUpperParameterValues .
Montaje y simulaciones 149

archivos de 'entrada'

cálculoTipo
ajustar archivo de datos fitMethod
archivo de datos numberOfFitParameters
dataSeparators fitParameterNames
dependienteVariableColumnaObs fitParameterValues
fitWeightingMethod fitAdjustableParameters
pesoColumna fitLogParameters
blockRangeColumn un pase
mainLoopColumn updateFitParameters
rewriteInputFile

logVariableIn actualizar etiquetas parámetros

transformar
datos en actualizar

parámetros

'nlls', 'newuoa' o 'bobyqa'


iteración principal fitConvergeCriterion
indep. círculo fitMaxStepSize Salida
variables PHREEQC fitMaxIteraciones
memoria
USER_PUNCH [fitFiniteDiffStepSize]
[fitnpt]
peso F obs [fitLowerParameterValues]
[fitUpperarameterValues]
gramo obs - gramo calc

salida seleccionada
derechos residuales de autor
dependienteVariableColumnaCalc logDepVariable wt (f obs - F calc)
F calc
transformar
salida de datos

archivo 'pts'

+ extraOut

'archivo de registro
archivo (s) de trazado mejor ajuste
archivo 'out'
customXcolumn R2
archivo 'pts' líneas (2y) RMSE
puntos (2y)

Figura 12.1. Flujo de datos e información durante el ajuste.

Los nombres de las etiquetas de parámetro están definidos por el fitParameterNames palabra clave en un archivo de entrada, un

nombre para cada parámetro. Una vez definidos, estos nombres se pueden utilizar como etiquetas en el Phreeqc archivo de

entrada (la etiqueta se genera encerrando el nombre entre paréntesis angulares). Estos nombres no deben usarse para otras

definiciones de etiquetas. Los valores asignados a estos parámetros se determinan mediante el procedimiento de ajuste en PhreePlot.

Los valores iniciales de cada uno de los parámetros están definidos por el fitParameterValues palabra
clave. ajuste- StepSize controla el mayor cambio permisible en un valor de parámetro durante una
iteración para el ' nlls 'algoritmo. Se define RHOBEG, el radio inicial de la 'región de confianza' en el ' newuoa ' y ' bobyqa
'algoritmos. En el ' lm ' y ' subplx 'métodos define el límite de paso inicial. Los valores de los parámetros son
fijos o ajustados automáticamente por PhreePlot para proporcionar el mejor ajuste posible. Esta opción
está controlada por el fitAdjustableParameters palabra clave.

12.4.4 Variables

Las variables pueden variar para cada observación dentro de un conjunto de datos determinado. La variable
dependiente es la variable que se calcula a partir del modelo o modelos y una combinación de los parámetros dados y
Guía de 150 PhreePlot

las variables independientes. Es la variable que se ajusta cuando se realiza la optimización. El ajuste
minimiza la suma ponderada de cuadrados de las diferencias entre los valores observados y
calculados de la variable dependiente. Se supone que la variable independiente contiene todos los
errores, tanto errores de observación como errores del modelo.

Solo puede haber una variable dependiente por línea de entrada en el archivo de datos más cualquier número de variables

independientes en la misma línea, lo que le da al archivo de entrada de ajuste un diseño tabular o de hoja de cálculo.

Las variables independientes son las variables que fija el usuario y controlan el valor de la variable
dependiente. Se supone que las variables independientes se conocen sin error. Es posible no tener
variables independientes como en un problema de "búsqueda de raíz" o cuando el modelo en sí
varía de una observación a otra.

12.4.5 Pasar los valores ajustados de Phreeqc a PhreePlot: preparar el archivo de entrada

Existen limitaciones en la estructura del Phreeqc archivo de entrada que se puede utilizar durante el ajuste. Esto
se relaciona particularmente con el uso de código de entrada de simulación múltiple y la forma en que se calcula
el valor de la variable dependiente.

Hay dos opciones de cálculo principales: una pasada a través del Phreeqc El código se hace para calcular
un solo valor de la variable dependiente, o todos los valores de la variable dependiente se calculan en una
sola pasada de simulación múltiple. No hay casa intermedia. Este último es computacionalmente más
rápido, pero el archivo de entrada es más complejo y menos flexible, ya que debe incluir una simulación
separada para generar cada valor de datos o debe incluir un Phreeqc palabra clave que genera una
secuencia de datos a través de sus propias iteraciones, p. ej. REACCIÓN y TRANSPORTE.

Por lo general, muchas iteraciones (o evaluaciones de funciones) se realizan a través de todo el conjunto de datos
durante el ajuste, por lo que el enfoque anterior hará ndata X niteraciones llamadas a Phreeqc mientras que el último
enfoque hará que niteraciones llamadas.

La diferencia entre estos dos enfoques se puede ver en la Yo asi ( Ejemplo 80) y Está encendido
( Ejemplo 81 ) ejemplos.

Una pasada para generar un valor de datos único

Cuándo un pase es FALSO durante ' simular ' o ' encajar ', solo se debe escribir un valor de datos en la salida
seleccionada a la vez. Esto puede deberse a que todo el archivo de entrada debe repetirse cada vez
para calcular un valor o porque se utiliza un bloque diferente de simulaciones para calcular cada
valor. Si hay más de una línea de datos de salida seleccionados, siempre se utiliza la última línea de
la salida seleccionada.

El SELECTED_OUTPUT bloque de palabras clave (opcionalmente más un USER_PUNCH bloque) debe generar al menos una
línea de datos en el archivo de salida seleccionado para cada cálculo (es decir, después de “cualquier 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 cada paso en la reacción por lotes o cada turno en los cálculos de transporte ”).

El PhreePlot palabra clave selectedOutputLines no se utiliza ya que solo se seleccionará una línea. El PRINT
-salida_seleccionada declaración (o similar en SELECTED_OUTPUT) se puede utilizar para controlar qué Phreeqc Las
simulaciones envían datos al archivo de salida seleccionado y, por lo tanto, la simulación envía realmente
la última línea de datos.

El dependienteVariableColumnaCalc La palabra clave controla la columna donde se encontrará la variable


dependiente.

El Phreeqc El código puede incluir varias simulaciones, por ejemplo, se pueden combinar diferentes tipos de
simulaciones en una sola optimización global, pero solo se puede usar una para generar el valor para cada punto
de datos. El bloque de simulaciones que se utilizará se establece por el valor o rango establecido en la columna
definida por el blockRangeColumn suministro de palabras clave un pase se establece en FALSO.
Esto significa que se pueden utilizar modelos completamente diferentes para generar los diversos valores de la variable
dependiente para cada punto de datos.
Montaje y simulaciones 151

Una pasada para generar todos los valores de datos

Cuándo un pase es CIERTO, Se espera que todos los valores de datos se escriban en el archivo de salida seleccionado en
una sola pasada a través del bloque designado de Phreeqc código. Si hay más líneas de datos de las necesarias para
emparejar con el número de observaciones en el archivo de datos de ajuste ( norte), entonces el ultimo norte
Se seleccionarán las líneas de salida seleccionada.

Depende de usted asegurarse de que USER_PUNCH el código realmente produce la salida requerida. La
opción 'una pasada' se usa con mayor frecuencia para REACCIÓN, CINÉTICA, ADVECCIÓN y TRANSPORTE
cálculos donde Phreeqc tiene sus propios iteradores integrados. Aquí una sola llamada a USER_PUNCH
transfiere todos los valores de salida requeridos. Alternativamente, se puede ejecutar un conjunto completo de simulaciones

diferentes en una llamada para Phreeqc lo que también dará como resultado un bloque de varias líneas de salida seleccionada

que contiene todos los valores de variables dependientes requeridos. Este enfoque utiliza el bucle principal
configuración para seleccionar más que la última simulación para iterar.

Desde el un pase CIERTO opción junto con la predeterminada oneSimulationAtATime interruptor de la


bucle principal palabra clave establecida en FALSO significa que se espera que todas las simulaciones del bucle
principal se produzcan en una sola llamada a Phreeqc, normalmente no se actualizan los valores de las etiquetas
entre simulaciones. Si es necesario pasar variables de una simulación a otra, utilice Phreeqc es propio
PONER / OBTENER mecanismo o configurar tanto el un pase y oneSimulationAtATime cambia a VERDADERO.
El PRINT -salida_seleccionada La declaración se puede utilizar para controlar qué Phreeqc Las simulaciones envían datos
al archivo de salida seleccionado y, por lo tanto, la simulación envía realmente las últimas líneas de datos.

En el caso de un ataque, el ' auto La opción que controla el número de líneas de salida seleccionadas se establece
en uno cuando un pase es FALSO y al número de puntos de datos cuando un pase es VERDADERO.

La salida seleccionada producida por un archivo de entrada dado se puede ver fácilmente configurando depurar a 2
- la salida se escribe en la pantalla y también se escribe en el archivo selected_1.0.out ( nombre
predeterminado) que se encontrará en el directorio de trabajo.

Omitir la salida seleccionada de Phreeqc no deseada

A USER_PUNCH El bloque puede llevar a que se envíen líneas de datos no deseadas al archivo de salida seleccionado y así
evitar la coincidencia 1: 1 entre la secuencia de observaciones en el archivo de datos de ajuste y los valores calculados en
el archivo de salida seleccionado.

El exceso de líneas de salida seleccionada se elimina automáticamente contando desde abajo hacia arriba, por lo que es
posible que algunas salidas de inicialización no importen. Sin embargo, a veces se producen datos no deseados en
medio de un archivo de salida y, por lo tanto, serían importantes.

A menudo es posible suprimir la salida no deseada apagando todas las salidas seleccionadas para una
simulación con el IMPRIMIR; -salida_seleccionada FALSO declaraciones o para simulaciones individuales mediante la
inclusión de una prueba al comienzo de un USER_PUNCH bloque seguido si es necesario por un salto sobre el
PUÑETAZO declaración. Por ejemplo, probar valores válidos de PASO_NO o SIM_NO puede evitar la inclusión de la
salida de los cálculos de la solución inicial.

Cuando esto no sea posible, por ejemplo, en TRANSPORTE cálculos con un pase ajustado a CIERTO, puede ser posible
modificar el archivo de datos de entrada que contiene las observaciones para que incluya valores ficticios
(marcadores de posición) para que coincidan con las líneas de salida no deseadas y luego incluir pesos de cero
para estas "observaciones" no deseadas. Entonces no afectarán el ajuste. La coincidencia 1: 1 de las líneas de
entrada y salida es un requisito previo para la adaptación PhreePlot.

Optimización global: modelos de conmutación

Cuando se va a realizar una optimización global sobre varios conjuntos de datos y modelos, entonces
debe haber una forma de cambiar el código (modelo) utilizado para dar los valores calculados en el
USER_PUNCH cuadra.

Esto se puede lograr de varias formas dependiendo del grado en que varíen los modelos.

(i) Usando un conjunto de variables independientes en el archivo de datos de ajuste


152 Guía PhreePlot

USER_PUNCH
- encabezado logc soluto
10 IF (STEP_NO > 0) THEN PUNCH log(TOT("<solute>")), "<solute>"

where the fit data file looks like this


observed weight solute
# Ca
- 5.00E+000 1 Ca
- 5.10E+000 1 Ca
- 5.00E+000 1 Ca
...

# SO4 - the blank line in the data file above breaks the line in a plot
- 5.20E+000 1 Mg
- 5.10E+000 1 Mg
- 4.98E+000 1 Mg
...
As each of the observed values is read from this data file, a tag is made of the other variables
(columns) in the file, namely < weight> and < solute>, and the values of these changed in par- allel to
correspond with each observation. The value of < solute> is then substituted in the
USER_PUNCH block above. This file could also define one or more numeric values to use, poten- tially
different for each observation.

The corresponding weight is not transmitted through its tag value but by naming the weight
column with the weightColumn keyword.

The ‘ SI (STEP_NO> 0) 'anterior es un medio de evitar enviar cualquier salida para los cálculos de la
solución inicial.
( ii) Usar explícitamente el número de simulación como un interruptor

Por ejemplo, usando la misma configuración de modelo pero optimizando diferentes partes de ella, por ejemplo,
diferentes elementos. La simulación 1 hace el cálculo para Ca y la simulación 2 lo hace para Mg.

USER_PUNCH
- simulación de soluto depvar de encabezado
10 SI (SIM_NO = 1) ENTONCES PUNCH log log (TOT ("Ca")), "Ca", SIM_NO ELSE PUNCH
(TOT ("Mg")), "Mg", SIM_NO
Las simulaciones pueden contener bloques de palabras clave tal como REACCIÓN o CINÉTICA que ellos mismos
que generan múltiples observaciones.

(iii) Dar una gama de simulaciones para usar en el ajustar archivo de datos

Si cada punto de datos requiere un modelo diferente (= conjunto de simulaciones) para calcular la variable dependiente,
estos se pueden especificar en una columna separada en el archivo de datos de ajuste.

observado peso sim


# Ca
- 5,00E + 000 1 1-2
- 5.10E + 000 1 3-4
- 5,00E + 000 1 5-8
...

# SO4 - línea en blanco sobre la línea de ruptura en el gráfico


- 5,20E + 000 1 13-14
- 5.10E + 000 1 25-26
- 4.98E + 000 1 16-17

El blockRangeColumn la palabra clave se define aquí como sim y el sim La columna define las simulaciones
que se utilizarán para cada observación. Estos no tienen que estar en orden ni contener el mismo número
de simulaciones. Son hasta cierto punto independientes pero heredarán Phreeqc datos
Montaje y simulaciones 153

estructuras de simulación a simulación de la forma habitual. Cada uno de estos minibloques de simulaciones puede
tener sus propias simulaciones de bucle principal y previo al bucle, según se define en una columna separada
especificada con el mainLoopColumn palabra clave.

12.4.6 Archivo de datos

The data file consists of the observations, one line per observation. It needs to be sorted in x-
column in order to make the plot that is automatically produced sensible (the fitted values are
plotted as a continuous line).

The data separator needs to be specified to match that found in the data file (see ‘ Organise
your data’ ).
Each line in the data file contains: values for each of the independent variables (if present) and the
single value of the dependent variable (if present). The first line contains a list of headers, one per
column variable. The header names are automatically converted to tags so must adhere to the tag
naming convention, i.e. they must not contain operators (+-*/^) and will be case sensitive. If the
dependent variable is not present, then only simulated values can be cal- culated.

Todo lo que siga a un signo de número (es decir, el símbolo de almohadilla o almohadilla, #) se trata como un
comentario y se ignora. Una o más líneas en blanco indican una ruptura en el conjunto de datos. El descanso se conserva
en el ' afuera 'y produce una ruptura en los gráficos de línea.

El archivo de datos también puede contener columnas que contengan datos alfanuméricos (columnas descriptivas).
Estos también producen etiquetas que se pueden utilizar para sustituir cadenas de caracteres en los archivos de entrada.
El tipo de columna (numérica o de caracteres) se determina analizando la primera fila válida de datos. Si es necesario,
reorganice el orden de las filas para asegurarse de que se indica el tipo de columna correcto en la fila 1 de los datos.

Si el texto descriptivo contiene espacios, incruste entre comillas. Sólo se transfieren los primeros 20
caracteres, 18 si el texto contiene espacios incrustados y es necesario utilizar comillas.

Si el blockRangeColumn se ha establecido en un número entero positivo o en un nombre de columna válido,


entonces se supone que esta columna (contando desde la izquierda) contiene el Phreeqc número de simulación
(o rango de simulaciones) que se utilizará para calcular la variable dependiente para esta línea de datos. El valor
predeterminado de blockRangeColumn es 0 ( indefinido), en cuyo caso se supone que cada observación utiliza
todas las simulaciones. Del mismo modo, el mainLoopColumn si se define, contiene la posición del comienzo de
las simulaciones del bucle principal dentro del bloque de simulaciones que se utiliza para una observación. Si mainLoopColumn
no está definido, bucle principal predeterminado en el bucle principal
configuración en los archivos de entrada. No definir un blockRangeColumn y un mainLoopColumn puede
funcionar, pero puede repetir cálculos innecesarios.

Por ejemplo, digamos que el ajuste requiere tres simulaciones, las dos primeras simulaciones para definir datos
estáticos como la base de datos y la tercera para calcular y generar la variable dependiente para cada
observación. Esta tercera simulación también contiene las etiquetas < PT> y < CaT>, que definen los valores de las
dos variables independientes.

Entonces, el archivo de datos de las dos primeras observaciones se verá así:


... PT Gato sim_num bucle principal
... 6.3e-4 1e-2 1-3 3
... 6.6e-4 2e-2 3 1

El blockRangeColumn se establece en ' sim_num ' y el mainLoopColumn se establece en ' bucle principal '.

La primera observación se define mediante tres simulaciones (1-3) y el bucle principal comienza en la tercera simulación
de este bloque, es decir, la simulación 3. Por lo tanto, las simulaciones 1-2 deben ser simulaciones previas al bucle.

La segunda observación se define mediante una sola simulación, la simulación 3, y el bucle principal comienza en
la primera simulación de este bloque, es decir, la simulación 3.

La secuencia de simulaciones ejecutadas es, por tanto, la siguiente:

(I) pre-loop 1: ejecutar la simulación 1, actualizar etiquetas


154 Guía PhreePlot

(ii) pre-loop 2: ejecutar la simulación 2, actualizar etiquetas

(iii) bucle principal: ejecutar la simulación 3 para la observación 1, actualizar las etiquetas

bucle principal: ejecutar la simulación 3 para la observación 2, actualizar las etiquetas

[repetir (iii) arriba] hasta

... bucle principal: ejecute la simulación 3 para la última observación, actualice las etiquetas

En iteraciones posteriores, la secuencia comienza en (iii) arriba.

Si algun Phreeqc el código debe repetirse solo una vez en cada iteración del conjunto de datos, luego incluirlo en
el ciclo principal de la primera observación, no como una simulación previa al ciclo de esta observación.

El archivo de datos también se puede utilizar en modo de simulación ( método de cálculo = simular) que tiene una
configuración similar a la de ' encajar 'pero no compara los valores observados y calculados y no hace ningún' ajuste
'. Sin embargo, no es necesario definir ninguna variable dependiente. Se envía un resumen de la salida
seleccionada al ' afuera ' expediente. Simplemente cambiando el método de cálculo desde ' encajar ' para ' simular 'producirá
un archivo de salida con los resultados de todas las observaciones utilizando los valores de los parámetros
iniciales. Esto puede resultar útil para comprobar rápidamente qué tan razonables son las estimaciones iniciales.

El archivo de registro contiene la desviación estándar y media de los datos numéricos en el archivo de datos de entrada.
También contiene la suma de las desviaciones estándar relativas de cada una de las columnas. Esta cifra se puede utilizar
como una "suma de comprobación" burda para indicar si dos archivos de datos son iguales o no.

El número de observaciones (líneas de datos) en el archivo de datos ( norte) corrige el número de líneas que se leerán del ' afuera
'archivo: si un pase es CIERTO, entonces el ultimo norte se leerán líneas (independientemente de la
selectedOutputLines configuración). Si un pase es FALSO, entonces solo se leerá la última línea
del ' afuera ' expediente. Estas dos opciones se demuestran en la demo \ kineticsSi \ kineticsSifit.ppi
y demo \ kineticsSi \ kineticsSifit1.ppi ejemplos, respectivamente. La última opción se utiliza para ajustar modelos
cinéticos cuando las observaciones se realizan a intervalos de tiempo irregulares.

12,5 toneladas ÉL RUTINAS DE OPTIMIZACIÓN

12.5.1 Elección del algoritmo de ajuste

Siempre que se puedan dar estimaciones iniciales razonablemente buenas de los parámetros ajustables, entonces el ' nlls Es
probable que el algoritmo sea el más rápido de los algoritmos disponibles. Este algoritmo fue desarrollado
especialmente para minimizar las funciones no lineales que involucran sumas de cuadrados y se destaca por su
capacidad para localizar rápidamente una solución cuando está cerca de ella. Sin embargo, tiene la desventaja de que
puede confundirse con los mínimos locales y, por lo tanto, debe iniciarse desde diferentes posiciones de partida para
garantizar que la solución dada sea la solución global. Su comportamiento está controlado por un número bastante
pequeño, pero no demasiado oscuro, de configuraciones.

Si el ' nlls 'el algoritmo no logra converger debido a estimaciones deficientes de los parámetros iniciales o
debido a su tendencia a desviarse hacia un territorio indeseable (por ejemplo, concentraciones negativas),
entonces vale la pena probar el' bobyqa ' o ' subplx 'algoritmos. Estos algoritmos fueron diseñados para
problemas de optimización a gran escala con cientos de parámetros ajustables ('variables'). También
tienen una aplicación más general que los optimizadores de mínimos cuadrados especializados como ' nlls 'y
debería ser más eficiente que el' nlls 'algoritmo cuando el enfoque de Gauss-Newton funciona menos bien.
Esto tiende a ser cierto para problemas residuales grandes con términos no lineales en la suma de
cuadrados.

En el presente, ' bobyqa 'es el único de los algoritmos que puede aplicar restricciones a los valores ajustables de los
parámetros, en este caso, restricciones de caja simples.

La comparación de los diferentes algoritmos sobre el mismo problema puede proporcionar una idea de la
calidad de las estimaciones de los parámetros y los algoritmos de ajuste. Idealmente, todos deberían converger
en el mismo conjunto de valores de parámetros. Sin embargo, las comparaciones rara vez son sencillas ya que
los criterios de convergencia difieren en cierta medida. No obstante, las pruebas de tiempo simples se
Montaje y simulaciones 155

Vide información sobre las principales diferencias.

Es posible aplicar varios enfoques al mismo conjunto de datos agregando la lista de rutinas deseadas al ' fitMethod
configuración. Si está configurado para hacerlo, cada método producirá su propio archivo de seguimiento y
trazado.

12.5.2 Escalado de parámetros

Estos algoritmos de optimización tienen que estimar pasos sucesivos en un espacio multidimensional para
reducir al mínimo el valor de la función objetivo. Esto requiere el cálculo de distancias entre puntos. La
estimación de derivadas también puede implicar un cambio fijo en los valores de los parámetros (' nlls '). Por lo
tanto, puede ser necesario escalar los parámetros ajustables para garantizar que las magnitudes de los cambios
esperados sean similares. Idealmente, los valores de los parámetros deberían estar todos cerca de uno. El
cambio de escala podría realizarse mediante un cambio en las unidades, por ejemplo, o cuando sea apropiado,
tomando registros (ver fitLogParameters ). Aparte de la opción de tomar registros, esta escala debe realizarse
fuera de PhreePlot.

12.5.3 Optimización restringida

El ' bobyqa ' fitMethod permite poner límites superior e inferior simples en los valores de los parámetros
usando el fitLowerParameterValues y fitUpperParameterValues palabras clave.

Las restricciones implícitas también se pueden imponer indirectamente, por ejemplo, ajustando el logaritmo del valor del
parámetro. Esto limitará el valor del parámetro a valores positivos.

12.5.4 Parámetros de control

Los detalles de los algoritmos y sus parámetros de control subyacentes se pueden encontrar en la
biblioteca y la documentación en línea de las rutinas (' nlls ',' lm ',' newuoa ',' bobyqa ' y ' subplx '). La mayoría de
los parámetros críticos de control se han traducido en PhreePlot configuraciones de modo que se pueda
lograr un alto grado de control sobre el comportamiento de cada algoritmo desde dentro PhreePlot
(Tabla 12.1). En particular, el significado del criterio de convergencia varía (a veces se refiere a un
cambio en la suma de cuadrados residual, a veces al cambio en las estimaciones de los
parámetros).

Parameters that are to be fitted or made to be easily adjusted should be entered as parameters
with names (up to 30 characters) ( fitParameterNames ) and values ( fitParameterValues ). These
values are assumed to be either fixed values or initial estimates to be adjusted during fitting. This
distinction is set by the fitAdjustableParameters keyword ( 0= fixed; 1 = adjustable).

The log10 of the parameter value can also be easily fitted. Set the appropriate fitLogParame- ters keyword
value to 1 otherwise set it to 0. This can provide a useful form of scaling to bring very large or very
small numbers into the same order of magnitude as other parameters. It also is a simple way of
constraining a parameter to a positive value.

It is important that each of the above parameter lists should have the same length. This can be set with the numberOfFitParameters
palabra clave, pero también se puede permitir que se establezca automáticamente a partir de la longitud de cualquiera
de las listas anteriores a medida que se ingresan. Si está presente, el numberOfFitParameters La palabra clave debe
preceder a todas las listas de parámetros en el archivo de entrada.

Tamaño de paso de diferencia finita (solo 'nlls')

Esto controla el tamaño de paso de cada valor de parámetro utilizado en la estimación de derivadas parciales por
diferencias finitas numéricamente. El valor del tamaño del paso debe ser lo suficientemente grande para lograr
un cambio significativo en la función objetivo y al mismo tiempo ser lo suficientemente pequeño para dar
derivadas con suficiente precisión. La exactitud de la elección se puede ver mejor en las primeras iteraciones
donde cada uno de los parámetros ajustables se ajusta uno por uno por el tamaño de paso especificado. Esto
debería producir un cambio significativo en la función objetivo para al menos algunos de los parámetros
(preferiblemente todos). Si no es así, aumente el tamaño del paso en un orden de magnitud. Por defecto 1e-
6. Cuando se utilizan métodos aproximados (numéricos) para generar la variable dependiente
156 Guía PhreePlot

Cuadro 12.1. Traducción de la configuración de PhreePlot en los parámetros de control para tres de los algoritmos de optimización

PhreePlot palabra clave y acción Algoritmo ()

' nlls ' ' newuoa ' ' bobyqa '


fitFiniteDiffStepSize DSTEP = fitFiniteDiffStepSize

Controla la diferencia utilizada en la Los valores pequeños significarán menos posibilidades


estimación de derivadas parciales. de desviarse demasiado en el primer paso y mejores
no utilizado
Se utiliza para el cambio exploratorio estimaciones de las derivadas, pero si son demasiado
inicial en todas las variables. pequeños, es posible que no haya un cambio significativo en
WRSS dado el ruido de fondo. Elija
juiciosamente.
fitConvergenceCriterion ACC = fitConvergenceCriterion ^ 2 RHOEND = fitConvergenceCriterion

Controla la función objetivo. Converge cuando se utiliza el valor previsto y cuando se detiene. Menor
El radio final de la es <de
'región
WRSS por encima
confianza'
ACC de la el
determina
verdadera precisión mínima o final en las estimaciones de los parámetros. valores significan más iteraciones y cuando hay poco
cambio predicho en También RHOEND <= RHOBEG
convergencia más precisa. parámetros. WRSS es una suma que depende del
número de puntos de datos.
fitStepSize DMAX = fitStepSize RHOBEG = fitStepSize

Controla el tamaño del paso inicial 'Distancia' máxima de la estimación inicial Radio inicial de la 'región de confianza'. Esta con-
y / o el tamaño máximo de paso. de la solución (sin escala). Además, los controles controlan la 'granularidad' de la función objetivo.
Los valores más pequeños significan más itera- tamaño mínimo del parámetro Marquadt que verá el algoritmo. ciones pero menos
posibilidades de desviarse = fitConvergenceCriterion / ajuste- Diámetro de la 'región de confianza' ( 2 * RHOBEG)
en territorio no deseado. Numero de pie. también debe ser más pequeño que cada uno de los rangos
de límites (ver más abajo)
fitMaxIteraciones MAXFUN = fitMaxIterations MAXFUN = fitMaxIterations

Controla el número máximo de iteraciones


permitidas. Normalmente desea un valor
elevado para evitar una terminación
anticipada.
fitLowerParameterValues XL (:) = fitLowerParame-
terValues
fitUpperParameterValues XU (:) = fitUpperParame-
terValues
También:)- XL (:) = <2 * ajuste-
Restricciones de aceptable no utilizado no utilizado XU (
valores paramétricos. Numero de pie

Límites inferior y superior en


estimaciones de parámetros
fitAdjustableParameters Contar 1 da el número de ajustes. En cuanto a ' nlls ' pero norte también se utiliza para determinar
parámetros ble, NORTE. El parámetro, NPT, cuando no ha sido
Proporciona una forma sencilla de incluir definido explícitamente, ver más abajo.
ing / excluyendo parámetros del modelo
de la optimización.
encajar si encaja es INDEFINIDO entonces
si (N <6) entonces
Controla el número de condiciones NPT = (N + 2) * (N + 1) / 2
no utilizado
demás
de interpolación. Cuanto más
NPT = 2 * N + 1.
grande, mejor, pero más lento.

valores, como en Phreeqc, inevitablemente habrá algo de ruido en los valores generados y, por lo tanto, un valor
mayor puede ser apropiado para asegurar derivadas suficientemente precisas.

Criterio de convergencia

El significado de esto varía con el método de optimización. Lea la documentación original para obtener
orientación. En todos los casos, este parámetro determina cuándo detener las iteraciones y aceptar (o no)
un ajuste. Un valor pequeño tenderá a incrementar la precisión del ajuste, aunque con más iteraciones,
pero habrá un límite cuando los otros procedimientos numéricos (tanto en el cálculo de derivadas
parciales como en Phreeqc) limitará la precisión que se puede obtener. El valor predeterminado es 1e-6.
Montaje y simulaciones 157

Numero de pie

Esto generalmente controla el tamaño del paso inicial para cada parámetro y para ' nlls 'es el tamaño máximo de
cualquier escalón. Un valor grande (digamos 100) permitirá buscar un área grande, pero puede hacer que el
enfoque se desvíe de la mejor solución e incluso conducir Phreeqc fallar debido a parámetros poco realistas.

Con el NEWUOA y BOBYQA métodos, el tamaño del paso establece el tamaño inicial (radio) de la región de confianza y es un
parámetro importante. Un valor pequeño limitará el área de búsqueda para que esté cerca de las estimaciones de los
parámetros originales, lo cual está bien siempre que las estimaciones iniciales fueran buenas, pero de lo contrario,
puede dar lugar a resultados engañosos. Un valor grande puede conducir a estimaciones de parámetros físicamente
poco realistas durante el ajuste y, por lo tanto, a problemas en Phreeqc convergencia. El valor predeterminado es 1.0.

Iteraciones máximas

El número máximo de evaluaciones de funciones. Si no se ha logrado la convergencia en el momento en


que se haya alcanzado este límite, PhreePlot saldrá de la optimización con gracia y seguirá adelante.

Si se establece en 1, forzará una salida inmediata de la rutina de optimización, pero dará una
indicación de la exactitud de las estimaciones iniciales. El valor predeterminado es 5000. Algunos de
los métodos realizan evaluaciones de funciones adicionales para estimar las derivadas en el
jacobiano.

Método de ponderación

fitWeightingMethod determina cómo se calcula la función objetivo a partir de los residuos. Los
residuos se multiplican por ponderaciones, una para cada observación. Ver la definición del fit-
WeightingMethod para más detalles.

Tiene las siguientes opciones:

0 error absoluto: todos los pesos = 1.

1 error relativo: pesos = abs (1 / valor ajustado) si el valor ajustado no es igual a 0, de lo contrario
es abs (1 / valor observado).

2 del archivo de datos de entrada: pesos en la columna dados por pesoColumna .

Los pesos deben estar relacionados con la calidad de cada observación en términos del tamaño del
error de observación. Los pesos se dan normalmente por la inversa de la desviación estándar de
cada observación o algo proporcional a esa
w yo = 1• I

donde la función objetivo a minimizar viene dada por

2
minimizar • • w I•F obs•i F-calc i • ••

12,6 P REPARACIÓN DE UN ARCHIVO DE ENTRADA

12.6.1 Ejemplo simple

El siguiente es un ejemplo simple basado en el iso.ppi archivo encontrado en el \ demo \ fit directorio. Este
ejemplo ajusta una isoterma de Langmuir a los datos de sorción de Zn por Hfo a pH constante (pH
5.5). El iso.dat El archivo de datos se ve así:

Znsorbed Znconcn pHobs wt sim #


0,75 0,030 5.5 11
1,40 0.069 5.5 21
1,95 0,118 5.5 21
2.51 0,166 5.5 21
158 Guía PhreePlot

3,03 0,217 5.5 51


3,53 0,270 5.5 51
4.02 0.325 5.5 51
4.41 0.388 5.5 51
4,79 0.453 5.5 21
5.22 0.512 5.5 11

donde las unidades son mmol Zn / mol Fe para Znsorbed, mmol Zn / L para Znconcn y pHobs es
adimensional. wt es el peso relativo asignado a cada observación y sim # es el Phreeqc
número de simulación. La simulación 1 se utiliza para todos los cálculos, por lo que todos los números de simulación se
han establecido en 1.

El Phreeqc la parte del archivo de entrada es

ETAPAS
Fix_H +
H+=H+
log_k 0.0
SURFACE_MASTER_SPECIES
Surf surf
SURFACE_SPECIES
Surf = Surf
log_k 0.0
SELECTED_OUTPUT
- high_precision verdadero
- restablecer falso
USER_PUNCH
# se ajusta a la isoterma de Langmuir
- encabezados sorbZn pH mmolZn & step_no 10
sorbedZn = SURF ("Zn", "Surf")
20 punch sorbedZn, -la ("H +"), tot ("Zn") * 1e3, step_no SOLUCIÓN 1

- unidades mmol / L
- pH <pH>
Na 1000
N (5) 1000
Zn <Znconcn> # nombre de etiqueta del archivo de datos iso.dat
EQUILIBRIUM_PHASES
Fix_H + - <pHobs> NaOH 10
SUPERFICIE_ESPECIES
Surf + Zn + 2 = SurfZn + 2 log_K
<log_k>
SUPERFICIE
Navegar <M1>
- equil 1
- no_edl
FINAL

12.6.2 Actualización automática de los valores de los parámetros en un archivo de entrada

Si el updateFitParameters el interruptor se ha establecido en CIERTO y si el ajuste ha sido exitoso, los valores de los
parámetros recién ajustados reemplazarán a los existentes en el archivo de entrada. Una copia de seguridad del archivo
de entrada original (***. bak. ***) se realiza si aún no existe un archivo de copia de seguridad con el mismo nombre.

12,7 yo INTERRUMPIR O DETENER EL ACCESORIO

El ' Esc 'interrumpirá el ajuste una vez que se hayan terminado todos los cálculos para la iteración actual. A
continuación, se le ofrece la opción de continuar o detenerse. Si se detiene y se espera un gráfico, este se
producirá utilizando el mejor conjunto de valores ajustados en el momento de la interrupción.

12,8 F ORCANDO RELACIONES ENTRE LOS VALORES DE LOS PARÁMETROS

Es posible forzar las relaciones entre los valores de los parámetros utilizando el numericTags palabra clave para
definir las relaciones deseadas y luego sustituir las etiquetas correspondientes en el archivo de entrada en
Montaje y simulaciones 159

de la manera normal.

Por ejemplo, digamos que hay cuatro parámetros y se hace referencia a ellos en el archivo de
entrada por sus correspondientes nombres de etiqueta: < p1>, <p2>, <p3> y < p4>. Si quieres forzar p4 = p1 luego
reduzca el número de parámetros de 4 a 3 ( p1, p2, p3) y agregue < p4> = <p1> en el numer- icTags cuadra.
< p4> debe dejarse sin cambios en el resto del archivo de entrada. Su valor se actualizará en función
de la numericTags expresión en cada iteración.

Otras relaciones más complejas pueden especificarse de manera similar.

Tenga en cuenta que es importante no para incluir el parámetro redefinido (< p4> arriba) en el conjunto de parámetros de
ajuste, ya que el optimizador espera tener un control total sobre todos los valores de los parámetros y no espera que
sean cambiados por un procedimiento externo. < p4> ahora es una variable de etiqueta en lugar de un parámetro de
ajuste. No hay conexión entre las variables de etiqueta y los parámetros de ajuste durante la optimización.

12,9 M MONTAJE ULTI-OBJETIVO

Es posible ajustar parámetros a varios modelos diferentes al mismo tiempo. Estos modelos pueden compartir
algunos parámetros comunes o no. El principio es el mismo que antes: cada observación debe tomar una línea
de datos en el archivo de datos de ajuste y producir un resultado con la entrada y la salida coincidentes línea por
línea. El archivo de datos debe tener una estructura similar a una hoja de cálculo y cada variable debe tener una
columna separada. Cuando las variables varían entre los modelos, habrá filas que contengan columnas sin datos.
Es más fácil configurar estos archivos en una hoja de cálculo y exportarlos como un archivo delimitado por
tabulaciones. Luego lea los datos en PhreePlot con " fn.dat ”\ t para indicar su formato delimitado por tabulaciones.
Las pestañas adyacentes servirán como marcadores de posición para columnas en blanco y no se fusionarán.

En principio, cada línea de datos se puede derivar de un modelo diferente, ya que es posible especificar el rango
o bloque de simulaciones a usar para cada observación en el archivo de datos de ajuste usando el
blockRangeColumn . Con mayor frecuencia, los grupos de observaciones utilizan un conjunto común de simulaciones. Los
pesos también deben especificarse en el pesoColumna con fitWeightingMethod establecido en 2. Alternativamente, la
opción de error relativo ( fitWeightingMethod 1) puede ser adecuado. Existe el problema de mezclar 'manzanas y
naranjas' aquí, por lo que la ponderación es fundamental. Tenga cuidado con la interpretación excesiva de las
estadísticas resumidas, como los errores estándar.

El \ demo \ fit \ multiobjective.ppi file da un ejemplo de cómo ajustar dos conjuntos de datos bastante distintos
(demostrados individualmente en otro lugar) al mismo tiempo y demuestra cómo configurar los archivos de
entrada y los datos de ajuste.

12.10O ARCHIVOS UTPUT

Aparte de los archivos de registro y trazado, los archivos útiles producidos durante el ajuste y las simulaciones
son los ' afuera 'archivo y el' ptos ' expediente. El ' trk 'archivo guardará una copia del monitoreo de convergencia
durante el ajuste y se puede usar para preparar un gráfico de esto usando el' extraout 'palabra clave para leer en
estos *. trk archivos.

El ' afuera 'archivo contiene una copia de la salida seleccionada, un registro por observación. Durante el ajuste, esto
normalmente contiene solo un bloque de resultados que contiene un registro por observación: los resultados de la
última iteración (que no es necesariamente la iteración que mejor se ajusta). Las simulaciones siempre contienen solo un
bloque de resultados ya que no hay iteración. Se pueden hacer ajustes para almacenar los resultados de todas las
iteraciones cambiando el separador de datos de rebobinado por el ' afuera 'archivo a nulo (' ') en lugar del predeterminado'
\ r '. Esto evita el rebobinado antes de escribir los resultados y también introduce una línea en blanco después de cada
bloque de resultados. Este comportamiento está controlado por el quinto parámetro de la dataSeparators palabra clave.

El ' ptos 'contiene una lista completa de resultados para cada observación que incluye tanto los datos de entrada,
los residuales ajustados, observados y ponderados como los resultados de la salida seleccionada, todo de la
iteración de mejor ajuste. Este es el archivo que se usa normalmente para trazar.
160 Guía PhreePlot

12.11R ESPONSE EN CASO DE FALTA DE PAG HREEQC PARA CONVERGIRSE

La respuesta si Phreeqc debe fallar en converger durante el ajuste depende de la depurar configuración.
Si depurar es 0 o menos, el punto infractor se elimina de la entrada y el ajuste se reinicia sin él.
Cuando esto sucede, un '?' se agrega al número de iteraciones en el
pp.log archivo para indicar que esto ha sucedido.

Si depurar es mayor que cero, entonces PhreePlot se detendrá si Phreeqc falla. Se envía una lista de los puntos infractores al

archivo de registro. Esto proporciona los números de línea física de los puntos infractores que se encuentran en el archivo de

datos de ajuste (contando la línea del encabezado).

12.12P LOTEAR LOS RESULTADOS DEL FITTING

12.12.1 Parcelas de resultados observados y calculados

El ' ptos 'es el archivo de datos de trazado principal para el ajuste y las simulaciones, aunque se pueden agregar otros archivos
utilizando el extradat palabra clave.

El ' ptos El archivo contiene datos de tres fuentes: (i) el ajuste (5 columnas: número de fila, observado,
calculado, residual, residual ponderado); (ii) todas las variables leídas del archivo de datos; y (iii)
todas las columnas de la salida seleccionada con valores del "mejor" ajuste.

A menudo es útil una gráfica de los puntos observados (como puntos) y los valores ajustados (como una línea
continua). Las líneas y puntos que se trazan están controlados por el líneas y puntos palabras clave,
respectivamente. Los gráficos de 'líneas' solo tienen sentido cuando los puntos son contiguos.

El customXcolumn La configuración también es importante, ya que corrige la variable x.

La salida acumulada de la salida seleccionada se almacena en el ' afuera 'archivo si está presente - esto se produce para depurar
> 0. Si el quinto separador de datos es "\ r ”, El archivo se rebobina al comienzo de cada conjunto de evaluaciones de
función, por lo que solo se encontrará el último conjunto en el archivo (no necesariamente para el" mejor "ajuste, ya que
esto puede haber ocurrido en una iteración anterior). Cualquier otro carácter significa que no hay retroceso y, por lo
tanto, todos los resultados de salida seleccionados se acumularán en el archivo.

El ' trk ', si se solicita, contiene una copia de los resultados del monitoreo de nlls.

El uso de la etiquetas y post / postSize Las palabras clave pueden ser útiles para hacer una clave y para 'publicar' valores
al lado de cada punto individual. Esta publicación puede resultar útil para identificar valores atípicos.

Se puede agregar texto adicional con texto o extraText y datos adicionales de otros archivos con
extradat . Después de un ajuste exitoso, se completan tres etiquetas especiales del sistema. Estos son < R2>, <RMSE>
y < nFit> que contienen la R 2, RMSE y número de puntos de datos. Estas etiquetas se pueden utilizar para
anotar el gráfico utilizando el extraText Acercarse.

En la Figura se muestra un ejemplo de un gráfico de ajuste con algunas de las palabras clave más utilizadas.
12.2. Desde el ' ptos 'contiene datos observados y ajustados, proporciona una fuente útil de datos para
trazar. Las observaciones a menudo se trazan con puntos y los valores calculados con líneas.

Cuando la variable dependiente depende de más de una variable independiente, puede ser difícil elegir una
gráfica adecuada. En estos casos, puede resultar útil un gráfico de valores calculados o residuales frente a
valores observados.

12.12.2 Gráfica de contorno de la suma de cuadrados residual

Puede ser útil ver cómo varía la suma de cuadrados residual con los cambios en el valor de los parámetros del
modelo. Una gráfica de contorno puede mostrar la variación de la suma residual de cuadrados frente a dos
parámetros del modelo y puede ayudarlo a comprender los problemas de convergencia.

Para un gráfico de suma de cuadrados residual, los datos se leen como normales para el ajuste y se comparan con los
valores calculados del modelo para calcular la superficie de suma de cuadrados residual ponderada (WRSS).

El gráfico muestra cómo varía el WRSS con la variación de dos variables seleccionadas por el usuario, más
útilmente dos parámetros del modelo. La variación es impulsada por los parámetros normales de los ejes X e Y
xmin , xmax , ymin , ymax y resolución . Estos generan cambios de la < x_axis> y
Montaje y simulaciones 161

plotTitle
plotTitleSize
plotFactor
plotTitleColor

fuente

(1eAsv.dat)
Reajuste de los datos de sorción de As (V) para Hfo

del archivo de datos de ajuste

pymax 100 EA 1 legendTextSize


EA 2
pymajor EA 3 observaciones
EA 4
80 EA 5
EA 6
EA 1
EA 2
yaxisLength

60 EA 3 valores ajustados
% Unido
EA 4
EA 5
EA 6
40 colores definidos por
useLineColorDictionary
ytitle

20 líneas
grosor de línea del archivo pts
pxminor
puntos
pointSize
pymin 0
2 4 6 8 10 12
pxmin pH pxmajor pxmax
pxdec
xtitle
axisTitleSize
customXcolumn axisTitleColor

xaxisLength

Figura 12.2. Algunas de las palabras clave utilizadas para controlar la apariencia de las gráficas de ajuste.

<y_axis> etiquetas
que luego deben usarse en el archivo de entrada para variar la salida del
modelo, nuevamente lo más útil es cambiar el fitParameterValues . El contourZvariable debe
establecerse en ' rss ',' log10 (rss) ',' wrss ',' log10 (wrss) 'dependiendo de si los residuos tienen pesos
unitarios o no y si (W) RSS debe registrarse o no.
El número de veces que se ejecuta la química de entrada es nres x nres x número de puntos de datos
desde el rss se calcula en cada uno de los puntos de la cuadrícula.

El ejemplo de demostración \ encajar \ contour_rss.ppi muestra cómo la gráfica de suma de cuadrados residual (RSS)
para el iso.ppi El ejemplo de ajuste de isoterma varía con los dos parámetros del modelo, log_k y M1.
Aquí, el RSS se ha registrado antes de trazar. La trama se invoca estableciendo cálculoTipo
162 Guía PhreePlot

30 log10(rss)

< 0.343

25 0.343 - 0.753

0.753 - 1.03

20 1.03 - 1.24

1.24 - 1.41

M1
15 1.41 - 1.54

1.54 - 1.65

1.65 - 1.75
10
1.75 - 1.84

1.84 - 1.93
5
1.93 - 2.00

2.00 - 2.08
0
3.0 3.5 4.0 4.5 5.0 2.08 - 2.30

log_k 2.30 - 2.55

2.55 - 2.79

2.79 - 3.01

3.01 - 3.24

> 3.24

Figure 12.3. Variation of the weighted residual sum of squares versus the values of
the two model parameters for the isotherm fitting example, \ demo\fit\iso.ppi. The plot
was generated with the file \ demo\fit\contour_rss.ppi.

para ' encajar ' y fitMethod para ' contorno '. Los resultados se muestran en la Figura 12.3.

La gráfica muestra un valle profundo con forma de plátano donde se encuentra la combinación
óptima de parámetros. El mínimo se encuentra en log_k = 3.9954 y M1 = 9.9011. El valle largo refleja la
correlación relativamente alta ( r = 0,987) entre los dos parámetros y muestra la dificultad que tiene la
rutina de ajuste para encontrar la combinación óptima de parámetros.

Los datos generados para la trama se escriben en el archivo de seguimiento, contour_rss.trk, en el directorio
actual en formato de columna x, y y z.

12.13S IMULACIONES

Las simulaciones utilizan esencialmente la misma configuración que el ajuste, excepto que no hay observaciones
para comparar con los valores calculados y, por lo tanto, no se realiza ningún ajuste. Normalmente, las
simulaciones se utilizan después del ajuste para trazar una curva calculada. basado en los parámetros ajustados.
Esto se hace cambiando el calculationType from ‘ fit ’ to ‘ simulate ’. Values of the independent variables are still read in
from a data file and tags assigned, exactly as for fitting.

This mechanism provides a way of running a gvien piece of Phreeqc code for a disparate range of
samples read from a file. It is somewhat similar to the use of SOLUTION_SPREAD in Phreeqc
but has more flexibility in the way that the data are read in.

12.14R OOT FINDING – SOLVING EQUATIONS, ADDING CONSTRAINTS

You may want to estimate the value of one or more unknown parameters in a fully-defined
chemical model. Most chemical models are too complex to calculate the unknown values explicitly
and so the values have to be estimated numerically. When there are more data points than
adjustable parameters, the system is over-determined and ‘ fit ’ attempts to find the opti- mal
solution based on minimizing some kind of least squares objective function.

When the number of data points is the same as the number of unknown parameters or fewer,
Fitting and simulations 163

hay cero grados de libertad y el problema es entonces encontrar el conjunto único de valores de
parámetros que minimiza la función objetivo. Este es un problema de minimización con la condición de
que los valores "observados" sean todos efectivamente cero. Algunos métodos ( subplx, bobyqa, cobyla, newuoa) trabajar
felizmente sin esfuerzo adicional pero con otros métodos ( nlls, lm) Necesito algunas 'observaciones'.
Simplemente configure un archivo con valores observados de cero. La función objetivo entonces
se convierte en w I( 0-f (x, y)) ** 2 dónde f (x, y) y siempre que todos los valores de la función sean positivos,
el mínimo en esta superficie cuadrada será el mínimo de la función en sí.

También es sencillo contornear la función en dos dimensiones utilizando el tipo de cálculo


'contorno', consulte el \ demo \ contour \ trigp.ppi ejemplo.
For example, assume that we want to find the volume of acid required to reach a certain pH. We set
up the chemical model such that the volume of acid added is a variable and represented by some
tag, say < titre>. The selected output is arranged to contain the pH after adding this amount of acid.
The pH is the dependent variable. In this example, there is one dependent variable and no
independent variables.

Then we make a fit data file with a single data point which specifies the end point pH of inter- est.
‘fit’ then adjusts the single adjustable parameter, < titre>, so that the match between the input and
output pH is very close. The closeness is controlled by the normal convergence cri- teria.

SPECIATION
calculationType encajar
FIT
dataFile "fittitration.dat"
dependentVariableColumnObs pH deseado
dependentVariableColumnCalc pH
numberOfFitParameters 1
fitParameterNames "título"
fitParameterValues 0 # estimación inicial
fitAdjustableParameters 1
TRAMA
# apagar el plotFactor plotFactor
0.

QUÍMICA

SELECTED_OUTPUT
- restablecer falso
- pH verdadero

SOLUCION 1
pH 7.05
unidades mg / L
agua 0.050 kg # comenzar con 50 ml de agua Na
6
K 0,6
California 124
Mg 1,6
Cl 11
Alcalinidad 348 como HCO3 S
(6) 3 como SO4
Si 5.8

REACCIÓN 1 Agregue HCl 0.16M a la solución


# 1 ml de HCl HCl 0,16 M
0.16e-3
H2O 55.5e-3
<título>
FINAL

El archivo de datos de ajuste, fittitration.dat, simplemente se ve así:

pH deseado
4.5

Se necesita 1,761 ml de ácido. En este caso, solo hay una Phreeqc simulación involucrada y el valor predeterminado
es usar solo la primera simulación en el ajuste. Si estuvieron involucradas dos o más simulaciones,
164 Guía PhreePlot

entonces sería necesario agregar una columna al archivo de datos de ajuste con el rango de simulaciones a usar
(p. ej. "1-2") y poner blockRangeColumn para apuntar a esta columna.

Este ejemplo se puede encontrar en demo \ titration \ fittitration.ppi. Si bien este ejemplo en particular podría
resolverse bastante de cerca utilizando un método más directo Phreeqc enfoque, el principio es general y
se aplica a ejemplos más complejos donde tales enfoques directos no son posibles.

En principio, es posible extender este enfoque para buscar una solución con muchas incógnitas. La
configuración debe ser ligeramente diferente, ya que la función objetivo debe definirse en términos de
una única variable dependiente. Por lo tanto, esto debe definirse. Una medida conveniente para
minimizar es el RMSE (error cuadrático medio) que se puede formar a partir de las desviaciones de los
valores calculados de sus valores objetivo.

El siguiente fragmento de código usa Na 2 CO 3, NaCl y CuCl 2 para hacer 1 kg de una solución con un pH de
9, una molalidad de Na de 0.01 mol / kgw y un Cu libre 2+ actividad de 10- 10 ( pCu = 10), todo en el
presencia de CO 2 ( gramo). Las líneas básicas 10-30 calculan los tres residuos y la línea 40 forma la función
objetivo, el RMSE. Tenga en cuenta que no se necesita ningún archivo de datos; se supone en este caso especial
sin grados de libertad de que los valores 'observados' o objetivo sean todos cero.

Es posible que deba aplicar algunos límites a la solución (en el ejemplo siguiente, solo se permiten cantidades no
negativas) y escalar los diversos residuos para que todos participen en la solución. Los valores de los parámetros
cercanos a uno son los mejores. Los valores iniciales de los tres parámetros se han establecido cada uno en uno,
aunque tenga en cuenta que el e-3 que sigue a la entrada de Cu escala efectivamente este parámetro a 1000
veces menos que el valor ajustado.

También los valores inicial y final del radio de la región de 'confianza', Rhobeg ' y ' rhoend ', puede
necesitar un ajuste. ' Rhobeg ’ controls the initial shift in parameter values and ‘ rhoend ’ controls the ter-
mination.

...
calculationType fit
calculationMethod -1
Phreeqc.0.out t
fitmethod bobyqa
rhobeg 1e0
rhoend 1e-7
dependentVariableColumnCalc rmse
numberOfFitParameters 3
fitParameterNames mmolNa2CO3 mmolNaCl umolCu
fitAdjustableParameters 111
fitParameterValues 111
fitlowerparametervalues 000

CHEMISTRY

SOLUTION
EQUILIBRIUM_PHASES
CO2(g) - 3.5

SELECTED_OUTPUT
- reset false

USER_PUNCH
- headings rmse
10 r1 = -la("H+") - 9 # pH
20 r2 = TOT("Na") - 1e-2 30 r3 = # diss [Na]
la("Cu+2") + 10 # PCU 10
40 rmse = SQRT((r1^2 + r2^2 + r3^2)/3) 50 IF
(STEP_NO=1) THEN PUNCH rmse

REACTION
Na2CO3 <mmolNa2CO3>
NaCl <mmolNaCl>
CuCl2 <umolCu>e-3
1 mmol
END

The above example can obviously be generalised with the full array of functions built into
Phreeqc’s powerful Basic interpreter available for use. There is of course no guarantee of suc-
Montaje y simulaciones 165

ceso: es posible que el problema simplemente no se pueda resolver, en cuyo caso se debe encontrar la solución "más
cercana". Cuando tiene éxito, el RMSE final debe ser muy pequeño, digamos menos de 1e-8. Siempre revise el Phreeqc salida
para asegurarse de que el problema se haya resuelto según lo previsto.
166 Guía PhreePlot
El preprocesador de archivos de entrada 167

13 El preprocesador del archivo de entrada

13,1 U SE DEL PRE-PROCESADOR

Aunque el uso de etiquetas puede eliminar la necesidad de bloques repetitivos de texto en un archivo de entrada, esto
puede evitar los mecanismos de bucle internos más eficientes proporcionados por Phreeqc y, por lo tanto, podría ser
indeseable, especialmente cuando la velocidad es un problema. Esto ocurre más obviamente durante el montaje donde
el un pase CIERTO La opción es mucho más eficiente que la un pase FALSO opción.

Por ejemplo, considere el ejemplo de ajuste de prueba que se muestra a continuación. Esto es similar al demo
\ fit- preprocessor \ isopp.ppi ejemplo:

IMPRIMIR
- restablecer falso
SURFACE_MASTER_SPECIES
Surf surf
SURFACE_SPECIES
Surf = Surf
log_k 0

Surf + Zn + 2 = SurfZn + 2 log_k


<log_k> # de fitParameterNames

SELECTED_OUTPUT
- high_precision verdadero
- restablecer falso

USER_PUNCH
- títulos sorbZn pH molZn paso 10
sorbidoZn = SURF ("Zn", "Surf")
20 if (step_no = 0) THEN punch sorbedZn, -la ("H +"), tot ("Zn") * 1e3, step_no

SOLUTION_SPREAD
- unidades mmol / L
- pH <pH>

incluir 'isopp.dat'

SUPERFICIE
Navegar <M1> # de fitParameterNames
- no_edl
- equil 1
FINAL

SUPERFICIE
Navegar <M1>
- no_edl
- equil 2
FINAL

SUPERFICIE
Navegar <M1>
- no_edl
- equil 3
FINAL

...
SUPERFICIE
Navegar <M1>
- no_edl
- equil 10
FINAL

donde las diez observaciones se definen como una serie de SOLUCIONES 1-10 utilizando el SOLU-
168 Guía PhreePlot

TION_SPREAD bloque de datos de palabras clave. La superficie se equilibra a su vez con cada una de las
soluciones utilizando un bloque repetitivo de código que se parece a:

SUPERFICIE
Navegar <M1>
- no_edl
- equil n
FINAL

dónde norte es el número de solución.

El preprocesador proporciona un mecanismo muy simple para generar estos bloques repetitivos de código
utilizando una forma simple de sustitución numérica. Esto es suficiente, por ejemplo, para generar una serie de
simulaciones que varían solo por su SOLUCIÓN número, moles de REACTIVO, o intervalo de tiempo.

En el ejemplo anterior, los bloques repetidos se reemplazarían por:


<repeatStart1> 1 10 1 # valor inicial, valor final, incremento
SUPERFICIE
Navegar <M1> # de fitParameterNames
- no_edl
- equil <repeatValue1>
FINAL
<repeatEnd1>

Las partes críticas son las < repeatStart1> etiqueta que define el inicio del bloque de repetición, la
<repeatEnd1> etiqueta que define su final, y < repeatValue1> que es un marcador de posición donde se
sustituirá el valor generado. Todos los valores deben ser numéricos, aunque no necesariamente
números enteros.
Los tres parámetros en el < repeatStart1> línea define un mecanismo de bucle simple: valor inicial,
valor final, valor de incremento. Los valores generados se sustituyen en el < repeatValue1>
punto y todo el bloque de repetición se agrega a la entrada con el valor sustituido.
Los tres parámetros deben ser numéricos. El signo del incremento no es importante. Si el segundo valor
es mayor que el primero, el valor cuenta hacia arriba por el incremento dado y si el segundo valor es
menor que el menor que el primero, el valor cuenta hacia atrás.

El ' 1 'identificador de bloque agregado al final de < repeatStart en el ejemplo anterior puede ser cualquier cadena de
caracteres única de cualquier longitud.

Se puede dar más de un bloque de repetición, pero estos bloques no deben superponerse o, si lo hacen, deben
estar anidados "correctamente". Cada bucle con nombre debe tener una y solo una etiqueta de inicio y
finalización para que cada bucle sea único. Los bloques se expanden de arriba hacia abajo.

Esta entrada expandida se alimenta al analizador de entrada de la forma normal. El analizador no sabe nada
sobre el preprocesamiento. Los resultados de la expansión del preprocesador se escriben en el archivo de
registro.
Palabras clave 169

14 palabras clave

14,1 S RESUMEN DE PALABRAS CLAVE DISPONIBLES

La tabla 14.1 ofrece un resumen de las palabras clave disponibles. Las palabras clave están ordenadas en su

Cuadro 14.1. Palabras clave disponibles

Palabra clave Función

ESPECIACION encabezado de la sección

PhreePlotVersion versión de PhreePlot


unrecognisedKeywordIsFatal determina si el texto no reconocido en un archivo de entrada cuenta como un error fatal o no busca

Buscar actualizaciones en el sitio web de PhreePlot una versión más reciente del título de PhreePlot de este trabajo para el

título profesional archivo de registro

Programa de especiación programa de especiación utilizado

speciationProgramVersion La versión del programa de especiación utilizó

base de datos una base de datos termodinámica para usar

dateDatabase fecha o versión de la base de datos termodinámica para usar - ya no se usa la ruta del

pdfMaker archivo del programa de conversión de ps a pdf

fillColorDictionary ruta de archivo para el diccionario de color de relleno utilizado en diagramas de

lineColorDictionary predominio ruta de archivo para el diccionario de color de línea utilizado en gráficos personalizados y de ajuste

blockRangeColumn nombre de la columna en un archivo de datos que define el rango de un bloque de simulaciones

mainLoopColumn nombre de la columna en un archivo de datos que define el inicio del bucle principal simulaciones

selectedOutputFile interruptor lógico que determina si el archivo de salida seleccionado se escribe en el disco interruptor

Phreeqc.0.out explícito que determina si el Phreeqc.0.out El archivo es un conmutador lógico escrito que determina si el

todo archivo *. todo el archivo se escribe conmutador lógico para el archivo de registro

Iniciar sesión

trk conmutador lógico para el archivo de

ptos seguimiento conmutador lógico para el

pplog archivo de puntos conmutador lógico para el

pol archivo pp.log conmutador lógico para el

labelFile archivo poligonal conmutador lógico para el

vec archivo de etiquetas conmutador lógico para

empujar el archivo de vectores conmutador lógico para el archivo nudge

afuera conmutador lógico para el archivo de salida (o salida)

writeAllInputFiles interruptor lógico que controla el número de archivos de entrada escritos en el archivo de registro

dataSeparators controla los separadores utilizados para los archivos de entrada de datos y el formato de los archivos de

cálculoTipo salida tipo de cálculos y trazados a realizar

método de cálculo ya sea para calcular y trazar o simplemente volver a trazar

especies principales principales especies en una parcela de predominio o estabilidad

xmin mineral Valor mínimo de x para los cálculos

xmax valor x máximo para cálculos


ymin valor y mínimo para cálculos
ymax valor y máximo para cálculos
loopFile ruta de archivo para el archivo que contiene valores para la variable

loopMin z-loop valor mínimo para la variable z-loop

loopMax valor máximo para el intervalo de la variable de bucle

loopInt z o incremento para la variable de bucle z


170 Guía PhreePlot

Cuadro 14.1. Palabras clave disponibles (cont.)

loopLogVar determina si el valor de la variable de bucle z debe ser anti-registrado (10̂ z) número

loopIndexStartNumber inicial de índice de bucle usado, por ejemplo, para nombrar archivos

resolución número de intervalos en los que se divide el intervalo de los ejes x e y controla la respuesta a los

depurar errores y el alcance de los informes realizados para el archivo de registro filtrar todas las líneas

omitir que contienen las cadenas dadas para que no se envíen a Phreeqc

printScreenFrequency frecuencia con la que se envía el progreso en los cálculos ht a la pantalla frecuencia con la

plotFrequency que se escribe el archivo plot.ps que muestra el progreso del trazado controla cuántas

selectedOutputLines líneas de salida seleccionadas se envían al archivo 'out' controla la división entre el bucle

bucle principal previo y el bucle principal Phreeqc simulaciones diagrama de predominio dominante o

dominante subdominante

numericTags número de definiciones de etiquetas numéricas a seguir

characterTags número de definiciones de etiquetas de caracteres a seguir

valor inicial establece el valor de todas las etiquetas numéricas no definidas

unrecognisedKeywordIsFatal determina si una palabra clave no reconocida produce un error fatal o no determina
stopOnFail si los cálculos se detienen después de que Phreeqc ha fallado o no agrega un
writePlaceholder marcador de posición al afuera y trk archivos si Phreeqc falla

ENCAJAR encabezado de la sección

archivo de datos La ruta del archivo para el archivo de datos que contiene variables dependientes e independientes

un pase determina si todos los valores de las variables dependientes se calculan en una pasada o no indica si

logDepVariable la variable dependiente se ingresa en una escala lineal o logarítmica indica si las variables

logVariableIn independientes se ingresan en una escala lineal o logarítmica

dependienteVariableColumnaObs columna desde la que leer la variable dependiente del archivo de datos de ajuste
dependienteVariableColumnaCalc columna desde la que leer la variable dependiente de la salida seleccionada
saltar controla el número de registros leídos del archivo de datos de ajuste

fitMethod elegir procedimiento (s) de optimización / trazado

fitFiniteDiffStepSize tamaño de paso de diferencia finita para estimar las primeras derivadas en la rutina de ajuste

fitConvergenceCriterion criterio de convergencia en la rutina de ajuste

fitStepSize tamaño de paso inicial y / o tamaño máximo de paso en la rutina de adaptación

fitMaxIteraciones iteraciones máximas en la rutina de ajuste


fitWeightingMethod método de ponderación para usar en la rutina de ajuste

pesoColumna columna que indica los pesos en el archivo de datos de ajuste

numberOfFitParameters número de parámetros que se definen y etiquetan para el ajuste


fitParameterNames nombres de los parámetros de ajuste

fitLogParameters determina si registrar parámetros de ajuste de transformación o no

fitAdjustableParameters determina si los parámetros de ajuste son fijos o ajustables


fitParameterValues valores iniciales de los parámetros de ajuste

encajar número de puntos de interpolación utilizados por el NEWUOA y BOBYQA optimizadores

fitLowerParameterValues restricción menor en los parámetros de ajuste (no se utiliza actualmente)

fitUpperParameterValues restricción superior en los parámetros de ajuste (no se utiliza actualmente)

updateFitParameters determina si los valores de los parámetros ajustados se escriben en el archivo de entrada o no

TRAMA encabezado de la sección

unidades unidades a utilizar para todos los tamaños de

Tamaño de papel papel de dimensiones para escribir en un archivo Postscript

color de fondo color de fondo dentro de los límites de la trama y para que el resto del modelo de color de la

colorModel página se use para todos los colores

PD conmutador lógico para el archivo de trazado en

pdf formato ps conmutador lógico para el archivo de

png trazado en formato pdf conmutador lógico para el archivo de trazado en formato png

pantalla interruptor lógico para salida de pantalla y configuración para tiempo de cierre en caso de falla

epsi interruptor lógico para el archivo de trazado en formato epsi

eps interruptor lógico para el archivo de trazado en formato eps


Palabras clave 171

Table 14.1. Available keywords (contd)

jpg interruptor lógico para el archivo de trazado en

ppa formato jpg obsoleto

cubrir agrega una o más imágenes gráficas (archivos ps) encima del título que se está generando para

plotTitle colocarlo en la parte superior del gráfico

plotTitleColor color del título de la

plotTitleSize parcela altura del título

xtitle de la parcela título del eje x

ytitle, 2ytitle y (2y) -axis title


xoffset distancia desde el borde izquierdo de la página hasta el eje y izquierdo

desplazamiento distancia desde la parte inferior de la página hasta el eje x inferior vertical

orientación de la página u horizontal

archivo de varias páginas para ejecuciones de múltiples parcelas, determina si las parcelas están todas en un archivo o no

customLoopManyPlots hacer muchos gráficos separados (si T) o solo uno (si F) cuando varios bucles z especifican la

xaxisLength longitud del eje x

yaxisLength longitud del eje y

pxmin valor mínimo del eje x en el gráfico e inicio de las marcas x principales

pxmax valor máximo del eje x en el gráfico

pxmajor intervalo entre las principales marcas de graduación en el eje x

pxdec controla el número de cifras después del punto decimal en el etiquetado del eje x

pxminor intervalo del eje x entre marcas de graduación menores (sin etiquetar)

escala determina la escala y de las parcelas de predominio: nativo, pe o Eh (V o mV) valor


pymin, p2ymin mínimo de y (2y) -eje en la parcela e inicio de los ticks principales y valor máximo
pymax, p2ymax de y (2y) -eje en la parcela
pymajor, p2ymajor intervalo entre las principales marcas de graduación en el eje y (2y)

pydec, p2ydec controla el número de cifras después del punto decimal en y (2y) -etiquetado del eje y (2y)

pyminor, p2yminor -intervalo del eje entre las marcas de graduación menores (sin etiquetar) controla si se

Líneas de cuadrícula trazarán las líneas de cuadrícula del eje x e y

gridColor color de las líneas de cuadrícula de los ejes X e Y

gridDashesPerInch número de guiones por pulgada para líneas de cuadrícula de los ejes x e y

gridLineType estilos de línea para líneas de cuadrícula de los ejes x e y mayores y

customXcolumn menores nombre de columna o número de variable del eje x para trazar la

líneas lista de nombres de columnas o números de columnas para trazar como

grosor de línea líneas grosor de línea

guionesPerInch número de guiones por pulgada para líneas discontinuas (versión separada para eje 2y) estilo de

tipo de línea línea para líneas en gráficos personalizados (versión separada para eje 2y) establecer colores

color de linea iniciales en la secuencia de color de línea

changeColor determina si el color cambia automáticamente para subconjuntos de datos en gráficos

useLabelsFile personalizados determina si se usa un archivo de etiquetas existente o si se regenera en gráficos de

useLineColorDictionary predominio si el diccionario de color de línea se usa para colores y posiciones de etiquetas

restartColorSequence controla la secuencia de colores entre los gráficos y dentro de los subconjuntos de la misma columna de

plotOrder datos controla el orden de trazado de líneas y puntos

puntos lista de nombres de columnas o números de columnas para trazar como

pointType, pointType2y puntos lista de números o nombres de símbolos utilizados en gráficos

pointSize, pointSize2y personalizados tamaño de los símbolos utilizados en gráficos personalizados y de ajuste

pointColor color inicial de los símbolos utilizados en gráficos personalizados y de ajuste

rimFactor anchos de los bordes de los símbolos (círculos rellenos) como una fracción de los tamaños de los

rimColor símbolos colores de los bordes de los símbolos de los círculos rellenos

pointsSameColor controla si todos los símbolos tienen el mismo color


tickSize longitud de las marcas de graduación y controles trazado de las líneas de la

tickColor cuadrícula color de las marcas de graduación

axisNumberSize height of the axis numbers


axisNumberColor colour of the axis numbers
axisTitleSize height of the axis title
172 PhreePlot Guide

Cuadro 14.1. Palabras clave disponibles (cont.)

axisTitleColor color del título del eje ancho

axisLineWidth de las líneas del eje color de

axisLineColor las líneas del eje

labels lista de nombres que se utilizarán para las líneas etiquetas en gráficos

labelSize personalizados altura de las etiquetas utilizadas para etiquetar líneas

labelColor color de las etiquetas utilizadas para etiquetar líneas

nudge cree un archivo nudgeFile vacío para editar y / o especifique los parámetros 'empujar' aquí el archivo

nudgeFile para 'empujar' las etiquetas a nuevas posiciones

info color para el texto de los datos de 'información' que acompañan a cada gráfico

legendBox inserta un cuadro alrededor de una leyenda en un texto de gráfico personalizado

legendTitle o de contorno para el título de la leyenda (clave) en gráficos personalizados

legendTextColor color del texto de la leyenda

legendTextSize altura del texto en la leyenda para gráficos personalizados, de ajuste y de cuadrícula

labelEffort controla el esfuerzo (y el tiempo) necesarios para mejorar la ubicación automática de la etiqueta

trackSymbolSize tamaño del símbolo utilizado para un trazado de seguimiento y para etiquetar las posiciones de

trackSymbolColor anclaje El color del símbolo utilizado para un trazado de seguimiento y para etiquetar las posiciones de

domain ancla determina si los límites del dominio se trazan con predominio de ht1 número de trama o

customXcolumn nombre de columna apuntando a la columna x en una fuente de base de trama personalizada o

font ajustada y codificación de caracteres que se utilizará para todo el texto

plotFactor factor de escala que se utilizará para todos los elementos

missingValue de la trama valor ficticio para señalar un valor faltante

minimumAreaForLabeling tamaño mínimo de campo (como% de edad del área total) para trazar una etiqueta en un gráfico

minimumYValueForPlotting ht valor y mínimo máximo para el cual trazar una curva en un gráfico personalizado activar o

beep desactivar el sonido

simplify controla el grado de simplificación de la polilínea en los gráficos ht

convertLabels interpretar los nombres de las etiquetas como fórmulas Phreeqc o no

extraSymbolsLines nombre de ruta para el archivo que contiene símbolos adicionales y datos de línea para agregar para

text trazar texto adicional en la trama

extraText nombre de la ruta del archivo que contiene texto adicional para agregar al gráfico

extradat lista de nombres de ruta de archivos para agregar a la ruta de búsqueda de variables utilizadas en el

post trazado de la lista de nombres que se utilizarán para el texto publicado o un archivo de datos nombre de

postSize etiqueta de columna tamaño del texto publicado

contourZvariable nombre de la variable / columna en el archivo de salida que contiene los datos z para la lista de

contours valores de contorno en los que dibujar las líneas de contorno

contourFillColor lista de colores para llenar los niveles de contorno

contourLineWidth lista de los anchos de las líneas de contorno lista

contourLineColor de los colores de las líneas de contorno

contourShiftLabel lista de etiquetas de contorno para mover y la distancia para moverlas lista

contourLabelSize del tamaño (altura) de las etiquetas de contorno

contourLabelFigs lista de números que especifica el número de dígitos que se utilizarán en las etiquetas de contorno

contourLabelFont lista de fuentes utilizadas para imprimir las etiquetas de contorno

contourLabelColor lista de colores utilizados para el texto de las etiquetas de contorno

three major sections: SPECIATION, FIT and PLOT based on their function.

14.2 C ONVENTIONS

The PhreePlot keywords are listed below in alphabetic order. Keywords are not case sensitive. Each
keyword has one or more attributes associated with it. The type of these attributes is fixed. Each
one belongs to one of the following types:

logical T(RUE) or F(ALSE)


Palabras clave 173

entero un número entero (sin punto decimal)

número un número entero o de punto flotante

cuerda una cadena de caracteres (con o sin entre comillas)


nombre del archivo un nombre de archivo válido que puede incluir la ruta (depende del sistema) una ruta de

ruta de archivo archivo válida sin un nombre de archivo (depende del sistema) una ruta válida color nombre

color

14,3 K DESCRIPCIÓN DE EYWORD

La función y el uso de cada palabra clave se detallan a continuación. Las palabras clave se han ordenado alfabéticamente. Los alias

son nombres alternativos para las palabras clave. El valor predeterminado es el establecido internamente por

PhreePlot y leer del pp. conjunto expediente. Estos valores predeterminados se pueden anular desde los
archivos de entrada (*. ppi o override.set) o durante una interrupción (' Esc ') mientras corre. Los valores entre
corchetes son opcionales.

todo
Valor ' auto 'o una lógica ( CIERTO o FALSO) [ nombre de archivo] Cambie para

Descripción determinar si el estándar *. todo el archivo está escrito

Alias Phreeqcall.out, Phreeqc.all.out

Sistema por defecto ' auto '


Usar Establece explícitamente el conmutador que determina si el *. todo el archivo
definitivamente está escrito CIERTO) o no ( FALSO). Este archivo acumula toda la salida
impresa de Phreeqc y se escribirá en cada Phreeqc iteración. Este archivo puede llegar a
ser muy grande y puede ralentizar los tiempos de ejecución. FALSO hará que el archivo se
elimine al finalizar, si está presente.

El ' auto 'valor establece el todo cambiar dependiendo del nivel de depuración, FALSO
si ABS (depuración) <2 demás VERDADERO. Cuándo CIERTO, la *. todo El archivo siempre se creará.

' auto 'es la configuración predeterminada.

El segundo parámetro, opcional, es el nombre de archivo asignado a este archivo. Esto


podría ser Phreeqcall.out que era el nombre predeterminado dado a este archivo antes de
diciembre de 2015.

axisLineColor

Valor Cohort colour


Descripción Determines the colour of the axes.
Alias
Sistema por defecto auto
Usar Enables the line colour of the axes to be changed. Colours should be cho- sen
from the colour palette .

‘ auto ’ reverts to ‘black’.


174 PhreePlot Guide

Example 38

axisLineWidth

Value non-negative number

Description Determines the width of the axes.

Aliases axislw

System default 0.3


Use Enables the line width of the axis lines to be changed. This setting also
controls the line width of the axis tick marks and grid lines (which are
special long ticks). This is the same as the width of the axis line for the
major ticks, and half the width for the minor ticks.

Example 38

axisNumberColor

Value Cohort colour


Description Determines the colour of the numbers on the axis scales.

Aliases numberColor
System default auto
Use Enables the line colour of the axis numbering to be changed. Colours
should be chosen from the colour palette .

‘ auto ’ reverts to ‘ black ’.


Example 38

axisNumberSize

Value non-negative number

Description Determines the size of the axis numbers.

Aliases numberSize

System default 3
Use Permite cambiar el tamaño de los ejes.
Example 38

axisTitleColor

Valor Color de cohorte

Descripción Determina el color de los títulos de las escalas de los ejes.


Palabras clave 175

Alias
Sistema por defecto auto
Usar Habilita el color de los títulos de los ejes que se van a cambiar. Los colores deben
elegirse de la paleta de colores .

' auto 'vuelve a' negro '.


Ejemplo 38

axisTitleSize

Valor número no negativo


Descripción Determina el tamaño de los títulos de los ejes.

Alias axisTitleHt
Sistema por defecto 3
Usar Permite cambiar el tamaño de los títulos de los ejes.

Ejemplo 38

color de fondo
Valor Color de cohorte [color de cohorte]

Descripción Determina el color de fondo del gráfico y, opcionalmente, de la página.


Alias antecedentes

Sistema por defecto nd nd

Usar Habilita el fondo colores Ser cambiado. Este fondo de la gráfica es el área
delimitada por los ejes xey. El fondo de la trama se sobrescribe con cualquier
texto, líneas o rellenos producidos por la trama.

The page background is the whole page. The page background colour, if
drawn, will be overplotted by the plot background colour, if drawn.

nd, or equivalently “”, will suppress the drawing of the colour.

Example 70

beep
Value logical

Description Determines whether the sound is on or off.

Aliases

System default T

Use Switches the sound on ( T) or off ( F). A high-pitched beep is produced on


successful completion of a plot. A low-pitched beep is produced when
Phreeqc fails to converge or when the plot fails to complete. This option can
be useful to signal progress when multiple plots are being produced in

También podría gustarte