Skip to content

Herramientas de OilFlow2D

Ejecución automatizada por lotes de simulaciones del modelo

Puede ejecutar varias simulaciones de OilFlow2D mediante scripts por lotes. Al controlar las ejecuciones del modelo mediante scripts por lotes, se recomienda activar la opción de salida Automatic Close of Model Windows en la interfaz DIP para garantizar una ejecución ininterrumpida.

Hay dos métodos disponibles para ejecutar varias simulaciones mediante scripts por lotes:

  • Usar un script de MS-DOS en un archivo.
  • Usar un script escrito en el lenguaje de programación Python.

Note

Nota: los archivos de script descritos en este capítulo se pueden descargar mediante el siguiente enlace:

BatchRun-RF2D-OF2D.zip

Uso de un script de MS-DOS para ejecutar varias simulaciones por lotes

    C:
    cd "C:\Program Files\Hydronia\OilFlow2D"
    OilFlow2Dm5 "D:\OilFlow2D\Projects\ProjectA\Scenario1\Run1" > "D:\OilFlow2D\Projects\ProjectA\Scenario1\Run1_batch.log"
    OilFlow2Dm5 "D:\OilFlow2D\Projects\ProjectA\Scenario2\Run2" > "D:\OilFlow2D\Projects\ProjectA\Scenario2\Run2_batch.log"

Warning

El nombre del archivo de registro redirigido no debe coincidir con <projectname>.log. El motor OilFlow2D escribe su propio archivo de registro con ese nombre exacto y redirigirlo a la misma ruta bloquea el archivo durante la ejecución del comando, lo que impide iniciar el visor OilFlow2D Plus. Utilice un sufijo diferente, como _batch.log (tal como se muestra arriba), o no redirija la salida.

Las líneas de comentario en los archivos por lotes de MS-DOS deben comenzar con REM o ::. El carácter % inicia la expansión de variables, por lo que cualquier línea que empiece por % se analizará y ejecutará como un comando en lugar de ignorarse como comentario.

Uso de un script de Python dentro de QGIS para ejecutar varias simulaciones por lotes

Este script se ejecuta dentro de la Consola de Python de QGIS, pero tiene la desventaja de bloquear QGIS mientras se ejecutan los modelos.

# -*- coding: utf-8 -*-
from subprocess import call

oilflow2d_path = r"C:\Program Files\Hydronia\OilFlow2D\OilFlow2Dm5 "

dat_paths = [ 
           r"C:\Users\hydronia\Documents\OilFlow2D_QGIS\ExampleProjects\OilSpillLandTutorial\OilSpillLand_Run",
           r"C:\Users\hydronia\Documents\OilFlow2D_QGIS\ExampleProjects\OilSpillWaterTutorial\OilSpillWater_Run"
            ]

for path in dat_paths:
    prjPath = oilflow2d_path + path 
    call(prjPath)

Uso de un script de Python mediante un archivo por lotes para ejecutar varias simulaciones

Este script también se ejecuta desde QGIS, pero crea un archivo .BAT que no bloquea QGIS mientras se ejecutan los modelos.

# -*- coding: utf-8 -*-
import tempfile
import subprocess
tmpdir = tempfile.mkdtemp(prefix='of2qgis')
temp = os.path.join(tmpdir, "temp.bat")

dat_paths = [
           r"C:\Users\hydronia\Documents\OilFlow2D_QGIS\ExampleProjects\OilSpillLandTutorial\OilSpillLand_Run",
           r"C:\Users\hydronia\Documents\OilFlow2D_QGIS\ExampleProjects\OilSpillWaterTutorial\OilSpillWater_Run"
            ]

with open(temp, "w") as f:
  f.write("C:\n")
  f.write('cd "C:\Program Files\Hydronia\OilFlow2D"\n')
  for path in dat_paths:
      f.write('OilFlow2Dm5 "' + path + '" > "' + QFileInfo(path).absolutePath +
       '/Run.log" \n')

subprocess.Popen(temp, shell=True)