mocsy
2.0
Fortran 95 routines to model ocean carbonate system thermodynamics

The mocsy package is designed to accurately and efficiently compute all carbonate system variables given input for dissolved inorganic carbon (DIC), total alkalinity (Alk), temperature, and salinity as well as concentrations of total dissolved inorganic phosphorus and silicon concentrations. By default, the thermodynamic equilibrium constants used in mocsy are those recommended by the BestPractices Guide (Dickson et al., 2007). mocsy also includes options to use more recent formulations for the constants \(K_1\) and \(K_2\) from (Millero, 2010) and for total boron concentrations as a function of salinity (Lee et al., 2010), although these are not recommended at this time (Orr and Epitalon, 2015).
mocsy is designed for users with programming experience, preferably in either Fortran or python; others may well prefer the facility of packages such as ODV or the Excel version of CO2sys. However, mocsy's greater computational speed (Orr et al., 2014) makes it well suited for working with large data sets and ocean models. Furthermore, mocsy replaces 3 typical model approximations with exact formulations to improve model accuracy. Whereas the equations describing carbonate system thermodynamics require input of pressure, in situ temperature, and concentrations in mol/kg, modelers have used more accessible quantities: depth, potential temperature, and concentrations in mol/m3 converted to mol/kg with a constant density. mocsy avoids these approximations by calculating the 3 exact quantities from other input variables. These approximations lead to significant errors in computed variables in the deep ocean (Orr and Epitalon, 2014).
With none of the approximations, input from 3D gridded data products, namely GLODAP's DIC and Alk (Key et al., 2004) and World Ocean Atlas (2009) fields for T, S, and nutrients (Antonov et al., 2010; Loocarnini et al., 2010; Garcia et al., 2010), output from mocsy agrees with that from CO2SYSMATLAB (van Heuven et al., 2011), within 0.005% for the three inorganic carbon species. Corresponding pH differences are less than 0.00002, while differences between packages for \(\Omega_C\) and \(\Omega_A\) are offset by constant 0.018%. These small differences and their causes are discussed in Orr and Epitalon (2014).