was read the article
array:23 [ "pii" => "S0016716915000239" "issn" => "00167169" "doi" => "10.1016/j.gi.2015.04.020" "estado" => "S300" "fechaPublicacion" => "2015-07-01" "aid" => "20" "copyrightAnyo" => "2015" "documento" => "article" "crossmark" => 0 "licencia" => "http://creativecommons.org/licenses/by-nc-nd/4.0/" "subdocumento" => "fla" "cita" => "Geofisica Internacional. 2015;54:245-54" "abierto" => array:3 [ "ES" => true "ES2" => true "LATM" => true ] "gratuito" => true "lecturas" => array:2 [ "total" => 2048 "formatos" => array:3 [ "EPUB" => 92 "HTML" => 1304 "PDF" => 652 ] ] "itemSiguiente" => array:18 [ "pii" => "S0016716915000203" "issn" => "00167169" "doi" => "10.1016/j.gi.2015.04.017" "estado" => "S300" "fechaPublicacion" => "2015-07-01" "aid" => "17" "documento" => "article" "crossmark" => 0 "licencia" => "http://creativecommons.org/licenses/by-nc-nd/4.0/" "subdocumento" => "fla" "cita" => "Geofisica Internacional. 2015;54:255-66" "abierto" => array:3 [ "ES" => true "ES2" => true "LATM" => true ] "gratuito" => true "lecturas" => array:2 [ "total" => 2787 "formatos" => array:3 [ "EPUB" => 116 "HTML" => 2023 "PDF" => 648 ] ] "en" => array:11 [ "idiomaDefecto" => true "titulo" => "Short Baseline Calibration using GPS and EDM Observations" "tienePdf" => "en" "tieneTextoCompleto" => "en" "tieneResumen" => array:2 [ 0 => "es" 1 => "en" ] "paginas" => array:1 [ 0 => array:2 [ "paginaInicial" => "255" "paginaFinal" => "266" ] ] "contieneResumen" => array:2 [ "es" => true "en" => true ] "contieneTextoCompleto" => array:1 [ "en" => true ] "contienePdf" => array:1 [ "en" => true ] "resumenGrafico" => array:2 [ "original" => 0 "multimedia" => array:7 [ "identificador" => "fig0055" "etiqueta" => "Figure 11" "tipo" => "MULTIMEDIAFIGURA" "mostrarFloat" => true "mostrarDisplay" => false "figura" => array:1 [ 0 => array:4 [ "imagen" => "gr11.jpeg" "Alto" => 1707 "Ancho" => 2273 "Tamanyo" => 335899 ] ] "descripcion" => array:1 [ "en" => "<p id="spar0065" class="elsevierStyleSimplePara elsevierViewall">Calibration baseline results from GPS and EDM.</p>" ] ] ] "autores" => array:1 [ 0 => array:2 [ "autoresLista" => "Guadalupe Esteban Vazquez Becerra, Rick A. Bennett, Mijaíl Cordero Chávez, Manuel E. Trejo Soto, José Ramón Gaxiola-Camacho" "autores" => array:5 [ 0 => array:2 [ "nombre" => "Guadalupe Esteban Vazquez" "apellidos" => "Becerra" ] 1 => array:2 [ "nombre" => "Rick A." "apellidos" => "Bennett" ] 2 => array:2 [ "nombre" => "Mijaíl Cordero" "apellidos" => "Chávez" ] 3 => array:2 [ "nombre" => "Manuel E. Trejo" "apellidos" => "Soto" ] 4 => array:2 [ "nombre" => "José Ramón" "apellidos" => "Gaxiola-Camacho" ] ] ] ] ] "idiomaDefecto" => "en" "EPUB" => "https://multimedia.elsevier.es/PublicationsMultimediaV1/item/epub/S0016716915000203?idApp=UINPBA00004N" "url" => "/00167169/0000005400000003/v2_201509120041/S0016716915000203/v2_201509120041/en/main.assets" ] "itemAnterior" => array:18 [ "pii" => "S0016716915000215" "issn" => "00167169" "doi" => "10.1016/j.gi.2015.04.018" "estado" => "S300" "fechaPublicacion" => "2015-07-01" "aid" => "18" "documento" => "article" "crossmark" => 0 "licencia" => "http://creativecommons.org/licenses/by-nc-nd/4.0/" "subdocumento" => "fla" "cita" => "Geofisica Internacional. 2015;54:221-44" "abierto" => array:3 [ "ES" => true "ES2" => true "LATM" => true ] "gratuito" => true "lecturas" => array:2 [ "total" => 3046 "formatos" => array:3 [ "EPUB" => 97 "HTML" => 2236 "PDF" => 713 ] ] "en" => array:11 [ "idiomaDefecto" => true "titulo" => "Mesozoic gliding and Tertiary basin and range tectonics in eastern Sonora, Mexico" "tienePdf" => "en" "tieneTextoCompleto" => "en" "tieneResumen" => array:2 [ 0 => "es" 1 => "en" ] "paginas" => array:1 [ 0 => array:2 [ "paginaInicial" => "221" "paginaFinal" => "244" ] ] "contieneResumen" => array:2 [ "es" => true "en" => true ] "contieneTextoCompleto" => array:1 [ "en" => true ] "contienePdf" => array:1 [ "en" => true ] "resumenGrafico" => array:2 [ "original" => 0 "multimedia" => array:7 [ "identificador" => "fig0045" "etiqueta" => "Figure 9" "tipo" => "MULTIMEDIAFIGURA" "mostrarFloat" => true "mostrarDisplay" => false "figura" => array:1 [ 0 => array:4 [ "imagen" => "gr9.jpeg" "Alto" => 1641 "Ancho" => 1448 "Tamanyo" => 866681 ] ] "descripcion" => array:1 [ "en" => "<p id="spar0055" class="elsevierStyleSimplePara elsevierViewall">Intense deformation (a and b) recorded in the base of the Cañada de Tarachi Unit. Note the scale of deformation. Reverse and normal faults plus folds affect the sequence. Z folds recorded in the Cañada de Tarachi Unit (c, e, d) suggest transport to the south-west. In a, the bed where the man stand is the base of the detachment. The S fold on f crops out along the Arivechi-Tarachi road, also suggesting transport to the west.</p>" ] ] ] "autores" => array:1 [ 0 => array:2 [ "autoresLista" => "José Luis Rodríguez Castañeda, Jaime Roldán Quintana, Amabel Ortega Rivera" "autores" => array:3 [ 0 => array:2 [ "nombre" => "José Luis Rodríguez" "apellidos" => "Castañeda" ] 1 => array:2 [ "nombre" => "Jaime Roldán" "apellidos" => "Quintana" ] 2 => array:2 [ "nombre" => "Amabel Ortega" "apellidos" => "Rivera" ] ] ] ] ] "idiomaDefecto" => "en" "EPUB" => "https://multimedia.elsevier.es/PublicationsMultimediaV1/item/epub/S0016716915000215?idApp=UINPBA00004N" "url" => "/00167169/0000005400000003/v2_201509120041/S0016716915000215/v2_201509120041/en/main.assets" ] "en" => array:18 [ "idiomaDefecto" => true "titulo" => "A parallel computing strategy for Monte Carlo simulation using groundwater models" "tieneTextoCompleto" => true "paginas" => array:1 [ 0 => array:2 [ "paginaInicial" => "245" "paginaFinal" => "254" ] ] "autores" => array:1 [ 0 => array:4 [ "autoresLista" => "Esther Leyva-Suárez, Graciela S. Herrera, Luis M. de la Cruz" "autores" => array:3 [ 0 => array:3 [ "nombre" => "Esther" "apellidos" => "Leyva-Suárez" "referencia" => array:1 [ 0 => array:2 [ "etiqueta" => "<span class="elsevierStyleSup">a</span>" "identificador" => "aff0005" ] ] ] 1 => array:4 [ "nombre" => "Graciela S." "apellidos" => "Herrera" "email" => array:1 [ 0 => "ghz@geofisica.unam.mx" ] "referencia" => array:2 [ 0 => array:2 [ "etiqueta" => "<span class="elsevierStyleSup">b</span>" "identificador" => "aff0010" ] 1 => array:2 [ "etiqueta" => "<span class="elsevierStyleSup">*</span>" "identificador" => "cor0005" ] ] ] 2 => array:3 [ "nombre" => "Luis M." "apellidos" => "de la Cruz" "referencia" => array:1 [ 0 => array:2 [ "etiqueta" => "<span class="elsevierStyleSup">b</span>" "identificador" => "aff0010" ] ] ] ] "afiliaciones" => array:2 [ 0 => array:3 [ "entidad" => "Posgrado en Ciencias de la Tierra, Universidad Nacional Autónoma de México, Ciudad Universitaria, Delegación Coyoacán, 04510, México D.F., México" "etiqueta" => "a" "identificador" => "aff0005" ] 1 => array:3 [ "entidad" => "Instituto de Geofísica, Universidad Nacional Autónoma de México, Ciudad Universitaria, Delegación Coyoacán, 04510, México D.F., México" "etiqueta" => "b" "identificador" => "aff0010" ] ] "correspondencia" => array:1 [ 0 => array:3 [ "identificador" => "cor0005" "etiqueta" => "⁎" "correspondencia" => "Corresponding author." ] ] ] ] "resumenGrafico" => array:2 [ "original" => 0 "multimedia" => array:7 [ "identificador" => "fig0010" "etiqueta" => "Figure 2" "tipo" => "MULTIMEDIAFIGURA" "mostrarFloat" => true "mostrarDisplay" => false "figura" => array:1 [ 0 => array:4 [ "imagen" => "gr2.jpeg" "Alto" => 965 "Ancho" => 1719 "Tamanyo" => 194903 ] ] "descripcion" => array:1 [ "en" => "<p id="spar0020" class="elsevierStyleSimplePara elsevierViewall">a) Problem set up with the estimation mesh and boundary conditions for the flow model (h is in meters), b) Stochastic simulation mesh and boundary conditions for the transport model (modified from <a class="elsevierStyleCrossRef" href="#bib0065">Olivares-Vázquez, 2002</a>).</p>" ] ] ] "textoCompleto" => "<span class="elsevierStyleSections"><span id="sec0005" class="elsevierStyleSection elsevierViewall"><span class="elsevierStyleSectionTitle" id="sect0025">Introduction</span><p id="par0005" class="elsevierStylePara elsevierViewall">Stochastic hydrogeology is a field that deals with stochastic methods to describe and analyze groundwater processes (<a class="elsevierStyleCrossRef" href="#bib0070">Renard, 2007</a>). An important part of it consists of solving stochastic models (stochastic partial differential equations) describing those processes in order to estimate the joint probability density function of the parameters (e.g., transmissivity, storativity) and/or state variables (e.g., groundwater levels, concentrations) of those equations or more commonly some of their moments. Monte Carlo simulation (MCS) is an alternative for solving these stochastic models, it is based on the idea of approximating the solution of stochastic processes using a large number of equally likely realizations. For example, the pioneering work on stochastic hydrogeology by <a class="elsevierStyleCrossRef" href="#bib0030">Freeze (1975)</a> applies this method.</p><p id="par0010" class="elsevierStylePara elsevierViewall">The large number of realizations required by MCS can be very demanding in computing resources and the computational time can be excessive. Nowadays there exist many parallel computing platforms that can be used to alleviate this problem. Some previous works have focused in this direction, for example <a class="elsevierStyleCrossRef" href="#bib0020">Dong <span class="elsevierStyleItalic">et al</span>. (2012)</a> describe a parallelization strategy for stochastic modeling of groundwater systems using the Java Parallel Processing Framework (JPPF). This tool is very powerful and can be used as a GRID middle-ware (<a class="elsevierStyleCrossRef" href="#bib0025">Foster <span class="elsevierStyleItalic">et al</span>., 2001</a>) to distribute tasks across several computing systems. <a class="elsevierStyleCrossRef" href="#bib0020">Dong <span class="elsevierStyleItalic">et al</span>. (2012)</a> take advantage of this tool to avoid any modification of MODFLOW and related programs. However, when the JPPF is used in a cluster alone, a simply master-worker parallel model is obtained. They also report that the combination of two levels of parallelism, using a parallel solver to reduce the execution time by an order of two. However, this technique pays off only for very large grids, over 10<span class="elsevierStyleSup">6</span> points. In our case, we do not require such massive grids.</p><p id="par0015" class="elsevierStylePara elsevierViewall">In this paper, we propose a distributed parallel computing method for stochastic modeling with the software <span class="elsevierStyleItalic">Groundwater Monte Carlo</span> (GWMC), a component of the Groundwater Quality Monitoring (GWQMonitor) package (Herrera, 1998). GWMC is used together with an assimilation method called Ensemble Smoother of Herrera (ESH) in order to estimate groundwater contaminant concentration assimilating concentration data. The best known version of Ensemble Smoother was developed by <a class="elsevierStyleCrossRef" href="#bib0080">van Leeuwen and Evensen (1996)</a>. <a class="elsevierStyleCrossRef" href="#bib0040">Herrera de Olivares</a> developed a version of the assimilation method independently, and originally she called it static Kalman filter (Herrera, 1998).</p><p id="par0020" class="elsevierStylePara elsevierViewall">Ground Water Monte Carlo (GWMC)</p><p id="par0025" class="elsevierStylePara elsevierViewall">GWMC is a program written in FORTRAN by Herrera (1998), and subsequently modified by Olivares-Vázquez (2002).</p><p id="par0030" class="elsevierStylePara elsevierViewall">It implements Monte Carlo simulation using a flow and transport simulator in which hydraulic conductivity is a random field and the contaminant concentration at the contaminant source is a time series at each node. Therefore, multiple realizations of those two parameters are obtained and for each realization the flow and transport equations are solved by the Princeton Transport Code (PTC), a finite element simulator (<a class="elsevierStyleCrossRef" href="#bib0005">Babu <span class="elsevierStyleItalic">et al</span>., 1993</a>). Finally, different averages of the concentration solutions are calculated to obtain their space-time mean vector and covariance matrix. In this paper, GWMC is parallelized in order to reduce the program execution time.</p></span><span id="sec0010" class="elsevierStyleSection elsevierViewall"><span class="elsevierStyleSectionTitle" id="sect0030">Methodology</span><p id="par0035" class="elsevierStylePara elsevierViewall">The methodology implemented in this work is as follows:</p><p id="par0040" class="elsevierStylePara elsevierViewall"><span class="elsevierStyleItalic">Step 1.</span> The input files for PTC are generated.</p><p id="par0045" class="elsevierStylePara elsevierViewall"><span class="elsevierStyleItalic">Step 2.</span> The input files for GWMC are generated.</p><p id="par0050" class="elsevierStylePara elsevierViewall"><span class="elsevierStyleItalic">Step 3.</span> A number of realizations of the natural logarithm of the hydraulic conductivity field are generated using the sequential Gau-ssian simulation (SGSIM) program (<a class="elsevierStyleCrossRef" href="#bib0015">Deutsch and Journel, 1997</a>). This program generates standard normal simulated values with a given correlation spatial structure on a rectangular mesh.</p><p id="par0055" class="elsevierStylePara elsevierViewall"><span class="elsevierStyleItalic">Step 4.</span> A transformation to get the hydraulic conductivity field (a lognormal field) is calculated for each realization using the Nrm2log program. This program transforms the standard normal values to a normal variable with a given mean and variance and then applies the exponential function to get the lognormal field.</p><p id="par0060" class="elsevierStylePara elsevierViewall"><span class="elsevierStyleItalic">Step 5.</span> For each node at the source of contaminant concentration, the same number of realizations of time series is generated using the RandTS2 program.</p><p id="par0065" class="elsevierStylePara elsevierViewall"><span class="elsevierStyleItalic">Step 6.</span> If the PTC finite element mesh is not equal to the SGSIM rectangular mesh, the SGSIM mesh is mapped into the nearest node of the PTC mesh.</p><p id="par0070" class="elsevierStylePara elsevierViewall"><span class="elsevierStyleItalic">Step 7.</span> The generated hydraulic conduc-tivity realization value is assigned to the corresponding node of the PTC mesh and the hydraulic conductivity PTC files are substituted with the new values.</p><p id="par0075" class="elsevierStylePara elsevierViewall"><span class="elsevierStyleItalic">Step 8.</span> The contaminant concentrations at the source are substituted by the RandTS2 values in the PTC file for the transport boundary conditions.</p><p id="par0080" class="elsevierStylePara elsevierViewall"><span class="elsevierStyleItalic">Step 9.</span> PTC is executed for each conductivity and source concentration realization (PTC solves numerically the flow and transport equation).</p><p id="par0085" class="elsevierStylePara elsevierViewall"><span class="elsevierStyleItalic">Step 10.</span> Adding over the concentration solutions obtained in <span class="elsevierStyleItalic">step 8</span>, an auxiliary vector with the sum of concentrations for each node and time of interest is calculated and an auxiliary matrix with the sum of products of concentrations for each possible pair of space-time positions of interest is calculated.</p><p id="par0090" class="elsevierStylePara elsevierViewall"><span class="elsevierStyleItalic">Step 11.</span> Combining the information contained in the auxiliary vector and the auxiliary matrix the spatiotemporal mean vector and covariance matrix of the contaminant concentration are calculated.</p><p id="par0095" class="elsevierStylePara elsevierViewall"><span class="elsevierStyleItalic">Step 12</span>. The ESH is applied to estimate contaminant concentration.</p><p id="par0100" class="elsevierStylePara elsevierViewall">Steps 6 to 10 are executed by GWMC and steps 3 to 11 are parallelized in this work.</p></span><span id="sec0015" class="elsevierStyleSection elsevierViewall"><span class="elsevierStyleSectionTitle" id="sect0035">Python - MPI</span><p id="par0105" class="elsevierStylePara elsevierViewall">Python is an interpreter, interactive and extensible programming language used in a wide variety of applications. In particular, for scientific computing there exist many tools that ease the development of computational codes (<a class="elsevierStyleCrossRef" href="#bib0055">Milman and Aivazis, 2011</a>). Python can be combined easily with other programming languages, like C, C++ and Fortran, and al-so can be used to exploit high performance computing architectures by using MPI (Message Passing Interface) [<a class="elsevierStyleCrossRef" href="#bib0035">Gropp <span class="elsevierStyleItalic">et al</span>., 1999</a>] or CUDA (Compute Unified Device Architecture) [<a class="elsevierStyleCrossRef" href="#bib0050">Kirk and Hwu, 2010</a>]. Currently, almost any operating system supports Python in such a way that this programming language provides portability across many computing platforms.</p><p id="par0110" class="elsevierStylePara elsevierViewall">In this work our main objective is to reduce the execution time of the complete process described in section 4. In order to avoid a complete re-design of our codes, written mainly in FORTRAN, we decided to use Python and MPI for Python (MPI4PY) [<a class="elsevierStyleCrossRef" href="#bib0010">Dalcin, 2012</a>]. MPI4PY provides an object-oriented approach for MPI which allows us to distribute tasks using Python scripts. In the appendix we describe briefly the scripts developed in this work.</p><p id="par0115" class="elsevierStylePara elsevierViewall">In <a class="elsevierStyleCrossRef" href="#fig0005">Figure 1</a> we sketch the parallelization process. The main idea is to re-use FORTRAN codes with minimal modifications inside a Python script. First, we initialize all the variables and determine the corresponding inputs for the different executable codes. Part of this process is done in a client machine, before the parallel execution. After that, the client submits a batch task to the cluster. Once the parallel execution starts, each processor generates its own input files labeled using the processor number. With the local inputs generated, we execute a group of realizations in each processor. The load balancing is done by the script, distributing the same number of tasks for each processor. Each rea-lization solves the same problem but with different inputs, so the time required by each realization is almost the same. Since the num-ber of realizations can be different for each processor, we need to use a barrier at the end of the parallel execution. However, the waiting time for the last processor is negligible. The calculation of the space-time mean and the covariance matrix is done in processor 1, which requires information from all the processors. Originally, this was done in GWMC. In our case, we removed the corresponding FORTRAN code from the program, and we put it in a separate subroutine that is called at the end of the script. However this change is very simple and straightforward. Finally, the last step (the ESH application) is done as a post processing step in the client machine.</p><elsevierMultimedia ident="fig0005"></elsevierMultimedia></span><span id="sec0020" class="elsevierStyleSection elsevierViewall"><span class="elsevierStyleSectionTitle" id="sect0040">Application problem</span><p id="par0120" class="elsevierStylePara elsevierViewall">An aquifer of 804.7 by 804.7 m<span class="elsevierStyleSup">2</span> is considered (<a class="elsevierStyleCrossRef" href="#fig0010">figure 2</a>a). A contaminant source is located on the left hand side border and the area is bounded by a river on the right hand side. This problem was slightly modified from the one presented by <a class="elsevierStyleCrossRef" href="#bib0045">Herrera and Pinder (2005)</a>.</p><elsevierMultimedia ident="fig0010"></elsevierMultimedia><p id="par0125" class="elsevierStylePara elsevierViewall">The objective is to estimate the contaminant concentrations of a moving plume during a 2-year period. The locations at which concentration estimates will be obtained are associated with the nodes of what we call the estimation mesh shown in <a class="elsevierStyleCrossRef" href="#fig0010">Figure 2</a>a. For each one of these locations, concentrations will be estimated every 121.7 days; this amounts to six times during the 2-year period.</p></span><span id="sec0025" class="elsevierStyleSection elsevierViewall"><span class="elsevierStyleSectionTitle" id="sect0045">Flow and transport model</span><p id="par0130" class="elsevierStylePara elsevierViewall">The PTC is used in two-dimensional mode to solve the flow and transport model. The flow and transport equations coupled through Darcy's law, equations (1), (2) and (3) respectively, are used to describe the contaminant plume evolution:<elsevierMultimedia ident="eq0005"></elsevierMultimedia><elsevierMultimedia ident="eq0010"></elsevierMultimedia><elsevierMultimedia ident="eq0015"></elsevierMultimedia></p><p id="par0135" class="elsevierStylePara elsevierViewall">where <span class="elsevierStyleItalic">K</span> is the hydraulic conductivity, <span class="elsevierStyleItalic">h</span> is the hydraulic head, <span class="elsevierStyleItalic">S</span><span class="elsevierStyleInf"><span class="elsevierStyleItalic">S</span></span> is the specific storage coefficient, <span class="elsevierStyleItalic">Q</span> is a source or sink term, <span class="elsevierStyleItalic">c</span> is the solute concentration, <span class="elsevierStyleItalic">D</span> is the hydrodynamic dispersion, <span class="elsevierStyleItalic">c</span><span class="elsevierStyleInf">0</span> is the concentration of the pumped fluid and f is the effective porosity. The flow equation (1) describes the water flow through the aquifer; the transport equation (2) describes the changes in contaminant concentration through time for a conservative solute. Darcy's law (3) is used to calculate <span class="elsevierStyleItalic">V</span>, Darcy velocity. Boundary conditions for flow and transport are included in Figures 2a and 2b, respectively. Concentration is given in parts per million (ppm) and hydraulic head in meters (m).</p><p id="par0140" class="elsevierStylePara elsevierViewall">The numerical mesh used to solve the flow and transport equations is called the “stochastic simulation mesh”; it consists of 40x40 equally sized elements (<a class="elsevierStyleCrossRef" href="#fig0010">figure 2</a>b). For the transport model forty-eight time-steps are used to simulate a two-year period, 15.2 days each. For the flow model, all nodes of the left hand side boundary have a value of <span class="elsevierStyleItalic">h</span> = 50 <span class="elsevierStyleItalic">m</span>, and all nodes of the right hand boundary have a value of <span class="elsevierStyleItalic">h</span> = 0 <span class="elsevierStyleItalic">m</span>. The contaminant source is active during all of this period, with a constant concentration of <span class="elsevierStyleItalic">c</span> = 50<span class="elsevierStyleHsp" style=""></span><span class="elsevierStyleItalic">ppm</span>. Nodes that are not part of the contaminant source satisfy the condition ∂c∂x=0 The aquifer is assigned a thickness of 55 <span class="elsevierStyleItalic">m</span>, a porosity of 0.25, a dispersivity of 33 <span class="elsevierStyleItalic">m</span> in the x direction and 3.3 <span class="elsevierStyleItalic">m</span> in the y direction.</p></span><span id="sec0030" class="elsevierStyleSection elsevierViewall"><span class="elsevierStyleSectionTitle" id="sect0050">Stochastic model</span><p id="par0145" class="elsevierStylePara elsevierViewall">As was mentioned before, the hydraulic conductivity is represented as a spatially correlated random field; thus, the resulting velocity and dispersion fields, also become spatially correlated random fields.</p><p id="par0150" class="elsevierStylePara elsevierViewall">For this example we will assume that the hydraulic conductivity field has a lognormal distribution, it is homogeneous, stationary and isotropic. The mean value of <span class="elsevierStyleItalic">F</span>(<span class="elsevierStyleItalic">x</span>) = 1n<span class="elsevierStyleItalic">K</span>(<span class="elsevierStyleItalic">x</span>) is 3.055 and the semivariogram that represents its spatial correlation structure is an exponential model, i.e.:<elsevierMultimedia ident="eq0020"></elsevierMultimedia></p><p id="par0155" class="elsevierStylePara elsevierViewall">where σ2F is the variance of <span class="elsevierStyleItalic">F</span> with value 0.257813, and <span class="elsevierStyleItalic">λ</span><span class="elsevierStyleInf"><span class="elsevierStyleItalic">F</span></span> is its correlation scale equal to 80.467 m.</p><p id="par0160" class="elsevierStylePara elsevierViewall">At each node the contaminant concentration is represented as a time series (<a class="elsevierStyleCrossRef" href="#bib0045">Herrera and Pinder, 2005</a>), through<elsevierMultimedia ident="eq0025"></elsevierMultimedia></p><p id="par0165" class="elsevierStylePara elsevierViewall">where <span class="elsevierStyleItalic">e</span>(<span class="elsevierStyleItalic">t</span>) is a zero-mean random perturbation, normally distributed and with a 0.1948 variance. For each source node, in every simulation time step, a different random perturbation is used. The time correlation of the random perturbations is modeled with the semivariogram<elsevierMultimedia ident="eq0030"></elsevierMultimedia></p><p id="par0170" class="elsevierStylePara elsevierViewall">with <span class="elsevierStyleItalic">λ</span><span class="elsevierStyleInf"><span class="elsevierStyleItalic">e</span></span> equal to 11 days.</p><p id="par0175" class="elsevierStylePara elsevierViewall">For this example we used 1000, 2000 and 4000 realizations.</p><p id="par0180" class="elsevierStylePara elsevierViewall">Estimation with the Ensemble Smother of Herrera (ESH)</p><p id="par0185" class="elsevierStylePara elsevierViewall">As was mentioned before, Herrera (1998) developed the assimilation method independently of van Leeuwen and Evensen (1996), it was called static Kalman filter and later, static ensemble Kalman filter (EnKF) by <a class="elsevierStyleCrossRef" href="#bib0060">Nowak <span class="elsevierStyleItalic">et al</span>. (2010)</a>.</p><p id="par0190" class="elsevierStylePara elsevierViewall">Using the ESH we estimate the conservative contaminant concentration using existing da-ta for a two-year period. The concentration estimates are obtained at the nodes of what we call the ESH-mesh, which is a submesh of the stochastic simulation mesh, which consists of 5x5 equally sized elements (this mesh is shown in <a class="elsevierStyleCrossRef" href="#fig0010">figure 2</a>a). For each of these positions, the concentrations are estimated six times over a period of two years, equivalent to 121.7 days. To apply the ESH it is necessary to calculate the space-time covariance matrix of the contaminant concentration.</p></span><span id="sec0035" class="elsevierStyleSection elsevierViewall"><span class="elsevierStyleSectionTitle" id="sect0055">Performance</span><p id="par0195" class="elsevierStylePara elsevierViewall">We execute our codes on a HP Cluster Platform 3000SL “Miztli”, consisting of 5,312 processing cores Intel E5-2670, 16 cards NVIDIA m2090, with 15,000 GB of RAM, and capable of processing up to 118 TFlop/s. The system has 750 TB of massive storage.</p></span><span id="sec0040" class="elsevierStyleSection elsevierViewall"><span class="elsevierStyleSectionTitle" id="sect0060">Parallel metrics</span><p id="par0200" class="elsevierStylePara elsevierViewall">Some of the most commonly used metrics to determine the performance of a parallel algorithm are the speedup and efficiency.</p><p id="par0205" class="elsevierStylePara elsevierViewall">The speedup (S<span class="elsevierStyleInf">p</span>) is defined as<elsevierMultimedia ident="eq0035"></elsevierMultimedia></p><p id="par0210" class="elsevierStylePara elsevierViewall">where <span class="elsevierStyleItalic">T</span><span class="elsevierStyleInf"><span class="elsevierStyleItalic">1</span></span> is the running time of the algorithm on one processor and <span class="elsevierStyleItalic">T</span><span class="elsevierStyleInf"><span class="elsevierStyleItalic">N</span></span> is the running time of the algorithm on N processors.</p><p id="par0215" class="elsevierStylePara elsevierViewall">The efficiency (<span class="elsevierStyleItalic">E</span><span class="elsevierStyleInf"><span class="elsevierStyleItalic">p</span></span>) is defined as<elsevierMultimedia ident="eq0040"></elsevierMultimedia></p><p id="par0220" class="elsevierStylePara elsevierViewall">where <span class="elsevierStyleItalic">N</span> is the number of processors in which the algorithm execution is carried out.</p><p id="par0225" class="elsevierStylePara elsevierViewall">In this paper, these metrics are used to verify how efficient is the parallelization of GWMC.</p><p id="par0230" class="elsevierStylePara elsevierViewall">The serial execution of GWMC for one thousand realizations took on average 24.5<span class="elsevierStyleHsp" style=""></span>minutes using PTC to solve the flow and transport equations.</p><p id="par0235" class="elsevierStylePara elsevierViewall">The parallel Python script was executed for 1000, 2000 and 4000 realizations with different numbers of processors (see <a class="elsevierStyleCrossRef" href="#tbl0005">Table 1</a>). We observe that the speedup grows when the number of processors increases (<a class="elsevierStyleCrossRef" href="#fig0015">figure 3</a>). In <a class="elsevierStyleCrossRef" href="#fig0020">Figure 4</a> we see that the efficiency is more stable for the 4000 realizations case since it has fewer oscillations. For the 1000 realizations case, a speedup of 45.06 was obtained with 64 processors and a correspondingly efficiency of 0.70; for the 2000 realizations case, a speedup of 48.64 was obtained with 64 processors and a correspondingly efficiency of 0.76; for the 4000 realizations case, a speedup of 72.18 was obtained with 96 processors and a correspondingly efficiency of 0.75. The number of realizations has not much effect in the speedup and efficiency, since their values for the three cases for the same number of processors are similar.</p><elsevierMultimedia ident="tbl0005"></elsevierMultimedia><elsevierMultimedia ident="fig0015"></elsevierMultimedia><elsevierMultimedia ident="fig0020"></elsevierMultimedia></span><span id="sec0045" class="elsevierStyleSection elsevierViewall"><span class="elsevierStyleSectionTitle" id="sect0065">Discussion</span><p id="par0240" class="elsevierStylePara elsevierViewall">The elapsed time, the speedup and efficiency are limited by several factors: serial fraction of the code, load balancing, data dependencies and communications. In our case we have a minimal part of serial section: at the very beginning of the code, when the problem is set up in each processor; and at the end of the code when we join the results of all processors to calculate the mean vector and the covariance matrix. We have a very good load balancing due to the fact that each processor works on the same number of realizations. There are not data dependencies during calculations, except for the mean vector and covariance matrix calculations. Finally, the communications required to complete the calculations are also at the beginning and at the end of the code.</p><p id="par0245" class="elsevierStylePara elsevierViewall">Almost all the factors that limit the efficiency of our code, can be taken in to account in the serial fraction, because are present at the beginning and the end of the code, i.e. during the serial part of the execution. Therefore, using Amdahl's law (<a class="elsevierStyleCrossRef" href="#bib0075">Ridgway <span class="elsevierStyleItalic">et al</span>., 2005</a>) we can predict the theoretical maximum speedup of the code beforehand. Amdahl's law formula is<elsevierMultimedia ident="eq0045"></elsevierMultimedia></p><p id="par0250" class="elsevierStylePara elsevierViewall">where <span class="elsevierStyleItalic">f</span> represents the sequential fraction of the code and <span class="elsevierStyleItalic">p</span> is the number of processors.</p><p id="par0255" class="elsevierStylePara elsevierViewall">The serial fraction is measured in time units, therefore, when we increase the number of realizations, the processors will have more work to do in parallel reducing the serial fraction as a consequence. This effect can be seen in the results presented in <a class="elsevierStyleCrossRef" href="#tbl0005">Table 1</a> and in <a class="elsevierStyleCrossRefs" href="#fig0015">Figures 3 and 4</a>, where the speedup and the efficiency are more stable when the number of realizations is increased.</p><p id="par0260" class="elsevierStylePara elsevierViewall">In <a class="elsevierStyleCrossRef" href="#fig0025">figure 5</a>, we compare our speedup results against Amdahl's law drawn for 4000 realizations. We observe that our results for the three cases are in very good agreement with the predictions of this law. The mean squared errors of our results, compared with the Amdahl's law, are 1.95, 1.86 and 1.43 for 1000, 2000 and 4000 realizations, respectively, which proofs also the effectiveness of our approach. Besides, the efficiencies obtained are also greater than 0.70, in such a way that our parallel codes are scalable (see <a class="elsevierStyleCrossRef" href="#bib0075">Ridgway <span class="elsevierStyleItalic">et al</span>., 2005</a>).</p><elsevierMultimedia ident="fig0025"></elsevierMultimedia><p id="par0265" class="elsevierStylePara elsevierViewall">Amdahl's law assumes a perfect load balancing. The definition of load balancing is in terms of the time <span class="elsevierStyleItalic">t</span><span class="elsevierStyleInf"><span class="elsevierStyleItalic">i</span></span> that each processor takes in its calculations during the parallel part. A good balancing is when all the <span class="elsevierStyleItalic">t</span><span class="elsevierStyleInf"><span class="elsevierStyleItalic">i</span></span>'s have the same value approximately. In terms of these <span class="elsevierStyleItalic">t</span><span class="elsevierStyleInf"><span class="elsevierStyleItalic">i</span></span>'s the parallel time of the code will be <span class="elsevierStyleItalic">T</span><span class="elsevierStyleInf"><span class="elsevierStyleItalic">p</span></span> = max{<span class="elsevierStyleItalic">t</span><span class="elsevierStyleInf"><span class="elsevierStyleItalic">i</span></span> : <span class="elsevierStyleItalic">i</span> = 1, ..., <span class="elsevierStyleItalic">p</span>}. It is reasonable to assume that the time of the whole process in one processor is <span class="elsevierStyleItalic">T</span><span class="elsevierStyleInf">1</span> = sum{<span class="elsevierStyleItalic">t</span><span class="elsevierStyleInf"><span class="elsevierStyleItalic">i</span></span> : <span class="elsevierStyleItalic">i</span> = 1, ..., <span class="elsevierStyleItalic">p</span>}. Then using the efficiency we have:<elsevierMultimedia ident="eq0050"></elsevierMultimedia></p><p id="par0270" class="elsevierStylePara elsevierViewall">Therefore, we can write<elsevierMultimedia ident="eq0055"></elsevierMultimedia></p><p id="par0275" class="elsevierStylePara elsevierViewall">Hence, if the load balancing is bad, then the max{<span class="elsevierStyleItalic">t</span><span class="elsevierStyleInf"><span class="elsevierStyleItalic">i</span></span> : <span class="elsevierStyleItalic">i</span> = 1, ..., <span class="elsevierStyleItalic">p</span>} will be high, reducing the efficiency and speedup. In our case, we distribute the realizations on the processors evenly, producing averages and a maximum, of <span class="elsevierStyleItalic">t</span><span class="elsevierStyleInf"><span class="elsevierStyleItalic">i</span></span> : <span class="elsevierStyleItalic">i</span> = 1, ..., <span class="elsevierStyleItalic">p</span>, with very similar values.</p><p id="par0280" class="elsevierStylePara elsevierViewall">Another important aspect in parallel applications is the communication between processors. In the cluster we used, the connections between processing nodes is based on Infiniband QDR 40 Gigabits per second technology. This network reduce drastically the communications time of our codes, besides we do not use exchange of information once the parallel process is initiated, only at the setup of the problem and at the end of the calculations. We also tested the same codes on a cluster with Ethernet interconnection but the results were not as good as with those obtained with the Infiniband technology.</p></span><span id="sec0050" class="elsevierStyleSection elsevierViewall"><span class="elsevierStyleSectionTitle" id="sect0070">Conclusions</span><p id="par0285" class="elsevierStylePara elsevierViewall">In this paper, a parallelization strategy for Monte Carlo-type stochastic modeling, with PTC-related programs, has been described. The software GWMC implements this process for one processor. Our strategy allows us to re-use all these codes, with minimal modifications.</p><p id="par0290" class="elsevierStylePara elsevierViewall">The results obtained in parallel show that the performance is more stable as the workload for each processor is increased. In particular we obtained a very good efficiency for 4000 realizations and 96 processors. In this case we have an efficiency of 0.75 which makes our codes scalable and useful for large scale applications. During the development of this work, we have not installed any complicated software, we just use the common libraries installed in the Miztli cluster. In addition, we made a very simple modification of our original FORTRAN code to calculate the global covariance matrix.</p><p id="par0295" class="elsevierStylePara elsevierViewall">We believe that our strategy is simple but effective for a large number of simulations and can be applied to study more complicated problems, where the execution times can be very large.</p><p id="par0300" class="elsevierStylePara elsevierViewall">We show in <a class="elsevierStyleCrossRef" href="#fig0025">Figure 5</a> that the speedup of 1000, 2000 and 4000 realizations has a good load balancing, because the Amdahl's law assumes a perfect load balancing, and the speedup meets the conditions described in the discussion section, for this reason, we assume that our speedup had a good load balancing.</p></span><span id="sec0055" class="elsevierStyleSection elsevierViewall"><span class="elsevierStyleSectionTitle" id="sect0075">Appendix</span><p id="par0305" class="elsevierStylePara elsevierViewall">In what follows we describe parts of the script written to parallelize the process described in section 4.</p><p id="par0310" class="elsevierStylePara elsevierViewall">1) A first step is to create directories to facilitate the parallelization and storing of the information. We use the rank of the processor to define the name of each directory:</p><p id="par0315" class="elsevierStylePara elsevierViewall">if os.path.isdir(‘%s’ % t + ‘%d’ % rank):</p><p id="par0320" class="elsevierStylePara elsevierViewall">shutil.rmtree(‘%s’ % t + ‘%d’ % rank)</p><p id="par0325" class="elsevierStylePara elsevierViewall">os.mkdir(‘%s’ % t + ‘%d’ % rank)</p><p id="par0330" class="elsevierStylePara elsevierViewall">os.chdir(‘%s’ % t + ‘%d’ % rank)</p><p id="par0335" class="elsevierStylePara elsevierViewall">2) Four input files need to be modified, these are: gwqmonitor.par, sgsim.par, nrm2log.par and randTS2.par. Each file contains inputs for codes rndcsim, sgsim, nrlm2log and randTS2 respectively. Modification of file sgsim.par is shown below:</p><p id="par0340" class="elsevierStylePara elsevierViewall">ofile = open(“sgsim.par”, ‘w’)</p><p id="par0345" class="elsevierStylePara elsevierViewall">i=0</p><p id="par0350" class="elsevierStylePara elsevierViewall">for line in lines:</p><p id="par0355" class="elsevierStylePara elsevierViewall">i+=1</p><p id="par0360" class="elsevierStylePara elsevierViewall">if i==21:</p><p id="par0365" class="elsevierStylePara elsevierViewall">ofile.write(‘%d \n’ % local_realizaciones)</p><p id="par0370" class="elsevierStylePara elsevierViewall">elif i==25:</p><p id="par0375" class="elsevierStylePara elsevierViewall">j+=2</p><p id="par0380" class="elsevierStylePara elsevierViewall">ofile.write(‘%d \n’ % j)</p><p id="par0385" class="elsevierStylePara elsevierViewall">else:</p><p id="par0390" class="elsevierStylePara elsevierViewall">ofile.write(‘%s’ % line)</p><p id="par0395" class="elsevierStylePara elsevierViewall">ofile.close()</p><p id="par0400" class="elsevierStylePara elsevierViewall">3) All input files are copied in each cluster node in order to run the programs sgsim, nrm2log, randTS2 and GWQMonitor. Once the copy of the input files is done, we execute each one of these programs. Note that the FORTRAN executable codes are run using a system call from the python script:</p><p id="par0405" class="elsevierStylePara elsevierViewall">os.system(‘./sgsim < sgsim.par > sgsim.OUTPY’)</p><p id="par0410" class="elsevierStylePara elsevierViewall">os.system(‘./nrm2log > nrm2log.OUTPY’)</p><p id="par0415" class="elsevierStylePara elsevierViewall">os.system(‘./randts2 > randts2.OUTPY’)</p><p id="par0420" class="elsevierStylePara elsevierViewall">os.system(‘./gwqmonitor > gwqmonitor.OUTPY’)</p><p id="par0425" class="elsevierStylePara elsevierViewall">4) For the calculation of the covariance matrix, we use a barrier to ensure that the information from the different processors has been arrived to the memory of processor that construct the covariance matrix. Calculation of the covariance matrix is carried out after this information is gathered.</p><p id="par0430" class="elsevierStylePara elsevierViewall">MPI.COMM_WORLD.Barrier()</p><p id="par0435" class="elsevierStylePara elsevierViewall">if (rank==0):</p><p id="par0440" class="elsevierStylePara elsevierViewall">def checkfile(archivo):</p><p id="par0445" class="elsevierStylePara elsevierViewall">import os.path</p><p id="par0450" class="elsevierStylePara elsevierViewall">if os.path.isfile(archivo):</p><p id="par0455" class="elsevierStylePara elsevierViewall">os.system(‘rm %s’%archivo)</p><p id="par0460" class="elsevierStylePara elsevierViewall">os.chdir(‘/home/estherl/NV3-MPI/’)</p><p id="par0465" class="elsevierStylePara elsevierViewall">checkfile(‘covarianza.out’)</p><p id="par0470" class="elsevierStylePara elsevierViewall">checkfile(‘media.out’)</p><p id="par0475" class="elsevierStylePara elsevierViewall">print(“tiempo sgsim = %e’ % (t2-t1))</p><p id="par0480" class="elsevierStylePara elsevierViewall">print(“tiempo nrmlog = %e’ % (t3-t2))</p><p id="par0485" class="elsevierStylePara elsevierViewall">print(“tiempo randts2 = %e’ % (t4-t3))</p><p id="par0490" class="elsevierStylePara elsevierViewall">print(“tiempo gwqmonitor = %e’ % (t5-t4))</p><p id="par0495" class="elsevierStylePara elsevierViewall">os.system(‘./matriz %d’ %size)</p><p id="par0500" class="elsevierStylePara elsevierViewall">os.system(‘mv meanvect*.out basura/’)</p><p id="par0505" class="elsevierStylePara elsevierViewall">os.system(‘mv meanplume*.out basura/’)</p><p id="par0510" class="elsevierStylePara elsevierViewall">os.system(‘mv covmatrx*.out basura/’)</p><p id="par0515" class="elsevierStylePara elsevierViewall">Observe that the steps 1) to 4) are all executed by all processors in parallel; it is only using the rank of each processor that is possible to assign different tasks to each processor. Actually, this latter is done in the step 4).</p></span></span>" "textoCompletoSecciones" => array:1 [ "secciones" => array:17 [ 0 => array:3 [ "identificador" => "xres551700" "titulo" => "Resumen" "secciones" => array:1 [ 0 => array:1 [ "identificador" => "abst0005" ] ] ] 1 => array:2 [ "identificador" => "xpalclavsec569114" "titulo" => "Palabras clave" ] 2 => array:3 [ "identificador" => "xres551701" "titulo" => "Abstract" "secciones" => array:1 [ 0 => array:1 [ "identificador" => "abst0010" ] ] ] 3 => array:2 [ "identificador" => "xpalclavsec569115" "titulo" => "Keywords" ] 4 => array:2 [ "identificador" => "sec0005" "titulo" => "Introduction" ] 5 => array:2 [ "identificador" => "sec0010" "titulo" => "Methodology" ] 6 => array:2 [ "identificador" => "sec0015" "titulo" => "Python - MPI" ] 7 => array:2 [ "identificador" => "sec0020" "titulo" => "Application problem" ] 8 => array:2 [ "identificador" => "sec0025" "titulo" => "Flow and transport model" ] 9 => array:2 [ "identificador" => "sec0030" "titulo" => "Stochastic model" ] 10 => array:2 [ "identificador" => "sec0035" "titulo" => "Performance" ] 11 => array:2 [ "identificador" => "sec0040" "titulo" => "Parallel metrics" ] 12 => array:2 [ "identificador" => "sec0045" "titulo" => "Discussion" ] 13 => array:2 [ "identificador" => "sec0050" "titulo" => "Conclusions" ] 14 => array:2 [ "identificador" => "sec0055" "titulo" => "Appendix" ] 15 => array:2 [ "identificador" => "xack186043" "titulo" => "Acknowledgements" ] 16 => array:1 [ "titulo" => "References" ] ] ] "pdfFichero" => "main.pdf" "tienePdf" => true "fechaRecibido" => "2013-08-15" "fechaAceptado" => "2014-01-01" "PalabrasClave" => array:2 [ "es" => array:1 [ 0 => array:4 [ "clase" => "keyword" "titulo" => "Palabras clave" "identificador" => "xpalclavsec569114" "palabras" => array:5 [ 0 => "Agua subterránea" 1 => "flujo y transporte" 2 => "simulación Monte Carlo" 3 => "cómputo paralelo distribuido" 4 => "Python." ] ] ] "en" => array:1 [ 0 => array:4 [ "clase" => "keyword" "titulo" => "Keywords" "identificador" => "xpalclavsec569115" "palabras" => array:5 [ 0 => "groundwater" 1 => "flow and transport" 2 => "Monte Carlo simulation" 3 => "distributed parallel computing" 4 => "Python." ] ] ] ] "tieneResumen" => true "resumen" => array:2 [ "es" => array:2 [ "titulo" => "Resumen" "resumen" => "<span id="abst0005" class="elsevierStyleSection elsevierViewall"><p id="spar0005" class="elsevierStyleSimplePara elsevierViewall">En este artículo se presentan los resultados de una estrategia de paralelización para reducir el tiempo de ejecución al aplicar la simulación Monte Carlo con un gran número de realizaciones obtenidas utilizando un modelo de flujo y transporte de agua subterránea. Desarrollamos un script en Python usando mpi4py, a fin de ejecutar GWMC y programas relacionados en paralelo aplicando la biblioteca MPI. Nuestro enfoque consiste en calcular las entradas iniciales para cada realización y correr grupos de estas realizaciones en procesadores separados y después calcular el vector medio y la matriz de covarianza de las mismas. Esta estrategia se aplicó al estudio de un acuífero simplificado en un dominio rectangular de una sola capa. Presentamos los resultados de aceleración y eficiencia para 1000, 2000 y 4000 realizaciones para diferente número de procesadores. Eficiencias de 0,70, 0,76 y 0,75 se obtuvieron para 64, 64 y 96 procesadores, respectivamente. Observamos una mejora ligera del rendimiento a medida que aumenta el número de realizaciones.</p></span>" ] "en" => array:2 [ "titulo" => "Abstract" "resumen" => "<span id="abst0010" class="elsevierStyleSection elsevierViewall"><p id="spar0010" class="elsevierStyleSimplePara elsevierViewall">In this paper we present the results of a parallelization strategy to reduce the execution time for applying Monte Carlo simulation with a large number of realizations obtained using a groundwater flow and transport model. We develop a script in Python using mpi4py, in order to execute GWMC and related programs in parallel, applying the MPI library. Our approach is to calculate the initial inputs for each realization, and run groups of these realizations in separate processors and afterwards to calculate the mean vector and the covariance matrix of them. This strategy was applied to the study of a simplified aquifer in a rectangular domain of a single layer. We report the results of speedup and efficiency for 1000, 2000 and 4000 realizations for different number of processors. Efficiencies of 0.70, 0.76 and 0.75 were obtained for 64, 64 and 96 processors, respectively. We observe a slightly improvement of the performance as the number of realizations is increased.</p></span>" ] ] "multimedia" => array:17 [ 0 => array:7 [ "identificador" => "fig0005" "etiqueta" => "Figure 1" "tipo" => "MULTIMEDIAFIGURA" "mostrarFloat" => true "mostrarDisplay" => false "figura" => array:1 [ 0 => array:4 [ "imagen" => "gr1.jpeg" "Alto" => 1502 "Ancho" => 1873 "Tamanyo" => 208769 ] ] "descripcion" => array:1 [ "en" => "<p id="spar0015" class="elsevierStyleSimplePara elsevierViewall">Parallelization process. Task 3 to 10 are done in parallel, while task 12 is calculated in processor 1.</p>" ] ] 1 => array:7 [ "identificador" => "fig0010" "etiqueta" => "Figure 2" "tipo" => "MULTIMEDIAFIGURA" "mostrarFloat" => true "mostrarDisplay" => false "figura" => array:1 [ 0 => array:4 [ "imagen" => "gr2.jpeg" "Alto" => 965 "Ancho" => 1719 "Tamanyo" => 194903 ] ] "descripcion" => array:1 [ "en" => "<p id="spar0020" class="elsevierStyleSimplePara elsevierViewall">a) Problem set up with the estimation mesh and boundary conditions for the flow model (h is in meters), b) Stochastic simulation mesh and boundary conditions for the transport model (modified from <a class="elsevierStyleCrossRef" href="#bib0065">Olivares-Vázquez, 2002</a>).</p>" ] ] 2 => array:7 [ "identificador" => "fig0015" "etiqueta" => "Figure 3" "tipo" => "MULTIMEDIAFIGURA" "mostrarFloat" => true "mostrarDisplay" => false "figura" => array:1 [ 0 => array:4 [ "imagen" => "gr3.jpeg" "Alto" => 758 "Ancho" => 1253 "Tamanyo" => 98436 ] ] "descripcion" => array:1 [ "en" => "<p id="spar0025" class="elsevierStyleSimplePara elsevierViewall">Speedup versus number of processors for 1000, 2000 and 4000 realizations.</p>" ] ] 3 => array:7 [ "identificador" => "fig0020" "etiqueta" => "Figure 4" "tipo" => "MULTIMEDIAFIGURA" "mostrarFloat" => true "mostrarDisplay" => false "figura" => array:1 [ 0 => array:4 [ "imagen" => "gr4.jpeg" "Alto" => 756 "Ancho" => 1255 "Tamanyo" => 96379 ] ] "descripcion" => array:1 [ "en" => "<p id="spar0030" class="elsevierStyleSimplePara elsevierViewall">Efficiency versus num-ber of processors for 1000, 2000 and 4000 realizations.</p>" ] ] 4 => array:7 [ "identificador" => "fig0025" "etiqueta" => "Figure 5" "tipo" => "MULTIMEDIAFIGURA" "mostrarFloat" => true "mostrarDisplay" => false "figura" => array:1 [ 0 => array:4 [ "imagen" => "gr5.jpeg" "Alto" => 632 "Ancho" => 1255 "Tamanyo" => 87275 ] ] "descripcion" => array:1 [ "en" => "<p id="spar0035" class="elsevierStyleSimplePara elsevierViewall">The comparative bet-ween the Amdahl's law and the speedup to 1000, 2000 and 4000 realizations.</p>" ] ] 5 => array:7 [ "identificador" => "tbl0005" "etiqueta" => "Table 1" "tipo" => "MULTIMEDIATABLA" "mostrarFloat" => true "mostrarDisplay" => false "tabla" => array:1 [ "tablatextoimagen" => array:1 [ 0 => array:2 [ "tabla" => array:1 [ 0 => """ <table border="0" frame="\n \t\t\t\t\tvoid\n \t\t\t\t" class=""><thead title="thead"><tr title="table-row"><th class="td" title="table-head " align="" valign="top" scope="col"> \t\t\t\t\t\t\n \t\t\t\t</th><th class="td" title="table-head " align="" valign="top" scope="col"> \t\t\t\t\t\t\n \t\t\t\t</th><th class="td" title="table-head " align="left" valign="top" scope="col">S<span class="elsevierStyleInf">p</span> \t\t\t\t\t\t\n \t\t\t\t</th><th class="td" title="table-head " align="" valign="top" scope="col"> \t\t\t\t\t\t\n \t\t\t\t</th><th class="td" title="table-head " align="" valign="top" scope="col"> \t\t\t\t\t\t\n \t\t\t\t</th><th class="td" title="table-head " align="left" valign="top" scope="col">E<span class="elsevierStyleInf">p</span> \t\t\t\t\t\t\n \t\t\t\t</th><th class="td" title="table-head " align="" valign="top" scope="col"> \t\t\t\t\t\t\n \t\t\t\t</th><th class="td" title="table-head " align="left" valign="top" scope="col">Amdahl's law \t\t\t\t\t\t\n \t\t\t\t</th><th class="td" title="table-head " align="" valign="top" scope="col"> \t\t\t\t\t\t\n \t\t\t\t</th><th class="td" title="table-head " align="" valign="top" scope="col"> \t\t\t\t\t\t\n \t\t\t\t</th></tr><tr title="table-row"><th class="td" title="table-head " align="left" valign="top" scope="col" style="border-bottom: 2px solid black">Realizations Processors \t\t\t\t\t\t\n \t\t\t\t</th><th class="td" title="table-head " align="left" valign="top" scope="col" style="border-bottom: 2px solid black">1000 \t\t\t\t\t\t\n \t\t\t\t</th><th class="td" title="table-head " align="left" valign="top" scope="col" style="border-bottom: 2px solid black">2000 \t\t\t\t\t\t\n \t\t\t\t</th><th class="td" title="table-head " align="left" valign="top" scope="col" style="border-bottom: 2px solid black">4000 \t\t\t\t\t\t\n \t\t\t\t</th><th class="td" title="table-head " align="left" valign="top" scope="col" style="border-bottom: 2px solid black">1000 \t\t\t\t\t\t\n \t\t\t\t</th><th class="td" title="table-head " align="left" valign="top" scope="col" style="border-bottom: 2px solid black">2000 \t\t\t\t\t\t\n \t\t\t\t</th><th class="td" title="table-head " align="left" valign="top" scope="col" style="border-bottom: 2px solid black">4000 \t\t\t\t\t\t\n \t\t\t\t</th><th class="td" title="table-head " align="left" valign="top" scope="col" style="border-bottom: 2px solid black">1000 \t\t\t\t\t\t\n \t\t\t\t</th><th class="td" title="table-head " align="left" valign="top" scope="col" style="border-bottom: 2px solid black">2000 \t\t\t\t\t\t\n \t\t\t\t</th><th class="td" title="table-head " align="left" valign="top" scope="col" style="border-bottom: 2px solid black">4000 \t\t\t\t\t\t\n \t\t\t\t</th></tr></thead><tbody title="tbody"><tr title="table-row"><td class="td" title="table-entry " align="left" valign="top">1 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">1 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">1 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">1 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">1 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">1 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">1 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">1 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">1 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">1 \t\t\t\t\t\t\n \t\t\t\t</td></tr><tr title="table-row"><td class="td" title="table-entry " align="left" valign="top">2 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">1.96 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">1.88 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">1.90 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.98 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.94 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.95 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">1.99 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">1.99 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">1.99 \t\t\t\t\t\t\n \t\t\t\t</td></tr><tr title="table-row"><td class="td" title="table-entry " align="left" valign="top">4 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">3.96 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">3.47 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">3.75 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.99 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.87 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.94 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">3.99 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">3.99 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">3.97 \t\t\t\t\t\t\n \t\t\t\t</td></tr><tr title="table-row"><td class="td" title="table-entry " align="left" valign="top">8 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">6.22 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">7.25 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">7.12 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.78 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.91 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.89 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">7.97 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">7.98 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">7.88 \t\t\t\t\t\t\n \t\t\t\t</td></tr><tr title="table-row"><td class="td" title="table-entry " align="left" valign="top">12 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">11.36 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">9.89 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">10.30 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.95 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.82 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.86 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">11.94 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">11.96 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">11.73 \t\t\t\t\t\t\n \t\t\t\t</td></tr><tr title="table-row"><td class="td" title="table-entry " align="left" valign="top">16 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">14.33 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">13.50 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">12.49 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.90 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.84 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.78 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">15.90 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">15.93 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">15.52 \t\t\t\t\t\t\n \t\t\t\t</td></tr><tr title="table-row"><td class="td" title="table-entry " align="left" valign="top">24 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">21.38 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">17.29 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">19.34 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.89 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.72 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.81 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">23.77 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">23.85 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">22.92 \t\t\t\t\t\t\n \t\t\t\t</td></tr><tr title="table-row"><td class="td" title="table-entry " align="left" valign="top">32 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">26.75 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">26.80 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">25.04 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.84 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.84 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.78 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">31.60 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">31.74 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">30.09 \t\t\t\t\t\t\n \t\t\t\t</td></tr><tr title="table-row"><td class="td" title="table-entry " align="left" valign="top">48 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">40.47 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">39.50 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">37.62 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.84 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.82 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.78 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">47.10 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">47.42 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">43.79 \t\t\t\t\t\t\n \t\t\t\t</td></tr><tr title="table-row"><td class="td" title="table-entry " align="left" valign="top">64 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">45.06 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">48.64 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">49.07 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.70 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.76 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.77 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">62.41 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">62.96 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">56.70 \t\t\t\t\t\t\n \t\t\t\t</td></tr><tr title="table-row"><td class="td" title="table-entry " align="left" valign="top">80 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="" valign="top"> \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="" valign="top"> \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">59.85 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="" valign="top"> \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="" valign="top"> \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.75 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">77.52 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">78.39 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">68.88 \t\t\t\t\t\t\n \t\t\t\t</td></tr><tr title="table-row"><td class="td" title="table-entry " align="left" valign="top">96 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="" valign="top"> \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="" valign="top"> \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">72.18 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="" valign="top"> \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="" valign="top"> \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">0.75 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">92.45 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">93.68 \t\t\t\t\t\t\n \t\t\t\t</td><td class="td" title="table-entry " align="left" valign="top">80.40 \t\t\t\t\t\t\n \t\t\t\t</td></tr></tbody></table> """ ] "imagenFichero" => array:1 [ 0 => "xTab890450.png" ] ] ] ] "descripcion" => array:1 [ "en" => "<p id="spar0040" class="elsevierStyleSimplePara elsevierViewall">Speedup (Sp), efficiency (Ep) and Amdahl's law data with different number of processors for 1000, 2000 and 4000 realizations.</p>" ] ] 6 => array:6 [ "identificador" => "eq0005" "etiqueta" => "(1)" "tipo" => "MULTIMEDIAFORMULA" "mostrarFloat" => false "mostrarDisplay" => true "Formula" => array:1 [ "imagen" => array:1 [ 0 => array:4 [ "Fichero" => "fx1.jpeg" "Tamanyo" => 25651 "Alto" => 160 "Ancho" => 1125 ] ] ] ] 7 => array:6 [ "identificador" => "eq0010" "etiqueta" => "(2)" "tipo" => "MULTIMEDIAFORMULA" "mostrarFloat" => false "mostrarDisplay" => true "Formula" => array:1 [ "imagen" => array:1 [ 0 => array:4 [ "Fichero" => "fx2.jpeg" "Tamanyo" => 35287 "Alto" => 177 "Ancho" => 1429 ] ] ] ] 8 => array:6 [ "identificador" => "eq0015" "etiqueta" => "(3)" "tipo" => "MULTIMEDIAFORMULA" "mostrarFloat" => false "mostrarDisplay" => true "Formula" => array:1 [ "imagen" => array:1 [ 0 => array:4 [ "Fichero" => "fx3.jpeg" "Tamanyo" => 17645 "Alto" => 63 "Ancho" => 924 ] ] ] ] 9 => array:6 [ "identificador" => "eq0020" "etiqueta" => "(4)" "tipo" => "MULTIMEDIAFORMULA" "mostrarFloat" => false "mostrarDisplay" => true "Formula" => array:1 [ "imagen" => array:1 [ 0 => array:4 [ "Fichero" => "fx4.jpeg" "Tamanyo" => 30698 "Alto" => 197 "Ancho" => 1191 ] ] ] ] 10 => array:6 [ "identificador" => "eq0025" "etiqueta" => "(5)" "tipo" => "MULTIMEDIAFORMULA" "mostrarFloat" => false "mostrarDisplay" => true "Formula" => array:1 [ "imagen" => array:1 [ 0 => array:4 [ "Fichero" => "fx5.jpeg" "Tamanyo" => 24808 "Alto" => 74 "Ancho" => 1153 ] ] ] ] 11 => array:6 [ "identificador" => "eq0030" "etiqueta" => "(6)" "tipo" => "MULTIMEDIAFORMULA" "mostrarFloat" => false "mostrarDisplay" => true "Formula" => array:1 [ "imagen" => array:1 [ 0 => array:4 [ "Fichero" => "fx6.jpeg" "Tamanyo" => 41771 "Alto" => 196 "Ancho" => 1239 ] ] ] ] 12 => array:6 [ "identificador" => "eq0035" "etiqueta" => "(7)" "tipo" => "MULTIMEDIAFORMULA" "mostrarFloat" => false "mostrarDisplay" => true "Formula" => array:1 [ "imagen" => array:1 [ 0 => array:4 [ "Fichero" => "fx7.jpeg" "Tamanyo" => 19874 "Alto" => 217 "Ancho" => 871 ] ] ] ] 13 => array:6 [ "identificador" => "eq0040" "etiqueta" => "(8)" "tipo" => "MULTIMEDIAFORMULA" "mostrarFloat" => false "mostrarDisplay" => true "Formula" => array:1 [ "imagen" => array:1 [ 0 => array:4 [ "Fichero" => "fx8.jpeg" "Tamanyo" => 30642 "Alto" => 205 "Ancho" => 873 ] ] ] ] 14 => array:6 [ "identificador" => "eq0045" "etiqueta" => "(9)" "tipo" => "MULTIMEDIAFORMULA" "mostrarFloat" => false "mostrarDisplay" => true "Formula" => array:1 [ "imagen" => array:1 [ 0 => array:4 [ "Fichero" => "fx9.jpeg" "Tamanyo" => 41197 "Alto" => 192 "Ancho" => 1044 ] ] ] ] 15 => array:6 [ "identificador" => "eq0050" "etiqueta" => "(10)" "tipo" => "MULTIMEDIAFORMULA" "mostrarFloat" => false "mostrarDisplay" => true "Formula" => array:1 [ "imagen" => array:1 [ 0 => array:4 [ "Fichero" => "fx10.jpeg" "Tamanyo" => 42481 "Alto" => 228 "Ancho" => 1267 ] ] ] ] 16 => array:6 [ "identificador" => "eq0055" "etiqueta" => "(11)" "tipo" => "MULTIMEDIAFORMULA" "mostrarFloat" => false "mostrarDisplay" => true "Formula" => array:1 [ "imagen" => array:1 [ 0 => array:4 [ "Fichero" => "fx11.jpeg" "Tamanyo" => 49547 "Alto" => 222 "Ancho" => 1169 ] ] ] ] ] "bibliografia" => array:2 [ "titulo" => "References" "seccion" => array:1 [ 0 => array:2 [ "identificador" => "bibs0005" "bibliografiaReferencia" => array:16 [ 0 => array:3 [ "identificador" => "bib0005" "etiqueta" => "Babu et al., 1993" "referencia" => array:1 [ 0 => array:1 [ "referenciaCompleta" => "Babu D.K., Pinder G.F., Niemi A., Ahlfeld D.P., Stothoff S.A., 1993. Chemical transport by three-dimensional groundwater flows. Tech. Rep. 84-WR-3, Dep. of Civ. Eng., Princeton Univ., Princeton, N.J." ] ] ] 1 => array:3 [ "identificador" => "bib0010" "etiqueta" => "Dalcin, 2012" "referencia" => array:1 [ 0 => array:1 [ "referenciaCompleta" => "Dalcin L., 2012. MPI for Python, Release 1.3. URL: http://mpi4py.scipy.org/." ] ] ] 2 => array:3 [ "identificador" => "bib0015" "etiqueta" => "Deutsch and Journel, 1997" "referencia" => array:1 [ 0 => array:1 [ "referenciaCompleta" => "Deutsch C.V., Journel A.G., 1997. GSLIB. Geostatistical Software Library and User's Guide. Ed. OXFORD UNIVERSITY PRESS, 2a. ed., New York, 1998, 369 p." ] ] ] 3 => array:3 [ "identificador" => "bib0020" "etiqueta" => "Dong et al., 2012" "referencia" => array:1 [ 0 => array:1 [ "referenciaCompleta" => "Dong Y., Li G., Xu H., 2012, Distributed Parallel Computing in Stochastic Modeling of Groundwater Systems. <span class="elsevierStyleItalic">Groundwater Journal</span>. 51, 2, 293-297 p." ] ] ] 4 => array:3 [ "identificador" => "bib0025" "etiqueta" => "Foster et al., 2001" "referencia" => array:1 [ 0 => array:1 [ "referenciaCompleta" => "Foster I., Kesselman C., Tuecke S., 2001, The Anatomy of the Grid: Enabling Scalable Virtual Organizations. <span class="elsevierStyleItalic">International Journal of High Performance Computing Fall</span>, 15, 200-222 p." ] ] ] 5 => array:3 [ "identificador" => "bib0030" "etiqueta" => "Freeze, 1975" "referencia" => array:1 [ 0 => array:2 [ "contribucion" => array:1 [ 0 => array:2 [ "titulo" => "A stochastic-conceptual analysis of one dimensional groundwater flow in nonuniform homogeneous media" "autores" => array:1 [ 0 => array:2 [ "etal" => false "autores" => array:1 [ 0 => "R.A. Freeze" ] ] ] ] ] "host" => array:1 [ 0 => array:1 [ "Revista" => array:6 [ "tituloSerie" => "Water Resources Research" "fecha" => "1975" "volumen" => "11" "numero" => "5" "paginaInicial" => "725" "paginaFinal" => "741" ] ] ] ] ] ] 6 => array:3 [ "identificador" => "bib0035" "etiqueta" => "Gropp et al., 1999" "referencia" => array:1 [ 0 => array:1 [ "referenciaCompleta" => "Gropp W., Lusk E., Skjellum A., 1999, Using MPI-2: Advanced Features of the Message-Passing Interface. MIT Press Cambridge, MA, USA. ISBN 0262571331." ] ] ] 7 => array:3 [ "identificador" => "bib0040" "etiqueta" => "Herrera de Olivares, 1998" "referencia" => array:1 [ 0 => array:1 [ "referenciaCompleta" => "Herrera de Olivares G.S., 1998, Cost Effective Groundwater Quality Sampling Network Design, Ph.D. Thesis, University of Vermont." ] ] ] 8 => array:3 [ "identificador" => "bib0045" "etiqueta" => "Herrera and Pinder, 2005" "referencia" => array:1 [ 0 => array:1 [ "referenciaCompleta" => "Herrera G.S., Pinder G.F., 2005, Space-time optimization of groundwater quality sampling networks. <span class="elsevierStyleItalic">Water Resources Research</span>, 41, 15 p." ] ] ] 9 => array:3 [ "identificador" => "bib0050" "etiqueta" => "Kirk and Hwu, 2010" "referencia" => array:1 [ 0 => array:1 [ "referenciaCompleta" => "Kirk D.B., Hwu W.-M.W., 2010, Programming Massively Parallel Processors: A Hands-on Approach. Ed. Morgan Kaufmann Publishers Inc., 1rs ed., San Francisco, CA, USA." ] ] ] 10 => array:3 [ "identificador" => "bib0055" "etiqueta" => "Milman and Aivazis, 2011" "referencia" => array:1 [ 0 => array:1 [ "referenciaCompleta" => "Milman K.J., Aivazis M., 2011, Python for Scientists and Engineers. Computing in Science & Engineering, 13, 9-12 p. URL: http://dx.doi.org/10.1109/MCSE.;1; 2011.36." ] ] ] 11 => array:3 [ "identificador" => "bib0060" "etiqueta" => "Nowak et al., 2010" "referencia" => array:1 [ 0 => array:1 [ "referenciaCompleta" => "Nowak W., De Barros F.P.J., Rubin Y., 2010, Bayesian geostatistical design: Task-driven optimal site investigation when the geostatistical model is uncertain. <span class="elsevierStyleItalic">Water Resources Research</span>, 46, W03535, doi:10.1029/2009WR008312." ] ] ] 12 => array:3 [ "identificador" => "bib0065" "etiqueta" => "Olivares-Vázquez, 2002" "referencia" => array:1 [ 0 => array:1 [ "referenciaCompleta" => "Olivares-Vázquez J.L. Groundwater Quality Monitor GUI. User's Guide. 2002, 26 p." ] ] ] 13 => array:3 [ "identificador" => "bib0070" "etiqueta" => "Renard, 2007" "referencia" => array:1 [ 0 => array:1 [ "referenciaCompleta" => "Renard P., 2007, Stochastic Hydrogeology: What Professionals Really Need? <span class="elsevierStyleItalic">Groundwater</span>, 45, No. 5, 531-541 p." ] ] ] 14 => array:3 [ "identificador" => "bib0075" "etiqueta" => "Ridgway et al., 2005" "referencia" => array:1 [ 0 => array:1 [ "referenciaCompleta" => "Ridgway S.L., Terry C., Babak B., 2005, Scientific parallel computing. New Jersey, Princeton University Press, 372 p." ] ] ] 15 => array:3 [ "identificador" => "bib0080" "etiqueta" => "Van Leeuwen and Evensen, 1996" "referencia" => array:1 [ 0 => array:1 [ "referenciaCompleta" => "Van Leeuwen P.J., Evensen G., 1996, Data assimilation and inverse methods in terms of a probabilistic formulation. <span class="elsevierStyleItalic">Monthly Weather Review</span>, 124, 2898-2913 p." ] ] ] ] ] ] ] "agradecimientos" => array:1 [ 0 => array:4 [ "identificador" => "xack186043" "titulo" => "Acknowledgements" "texto" => "<p id="par0520" class="elsevierStylePara elsevierViewall">The authors gratefully acknowledge Leobardo Itehua for helping us running the numerical tests in Miztly and E. Leyva the scholarship from CONACyT to pursue her Ph.D. studies.</p>" "vista" => "all" ] ] ] "idiomaDefecto" => "en" "url" => "/00167169/0000005400000003/v2_201509120041/S0016716915000239/v2_201509120041/en/main.assets" "Apartado" => array:4 [ "identificador" => "40021" "tipo" => "SECCION" "en" => array:2 [ "titulo" => "Articles" "idiomaDefecto" => true ] "idiomaDefecto" => "en" ] "PDF" => "https://static.elsevier.es/multimedia/00167169/0000005400000003/v2_201509120041/S0016716915000239/v2_201509120041/en/main.pdf?idApp=UINPBA00004N&text.app=https://www.elsevier.es/" "EPUB" => "https://multimedia.elsevier.es/PublicationsMultimediaV1/item/epub/S0016716915000239?idApp=UINPBA00004N" ]
Year/Month | Html | Total | |
---|---|---|---|
2024 November | 4 | 1 | 5 |
2024 October | 19 | 15 | 34 |
2024 September | 29 | 10 | 39 |
2024 August | 25 | 12 | 37 |
2024 July | 19 | 7 | 26 |
2024 June | 23 | 1 | 24 |
2024 May | 16 | 3 | 19 |
2024 April | 30 | 13 | 43 |
2024 March | 42 | 7 | 49 |
2024 February | 48 | 4 | 52 |
2024 January | 54 | 2 | 56 |
2023 December | 35 | 10 | 45 |
2023 November | 40 | 7 | 47 |
2023 October | 70 | 23 | 93 |
2023 September | 47 | 8 | 55 |
2023 August | 49 | 5 | 54 |
2023 July | 51 | 8 | 59 |
2023 June | 26 | 10 | 36 |
2023 May | 50 | 10 | 60 |
2023 April | 60 | 4 | 64 |
2023 March | 78 | 16 | 94 |
2023 February | 69 | 11 | 80 |
2023 January | 90 | 19 | 109 |
2022 December | 74 | 14 | 88 |
2022 November | 43 | 10 | 53 |
2022 October | 41 | 12 | 53 |
2022 September | 53 | 9 | 62 |
2022 August | 74 | 9 | 83 |
2022 July | 52 | 6 | 58 |
2022 June | 55 | 7 | 62 |
2022 May | 39 | 7 | 46 |
2022 April | 63 | 11 | 74 |
2022 March | 66 | 9 | 75 |
2022 February | 41 | 14 | 55 |
2022 January | 81 | 10 | 91 |
2021 December | 46 | 13 | 59 |
2021 November | 60 | 15 | 75 |
2021 October | 59 | 16 | 75 |
2021 September | 45 | 13 | 58 |
2021 August | 70 | 10 | 80 |
2021 July | 59 | 13 | 72 |
2021 June | 75 | 14 | 89 |
2021 May | 65 | 2 | 67 |
2021 April | 156 | 33 | 189 |
2021 March | 105 | 12 | 117 |
2021 February | 43 | 21 | 64 |
2021 January | 45 | 12 | 57 |
2020 December | 55 | 8 | 63 |
2020 November | 29 | 7 | 36 |
2020 October | 26 | 6 | 32 |
2020 September | 14 | 10 | 24 |
2020 August | 24 | 10 | 34 |
2020 July | 19 | 8 | 27 |
2020 June | 31 | 3 | 34 |
2020 May | 55 | 11 | 66 |
2020 April | 24 | 4 | 28 |
2020 March | 30 | 9 | 39 |
2020 February | 14 | 4 | 18 |
2020 January | 30 | 8 | 38 |
2019 December | 26 | 10 | 36 |
2019 November | 17 | 11 | 28 |
2019 October | 21 | 10 | 31 |
2019 September | 20 | 17 | 37 |
2019 August | 12 | 6 | 18 |
2019 July | 21 | 12 | 33 |
2019 June | 40 | 22 | 62 |
2019 May | 101 | 51 | 152 |
2019 April | 58 | 30 | 88 |
2019 March | 16 | 8 | 24 |
2019 February | 26 | 2 | 28 |
2019 January | 20 | 7 | 27 |
2018 December | 15 | 5 | 20 |
2018 November | 26 | 15 | 41 |
2018 October | 24 | 10 | 34 |
2018 September | 29 | 19 | 48 |
2018 August | 36 | 4 | 40 |
2018 July | 15 | 6 | 21 |
2018 June | 26 | 7 | 33 |
2018 May | 29 | 9 | 38 |
2018 April | 26 | 11 | 37 |
2018 March | 19 | 4 | 23 |
2018 February | 19 | 6 | 25 |
2018 January | 17 | 5 | 22 |
2017 December | 20 | 3 | 23 |
2017 November | 20 | 3 | 23 |
2017 October | 20 | 6 | 26 |
2017 September | 26 | 7 | 33 |
2017 August | 24 | 10 | 34 |
2017 July | 18 | 1 | 19 |
2017 June | 16 | 18 | 34 |
2017 May | 18 | 3 | 21 |
2017 April | 17 | 7 | 24 |
2017 March | 11 | 98 | 109 |
2017 February | 15 | 7 | 22 |
2017 January | 16 | 0 | 16 |
2016 December | 25 | 11 | 36 |
2016 November | 31 | 12 | 43 |
2016 October | 43 | 10 | 53 |
2016 September | 20 | 4 | 24 |
2016 August | 35 | 2 | 37 |
2016 July | 24 | 1 | 25 |
2016 June | 22 | 12 | 34 |
2016 May | 25 | 12 | 37 |
2016 April | 22 | 24 | 46 |
2016 March | 20 | 12 | 32 |
2016 February | 25 | 16 | 41 |
2016 January | 25 | 20 | 45 |
2015 December | 15 | 15 | 30 |
2015 November | 22 | 13 | 35 |
2015 October | 25 | 18 | 43 |
2015 September | 11 | 8 | 19 |