Unir sales en solución acuosa

Cuando se analizan aguas naturales y extractos acuosos provenientes de pastas saturadas de suelo se tiene, a veces, la necesidad de conformar las diferentes sales presentes en solución. Las especies principales son: Ca2+, Mg2+, Na+ y K+, a nivel de cationes, y HCO3, Cl y SO42-, a nivel de aniones. Desde el punto de vista de la carga, la suma de cationes debe ser igual a la suma de aniones cuando las concentraciones se expresan en meq/L. No obstante, esto último prácticamente nunca se manifiesta debido a la magnitud de los errores experimentales que tienden a subestimar o sobrestimar las especies químicas o a la presencia de algunas de ellas no previstas en el balance de cargas (como el NO3 en suelos con fertilización). Esto trae como consecuencia que generalmente la suma de cationes sea mayor a la suma de aniones o viceversa.

Si la suma de cationes es mayor que la de aniones, la diferencia puede ser añadida o restada proporcionalmente a la cantidad de aniones y cationes presentes. Si la suma de cationes es menor que la de aniones, entonces la diferencia es añadida o restada proporcionalmente a la cantidad de cationes y aniones presentes. La conformación de sales se hace independientemente para cada uno de esos dos casos posibles y el resultado individual para cada sal se promedia como resultado final. Como algoritmo de unión de sales se adaptó el esquema empleado por Pla en su modelo predictivo de sodicidad-salinidad de tal manera que secuencialmente:

CaCl2 = ([Ca2+] + [Mg2+] – [HCO3] – [SO42-]) * FCa

MgCl2 = ([Ca2+] + [Mg2+] – [HCO3] – [SO42-]) * FMg

CaSO4 = ([Ca2+] + [Mg2+] – [HCO3] – CaCl2 – MgCl2) * FCa

MgSO4 = ([Ca2+] + [Mg2+] – [HCO3] – CaCl2 – MgCl2) * FMg

Ca(HCO3)2 = ([Ca2+] + [Mg2+] – CaCl2 – MgCl2 – CaSO4 – MgSO4) * FCa

Mg(HCO3)2 = ([Ca2+] + [Mg2+] – CaCl2 – MgCl2 – CaSO4 – MgSO4) * FMg

NaCl = [Cl] – CaCl2 – MgCl2] – [K+]

NaHCO3 = [HCO3] – Ca(HCO3)2 – Mg(HCO3)2

Na2SO4 = [Na+] – NaCl – NaHCO3

KCl = K+

donde FCa y FMg son, respectivamente, las fracciones de Calcio y Magnesio en solución y los corchetes, [], hacen referencia a las concentraciones de iones individuales en solución expresadas en meq/L. Bajo el esquema anterior, si en algun punto intermedio la concentración de alguna sal se hace negativa esto indica que ya no hay nada que repartir y, en consecuencia, esta se asume como cero.

Con lo anterior en mente, se programó el algoritmo en C++ para que leyera las concentraciones de HCO3, Cl, SO42-, Ca2+, Mg2+, Na+ y K+ desde el archivo datos.in (directorio datos) e imprimiera las sales conformadas en datos.out. La conformación de sales es múltiple por lo que hay que añadir al comienzo de datos.in el número de muestras consideradas.

El archivo datos.in empleado por el programa unesales.exe fue el siguiente:

25
 1.44 1.20 1.15 3.24 0.00  2.48 1.61
 4.04 0.90 0.65 0.59 0.00  5.68 0.23
 8.60 1.00 0.94 0.69 0.00 10.94 0.25
14.14 1.00 0.93 0.99 0.00 15.14 0.27
14.72 1.00 0.61 0.79 0.00 15.53 0.24
11.44 0.90 0.45 0.69 0.00 12.18 0.23
11.46 1.00 0.90 0.69 0.00 13.01 0.25
 8.56 0.70 0.44 0.59 0.00  8.96 0.24
 9.56 0.70 0.29 0.59 0.00  9.92 0.24
 9.24 1.00 0.33 0.59 0.00  9.74 0.24
 8.80 0.80 0.34 0.69 0.00  9.74 0.23
 6.80 0.70 0.36 0.59 0.00  7.39 0.24
 7.36 0.70 0.31 0.59 0.00  7.68 0.24
 5.36 0.60 0.33 0.59 0.00  5.79 0.22
 2.64 0.30 0.36 0.39 0.00  3.37 0.24
 3.04 0.30 0.31 0.59 0.00  3.77 0.27
 1.88 0.30 0.22 0.39 0.00  2.64 0.23
 3.40 0.40 0.33 0.39 0.00  3.72 0.24
 4.56 0.50 0.34 0.49 0.00  4.55 0.23
 4.84 0.50 0.33 0.30 0.00  4.60 0.23
 3.68 0.50 0.17 0.39 0.00  3.80 0.21
 2.08 0.30 0.26 0.30 0.00  2.68 0.23
 2.80 0.75 0.24 0.99 0.00  3.44 0.25
 3.68 0.50 0.24 0.30 0.00  3.74 0.23
 4.12 0.60 0.28 0.49 0.00  4.22 0.23

que representa la composición de 25 extractos de pasta saturada en un suelo sódico de Papelón, Estado Portuguesa. Las sales conformadas que se encuentran en el archivo de salida datos.out son las siguientes:

   B     Cl    SO4   Ca    Mg    Na     K   SUMC  SUMA   DIF
  1.44  1.20  1.15  3.24  0.00  2.48  1.61  7.33  3.79  3.54
  4.04  0.90  0.65  0.59  0.00  5.68  0.23  6.50  5.59  0.91
  8.60  1.00  0.94  0.69  0.00 10.94  0.25 11.88 10.54  1.34
 14.14  1.00  0.93  0.99  0.00 15.14  0.27 16.40 16.07  0.33
 14.72  1.00  0.61  0.79  0.00 15.53  0.24 16.56 16.33  0.23
 11.44  0.90  0.45  0.69  0.00 12.18  0.23 13.10 12.79  0.31
 11.46  1.00  0.90  0.69  0.00 13.01  0.25 13.95 13.36  0.59
  8.56  0.70  0.44  0.59  0.00  8.96  0.24  9.79  9.70  0.09
  9.56  0.70  0.29  0.59  0.00  9.92  0.24 10.75 10.55  0.20
  9.24  1.00  0.33  0.59  0.00  9.74  0.24 10.57 10.57  0.00
  8.80  0.80  0.34  0.69  0.00  9.74  0.23 10.66  9.94  0.72
  6.80  0.70  0.36  0.59  0.00  7.39  0.24  8.22  7.86  0.36
  7.36  0.70  0.31  0.59  0.00  7.68  0.24  8.51  8.37  0.14
  5.36  0.60  0.33  0.59  0.00  5.79  0.22  6.60  6.29  0.31
  2.64  0.30  0.36  0.39  0.00  3.37  0.24  4.00  3.30  0.70
  3.04  0.30  0.31  0.59  0.00  3.77  0.27  4.63  3.65  0.98
  1.88  0.30  0.22  0.39  0.00  2.64  0.23  3.26  2.40  0.86
  3.40  0.40  0.33  0.39  0.00  3.72  0.24  4.35  4.13  0.22
  4.56  0.50  0.34  0.49  0.00  4.55  0.23  5.27  5.40 -0.13
  4.84  0.50  0.33  0.30  0.00  4.60  0.23  5.13  5.67 -0.54
  3.68  0.50  0.17  0.39  0.00  3.80  0.21  4.40  4.35  0.05
  2.08  0.30  0.26  0.30  0.00  2.68  0.23  3.21  2.64  0.57
  2.80  0.75  0.24  0.99  0.00  3.44  0.25  4.68  3.79  0.89
  3.68  0.50  0.24  0.30  0.00  3.74  0.23  4.27  4.42 -0.15
  4.12  0.60  0.28  0.49  0.00  4.22  0.23  4.94  5.00 -0.06

  CaCl  MgCl   CaS   MgS   CaB   MgB  NaCl   NaS   NaB   KCl  SUMA
  0.00  0.00  0.35  0.00  2.11  0.00  0.54  1.34  0.00  1.22  5.56
  0.00  0.00  0.00  0.00  0.55  0.00  0.76  0.70  3.82  0.21  6.04
  0.00  0.00  0.00  0.00  0.65  0.00  0.83  1.00  8.50  0.24 11.21
  0.00  0.00  0.00  0.00  0.98  0.00  0.74  0.94 13.31  0.27 16.24
  0.00  0.00  0.00  0.00  0.78  0.00  0.77  0.61 14.04  0.24 16.45
  0.00  0.00  0.00  0.00  0.68  0.00  0.68  0.46 10.90  0.23 12.94
  0.00  0.00  0.00  0.00  0.68  0.00  0.78  0.92 11.04  0.24 13.66
  0.00  0.00  0.00  0.00  0.59  0.00  0.46  0.44  8.01  0.24  9.75
  0.00  0.00  0.00  0.00  0.58  0.00  0.47  0.29  9.07  0.24 10.65
  0.00  0.00  0.00  0.00  0.59  0.00  0.76  0.33  8.65  0.24 10.57
  0.00  0.00  0.00  0.00  0.67  0.00  0.61  0.35  8.45  0.22 10.30
  0.00  0.00  0.00  0.00  0.58  0.00  0.48  0.37  6.38  0.23  8.04
  0.00  0.00  0.00  0.00  0.59  0.00  0.47  0.31  6.84  0.24  8.44
  0.00  0.00  0.00  0.00  0.58  0.00  0.40  0.34  4.92  0.21  6.44
  0.00  0.00  0.00  0.00  0.36  0.00  0.11  0.40  2.56  0.22  3.65
  0.00  0.00  0.00  0.00  0.53  0.00  0.10  0.35  2.92  0.24  4.14
  0.00  0.00  0.00  0.00  0.34  0.00  0.15  0.26  1.88  0.20  2.83
  0.00  0.00  0.00  0.00  0.38  0.00  0.18  0.34  3.11  0.23  4.24
  0.00  0.00  0.00  0.00  0.50  0.00  0.26  0.34  4.01  0.23  5.33
  0.00  0.00  0.00  0.00  0.32  0.00  0.23  0.31  4.29  0.24  5.40
  0.00  0.00  0.00  0.00  0.39  0.00  0.29  0.17  3.31  0.21  4.38
  0.00  0.00  0.00  0.00  0.27  0.00  0.12  0.29  2.03  0.21  2.92
  0.00  0.00  0.00  0.00  0.90  0.00  0.61  0.27  2.23  0.23  4.24
  0.00  0.00  0.00  0.00  0.31  0.00  0.26  0.24  3.31  0.23  4.34
  0.00  0.00  0.00  0.00  0.49  0.00  0.37  0.28  3.60  0.23  4.97

El programa puede ser bajado de aquí:

UNESALES.zip

Esta entrada fue publicada en Código C++, Suelos y Aguas. Guarda el enlace permanente.

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s