CMAQ/pruebaAMBA
(→mcip) |
(→inventario) |
||
(No se muestran 102 ediciones intermedias realizadas por 2 usuarios) | |||
Línea 4: | Línea 4: | ||
WORKDIR = /home/solange.luque/estudios/CMAQ-AMBA/prueba |
WORKDIR = /home/solange.luque/estudios/CMAQ-AMBA/prueba |
||
</pre> |
</pre> |
||
+ | |||
+ | [[File:CMAQflow.png]] |
||
= Datos atmosféricos = |
= Datos atmosféricos = |
||
Línea 20: | Línea 22: | ||
export CMAQ_HOME=/home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/ |
export CMAQ_HOME=/home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/ |
||
cd /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/PREP/mcip/scripts |
cd /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/PREP/mcip/scripts |
||
− | diff run_mcip.csh run_mcip.csh.old |
+ | diff run_mcip.csh run_mcip.csh.old |
− | 125,129c125 |
+ | 125,128c125 |
< # config_cmaq.csh modifies $CMAQ_HOME |
< # config_cmaq.csh modifies $CMAQ_HOME |
||
< set val = $CMAQ_HOME |
< set val = $CMAQ_HOME |
||
< source $CMAQ_HOME/config_cmaq.csh intel |
< source $CMAQ_HOME/config_cmaq.csh intel |
||
< set CMAQ_HOME = $val |
< set CMAQ_HOME = $val |
||
− | < echo $0": Solange 2 CMAQ_HOME: "$CMAQ_HOME |
||
--- |
--- |
||
> source $CMAQ_HOME/config_cmaq.csh |
> source $CMAQ_HOME/config_cmaq.csh |
||
− | 133c129 |
+ | 129a127,129 |
− | < set GridName = AMBA # 16-character maximum |
+ | > set APPL = 160702 |
− | --- |
+ | > set CoordName = LamCon_40N_97W # 16-character maximum |
> set GridName = 2016_12SE1 # 16-character maximum |
> set GridName = 2016_12SE1 # 16-character maximum |
||
− | 135,136c131,132 |
+ | 131,136c131,132 |
+ | < set APPL = AMBA |
||
+ | < set CoordName = ChemGBsAs_d03 # 16-character maximum |
||
+ | < set GridName = ChemGBsAs_d03_cp # 16-character maximum |
||
+ | < |
||
< set DataPath = /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA |
< set DataPath = /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA |
||
< set InMetDir = $DataPath/wrf |
< set InMetDir = $DataPath/wrf |
||
Línea 39: | Línea 40: | ||
> set DataPath = $CMAQ_DATA |
> set DataPath = $CMAQ_DATA |
||
> set InMetDir = $DataPath/wrf |
> set InMetDir = $DataPath/wrf |
||
+ | 138c134 |
||
+ | < set OutDir = $DataPath/mcip/$APPL |
||
+ | --- |
||
+ | > set OutDir = $DataPath/mcip/$GridName |
||
142,143d137 |
142,143d137 |
||
< |
< |
||
− | < echo $0": Solange: "$ProgDir |
+ | < |
− | 163,164c157,159 |
+ | 163,165c157,159 |
− | < set InMetFiles = ( $InMetDir/wrfout_d03_2012-11-15_00:00:00 \ |
+ | < set InMetFiles = ( $InMetDir/wrfout_d03_2012-11-14_12:00:00 \ |
+ | < $InMetDir/wrfout_d03_2012-11-15_00:00:00 \ |
||
< $InMetDir/wrfout_d03_2012-11-15_12:00:00 ) |
< $InMetDir/wrfout_d03_2012-11-15_12:00:00 ) |
||
--- |
--- |
||
Línea 49: | Línea 54: | ||
> $InMetDir/subset_wrfout_d01_2016-07-02_00:00:00 \ |
> $InMetDir/subset_wrfout_d01_2016-07-02_00:00:00 \ |
||
> $InMetDir/subset_wrfout_d01_2016-07-03_00:00:00 ) |
> $InMetDir/subset_wrfout_d01_2016-07-03_00:00:00 ) |
||
− | 166,167c161,162 |
+ | 167,168c161,162 |
< set IfGeo = "T" |
< set IfGeo = "T" |
||
< set InGeoFile = $InGeoDir/geo_em.d03.nc |
< set InGeoFile = $InGeoDir/geo_em.d03.nc |
||
Línea 55: | Línea 60: | ||
> set IfGeo = "F" |
> set IfGeo = "F" |
||
> set InGeoFile = $InGeoDir/geo_em_d01.nc |
> set InGeoFile = $InGeoDir/geo_em_d01.nc |
||
− | 194,195c189,190 |
+ | 195,196c189,190 |
− | < set MCIP_START = 2012-11-15-00:10:00.0000 # [UTC] |
+ | < set MCIP_START = 2012-11-15-00:00:00.0000 # [UTC] |
− | < set MCIP_END = 2012-11-15-50:00:00.0000 # [UTC] |
+ | < set MCIP_END = 2012-11-15-23:00:00.0000 # [UTC] |
--- |
--- |
||
> set MCIP_START = 2016-07-02-00:00:00.0000 # [UTC] |
> set MCIP_START = 2016-07-02-00:00:00.0000 # [UTC] |
||
> set MCIP_END = 2016-07-03-00:00:00.0000 # [UTC] |
> set MCIP_END = 2016-07-03-00:00:00.0000 # [UTC] |
||
− | 197c192 |
+ | 222c216 |
− | < set INTVL = 10 # [min] |
||
− | --- |
||
− | > set INTVL = 60 # [min] |
||
− | 221c216 |
||
< set BTRIM = 5 |
< set BTRIM = 5 |
||
--- |
--- |
||
> set BTRIM = 0 |
> set BTRIM = 0 |
||
+ | 262c256 |
||
+ | < set WRF_LC_REF_LAT = -999.0 |
||
+ | --- |
||
+ | > set WRF_LC_REF_LAT = 40.0 |
||
</pre> |
</pre> |
||
+ | |||
+ | NOTA: El intervalo de salida de mcip tiene que ser el mismo que el del inventario porque sino busca con la frecuencia de mcip los datos en el inventario y no los encuentra. Siento que no debiera ser así, pero no funcionaba de otra forma. Otra cosa: La fecha de inicio y final de mcip también tiene que coincidir con la del inventario. Como el inventario empieza a las 00:00 no queda otra que mcip arranque desde ahí también. Para eso, va a necesitar el time step de las 23 del dia anterior así que si o si hay que agregar el fichero de wrf del dia anterior. |
||
Crear enlaces de los datos atmosféricos (los geo_em.d0[n].nc, ya están ahí): |
Crear enlaces de los datos atmosféricos (los geo_em.d0[n].nc, ya están ahí): |
||
<pre> |
<pre> |
||
− | ln -s /home/solange.luque/salidas/lluis.fita/estudios/ChemGBsAs/sims/weeks/20121110/control/wrfout_d03_* ./ |
+ | ln -s /home/solange.luque/salidas/lluis.fita/estudios/ChemGBsAs/sims/weeks/20121110/control/wrfout_d03_* |
+ | /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/wrf/ |
||
</pre> |
</pre> |
||
Línea 80: | Línea 91: | ||
Se obtienen los archivos: |
Se obtienen los archivos: |
||
<pre> |
<pre> |
||
− | ls /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/mcip/ |
+ | ls /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/mcip/AMBA |
− | GRIDBDY2D_160702.nc GRIDDESC LUFRAC_CRO_160702.nc METCRO2D_160702.nc METDOT3D_160702.nc SOI_CRO_160702.nc |
+ | GRIDBDY2D_AMBA.nc GRIDDESC LUFRAC_CRO_AMBA.nc METCRO2D_AMBA.nc METDOT3D_AMBA.nc SOI_CRO_AMBA.nc |
− | GRIDCRO2D_160702.nc GRIDDOT2D_160702.nc METBDY3D_160702.nc METCRO3D_160702.nc namelist.mcip |
+ | GRIDCRO2D_AMBA.nc GRIDDOT2D_AMBA.nc METBDY3D_AMBA.nc METCRO3D_AMBA.nc namelist.mcip |
+ | </pre> |
||
+ | |||
+ | |||
+ | Este fichero <code>GRIDDESC</code> contiene: |
||
+ | |||
+ | <pre> |
||
+ | ' ' |
||
+ | 'ChemGBsAs_d03' |
||
+ | 2 -35.600 -33.600 -58.400 -58.400 -34.600 |
||
+ | ' ' |
||
+ | 'ChemGBsAs_d03_cp' |
||
+ | 'ChemGBsAs_d03' -63001.098 -57000.910 1000.000 1000.000 120 114 1 |
||
+ | ' ' |
||
</pre> |
</pre> |
||
Línea 100: | Línea 111: | ||
=== inventario === |
=== inventario === |
||
− | A partir de los datos ya regrillados en los archivos <code>NOXtot.nc</code> y <code>VOCtot.nc</code>. Se leen directamente los datos de los archivos y se rellena la información. En <code>Inventarios_1k.griddesc</code>: |
+ | A partir de los datos ya regrillados en los archivos <code>NOXtot.nc</code> y <code>VOCtot.nc</code>. Se leen directamente los datos de los archivos y se rellena la información. En <code>Inventarios_AMBA.griddesc</code>: |
<pre> |
<pre> |
||
Línea 108: | Línea 119: | ||
' ' ! end coords. grids: name; xorig, yorig, xcell, ycell, ncols, nrows, nthik |
' ' ! end coords. grids: name; xorig, yorig, xcell, ycell, ncols, nrows, nthik |
||
'AMBA_emis_cp' |
'AMBA_emis_cp' |
||
− | 'AMBA_emis' -58.99 -35.05 0.00899321605 0.00899321605 84 84 1 |
+ | 'AMBA_emis' -58.99 -35.05 0.01333 0.01 84 84 1 |
' ' ! end grids |
' ' ! end grids |
||
</pre> |
</pre> |
||
+ | |||
+ | xorig e yorig son la posición (en metros, salvo en proyección latlon) del borde izquierdo inferior de la celda de columna = fila = 0. |
||
=== dominio === |
=== dominio === |
||
− | A partir de una salida de WRF y con el programa IOAPI <code>wrfgriddesc</code> se genera directamante el archivo <code>GRIDDESC</code> |
+ | A partir de una salida de WRF y con el programa IOAPI <code>wrfgriddesc</code> se genera directamante el archivo <code>GRIDDESC</code>. NO HACE FALTA. VAMOS A USAR DIRECTAMENTE EL QUE SALE DE MCIP |
Variables de entorno |
Variables de entorno |
||
Línea 156: | Línea 169: | ||
Los archivos con las emisiones de VOC y NOx para AMBA, se tienen en valores totales. Se tienen que especificar (disgregar) para cada tipo de fuente de emisión. |
Los archivos con las emisiones de VOC y NOx para AMBA, se tienen en valores totales. Se tienen que especificar (disgregar) para cada tipo de fuente de emisión. |
||
− | Para ello se utiliza la script de python <code>nc_to_m3fake.py</code> del [https://git.cima.fcen.uba.ar/solange.luque/cmaq GITcimaCMAQ]. Además de las tablas con las características de las múltiples fuentes de AMBA recopiladas en los archivos <code>Estimacion_fi_para_el_AMBA_CMAQ.xlsx</code> (estas tablas de características, así cómo también las fuentes ya regrilladas, son fruto de trabajos anteriores de Andrea Pineda Rojas, Laura E. Vengas [https://www.intechopen.com/chapters/16157 Air Quality-Models and Applications, 2011, doi: 10.5772/18767]) |
+ | Para especiar el inventario grillado se utiliza la script de python <code>nc_to_m3fake.py</code> del [https://git.cima.fcen.uba.ar/solange.luque/cmaq GITcimaCMAQ]. Además de las tablas con las características de las múltiples fuentes de AMBA recopiladas en los archivos <code>Estimacion_fi_para_el_AMBA_CMAQ.xlsx</code> (estas tablas de características, así cómo también las fuentes ya regrilladas, son fruto de trabajos anteriores de Andrea Pineda Rojas, Laura E. Vengas [https://www.intechopen.com/chapters/16157 Air Quality-Models and Applications, 2011, doi: 10.5772/18767]) |
<pre> |
<pre> |
||
Línea 163: | Línea 176: | ||
</pre> |
</pre> |
||
− | De las scripts se generan los archivos que movemos a la nueva carpeta llamada <code>contaminantes</code> junto con el griddesc del inventario <code>Inventarios_1k.griddesc</code>: |
+ | De las scripts se generan los archivos que movemos a la nueva carpeta llamada <code>contaminantes</code> junto con el griddesc del inventario <code>Inventarios_AMBA.griddesc</code>: |
<pre> |
<pre> |
||
ls contaminantes/ |
ls contaminantes/ |
||
− | ACET_AMBA ALD2_AMBA BENZENE_AMBA ETHA_AMBA Inventarios_1k.griddesc ISPD_AMBA NO_AMBA OLE_AMBA TOLU_AMBA XYLMN_AMBA |
+ | ACET_AMBA ALD2_AMBA BENZENE_AMBA ETHA_AMBA ETHY_AMBA Inventarios_AMBA.griddesc ISPD_AMBA NO2_AMBA OLE_AMBA PRPA_AMBA TOL_AMBA XYLMN_AMBA |
− | ACROLEIN_AMBA FORM_AMBA IOLE_AMBA NO2_AMBA PRPA_AMBA |
+ | ACROLEIN_AMBA ALDX_AMBA BUTADIENE13_AMBA ETH_AMBA FORM_AMBA IOLE_AMBA KET_AMBA NO_AMBA PAR_AMBA TOLU_AMBA |
</pre> |
</pre> |
||
+ | |||
+ | Para especiar el inventario de las fuentes puntuales se utiliza la script de python <code>centrales_Andrea.py</code> del [https://git.cima.fcen.uba.ar/solange.luque/cmaq GITcimaCMAQ]. Además de las tablas con los valores de las emisiones de las chimeneas recopiladas en los archivos <code>Chimeneas.xlsx</code>. (Esto no corre en el servidor porque usa pandas). |
||
+ | |||
+ | Esto genera los ficheros (Los movemos a la carpeta contaminantes/puntual): |
||
+ | |||
+ | <pre> |
||
+ | NO2_puntual NO_puntual |
||
+ | </pre> |
||
+ | |||
+ | |||
+ | == Stack parameters == |
||
+ | |||
+ | Para las fuentes puntuales aparte necesitamos un fichero que tenga datos de sus características (altura, diámetro, velocidad de salida,etc). |
||
+ | |||
+ | Para eso hay que correr el script <code>stack_parameters.py</code> del [https://git.cima.fcen.uba.ar/solange.luque/cmaq GITcimaCMAQ]. Para correr necesita el fichero de salida de MCIP <code>GRIDCRO2D_AMBA.nc</code> que tiene los datos geograficos. Además, necesita las tablas con los valores de las chimeneas que están en los archivos <code>Chimeneas.xlsx</code> y <code>DATOS CHIMENEAS.xlsx</code>. (No corre en el servidor porque usa pandas). |
||
+ | |||
+ | Esto genera los archivos: |
||
+ | |||
+ | <pre> |
||
+ | ls |
||
+ | COL LMAYOR STKDM STKVE |
||
+ | IFIP LONGITUDE STKFLW XLOCA |
||
+ | ISTACK LPING STKHT YLOCA |
||
+ | LATITUDE ROW STKCNT STKTK |
||
+ | </pre> |
||
+ | |||
+ | Los movemos a la carpeta <code>/home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/emisiones/contaminantes/stack_parameters</code>. |
||
+ | |||
== Transformación netCDF a IOAPI == |
== Transformación netCDF a IOAPI == |
||
− | La generación de un archivo en formato IOAPI desde datos en ASCII se realiza con el programa <code>m3fake</code>. Dicho programa requiere la introducción de toda la información de cada fuente de emisión. A fin de agilizar este proceso, se ha creado la script de python <code>m3fake/run_m3fake.py</code> (disponible desde [https://git.cima.fcen.uba.ar/solange.luque/cmaq GITcimaCMAQ]) que lee los distintos archivos de las emisiones (ver paso previo), y genera un archivo ASCII el cual se utiliza para correr el <code>m3fake</code>. |
+ | La generación de un archivo en formato IOAPI desde datos en ASCII se realiza con el programa <code>m3fake</code>. Dicho programa requiere la introducción de toda la información de cada fuente de emisión. Para las emisiones grillads, a fin de agilizar este proceso, se ha creado la script de python <code>m3fake/run_m3fake.py</code> (disponible desde [https://git.cima.fcen.uba.ar/solange.luque/cmaq GITcimaCMAQ]) que lee los distintos archivos de las emisiones (ver paso previo), y genera un archivo ASCII el cual se utiliza para correr el <code>m3fake</code>. |
− | Ejecutando (desde <code>CMAQ-AMBA/prueba/DATA/emisiones/contaminantes</code>): |
+ | Ejecutando (desde <code>~/estudios/CMAQ-AMBA/prueba/DATA/emisiones/contaminantes</code>): |
<pre> |
<pre> |
||
python3 /home/solange.luque/MODELOS/CMAQ/tools/m3fake/run_m3fake.py |
python3 /home/solange.luque/MODELOS/CMAQ/tools/m3fake/run_m3fake.py |
||
Línea 187: | Línea 228: | ||
Se corre el m3fake: |
Se corre el m3fake: |
||
<pre> |
<pre> |
||
− | export GRIDDESC=Inventarios_1k.griddesc |
+ | export GRIDDESC=Inventarios_AMBA.griddesc |
$ROOT_IOAPI/m3fake < args_m3fake.txt |
$ROOT_IOAPI/m3fake < args_m3fake.txt |
||
</pre> |
</pre> |
||
Línea 194: | Línea 235: | ||
<pre> |
<pre> |
||
inv_ioapi_AMBA |
inv_ioapi_AMBA |
||
+ | </pre> |
||
+ | |||
+ | Para las emisiones puntuales el proceso es similar. |
||
+ | |||
+ | Ejecutando (desde <code>~/estudios/CMAQ-AMBA/prueba/DATA/emisiones/contaminantes/puntual</code>): |
||
+ | <pre> |
||
+ | python3 /home/solange.luque/MODELOS/CMAQ/tools/centrales_to_m3fake.py |
||
+ | /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/emisiones/contaminantes/puntual |
||
+ | |||
+ | </pre> |
||
+ | |||
+ | El cuál genera el archivo: |
||
+ | <pre> |
||
+ | puntual_args_m3fake.txt |
||
+ | </pre> |
||
+ | |||
+ | Antes de correr m3fake necesitamos generar otro griddesc con los datos del dominio, pero donde las columnas sean igual a 1 y las filas igual al número de fuentes puntuales. Creamos el archivo <code>puntual.griddesc</code>. |
||
+ | |||
+ | |||
+ | <pre> |
||
+ | ' ' |
||
+ | 'puntual' |
||
+ | 2 -35.600 -33.600 -58.400 -58.400 -34.600 |
||
+ | ' ' |
||
+ | 'puntual_cp' |
||
+ | 'puntual' -63001.098 -57000.910 1000.000 1000.000 1 44 1 |
||
+ | ' ' |
||
+ | </pre> |
||
+ | |||
+ | Ahora sí, corremos m3fake. |
||
+ | |||
+ | Se corre el m3fake: |
||
+ | <pre> |
||
+ | export GRIDDESC=puntual.griddesc |
||
+ | $ROOT_IOAPI/m3fake < puntual_args_m3fake.txt |
||
+ | </pre> |
||
+ | |||
+ | Esto genera el archivo |
||
+ | |||
+ | <pre> |
||
+ | point_AMBA |
||
+ | </pre> |
||
+ | |||
+ | Para los stack_parameters es análogo. |
||
+ | |||
+ | Ejecutando (desde <code>~/estudios/CMAQ-AMBA/prueba/DATA/emisiones/contaminantes/stack_parameters</code>): |
||
+ | <pre> |
||
+ | python3 /home/solange.luque/MODELOS/CMAQ/tools/stack_to_m3fake.py |
||
+ | /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/emisiones/contaminantes/stack_parameters |
||
+ | |||
+ | </pre> |
||
+ | |||
+ | El cuál genera el archivo: |
||
+ | <pre> |
||
+ | stack_args_m3fake.txt |
||
+ | </pre> |
||
+ | |||
+ | Antes de correr m3fake necesitamos generar otro griddesc con los datos del dominio, pero donde las columnas sean igual a 1 y las filas igual al número de fuentes puntuales. Creamos el archivo <code>stack.griddesc</code>. |
||
+ | |||
+ | |||
+ | <pre> |
||
+ | ! coords --line: name; type, P-alpha, P-beta, P-gamma, xcent, ycent |
||
+ | 'ChemGBsAs_d03' |
||
+ | 2 -3.5600000D+01 -3.3600000D+01 -5.8400000D+01 -5.8400000D+01 -3.4600000D+01 |
||
+ | |||
+ | ' ' ! end coords. grids: name; xorig, yorig, xcell, ycell, ncols, nrows, nthik |
||
+ | |||
+ | 'ChemGBsAs_d03_cp' |
||
+ | 'ChemGBsAs_d03' -6.9013191E+04 -6.3011015E+04 1.0000000E+03 1.0000000E+03 1 44 1 |
||
+ | 'ChemGBsAs_d03_do' |
||
+ | 'ChemGBsAs_d03' -6.9513191E+04 -6.3511015E+04 1.0000000E+03 1.0000000E+03 133 127 1 |
||
+ | 'ChemGBsAs_d03_xs' |
||
+ | 'ChemGBsAs_d03' -6.9513191E+04 -6.3011015E+04 1.0000000E+03 1.0000000E+03 133 126 1 |
||
+ | 'ChemGBsAs_d03_ys' |
||
+ | 'ChemGBsAs_d03' -6.9013191E+04 -6.3511015E+04 1.0000000E+03 1.0000000E+03 132 127 1 |
||
+ | ' ' ! end grids |
||
+ | </pre> |
||
+ | |||
+ | Ahora sí, corremos m3fake. |
||
+ | |||
+ | Se corre el m3fake: |
||
+ | <pre> |
||
+ | export GRIDDESC=stack.griddesc |
||
+ | $ROOT_IOAPI/m3fake < stack_args_m3fake.txt |
||
+ | </pre> |
||
+ | |||
+ | Esto genera el archivo |
||
+ | |||
+ | <pre> |
||
+ | stack_AMBA |
||
</pre> |
</pre> |
||
Línea 207: | Línea 338: | ||
<pre> |
<pre> |
||
− | ln -s /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/ChemGBsAs_d03.griddesc ChemGBsAs_d03.griddesc |
+ | ln -s /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/mcip/AMBA mcip.griddesc |
</pre> |
</pre> |
||
Línea 219: | Línea 350: | ||
<pre> |
<pre> |
||
− | setenv GRIDDESC ChemGBsAs_d03.griddesc |
+ | setenv GRIDDESC mcip.griddesc |
setenv SCALEFAC 1.0 |
setenv SCALEFAC 1.0 |
||
</pre> |
</pre> |
||
Línea 227: | Línea 358: | ||
<pre> |
<pre> |
||
python3 /home/solange.luque/MODELOS/CMAQ/tools/run_m3cple.py serv |
python3 /home/solange.luque/MODELOS/CMAQ/tools/run_m3cple.py serv |
||
+ | </pre> |
||
+ | |||
+ | Esto genera el archivo ASCII |
||
+ | |||
+ | <pre> |
||
+ | args_m3cple.txt |
||
+ | </pre> |
||
+ | |||
+ | Ahora sí, se corre finalmente <code>m3cple</code>. |
||
+ | |||
+ | <pre> |
||
+ | $ROOT_IOAPI/m3cple < args_m3cple.txt |
||
</pre> |
</pre> |
||
Línea 232: | Línea 375: | ||
<pre> |
<pre> |
||
− | inv_1k_r |
+ | gridr_inv_1k |
</pre> |
</pre> |
||
Línea 252: | Línea 395: | ||
<pre> |
<pre> |
||
− | ls |
+ | [1] avprofile_cb6r3m_ae7_kmtbr_hemi2016_v53beta2_m3dry_col051_row068.csv |
− | avprofile_cb6r3m_ae7_kmtbr_hemi2016_v53beta2_m3dry_col051_row068.csv |
+ | [2] avprofile_saprc07tc_ae6_aq_derived_from_cb6r3m_ae7_kmtbr_hemi2016_v53beta2_m3dry_col051_row068.csv |
− | avprofile_saprc07tc_ae6_aq_derived_from_cb6r3m_ae7_kmtbr_hemi2016_v53beta2_m3dry_col051_row068.csv |
+ | [3] avprofile_racm_ae6_aq_derived_from_cb6r3m_ae7_kmtbr_hemi2016_v53beta2_m3dry_col051_row068.csv |
− | avprofile_racm_ae6_aq_derived_from_cb6r3m_ae7_kmtbr_hemi2016_v53beta2_m3dry_col051_row068.csv |
+ | [4] avprofile_saprc07tic_ae7i_aq_derived_from_cb6r3m_ae7_kmtbr_hemi2016_v53beta2_m3dry_col051_row068.csv |
− | avprofile_saprc07tic_ae7i_aq_derived_from_cb6r3m_ae7_kmtbr_hemi2016_v53beta2_m3dry_col051_row068.csv |
||
</pre> |
</pre> |
||
− | Cada uno de estos está calculado usando diferentes mecanismos. Debiéramos elegir uno. |
+ | Cada uno de estos está calculado usando diferentes mecanismos. Debiéramos elegir uno, que tiene que coincidir con la especiación / mecanismo de las emisiones propias. Mirar figuras (número coincide con nombre de archivo) |
+ | |||
+ | {| |
||
+ | |- |
||
+ | | [[File:CMAQ_vertical_prof_bcon_NO.png]] || [[File:CMAQ_vertical_prof_bcon_NO2.png]] |
||
+ | |- |
||
+ | | [[File:CMAQ_vertical_prof_bcon_O3.png]] || [[File:CMAQ_vertical_prof_bcon_PCVOC.png]] |
||
+ | |} |
||
Se tiene que transformar formato IOAPI utilizando las herramientas <code>icon</code> (como en [https://wiki.cima.fcen.uba.ar/mediawiki/index.php/CMAQ#Compilaci.C3.B3n_icon]) y <code>bcon</code> (como en [https://wiki.cima.fcen.uba.ar/mediawiki/index.php/CMAQ#Compilaci.C3.B3n_bcon]) |
Se tiene que transformar formato IOAPI utilizando las herramientas <code>icon</code> (como en [https://wiki.cima.fcen.uba.ar/mediawiki/index.php/CMAQ#Compilaci.C3.B3n_icon]) y <code>bcon</code> (como en [https://wiki.cima.fcen.uba.ar/mediawiki/index.php/CMAQ#Compilaci.C3.B3n_bcon]) |
||
+ | |||
+ | Empecemos por las condiciones iniciales. La carpeta de trabajo es: |
||
+ | |||
+ | <pre> |
||
+ | cd /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/PREP/icon/scripts |
||
+ | </pre> |
||
+ | |||
+ | Hay que modificar el script <code>run_icon.csh</code>. Para eso copiamos la versión vieja y modificamos. Si queremos cambiar el perfil que usamos (para usar otro mecanismo), es acá también. Por ahora lo dejé así con <code>cb6r3m_ae7</code>. |
||
+ | |||
+ | <pre> |
||
+ | cp run_icon.csh run_icon.csh.old |
||
+ | diff run_icon.csh run_icon.csh.old |
||
+ | < set APPL = AMBA #> Application Name |
||
+ | < set ICTYPE = profile #> Initial conditions type [profile|regrid] |
||
+ | --- |
||
+ | > set APPL = 2016_12SE1 #> Application Name |
||
+ | > set ICTYPE = regrid #> Initial conditions type [profile|regrid] |
||
+ | 41c41 |
||
+ | < setenv GRID_NAME ChemGBsAs_d03_cp #> check GRIDDESC file for GRID_NAME options |
||
+ | --- |
||
+ | > setenv GRID_NAME SE53BENCH #> check GRIDDESC file for GRID_NAME options |
||
+ | 43c43 |
||
+ | < setenv GRIDDESC /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/mcip/AMBA/GRIDDESC |
||
+ | --- |
||
+ | > setenv GRIDDESC /work/MOD3DATA/SE53BENCH/met/mcip/GRIDDESC |
||
+ | 88c88 |
||
+ | < set DATE = "2012-11-15" |
||
+ | --- |
||
+ | > set DATE = "2016-07-01" |
||
+ | 104c104 |
||
+ | < setenv MET_CRO_3D_FIN /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/mcip/AMBA/METCRO3D_AMBA.nc |
||
+ | --- |
||
+ | > setenv MET_CRO_3D_FIN /work/MOD3DATA/SE53BENCH/met/mcip/METCRO3D_${YYMMDD}.nc |
||
+ | |||
+ | </pre> |
||
+ | |||
+ | Y ahora ejecutamos: |
||
+ | |||
+ | <pre> |
||
+ | ./run_icon.csh |& tee run_icon.log |
||
+ | </pre> |
||
+ | |||
+ | Esto genera el fichero: |
||
+ | |||
+ | <pre> |
||
+ | /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/data/icon/ICON_v54_AMBA_profile_20121115 |
||
+ | </pre> |
||
+ | |||
+ | Ahora a las condiciones de borde. Hacemos lo mismo: Nos vamos a la carpeta de bcon y copiamos el <code>run_bcon.csh</code>. |
||
+ | |||
+ | <pre> |
||
+ | cd /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/PREP/bcon/scripts |
||
+ | cp run_bcon.csh run_bcon.csh.old |
||
+ | </pre> |
||
+ | |||
+ | Ahora lo modificamos. Acá también si queremos cambiar el perfil que usamos (para usar otro mecanismo), hay que cambiarlo. Por ahora lo dejé así con <code>cb6r3m_ae7</code>. |
||
+ | |||
+ | <pre> |
||
+ | diff run_bcon.csh run_bcon.csh.old |
||
+ | 32,33c32,33 |
||
+ | < set APPL = AMBA #> Application Name |
||
+ | < set BCTYPE = profile #> Boundary condition type [profile|regrid] |
||
+ | --- |
||
+ | > set APPL = 2016_12SE1 #> Application Name |
||
+ | > set BCTYPE = regrid #> Boundary condition type [profile|regrid] |
||
+ | 41c41 |
||
+ | < setenv GRID_NAME ChemGBsAs_d03_cp #> check GRIDDESC file for GRID_NAME options |
||
+ | --- |
||
+ | > setenv GRID_NAME SE53BENCH #> check GRIDDESC file for GRID_NAME options |
||
+ | 43c43 |
||
+ | < setenv GRIDDESC /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/mcip/AMBA/GRIDDESC |
||
+ | --- |
||
+ | > setenv GRIDDESC /work/MOD3DATA/SE53BENCH/met/mcip/GRIDDESC |
||
+ | 88c88 |
||
+ | < set DATE = "2012-11-15" |
||
+ | --- |
||
+ | > set DATE = "2016-07-01" |
||
+ | 105c105 |
||
+ | < setenv MET_BDY_3D_FIN /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/mcip/AMBA/METBDY3D_AMBA.nc |
||
+ | --- |
||
+ | > setenv MET_BDY_3D_FIN /work/MOD3DATA/SE53BENCH/met/mcip/METBDY3D_${YYMMDD}.nc</pre> |
||
+ | |||
+ | Ahora ejecutamos. |
||
+ | |||
+ | <pre> |
||
+ | ./run_bcon.csh |& tee run_bcon.log |
||
+ | </pre> |
||
+ | |||
+ | Esto crea el fichero: |
||
+ | |||
+ | <pre> |
||
+ | /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/data/bcon/BCON_v54_AMBA_profile_20121115 |
||
+ | </pre> |
||
+ | |||
+ | Ahora copiamos estos dos ficheros en el directorio de trabajo |
||
+ | |||
+ | <pre> |
||
+ | cp /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/data/bcon/BCON_v54_AMBA_profile_20121115 /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/icbc/BCON_v54_AMBA_profile_20121115 |
||
+ | cp /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/data/icon/ICON_v54_AMBA_profile_20121115 /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/icbc/ICON_v54_AMBA_profile_20121115 |
||
+ | </pre> |
||
= Configuración CMAQ = |
= Configuración CMAQ = |
||
Configurar CMAQ para determinar opciones de química y física. |
Configurar CMAQ para determinar opciones de química y física. |
||
− | |||
Primero creamos la carpeta <code>AMBA</code>: |
Primero creamos la carpeta <code>AMBA</code>: |
||
Línea 278: | Línea 520: | ||
ln -s ~/estudios/CMAQ-AMBA/prueba/DATA/mcip mcip |
ln -s ~/estudios/CMAQ-AMBA/prueba/DATA/mcip mcip |
||
ln -s ~/estudios/CMAQ-AMBA/prueba/DATA/wrf wrf |
ln -s ~/estudios/CMAQ-AMBA/prueba/DATA/wrf wrf |
||
+ | ln -s ~/estudios/CMAQ-AMBA/prueba/DATA/emisiones/ChemGBsAs_d03.griddesc GRIDDESC |
||
</pre> |
</pre> |
||
− | Creamos una carpeta para las emisiones: |
+ | Creamos una carpeta para las emisiones grilladas: |
<pre> |
<pre> |
||
Línea 293: | Línea 536: | ||
<pre> |
<pre> |
||
− | ln -s /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/emisiones/interpolacion/inv_1k_r |
+ | ln -s /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/emisiones/interpolacion/gridr_inv_1k |
/home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/data/AMBA/emis/gridded_area/gridded/gridded_AMBA |
/home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/data/AMBA/emis/gridded_area/gridded/gridded_AMBA |
||
+ | </pre> |
||
+ | |||
+ | Ahora creamos una carpeta para las emisiones puntuales. |
||
+ | |||
+ | <pre> |
||
+ | cd /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/data/AMBA/emis |
||
+ | mkdir inln_point |
||
+ | cd inln_point |
||
+ | mkdir pt_oilgas #no sé si esta la categoría que quiero, pero por ahora... |
||
+ | cd pt_oilgas |
||
+ | </pre> |
||
+ | |||
+ | Linkeo ahí el inventario. |
||
+ | |||
+ | <pre> |
||
+ | ln -s /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/emisiones/contaminantes/puntual/point_AMBA |
||
+ | /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/data/AMBA/emis/inln_point/pt_oilgas/point_AMBA |
||
+ | </pre> |
||
+ | |||
+ | Ahora generamos una carpeta para los stack parameters. |
||
+ | |||
+ | <pre> |
||
+ | cd .. |
||
+ | mkdir stack_groups |
||
+ | </pre> |
||
+ | |||
+ | Linkeamos ahí los stack_parameters. |
||
+ | |||
+ | <pre> |
||
+ | ln -s /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/emisiones/contaminantes/stack_parameters/stack_AMBA /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/data/AMBA/emis/inln_point/stack_groups/stack_AMBA |
||
</pre> |
</pre> |
||
Línea 300: | Línea 573: | ||
<pre> |
<pre> |
||
− | cd /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project |
+ | cd /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts |
cp bldit_cctm.csh bldit_cctm.csh.old |
cp bldit_cctm.csh bldit_cctm.csh.old |
||
diff bldit_cctm.csh bldit_cctm.csh.old |
diff bldit_cctm.csh bldit_cctm.csh.old |
||
+ | 134c134 |
||
+ | < setenv Mechanism cb6r3_ae7_aq #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS) |
||
+ | --- |
||
+ | > setenv Mechanism cb6r5_ae7_aq #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS) |
||
</pre> |
</pre> |
||
− | Ahora hay que editar los paths de los inputs. Esto está definido en el .csh que se corre con el modelo. Para eso nos copiamos primero uno de referencia y lo vamos a modificar. Esto está en: |
+ | Lo corremos: |
+ | |||
+ | <pre> |
||
+ | ./bldit_cctm.csh intel >& bldit_cctm_AMBA.log |
||
+ | </pre> |
||
+ | |||
+ | Nota: Si es una recompilación, hay que borrar todo antes. |
||
+ | |||
+ | <pre> |
||
+ | rm -rf BLD_CCTM_v54_intel/* |
||
+ | </pre> |
||
+ | |||
+ | Esto debiera crear al ejecutable: |
||
+ | |||
+ | <pre> |
||
+ | /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts/BLD_CCTM_v54_intel/CCTM_v54.exe |
||
+ | </pre> |
||
+ | |||
+ | Ahora hay que editar los paths de los inputs. Esto está definido en el .csh que se corre con el modelo. Para eso nos copiamos primero uno de referencia y lo vamos a modificar. Vamos a tener un script donde solo tenemos el inventario de la grilla (<code>run_AMBA_grilla.csh</code>) y otro donde tenemos tanto la grilla como las fuentes puntuales (<code>run_AMBA_grilla.csh</code>). Para solo la grilla: |
||
<pre> |
<pre> |
||
cd /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts |
cd /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts |
||
− | cp run_cctm_Bench_2016_12SE1.csh run_AMBA.csh |
+ | cp run_cctm_Bench_2016_12SE1.csh run_AMBA_grilla.csh |
+ | diff run_cctm_Bench_2016_12SE1.csh run_AMBA.csh |
||
+ | 38,39c38,39 |
||
+ | < set MECH = cb6r5_ae7_aq #> Mechanism ID |
||
+ | < set APPL = Bench_2016_12SE1 #> Application Name (e.g. Gridname) |
||
+ | --- |
||
+ | > set MECH = cb6r3_ae7_aq #> Mechanism ID |
||
+ | > set APPL = AMBA #> Application Name (e.g. Gridname) |
||
+ | 57c57 |
||
+ | < setenv INPDIR ${CMAQ_DATA}/2016_12SE1 #> Input Directory |
||
+ | --- |
||
+ | > setenv INPDIR ${CMAQ_DATA}/AMBA #> Input Directory |
||
+ | 75,76c75,76 |
||
+ | < set START_DATE = "2016-07-01" #> beginning date (July 1, 2016) |
||
+ | < set END_DATE = "2016-07-01" #> ending date (July 1, 2016) |
||
+ | --- |
||
+ | > set START_DATE = "2012-11-15" #> beginning date (July 1, 2016) |
||
+ | > set END_DATE = "2012-11-15" #> ending date (July 1, 2016) |
||
+ | 121c121 |
||
+ | < setenv GRID_NAME 2016_12SE1 #> check GRIDDESC file for GRID_NAME options |
||
+ | --- |
||
+ | > setenv GRID_NAME ChemGBsAs_d03_cp #> check GRIDDESC file for GRID_NAME options |
||
+ | 150c150 |
||
+ | < setenv CTM_OCEAN_CHEM Y #> Flag for ocean halgoen chemistry and sea spray aerosol emissions [ default: Y ] |
||
+ | --- |
||
+ | > setenv CTM_OCEAN_CHEM N #> Flag for ocean halgoen chemistry and sea spray aerosol emissions [ default: Y ] |
||
+ | 158c158 |
||
+ | < setenv CTM_ABFLUX Y #> ammonia bi-directional flux for in-line deposition |
||
+ | --- |
||
+ | > setenv CTM_ABFLUX N #> ammonia bi-directional flux for in-line deposition |
||
+ | 169c169 |
||
+ | < setenv CTM_BIOGEMIS_BE Y #> calculate in-line biogenic emissions with BEIS [ default: N ] |
||
+ | --- |
||
+ | > setenv CTM_BIOGEMIS_BE N #> calculate in-line biogenic emissions with BEIS [ default: N ] |
||
+ | 233c233 |
||
+ | < set METpath = $INPDIR/met/mcipv5.0 #> meteorology input directory |
||
+ | --- |
||
+ | > set METpath = $INPDIR/mcip/AMBA #> meteorology input directory |
||
+ | 283c283 |
||
+ | < setenv ICFILE ICON_20160630_bench.nc |
||
+ | --- |
||
+ | > setenv ICFILE ICON_v54_AMBA_profile_20121115 |
||
+ | 292c292 |
||
+ | < set BCFILE = BCON_${YYYYMMDD}_bench.nc |
||
+ | --- |
||
+ | > set BCFILE = BCON_v54_AMBA_profile_20121115 |
||
+ | 304,312c304,312 |
||
+ | < setenv GRID_BDY_2D $METpath/GRIDBDY2D_${YYMMDD}.nc # GRID files are static, not day-specific |
||
+ | < setenv GRID_CRO_2D $METpath/GRIDCRO2D_${YYMMDD}.nc |
||
+ | < setenv GRID_CRO_3D $METpath/GRIDCRO3D_${YYMMDD}.nc |
||
+ | < setenv GRID_DOT_2D $METpath/GRIDDOT2D_${YYMMDD}.nc |
||
+ | < setenv MET_CRO_2D $METpath/METCRO2D_${YYMMDD}.nc |
||
+ | < setenv MET_CRO_3D $METpath/METCRO3D_${YYMMDD}.nc |
||
+ | < setenv MET_DOT_3D $METpath/METDOT3D_${YYMMDD}.nc |
||
+ | < setenv MET_BDY_3D $METpath/METBDY3D_${YYMMDD}.nc |
||
+ | < setenv LUFRAC_CRO $METpath/LUFRAC_CRO_${YYMMDD}.nc |
||
+ | --- |
||
+ | > setenv GRID_BDY_2D $METpath/GRIDBDY2D_AMBA.nc # GRID files are static, not day-specific |
||
+ | > setenv GRID_CRO_2D $METpath/GRIDCRO2D_AMBA.nc |
||
+ | > setenv GRID_CRO_3D $METpath/GRIDCRO3D_AMBA.nc |
||
+ | > setenv GRID_DOT_2D $METpath/GRIDDOT2D_AMBA.nc |
||
+ | > setenv MET_CRO_2D $METpath/METCRO2D_AMBA.nc |
||
+ | > setenv MET_CRO_3D $METpath/METCRO3D_AMBA.nc |
||
+ | > setenv MET_DOT_3D $METpath/METDOT3D_AMBA.nc |
||
+ | > setenv MET_BDY_3D $METpath/METBDY3D_AMBA.nc |
||
+ | > setenv LUFRAC_CRO $METpath/LUFRAC_CRO_AMBA.nc |
||
+ | 344c344 |
||
+ | < setenv CMAQ_MASKS $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_SE53BENCH.nc #> horizontal grid-dependent ocean file |
||
+ | --- |
||
+ | > #setenv CMAQ_MASKS $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_SE53BENCH.nc #> horizontal grid-dependent ocean file |
||
+ | 347,348c347,348 |
||
+ | < setenv N_EMIS_GR 2 |
||
+ | < set EMISfile = emis_mole_all_${YYYYMMDD}_cb6_bench.nc |
||
+ | --- |
||
+ | > setenv N_EMIS_GR 1 |
||
+ | > set EMISfile = gridded_AMBA |
||
+ | 351c351 |
||
+ | < setenv GR_EM_SYM_DATE_001 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE |
||
+ | --- |
||
+ | > setenv GR_EM_SYM_DATE_001 Y # To change default behaviour please see Users Guide for EMIS_SYM_DATE |
||
+ | 353,356c353,356 |
||
+ | < set EMISfile = emis_mole_rwc_${YYYYMMDD}_12US1_cmaq_cb6_2016ff_16j.nc |
||
+ | < setenv GR_EMIS_002 ${EMISpath2}/${EMISfile} |
||
+ | < setenv GR_EMIS_LAB_002 GR_RES_FIRES |
||
+ | < setenv GR_EM_SYM_DATE_002 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE |
||
+ | --- |
||
+ | > #set EMISfile = emis_mole_rwc_${YYYYMMDD}_12US1_cmaq_cb6_2016ff_16j.nc |
||
+ | > #setenv GR_EMIS_002 ${EMISpath2}/${EMISfile} |
||
+ | > #setenv GR_EMIS_LAB_002 GR_RES_FIRES |
||
+ | > #setenv GR_EM_SYM_DATE_002 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE |
||
+ | 359c359 |
||
+ | < setenv N_EMIS_PT 8 #> Number of elevated source groups |
||
+ | --- |
||
+ | > #setenv N_EMIS_PT 8 #> Number of elevated source groups |
||
+ | 361,362c361,362 |
||
+ | < set STKCASEG = 12US1_2016ff_16j # Stack Group Version Label |
||
+ | < set STKCASEE = 12US1_cmaq_cb6_2016ff_16j # Stack Emission Version Label |
||
+ | --- |
||
+ | > #set STKCASEG = 12US1_2016ff_16j # Stack Group Version Label |
||
+ | > #set STKCASEE = 12US1_cmaq_cb6_2016ff_16j # Stack Emission Version Label |
||
+ | 365,372c365,372 |
||
+ | < setenv STK_GRPS_001 $IN_PTpath/stack_groups/stack_groups_ptnonipm_${STKCASEG}.nc |
||
+ | < setenv STK_GRPS_002 $IN_PTpath/stack_groups/stack_groups_ptegu_${STKCASEG}.nc |
||
+ | < setenv STK_GRPS_003 $IN_PTpath/stack_groups/stack_groups_othpt_${STKCASEG}.nc |
||
+ | < setenv STK_GRPS_004 $IN_PTpath/stack_groups/stack_groups_ptagfire_${YYYYMMDD}_${STKCASEG}.nc |
||
+ | < setenv STK_GRPS_005 $IN_PTpath/stack_groups/stack_groups_ptfire_${YYYYMMDD}_${STKCASEG}.nc |
||
+ | < setenv STK_GRPS_006 $IN_PTpath/stack_groups/stack_groups_ptfire_othna_${YYYYMMDD}_${STKCASEG}.nc |
||
+ | < setenv STK_GRPS_007 $IN_PTpath/stack_groups/stack_groups_pt_oilgas_${STKCASEG}.nc |
||
+ | < setenv STK_GRPS_008 $IN_PTpath/stack_groups/stack_groups_cmv_c3_${STKCASEG}.nc |
||
+ | --- |
||
+ | > #setenv STK_GRPS_001 $IN_PTpath/stack_groups/stack_groups_ptnonipm_${STKCASEG}.nc |
||
+ | > #setenv STK_GRPS_002 $IN_PTpath/stack_groups/stack_groups_ptegu_${STKCASEG}.nc |
||
+ | > #setenv STK_GRPS_003 $IN_PTpath/stack_groups/stack_groups_othpt_${STKCASEG}.nc |
||
+ | > #setenv STK_GRPS_004 $IN_PTpath/stack_groups/stack_groups_ptagfire_${YYYYMMDD}_${STKCASEG}.nc |
||
+ | > #setenv STK_GRPS_005 $IN_PTpath/stack_groups/stack_groups_ptfire_${YYYYMMDD}_${STKCASEG}.nc |
||
+ | > #setenv STK_GRPS_006 $IN_PTpath/stack_groups/stack_groups_ptfire_othna_${YYYYMMDD}_${STKCASEG}.nc |
||
+ | > #setenv STK_GRPS_007 $IN_PTpath/stack_groups/stack_groups_pt_oilgas_${STKCASEG}.nc |
||
+ | > #setenv STK_GRPS_008 $IN_PTpath/stack_groups/stack_groups_cmv_c3_${STKCASEG}.nc |
||
+ | 375,382c375,382 |
||
+ | < setenv STK_EMIS_001 $IN_PTpath/ptnonipm/inln_mole_ptnonipm_${YYYYMMDD}_${STKCASEE}.nc |
||
+ | < setenv STK_EMIS_002 $IN_PTpath/ptegu/inln_mole_ptegu_${YYYYMMDD}_${STKCASEE}.nc |
||
+ | < setenv STK_EMIS_003 $IN_PTpath/othpt/inln_mole_othpt_${YYYYMMDD}_${STKCASEE}.nc |
||
+ | < setenv STK_EMIS_004 $IN_PTpath/ptagfire/inln_mole_ptagfire_${YYYYMMDD}_${STKCASEE}.nc |
||
+ | < setenv STK_EMIS_005 $IN_PTpath/ptfire/inln_mole_ptfire_${YYYYMMDD}_${STKCASEE}.nc |
||
+ | < setenv STK_EMIS_006 $IN_PTpath/ptfire_othna/inln_mole_ptfire_othna_${YYYYMMDD}_${STKCASEE}.nc |
||
+ | < setenv STK_EMIS_007 $IN_PTpath/pt_oilgas/inln_mole_pt_oilgas_${YYYYMMDD}_${STKCASEE}.nc |
||
+ | < setenv STK_EMIS_008 $IN_PTpath/cmv_c3/inln_mole_cmv_c3_${YYYYMMDD}_${STKCASEE}.nc |
||
+ | --- |
||
+ | > #setenv STK_EMIS_001 $IN_PTpath/ptnonipm/inln_mole_ptnonipm_${YYYYMMDD}_${STKCASEE}.nc |
||
+ | > #setenv STK_EMIS_002 $IN_PTpath/ptegu/inln_mole_ptegu_${YYYYMMDD}_${STKCASEE}.nc |
||
+ | > #setenv STK_EMIS_003 $IN_PTpath/othpt/inln_mole_othpt_${YYYYMMDD}_${STKCASEE}.nc |
||
+ | > #setenv STK_EMIS_004 $IN_PTpath/ptagfire/inln_mole_ptagfire_${YYYYMMDD}_${STKCASEE}.nc |
||
+ | > #setenv STK_EMIS_005 $IN_PTpath/ptfire/inln_mole_ptfire_${YYYYMMDD}_${STKCASEE}.nc |
||
+ | > #setenv STK_EMIS_006 $IN_PTpath/ptfire_othna/inln_mole_ptfire_othna_${YYYYMMDD}_${STKCASEE}.nc |
||
+ | > #setenv STK_EMIS_007 $IN_PTpath/pt_oilgas/inln_mole_pt_oilgas_${YYYYMMDD}_${STKCASEE}.nc |
||
+ | > #setenv STK_EMIS_008 $IN_PTpath/cmv_c3/inln_mole_cmv_c3_${YYYYMMDD}_${STKCASEE}.nc |
||
+ | 385,392c385,392 |
||
+ | < setenv STK_EMIS_LAB_001 PT_NONEGU |
||
+ | < setenv STK_EMIS_LAB_002 PT_EGU |
||
+ | < setenv STK_EMIS_LAB_003 PT_OTHER |
||
+ | < setenv STK_EMIS_LAB_004 PT_AGFIRES |
||
+ | < setenv STK_EMIS_LAB_005 PT_FIRES |
||
+ | < setenv STK_EMIS_LAB_006 PT_OTHFIRES |
||
+ | < setenv STK_EMIS_LAB_007 PT_OILGAS |
||
+ | < setenv STK_EMIS_LAB_008 PT_CMV |
||
+ | --- |
||
+ | > #setenv STK_EMIS_LAB_001 PT_NONEGU |
||
+ | > #setenv STK_EMIS_LAB_002 PT_EGU |
||
+ | > #setenv STK_EMIS_LAB_003 PT_OTHER |
||
+ | > #setenv STK_EMIS_LAB_004 PT_AGFIRES |
||
+ | > #setenv STK_EMIS_LAB_005 PT_FIRES |
||
+ | > #setenv STK_EMIS_LAB_006 PT_OTHFIRES |
||
+ | > #setenv STK_EMIS_LAB_007 PT_OILGAS |
||
+ | > #setenv STK_EMIS_LAB_008 PT_CMV |
||
+ | 397,404c397,404 |
||
+ | < setenv STK_EM_SYM_DATE_001 T |
||
+ | < setenv STK_EM_SYM_DATE_002 T |
||
+ | < setenv STK_EM_SYM_DATE_003 T |
||
+ | < setenv STK_EM_SYM_DATE_004 T |
||
+ | < setenv STK_EM_SYM_DATE_005 T |
||
+ | < setenv STK_EM_SYM_DATE_006 T |
||
+ | < setenv STK_EM_SYM_DATE_007 T |
||
+ | < setenv STK_EM_SYM_DATE_008 T |
||
+ | --- |
||
+ | > #setenv STK_EM_SYM_DATE_001 T |
||
+ | > #setenv STK_EM_SYM_DATE_002 T |
||
+ | > #setenv STK_EM_SYM_DATE_003 T |
||
+ | > #setenv STK_EM_SYM_DATE_004 T |
||
+ | > #setenv STK_EM_SYM_DATE_005 T |
||
+ | > #setenv STK_EM_SYM_DATE_006 T |
||
+ | > #setenv STK_EM_SYM_DATE_007 T |
||
+ | > #setenv STK_EM_SYM_DATE_008 T |
||
+ | 444c444 |
||
+ | < setenv OCEAN_1 $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_SE53BENCH.nc #> horizontal grid-dependent ocean file |
||
+ | --- |
||
+ | > #setenv OCEAN_1 $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_SE53BENCH.nc #> horizontal grid-dependent ocean file |
||
+ | 710c710,711 |
||
+ | < ( /usr/bin/time -p mpirun -np $NPROCS $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt |
||
+ | --- |
||
+ | > # ( /usr/bin/time -p mpirun -np $NPROCS $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt |
||
+ | > (mpirun -np $NPROCS $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt |
||
</pre> |
</pre> |
||
+ | |||
+ | |||
+ | Para el script con tanto la grilla como las fuentes puntuales: |
||
+ | <pre> |
||
+ | cp run_AMBA_grilla.csh run_AMBA.csh |
||
+ | diff run_AMBA_grilla.csh run_AMBA.csh |
||
+ | 359c359 |
||
+ | < #setenv N_EMIS_PT 8 #> Number of elevated source groups |
||
+ | --- |
||
+ | > setenv N_EMIS_PT 1 #> Number of elevated source groups |
||
+ | 361,362c361,362 |
||
+ | < #set STKCASEG = 12US1_2016ff_16j # Stack Group Version Label |
||
+ | < #set STKCASEE = 12US1_cmaq_cb6_2016ff_16j # Stack Emission Version Label |
||
+ | --- |
||
+ | > set STKCASEG = AMBA # Stack Group Version Label |
||
+ | > set STKCASEE = AMBA # Stack Emission Version Label |
||
+ | 365c365 |
||
+ | < #setenv STK_GRPS_001 $IN_PTpath/stack_groups/stack_groups_ptnonipm_${STKCASEG}.nc |
||
+ | --- |
||
+ | > setenv STK_GRPS_001 $IN_PTpath/stack_groups/stack_AMBA |
||
+ | 381c381 |
||
+ | < #setenv STK_EMIS_007 $IN_PTpath/pt_oilgas/inln_mole_pt_oilgas_${YYYYMMDD}_${STKCASEE}.nc |
||
+ | --- |
||
+ | > setenv STK_EMIS_001 $IN_PTpath/pt_oilgas/point_AMBA |
||
+ | 391c391 |
||
+ | < #setenv STK_EMIS_LAB_007 PT_OILGAS |
||
+ | --- |
||
+ | > setenv STK_EMIS_LAB_001 PT_OILGAS |
||
+ | 397c397 |
||
+ | < #setenv STK_EM_SYM_DATE_001 T |
||
+ | --- |
||
+ | > setenv STK_EM_SYM_DATE_001 T |
||
+ | |||
+ | </pre> |
||
+ | |||
+ | |||
+ | '''NOTAS sobre la configuración:''' |
||
+ | * Acerca de la estabilidad numérica y CFLs, leer este [https://forum.cmascenter.org/t/questions-on-cmaq-ctm-maxsync-and-ctm-adv-cfl-settings/3454 post] en el foro CMAS |
||
+ | |||
+ | |||
+ | == Escabilidad en el servidor == |
||
+ | |||
+ | Si queremos cambiar el número de procesos que queremos usar para correr el modelo esto también se puede cambiar en <code>run_AMBA.csh</code>, cambiando los valores de: |
||
+ | |||
+ | <pre> |
||
+ | @ NPCOL = 8; @ NPROW = 4 |
||
+ | </pre> |
||
+ | |||
+ | Donde el número de procesos totales será NPROCS = NPCOL*NPROW. |
||
+ | |||
+ | |||
+ | Para entender cuál es el número más apropiado de procesadores se corrió el dia de prueba varias veces con distintos valores de NPROCS. Luego, se calculó el speedup (S) para cada caso donde S = T(1)/T(n) siendo T(1) el tiempo que tarda en correr con un solo procesador y T(n) el tiempo que tarda con n. Para conocer T(1), se corrió el modelo con un solo procesador por unas pocas horas y luego se promedió el tiempo que tardaba por paso para saber cuanto tardaría aproximadamente en terminar de correr el dia entero. |
||
+ | |||
+ | Idealmente, el speedup crece de forma lineal con el número de procesadores. |
||
+ | |||
+ | [[File:Nprocs_speedup.png]] |
||
+ | |||
+ | Como se puede ver, en el rango aproximado de NPROCS = 50-100, el speed up real es levemente mayor que el ideal. Esto no debiera pasar, pero se debe muy probablemente a que el valor de T(1) utilizado para hacer los cálculos es aproximado y no real. Por el otro lado, a partir de NPROCS = 150, el speedup real se empieza a alejar cada vez más del ideal. Sin embargo, hasta NPROCS = 244 se sigue viendo mejora en el tiempo de corrida. Por encima de este valor, el modelo tarda más en correr. |
||
= Simulado CMAQ = |
= Simulado CMAQ = |
||
− | Simular CMAQ |
+ | |
+ | Ahora sí, solo queda correr el modelo. El directorio de trabajo es |
||
+ | |||
+ | <pre> |
||
+ | WORKDIR = /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts |
||
+ | </pre> |
||
+ | |||
+ | Para correr en la cola de Hydra necesitamos un script. Nos copiamos uno que ya hay: |
||
+ | |||
+ | <pre> |
||
+ | cp launch_cctm_intel.pbs launch_cctm_intel_AMBA.pbs |
||
+ | </pre> |
||
+ | |||
+ | Lo modificamos: |
||
+ | |||
+ | <pre> |
||
+ | diff launch_cctm_intel.pbs launch_cctm_intel_AMBA.pbs |
||
+ | 38c38 |
||
+ | < ./run_cctm_Bench_2018_12NE3.csh >& run_Bench_2018-12NE3.log |
||
+ | --- |
||
+ | > ./run_AMBA.csh >& run_AMBA.log |
||
+ | </pre> |
||
+ | |||
+ | Si queremos cambiar el número de procesos también hay que cambiar las líneas: |
||
+ | |||
+ | <pre> |
||
+ | #PBS nodes=1:ppn=32 |
||
+ | </pre> |
||
+ | |||
+ | Donde se debe cumplir que nodes*ppn = NPROCS = NPCOL*NPROW |
||
+ | |||
+ | Hay un par de tablas que necesitamos del mecanismo que estamos usando En este caso cb6r3_ae7_aq). Se pueden encontrar [https://github.com/USEPA/CMAQ/tree/main/CCTM/src/MECHS/cb6r3_ae7_aq acá], |
||
+ | |||
+ | Las creamos y le copiamos los datos: |
||
+ | |||
+ | <pre> |
||
+ | nano /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts/BLD_CCTM_v54_intel/CSQY_DATA_cb6r3_ae7_aq |
||
+ | nano /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts/BLD_CCTM_v54_intel/GC_cb6r3_ae7_aq.nml |
||
+ | nano /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts/BLD_CCTM_v54_intel/AE_cb6r3_ae7_aq.nml |
||
+ | nano /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts/BLD_CCTM_v54_intel/NR_cb6r3_ae7_aq.nml |
||
+ | nano /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts/BLD_CCTM_v54_intel/CMAQ_Control_DESID_cb6r3_ae7_aq.nml |
||
+ | nano /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts/BLD_CCTM_v54_intel/SpecDef_Dep_cb6r3_ae7_aq.txt |
||
+ | nano /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts/BLD_CCTM_v54_intel/SpecDef_cb6r3_ae7_aq.txt |
||
+ | nano /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts/BLD_CCTM_v54_intel/mech_cb6r3_ae7_aq.def |
||
+ | nano /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts/BLD_CCTM_v54_intel/pa_cb6r3_ae7_aq.ctl |
||
+ | </pre> |
||
+ | |||
+ | |||
+ | Ahora sí, corremos: |
||
+ | |||
+ | <pre> |
||
+ | qsub launch_cctm_intel_AMBA.pbs |
||
+ | </pre> |
||
+ | |||
+ | Si hay algún error, conviene mirar en el log de que nodo está el problema: |
||
+ | |||
+ | <pre> |
||
+ | grep -i error CTM_LOG* |
||
+ | </pre> |
||
+ | |||
+ | Si todo salió bien, se deberían generar los ficheros en el directorio: |
||
+ | |||
+ | <pre> |
||
+ | /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/data/output_CCTM_v54_intel_AMBA |
||
+ | </pre> |
||
+ | |||
+ | Deberíamos tener los siguientes ficheros: |
||
+ | |||
+ | <pre> |
||
+ | CCTM_ACONC_v54_intel_AMBA_20121115.nc |
||
+ | CCTM_AELMO_v54_intel_AMBA_20121115.nc |
||
+ | CCTM_BUDGET_v54_intel_AMBA_20121115.txt |
||
+ | CCTM_CONC_v54_intel_AMBA_20121115.nc |
||
+ | CCTM_DRYDEP_v54_intel_AMBA_20121115.nc |
||
+ | CCTM_v54_intel_AMBA_20121115.cfg |
||
+ | CCTM_WETDEP1_v54_intel_AMBA_20121115.nc |
||
+ | LOGS |
||
+ | </pre> |
||
+ | |||
+ | La data en estos ficheros eso: |
||
+ | |||
+ | <pre> |
||
+ | ACONC: Hourly average concentration file |
||
+ | AELMO: Average hourly ELMO (Explicit and Lumped Model Output) output file. Este fichero es opcional |
||
+ | BUDGET: Budget Tool Output File. Outputs domain-wide changes for user-specified species every output time step. Opcional |
||
+ | CONC: Hourly instantaneous concentration file |
||
+ | DRYDEP: Hourly cumulative dry deposition file. Opcional |
||
+ | WETDEP: Hourly cumulative wet deposition file. Opcional |
||
+ | </pre> |
Última revisión de 11:52 30 mayo 2024
Prueba de simulado en AMBA
WORKDIR = /home/solange.luque/estudios/CMAQ-AMBA/prueba
Contenido |
[editar] Datos atmosféricos
Se parte de simulaciones de WRF ya realizadas ver referencia.
Datos en:
/home/solange.luque/salidas/lluis.fita/estudios/ChemGBsAs/sims/weeks/20121110/control
[editar] mcip
Se utiliza el programa de CMAQ mcip
(MCIP-epa) para generar los archivos con las condiciones atmosféricas necesarias para CMAQ. Seguimos los mismos pasos que [1]
Tener la script para correr el programa:
export CMAQ_HOME=/home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/ cd /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/PREP/mcip/scripts diff run_mcip.csh run_mcip.csh.old 125,128c125 < # config_cmaq.csh modifies $CMAQ_HOME < set val = $CMAQ_HOME < source $CMAQ_HOME/config_cmaq.csh intel < set CMAQ_HOME = $val --- > source $CMAQ_HOME/config_cmaq.csh 129a127,129 > set APPL = 160702 > set CoordName = LamCon_40N_97W # 16-character maximum > set GridName = 2016_12SE1 # 16-character maximum 131,136c131,132 < set APPL = AMBA < set CoordName = ChemGBsAs_d03 # 16-character maximum < set GridName = ChemGBsAs_d03_cp # 16-character maximum < < set DataPath = /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA < set InMetDir = $DataPath/wrf --- > set DataPath = $CMAQ_DATA > set InMetDir = $DataPath/wrf 138c134 < set OutDir = $DataPath/mcip/$APPL --- > set OutDir = $DataPath/mcip/$GridName 142,143d137 < < 163,165c157,159 < set InMetFiles = ( $InMetDir/wrfout_d03_2012-11-14_12:00:00 \ < $InMetDir/wrfout_d03_2012-11-15_00:00:00 \ < $InMetDir/wrfout_d03_2012-11-15_12:00:00 ) --- > set InMetFiles = ( $InMetDir/subset_wrfout_d01_2016-07-01_00:00:00 \ > $InMetDir/subset_wrfout_d01_2016-07-02_00:00:00 \ > $InMetDir/subset_wrfout_d01_2016-07-03_00:00:00 ) 167,168c161,162 < set IfGeo = "T" < set InGeoFile = $InGeoDir/geo_em.d03.nc --- > set IfGeo = "F" > set InGeoFile = $InGeoDir/geo_em_d01.nc 195,196c189,190 < set MCIP_START = 2012-11-15-00:00:00.0000 # [UTC] < set MCIP_END = 2012-11-15-23:00:00.0000 # [UTC] --- > set MCIP_START = 2016-07-02-00:00:00.0000 # [UTC] > set MCIP_END = 2016-07-03-00:00:00.0000 # [UTC] 222c216 < set BTRIM = 5 --- > set BTRIM = 0 262c256 < set WRF_LC_REF_LAT = -999.0 --- > set WRF_LC_REF_LAT = 40.0
NOTA: El intervalo de salida de mcip tiene que ser el mismo que el del inventario porque sino busca con la frecuencia de mcip los datos en el inventario y no los encuentra. Siento que no debiera ser así, pero no funcionaba de otra forma. Otra cosa: La fecha de inicio y final de mcip también tiene que coincidir con la del inventario. Como el inventario empieza a las 00:00 no queda otra que mcip arranque desde ahí también. Para eso, va a necesitar el time step de las 23 del dia anterior así que si o si hay que agregar el fichero de wrf del dia anterior.
Crear enlaces de los datos atmosféricos (los geo_em.d0[n].nc, ya están ahí):
ln -s /home/solange.luque/salidas/lluis.fita/estudios/ChemGBsAs/sims/weeks/20121110/control/wrfout_d03_* /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/wrf/
Ejecutando:
source /opt/load-libs.sh 1 ./run_mcip.csh >& run_mcip.log
Se obtienen los archivos:
ls /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/mcip/AMBA GRIDBDY2D_AMBA.nc GRIDDESC LUFRAC_CRO_AMBA.nc METCRO2D_AMBA.nc METDOT3D_AMBA.nc SOI_CRO_AMBA.nc GRIDCRO2D_AMBA.nc GRIDDOT2D_AMBA.nc METBDY3D_AMBA.nc METCRO3D_AMBA.nc namelist.mcip
Este fichero GRIDDESC
contiene:
' ' 'ChemGBsAs_d03' 2 -35.600 -33.600 -58.400 -58.400 -34.600 ' ' 'ChemGBsAs_d03_cp' 'ChemGBsAs_d03' -63001.098 -57000.910 1000.000 1000.000 120 114 1 ' '
[editar] Inventarios
Inventarios de emisiones y prepararlos para CMAQ.
Seguimos los pasos de [2]
El directorio de trabajo en hydra es:
WORKDIR = /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/emisiones
[editar] Generación GRIDDESC
Generación de los archivos ASCII de información de las proyecciones (GRIDDESC) en las cuáles se encuentran los distintos datos.
[editar] inventario
A partir de los datos ya regrillados en los archivos NOXtot.nc
y VOCtot.nc
. Se leen directamente los datos de los archivos y se rellena la información. En Inventarios_AMBA.griddesc
:
! coords --line: name; type, P-alpha, P-beta, P-gamma, xcent, ycent 'AMBA_emis' 1, 0.0D0, 0.0D0, 0.0D0, 0.0D0, 0.0D0 ' ' ! end coords. grids: name; xorig, yorig, xcell, ycell, ncols, nrows, nthik 'AMBA_emis_cp' 'AMBA_emis' -58.99 -35.05 0.01333 0.01 84 84 1 ' ' ! end grids
xorig e yorig son la posición (en metros, salvo en proyección latlon) del borde izquierdo inferior de la celda de columna = fila = 0.
[editar] dominio
A partir de una salida de WRF y con el programa IOAPI wrfgriddesc
se genera directamante el archivo GRIDDESC
. NO HACE FALTA. VAMOS A USAR DIRECTAMENTE EL QUE SALE DE MCIP
Variables de entorno
setenv PROMPTFLAG no setenv WRFFILE /home/solange.luque/salidas/lluis.fita/estudios/ChemGBsAs/sims/weeks/20121110/control/wrfout_d03_2012-11-13_00:00:00 setenv OUTDESC /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/ChemGBsAs_d03.griddesc setenv CRDNAME ChemGBsAs_d03 setenv CROGRID ChemGBsAs_d03_cpgrd setenv DOTGRID ChemGBsAs_d03_dotgrd setenv STXGRID ChemGBsAs_d03_xstag setenv STYGRID ChemGBsAs_d03_ystag
Ejecutando:
setenv ROOT_IOAPI /home/solange.luque/libraries/ioapi/v3.2-20200828/gnu/Linux2_x86_64/ ${ROOT_IOAPI}/wrfgriddesc >& run_wrfgriddesc.log
El contenido de ChemGBsAs_d03.griddesc
! coords --line: name; type, P-alpha, P-beta, P-gamma, xcent, ycent 'ChemGBsAs_d03' 2 -3.5600000D+01 -3.3600000D+01 -5.8400000D+01 -5.8400000D+01 -3.4600000D+01 ' ' ! end coords. grids: name; xorig, yorig, xcell, ycell, ncols, nrows, nthik 'ChemGBsAs_d03_cp' 'ChemGBsAs_d03' -6.9013191E+04 -6.3011015E+04 1.0000000E+03 1.0000000E+03 132 126 1 'ChemGBsAs_d03_do' 'ChemGBsAs_d03' -6.9513191E+04 -6.3511015E+04 1.0000000E+03 1.0000000E+03 133 127 1 'ChemGBsAs_d03_xs' 'ChemGBsAs_d03' -6.9513191E+04 -6.3011015E+04 1.0000000E+03 1.0000000E+03 133 126 1 'ChemGBsAs_d03_ys' 'ChemGBsAs_d03' -6.9013191E+04 -6.3511015E+04 1.0000000E+03 1.0000000E+03 132 127 1 ' ' ! end grids
[editar] Especiación emisiones
Los archivos con las emisiones de VOC y NOx para AMBA, se tienen en valores totales. Se tienen que especificar (disgregar) para cada tipo de fuente de emisión.
Para especiar el inventario grillado se utiliza la script de python nc_to_m3fake.py
del GITcimaCMAQ. Además de las tablas con las características de las múltiples fuentes de AMBA recopiladas en los archivos Estimacion_fi_para_el_AMBA_CMAQ.xlsx
(estas tablas de características, así cómo también las fuentes ya regrilladas, son fruto de trabajos anteriores de Andrea Pineda Rojas, Laura E. Vengas Air Quality-Models and Applications, 2011, doi: 10.5772/18767)
python3 nc_to_m3fake.py NOXtot.nc NOx /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/emisiones/ python3 nc_to_m3fake.py VOCtot.nc VOC /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/emisiones/
De las scripts se generan los archivos que movemos a la nueva carpeta llamada contaminantes
junto con el griddesc del inventario Inventarios_AMBA.griddesc
:
ls contaminantes/ ACET_AMBA ALD2_AMBA BENZENE_AMBA ETHA_AMBA ETHY_AMBA Inventarios_AMBA.griddesc ISPD_AMBA NO2_AMBA OLE_AMBA PRPA_AMBA TOL_AMBA XYLMN_AMBA ACROLEIN_AMBA ALDX_AMBA BUTADIENE13_AMBA ETH_AMBA FORM_AMBA IOLE_AMBA KET_AMBA NO_AMBA PAR_AMBA TOLU_AMBA
Para especiar el inventario de las fuentes puntuales se utiliza la script de python centrales_Andrea.py
del GITcimaCMAQ. Además de las tablas con los valores de las emisiones de las chimeneas recopiladas en los archivos Chimeneas.xlsx
. (Esto no corre en el servidor porque usa pandas).
Esto genera los ficheros (Los movemos a la carpeta contaminantes/puntual):
NO2_puntual NO_puntual
[editar] Stack parameters
Para las fuentes puntuales aparte necesitamos un fichero que tenga datos de sus características (altura, diámetro, velocidad de salida,etc).
Para eso hay que correr el script stack_parameters.py
del GITcimaCMAQ. Para correr necesita el fichero de salida de MCIP GRIDCRO2D_AMBA.nc
que tiene los datos geograficos. Además, necesita las tablas con los valores de las chimeneas que están en los archivos Chimeneas.xlsx
y DATOS CHIMENEAS.xlsx
. (No corre en el servidor porque usa pandas).
Esto genera los archivos:
ls COL LMAYOR STKDM STKVE IFIP LONGITUDE STKFLW XLOCA ISTACK LPING STKHT YLOCA LATITUDE ROW STKCNT STKTK
Los movemos a la carpeta /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/emisiones/contaminantes/stack_parameters
.
[editar] Transformación netCDF a IOAPI
La generación de un archivo en formato IOAPI desde datos en ASCII se realiza con el programa m3fake
. Dicho programa requiere la introducción de toda la información de cada fuente de emisión. Para las emisiones grillads, a fin de agilizar este proceso, se ha creado la script de python m3fake/run_m3fake.py
(disponible desde GITcimaCMAQ) que lee los distintos archivos de las emisiones (ver paso previo), y genera un archivo ASCII el cual se utiliza para correr el m3fake
.
Ejecutando (desde ~/estudios/CMAQ-AMBA/prueba/DATA/emisiones/contaminantes
):
python3 /home/solange.luque/MODELOS/CMAQ/tools/m3fake/run_m3fake.py /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/emisiones/contaminantes /home/solange.luque/libraries/ioapi/v3.2-20200828/gnu/Linux2_x86_64/m3fake
El cuál genera el archivo:
args_m3fake.txt
Se corre el m3fake:
export GRIDDESC=Inventarios_AMBA.griddesc $ROOT_IOAPI/m3fake < args_m3fake.txt
El cuál genera el archivo:
inv_ioapi_AMBA
Para las emisiones puntuales el proceso es similar.
Ejecutando (desde ~/estudios/CMAQ-AMBA/prueba/DATA/emisiones/contaminantes/puntual
):
python3 /home/solange.luque/MODELOS/CMAQ/tools/centrales_to_m3fake.py /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/emisiones/contaminantes/puntual
El cuál genera el archivo:
puntual_args_m3fake.txt
Antes de correr m3fake necesitamos generar otro griddesc con los datos del dominio, pero donde las columnas sean igual a 1 y las filas igual al número de fuentes puntuales. Creamos el archivo puntual.griddesc
.
' ' 'puntual' 2 -35.600 -33.600 -58.400 -58.400 -34.600 ' ' 'puntual_cp' 'puntual' -63001.098 -57000.910 1000.000 1000.000 1 44 1 ' '
Ahora sí, corremos m3fake.
Se corre el m3fake:
export GRIDDESC=puntual.griddesc $ROOT_IOAPI/m3fake < puntual_args_m3fake.txt
Esto genera el archivo
point_AMBA
Para los stack_parameters es análogo.
Ejecutando (desde ~/estudios/CMAQ-AMBA/prueba/DATA/emisiones/contaminantes/stack_parameters
):
python3 /home/solange.luque/MODELOS/CMAQ/tools/stack_to_m3fake.py /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/emisiones/contaminantes/stack_parameters
El cuál genera el archivo:
stack_args_m3fake.txt
Antes de correr m3fake necesitamos generar otro griddesc con los datos del dominio, pero donde las columnas sean igual a 1 y las filas igual al número de fuentes puntuales. Creamos el archivo stack.griddesc
.
! coords --line: name; type, P-alpha, P-beta, P-gamma, xcent, ycent 'ChemGBsAs_d03' 2 -3.5600000D+01 -3.3600000D+01 -5.8400000D+01 -5.8400000D+01 -3.4600000D+01 ' ' ! end coords. grids: name; xorig, yorig, xcell, ycell, ncols, nrows, nthik 'ChemGBsAs_d03_cp' 'ChemGBsAs_d03' -6.9013191E+04 -6.3011015E+04 1.0000000E+03 1.0000000E+03 1 44 1 'ChemGBsAs_d03_do' 'ChemGBsAs_d03' -6.9513191E+04 -6.3511015E+04 1.0000000E+03 1.0000000E+03 133 127 1 'ChemGBsAs_d03_xs' 'ChemGBsAs_d03' -6.9513191E+04 -6.3011015E+04 1.0000000E+03 1.0000000E+03 133 126 1 'ChemGBsAs_d03_ys' 'ChemGBsAs_d03' -6.9013191E+04 -6.3511015E+04 1.0000000E+03 1.0000000E+03 132 127 1 ' ' ! end grids
Ahora sí, corremos m3fake.
Se corre el m3fake:
export GRIDDESC=stack.griddesc $ROOT_IOAPI/m3fake < stack_args_m3fake.txt
Esto genera el archivo
stack_AMBA
[editar] Interpolación a dominio de simulación
Para interpolar el inventario al dominio de simulación vamos a trabajar en:
WORKDIR = /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/emisiones/interpolacion
Necesitamos acá el griddesc del dominio de simulación. Lo podemos linkear:
ln -s /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/mcip/AMBA mcip.griddesc
Necesitamos también el inventario en IOAPI que acabamos de crear:
ln -s /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/emisiones/contaminantes/inv_ioapi_AMBA inv_1k
Variables de entorno:
setenv GRIDDESC mcip.griddesc setenv SCALEFAC 1.0
Ahora queda correr el script de python que genera los argumentos para correr m3cple
(Si quisieramos cambiarle el nombre a los ficheros hay que modificarlo ahí. En el script o a mano en el .txt, es lo mismo)
python3 /home/solange.luque/MODELOS/CMAQ/tools/run_m3cple.py serv
Esto genera el archivo ASCII
args_m3cple.txt
Ahora sí, se corre finalmente m3cple
.
$ROOT_IOAPI/m3cple < args_m3cple.txt
Esto genera el fichero IOAPI:
gridr_inv_1k
[editar] C.I. y C.C. químicas
Condiciones de contorno e iniciales para la química atmosférica
El directorio de trabajo en hydra es:
WORKDIR = /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/icbc
Como un primer acercamiento, vamos a usar de condiciones de contorno e iniciales los perfiles verticales que vienen por default con CMAQ. Los linkeamos acá:
ln -s /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/PREP/bcon/src/profile/avprofile_* .
Deberíamos tener:
[1] avprofile_cb6r3m_ae7_kmtbr_hemi2016_v53beta2_m3dry_col051_row068.csv [2] avprofile_saprc07tc_ae6_aq_derived_from_cb6r3m_ae7_kmtbr_hemi2016_v53beta2_m3dry_col051_row068.csv [3] avprofile_racm_ae6_aq_derived_from_cb6r3m_ae7_kmtbr_hemi2016_v53beta2_m3dry_col051_row068.csv [4] avprofile_saprc07tic_ae7i_aq_derived_from_cb6r3m_ae7_kmtbr_hemi2016_v53beta2_m3dry_col051_row068.csv
Cada uno de estos está calculado usando diferentes mecanismos. Debiéramos elegir uno, que tiene que coincidir con la especiación / mecanismo de las emisiones propias. Mirar figuras (número coincide con nombre de archivo)
Se tiene que transformar formato IOAPI utilizando las herramientas icon
(como en [3]) y bcon
(como en [4])
Empecemos por las condiciones iniciales. La carpeta de trabajo es:
cd /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/PREP/icon/scripts
Hay que modificar el script run_icon.csh
. Para eso copiamos la versión vieja y modificamos. Si queremos cambiar el perfil que usamos (para usar otro mecanismo), es acá también. Por ahora lo dejé así con cb6r3m_ae7
.
cp run_icon.csh run_icon.csh.old diff run_icon.csh run_icon.csh.old < set APPL = AMBA #> Application Name < set ICTYPE = profile #> Initial conditions type [profile|regrid] --- > set APPL = 2016_12SE1 #> Application Name > set ICTYPE = regrid #> Initial conditions type [profile|regrid] 41c41 < setenv GRID_NAME ChemGBsAs_d03_cp #> check GRIDDESC file for GRID_NAME options --- > setenv GRID_NAME SE53BENCH #> check GRIDDESC file for GRID_NAME options 43c43 < setenv GRIDDESC /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/mcip/AMBA/GRIDDESC --- > setenv GRIDDESC /work/MOD3DATA/SE53BENCH/met/mcip/GRIDDESC 88c88 < set DATE = "2012-11-15" --- > set DATE = "2016-07-01" 104c104 < setenv MET_CRO_3D_FIN /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/mcip/AMBA/METCRO3D_AMBA.nc --- > setenv MET_CRO_3D_FIN /work/MOD3DATA/SE53BENCH/met/mcip/METCRO3D_${YYMMDD}.nc
Y ahora ejecutamos:
./run_icon.csh |& tee run_icon.log
Esto genera el fichero:
/home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/data/icon/ICON_v54_AMBA_profile_20121115
Ahora a las condiciones de borde. Hacemos lo mismo: Nos vamos a la carpeta de bcon y copiamos el run_bcon.csh
.
cd /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/PREP/bcon/scripts cp run_bcon.csh run_bcon.csh.old
Ahora lo modificamos. Acá también si queremos cambiar el perfil que usamos (para usar otro mecanismo), hay que cambiarlo. Por ahora lo dejé así con cb6r3m_ae7
.
diff run_bcon.csh run_bcon.csh.old 32,33c32,33 < set APPL = AMBA #> Application Name < set BCTYPE = profile #> Boundary condition type [profile|regrid] --- > set APPL = 2016_12SE1 #> Application Name > set BCTYPE = regrid #> Boundary condition type [profile|regrid] 41c41 < setenv GRID_NAME ChemGBsAs_d03_cp #> check GRIDDESC file for GRID_NAME options --- > setenv GRID_NAME SE53BENCH #> check GRIDDESC file for GRID_NAME options 43c43 < setenv GRIDDESC /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/mcip/AMBA/GRIDDESC --- > setenv GRIDDESC /work/MOD3DATA/SE53BENCH/met/mcip/GRIDDESC 88c88 < set DATE = "2012-11-15" --- > set DATE = "2016-07-01" 105c105 < setenv MET_BDY_3D_FIN /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/mcip/AMBA/METBDY3D_AMBA.nc --- > setenv MET_BDY_3D_FIN /work/MOD3DATA/SE53BENCH/met/mcip/METBDY3D_${YYMMDD}.nc
Ahora ejecutamos.
./run_bcon.csh |& tee run_bcon.log
Esto crea el fichero:
/home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/data/bcon/BCON_v54_AMBA_profile_20121115
Ahora copiamos estos dos ficheros en el directorio de trabajo
cp /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/data/bcon/BCON_v54_AMBA_profile_20121115 /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/icbc/BCON_v54_AMBA_profile_20121115 cp /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/data/icon/ICON_v54_AMBA_profile_20121115 /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/icbc/ICON_v54_AMBA_profile_20121115
[editar] Configuración CMAQ
Configurar CMAQ para determinar opciones de química y física.
Primero creamos la carpeta AMBA
:
mkdir /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/data/AMBA
En esa carpeta vamos a linkear los inputs.
ln -s ~/estudios/CMAQ-AMBA/prueba/DATA/icbc icbc ln -s ~/estudios/CMAQ-AMBA/prueba/DATA/mcip mcip ln -s ~/estudios/CMAQ-AMBA/prueba/DATA/wrf wrf ln -s ~/estudios/CMAQ-AMBA/prueba/DATA/emisiones/ChemGBsAs_d03.griddesc GRIDDESC
Creamos una carpeta para las emisiones grilladas:
mkdir emis cd emis mkdir gridded_area cd gridded_area mkdir gridded
Linkeamos el inventario ahí:
ln -s /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/emisiones/interpolacion/gridr_inv_1k /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/data/AMBA/emis/gridded_area/gridded/gridded_AMBA
Ahora creamos una carpeta para las emisiones puntuales.
cd /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/data/AMBA/emis mkdir inln_point cd inln_point mkdir pt_oilgas #no sé si esta la categoría que quiero, pero por ahora... cd pt_oilgas
Linkeo ahí el inventario.
ln -s /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/emisiones/contaminantes/puntual/point_AMBA /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/data/AMBA/emis/inln_point/pt_oilgas/point_AMBA
Ahora generamos una carpeta para los stack parameters.
cd .. mkdir stack_groups
Linkeamos ahí los stack_parameters.
ln -s /home/solange.luque/estudios/CMAQ-AMBA/prueba/DATA/emisiones/contaminantes/stack_parameters/stack_AMBA /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/data/AMBA/emis/inln_point/stack_groups/stack_AMBA
Primero hay que editar bldit_cctm.csh
con las opciones que querramos. Esto está acá:
cd /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts cp bldit_cctm.csh bldit_cctm.csh.old diff bldit_cctm.csh bldit_cctm.csh.old 134c134 < setenv Mechanism cb6r3_ae7_aq #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS) --- > setenv Mechanism cb6r5_ae7_aq #> chemical mechanism (see $CMAQ_MODEL/CCTM/src/MECHS)
Lo corremos:
./bldit_cctm.csh intel >& bldit_cctm_AMBA.log
Nota: Si es una recompilación, hay que borrar todo antes.
rm -rf BLD_CCTM_v54_intel/*
Esto debiera crear al ejecutable:
/home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts/BLD_CCTM_v54_intel/CCTM_v54.exe
Ahora hay que editar los paths de los inputs. Esto está definido en el .csh que se corre con el modelo. Para eso nos copiamos primero uno de referencia y lo vamos a modificar. Vamos a tener un script donde solo tenemos el inventario de la grilla (run_AMBA_grilla.csh
) y otro donde tenemos tanto la grilla como las fuentes puntuales (run_AMBA_grilla.csh
). Para solo la grilla:
cd /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts cp run_cctm_Bench_2016_12SE1.csh run_AMBA_grilla.csh diff run_cctm_Bench_2016_12SE1.csh run_AMBA.csh 38,39c38,39 < set MECH = cb6r5_ae7_aq #> Mechanism ID < set APPL = Bench_2016_12SE1 #> Application Name (e.g. Gridname) --- > set MECH = cb6r3_ae7_aq #> Mechanism ID > set APPL = AMBA #> Application Name (e.g. Gridname) 57c57 < setenv INPDIR ${CMAQ_DATA}/2016_12SE1 #> Input Directory --- > setenv INPDIR ${CMAQ_DATA}/AMBA #> Input Directory 75,76c75,76 < set START_DATE = "2016-07-01" #> beginning date (July 1, 2016) < set END_DATE = "2016-07-01" #> ending date (July 1, 2016) --- > set START_DATE = "2012-11-15" #> beginning date (July 1, 2016) > set END_DATE = "2012-11-15" #> ending date (July 1, 2016) 121c121 < setenv GRID_NAME 2016_12SE1 #> check GRIDDESC file for GRID_NAME options --- > setenv GRID_NAME ChemGBsAs_d03_cp #> check GRIDDESC file for GRID_NAME options 150c150 < setenv CTM_OCEAN_CHEM Y #> Flag for ocean halgoen chemistry and sea spray aerosol emissions [ default: Y ] --- > setenv CTM_OCEAN_CHEM N #> Flag for ocean halgoen chemistry and sea spray aerosol emissions [ default: Y ] 158c158 < setenv CTM_ABFLUX Y #> ammonia bi-directional flux for in-line deposition --- > setenv CTM_ABFLUX N #> ammonia bi-directional flux for in-line deposition 169c169 < setenv CTM_BIOGEMIS_BE Y #> calculate in-line biogenic emissions with BEIS [ default: N ] --- > setenv CTM_BIOGEMIS_BE N #> calculate in-line biogenic emissions with BEIS [ default: N ] 233c233 < set METpath = $INPDIR/met/mcipv5.0 #> meteorology input directory --- > set METpath = $INPDIR/mcip/AMBA #> meteorology input directory 283c283 < setenv ICFILE ICON_20160630_bench.nc --- > setenv ICFILE ICON_v54_AMBA_profile_20121115 292c292 < set BCFILE = BCON_${YYYYMMDD}_bench.nc --- > set BCFILE = BCON_v54_AMBA_profile_20121115 304,312c304,312 < setenv GRID_BDY_2D $METpath/GRIDBDY2D_${YYMMDD}.nc # GRID files are static, not day-specific < setenv GRID_CRO_2D $METpath/GRIDCRO2D_${YYMMDD}.nc < setenv GRID_CRO_3D $METpath/GRIDCRO3D_${YYMMDD}.nc < setenv GRID_DOT_2D $METpath/GRIDDOT2D_${YYMMDD}.nc < setenv MET_CRO_2D $METpath/METCRO2D_${YYMMDD}.nc < setenv MET_CRO_3D $METpath/METCRO3D_${YYMMDD}.nc < setenv MET_DOT_3D $METpath/METDOT3D_${YYMMDD}.nc < setenv MET_BDY_3D $METpath/METBDY3D_${YYMMDD}.nc < setenv LUFRAC_CRO $METpath/LUFRAC_CRO_${YYMMDD}.nc --- > setenv GRID_BDY_2D $METpath/GRIDBDY2D_AMBA.nc # GRID files are static, not day-specific > setenv GRID_CRO_2D $METpath/GRIDCRO2D_AMBA.nc > setenv GRID_CRO_3D $METpath/GRIDCRO3D_AMBA.nc > setenv GRID_DOT_2D $METpath/GRIDDOT2D_AMBA.nc > setenv MET_CRO_2D $METpath/METCRO2D_AMBA.nc > setenv MET_CRO_3D $METpath/METCRO3D_AMBA.nc > setenv MET_DOT_3D $METpath/METDOT3D_AMBA.nc > setenv MET_BDY_3D $METpath/METBDY3D_AMBA.nc > setenv LUFRAC_CRO $METpath/LUFRAC_CRO_AMBA.nc 344c344 < setenv CMAQ_MASKS $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_SE53BENCH.nc #> horizontal grid-dependent ocean file --- > #setenv CMAQ_MASKS $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_SE53BENCH.nc #> horizontal grid-dependent ocean file 347,348c347,348 < setenv N_EMIS_GR 2 < set EMISfile = emis_mole_all_${YYYYMMDD}_cb6_bench.nc --- > setenv N_EMIS_GR 1 > set EMISfile = gridded_AMBA 351c351 < setenv GR_EM_SYM_DATE_001 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE --- > setenv GR_EM_SYM_DATE_001 Y # To change default behaviour please see Users Guide for EMIS_SYM_DATE 353,356c353,356 < set EMISfile = emis_mole_rwc_${YYYYMMDD}_12US1_cmaq_cb6_2016ff_16j.nc < setenv GR_EMIS_002 ${EMISpath2}/${EMISfile} < setenv GR_EMIS_LAB_002 GR_RES_FIRES < setenv GR_EM_SYM_DATE_002 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE --- > #set EMISfile = emis_mole_rwc_${YYYYMMDD}_12US1_cmaq_cb6_2016ff_16j.nc > #setenv GR_EMIS_002 ${EMISpath2}/${EMISfile} > #setenv GR_EMIS_LAB_002 GR_RES_FIRES > #setenv GR_EM_SYM_DATE_002 F # To change default behaviour please see Users Guide for EMIS_SYM_DATE 359c359 < setenv N_EMIS_PT 8 #> Number of elevated source groups --- > #setenv N_EMIS_PT 8 #> Number of elevated source groups 361,362c361,362 < set STKCASEG = 12US1_2016ff_16j # Stack Group Version Label < set STKCASEE = 12US1_cmaq_cb6_2016ff_16j # Stack Emission Version Label --- > #set STKCASEG = 12US1_2016ff_16j # Stack Group Version Label > #set STKCASEE = 12US1_cmaq_cb6_2016ff_16j # Stack Emission Version Label 365,372c365,372 < setenv STK_GRPS_001 $IN_PTpath/stack_groups/stack_groups_ptnonipm_${STKCASEG}.nc < setenv STK_GRPS_002 $IN_PTpath/stack_groups/stack_groups_ptegu_${STKCASEG}.nc < setenv STK_GRPS_003 $IN_PTpath/stack_groups/stack_groups_othpt_${STKCASEG}.nc < setenv STK_GRPS_004 $IN_PTpath/stack_groups/stack_groups_ptagfire_${YYYYMMDD}_${STKCASEG}.nc < setenv STK_GRPS_005 $IN_PTpath/stack_groups/stack_groups_ptfire_${YYYYMMDD}_${STKCASEG}.nc < setenv STK_GRPS_006 $IN_PTpath/stack_groups/stack_groups_ptfire_othna_${YYYYMMDD}_${STKCASEG}.nc < setenv STK_GRPS_007 $IN_PTpath/stack_groups/stack_groups_pt_oilgas_${STKCASEG}.nc < setenv STK_GRPS_008 $IN_PTpath/stack_groups/stack_groups_cmv_c3_${STKCASEG}.nc --- > #setenv STK_GRPS_001 $IN_PTpath/stack_groups/stack_groups_ptnonipm_${STKCASEG}.nc > #setenv STK_GRPS_002 $IN_PTpath/stack_groups/stack_groups_ptegu_${STKCASEG}.nc > #setenv STK_GRPS_003 $IN_PTpath/stack_groups/stack_groups_othpt_${STKCASEG}.nc > #setenv STK_GRPS_004 $IN_PTpath/stack_groups/stack_groups_ptagfire_${YYYYMMDD}_${STKCASEG}.nc > #setenv STK_GRPS_005 $IN_PTpath/stack_groups/stack_groups_ptfire_${YYYYMMDD}_${STKCASEG}.nc > #setenv STK_GRPS_006 $IN_PTpath/stack_groups/stack_groups_ptfire_othna_${YYYYMMDD}_${STKCASEG}.nc > #setenv STK_GRPS_007 $IN_PTpath/stack_groups/stack_groups_pt_oilgas_${STKCASEG}.nc > #setenv STK_GRPS_008 $IN_PTpath/stack_groups/stack_groups_cmv_c3_${STKCASEG}.nc 375,382c375,382 < setenv STK_EMIS_001 $IN_PTpath/ptnonipm/inln_mole_ptnonipm_${YYYYMMDD}_${STKCASEE}.nc < setenv STK_EMIS_002 $IN_PTpath/ptegu/inln_mole_ptegu_${YYYYMMDD}_${STKCASEE}.nc < setenv STK_EMIS_003 $IN_PTpath/othpt/inln_mole_othpt_${YYYYMMDD}_${STKCASEE}.nc < setenv STK_EMIS_004 $IN_PTpath/ptagfire/inln_mole_ptagfire_${YYYYMMDD}_${STKCASEE}.nc < setenv STK_EMIS_005 $IN_PTpath/ptfire/inln_mole_ptfire_${YYYYMMDD}_${STKCASEE}.nc < setenv STK_EMIS_006 $IN_PTpath/ptfire_othna/inln_mole_ptfire_othna_${YYYYMMDD}_${STKCASEE}.nc < setenv STK_EMIS_007 $IN_PTpath/pt_oilgas/inln_mole_pt_oilgas_${YYYYMMDD}_${STKCASEE}.nc < setenv STK_EMIS_008 $IN_PTpath/cmv_c3/inln_mole_cmv_c3_${YYYYMMDD}_${STKCASEE}.nc --- > #setenv STK_EMIS_001 $IN_PTpath/ptnonipm/inln_mole_ptnonipm_${YYYYMMDD}_${STKCASEE}.nc > #setenv STK_EMIS_002 $IN_PTpath/ptegu/inln_mole_ptegu_${YYYYMMDD}_${STKCASEE}.nc > #setenv STK_EMIS_003 $IN_PTpath/othpt/inln_mole_othpt_${YYYYMMDD}_${STKCASEE}.nc > #setenv STK_EMIS_004 $IN_PTpath/ptagfire/inln_mole_ptagfire_${YYYYMMDD}_${STKCASEE}.nc > #setenv STK_EMIS_005 $IN_PTpath/ptfire/inln_mole_ptfire_${YYYYMMDD}_${STKCASEE}.nc > #setenv STK_EMIS_006 $IN_PTpath/ptfire_othna/inln_mole_ptfire_othna_${YYYYMMDD}_${STKCASEE}.nc > #setenv STK_EMIS_007 $IN_PTpath/pt_oilgas/inln_mole_pt_oilgas_${YYYYMMDD}_${STKCASEE}.nc > #setenv STK_EMIS_008 $IN_PTpath/cmv_c3/inln_mole_cmv_c3_${YYYYMMDD}_${STKCASEE}.nc 385,392c385,392 < setenv STK_EMIS_LAB_001 PT_NONEGU < setenv STK_EMIS_LAB_002 PT_EGU < setenv STK_EMIS_LAB_003 PT_OTHER < setenv STK_EMIS_LAB_004 PT_AGFIRES < setenv STK_EMIS_LAB_005 PT_FIRES < setenv STK_EMIS_LAB_006 PT_OTHFIRES < setenv STK_EMIS_LAB_007 PT_OILGAS < setenv STK_EMIS_LAB_008 PT_CMV --- > #setenv STK_EMIS_LAB_001 PT_NONEGU > #setenv STK_EMIS_LAB_002 PT_EGU > #setenv STK_EMIS_LAB_003 PT_OTHER > #setenv STK_EMIS_LAB_004 PT_AGFIRES > #setenv STK_EMIS_LAB_005 PT_FIRES > #setenv STK_EMIS_LAB_006 PT_OTHFIRES > #setenv STK_EMIS_LAB_007 PT_OILGAS > #setenv STK_EMIS_LAB_008 PT_CMV 397,404c397,404 < setenv STK_EM_SYM_DATE_001 T < setenv STK_EM_SYM_DATE_002 T < setenv STK_EM_SYM_DATE_003 T < setenv STK_EM_SYM_DATE_004 T < setenv STK_EM_SYM_DATE_005 T < setenv STK_EM_SYM_DATE_006 T < setenv STK_EM_SYM_DATE_007 T < setenv STK_EM_SYM_DATE_008 T --- > #setenv STK_EM_SYM_DATE_001 T > #setenv STK_EM_SYM_DATE_002 T > #setenv STK_EM_SYM_DATE_003 T > #setenv STK_EM_SYM_DATE_004 T > #setenv STK_EM_SYM_DATE_005 T > #setenv STK_EM_SYM_DATE_006 T > #setenv STK_EM_SYM_DATE_007 T > #setenv STK_EM_SYM_DATE_008 T 444c444 < setenv OCEAN_1 $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_SE53BENCH.nc #> horizontal grid-dependent ocean file --- > #setenv OCEAN_1 $SZpath/OCEAN_${MM}_L3m_MC_CHL_chlor_a_SE53BENCH.nc #> horizontal grid-dependent ocean file 710c710,711 < ( /usr/bin/time -p mpirun -np $NPROCS $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt --- > # ( /usr/bin/time -p mpirun -np $NPROCS $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt > (mpirun -np $NPROCS $BLD/$EXEC ) |& tee buff_${EXECUTION_ID}.txt
Para el script con tanto la grilla como las fuentes puntuales:
cp run_AMBA_grilla.csh run_AMBA.csh diff run_AMBA_grilla.csh run_AMBA.csh 359c359 < #setenv N_EMIS_PT 8 #> Number of elevated source groups --- > setenv N_EMIS_PT 1 #> Number of elevated source groups 361,362c361,362 < #set STKCASEG = 12US1_2016ff_16j # Stack Group Version Label < #set STKCASEE = 12US1_cmaq_cb6_2016ff_16j # Stack Emission Version Label --- > set STKCASEG = AMBA # Stack Group Version Label > set STKCASEE = AMBA # Stack Emission Version Label 365c365 < #setenv STK_GRPS_001 $IN_PTpath/stack_groups/stack_groups_ptnonipm_${STKCASEG}.nc --- > setenv STK_GRPS_001 $IN_PTpath/stack_groups/stack_AMBA 381c381 < #setenv STK_EMIS_007 $IN_PTpath/pt_oilgas/inln_mole_pt_oilgas_${YYYYMMDD}_${STKCASEE}.nc --- > setenv STK_EMIS_001 $IN_PTpath/pt_oilgas/point_AMBA 391c391 < #setenv STK_EMIS_LAB_007 PT_OILGAS --- > setenv STK_EMIS_LAB_001 PT_OILGAS 397c397 < #setenv STK_EM_SYM_DATE_001 T --- > setenv STK_EM_SYM_DATE_001 T
NOTAS sobre la configuración:
- Acerca de la estabilidad numérica y CFLs, leer este post en el foro CMAS
[editar] Escabilidad en el servidor
Si queremos cambiar el número de procesos que queremos usar para correr el modelo esto también se puede cambiar en run_AMBA.csh
, cambiando los valores de:
@ NPCOL = 8; @ NPROW = 4
Donde el número de procesos totales será NPROCS = NPCOL*NPROW.
Para entender cuál es el número más apropiado de procesadores se corrió el dia de prueba varias veces con distintos valores de NPROCS. Luego, se calculó el speedup (S) para cada caso donde S = T(1)/T(n) siendo T(1) el tiempo que tarda en correr con un solo procesador y T(n) el tiempo que tarda con n. Para conocer T(1), se corrió el modelo con un solo procesador por unas pocas horas y luego se promedió el tiempo que tardaba por paso para saber cuanto tardaría aproximadamente en terminar de correr el dia entero.
Idealmente, el speedup crece de forma lineal con el número de procesadores.
Como se puede ver, en el rango aproximado de NPROCS = 50-100, el speed up real es levemente mayor que el ideal. Esto no debiera pasar, pero se debe muy probablemente a que el valor de T(1) utilizado para hacer los cálculos es aproximado y no real. Por el otro lado, a partir de NPROCS = 150, el speedup real se empieza a alejar cada vez más del ideal. Sin embargo, hasta NPROCS = 244 se sigue viendo mejora en el tiempo de corrida. Por encima de este valor, el modelo tarda más en correr.
[editar] Simulado CMAQ
Ahora sí, solo queda correr el modelo. El directorio de trabajo es
WORKDIR = /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts
Para correr en la cola de Hydra necesitamos un script. Nos copiamos uno que ya hay:
cp launch_cctm_intel.pbs launch_cctm_intel_AMBA.pbs
Lo modificamos:
diff launch_cctm_intel.pbs launch_cctm_intel_AMBA.pbs 38c38 < ./run_cctm_Bench_2018_12NE3.csh >& run_Bench_2018-12NE3.log --- > ./run_AMBA.csh >& run_AMBA.log
Si queremos cambiar el número de procesos también hay que cambiar las líneas:
#PBS nodes=1:ppn=32
Donde se debe cumplir que nodes*ppn = NPROCS = NPCOL*NPROW
Hay un par de tablas que necesitamos del mecanismo que estamos usando En este caso cb6r3_ae7_aq). Se pueden encontrar acá,
Las creamos y le copiamos los datos:
nano /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts/BLD_CCTM_v54_intel/CSQY_DATA_cb6r3_ae7_aq nano /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts/BLD_CCTM_v54_intel/GC_cb6r3_ae7_aq.nml nano /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts/BLD_CCTM_v54_intel/AE_cb6r3_ae7_aq.nml nano /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts/BLD_CCTM_v54_intel/NR_cb6r3_ae7_aq.nml nano /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts/BLD_CCTM_v54_intel/CMAQ_Control_DESID_cb6r3_ae7_aq.nml nano /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts/BLD_CCTM_v54_intel/SpecDef_Dep_cb6r3_ae7_aq.txt nano /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts/BLD_CCTM_v54_intel/SpecDef_cb6r3_ae7_aq.txt nano /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts/BLD_CCTM_v54_intel/mech_cb6r3_ae7_aq.def nano /home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/CCTM/scripts/BLD_CCTM_v54_intel/pa_cb6r3_ae7_aq.ctl
Ahora sí, corremos:
qsub launch_cctm_intel_AMBA.pbs
Si hay algún error, conviene mirar en el log de que nodo está el problema:
grep -i error CTM_LOG*
Si todo salió bien, se deberían generar los ficheros en el directorio:
/home/solange.luque/MODELOS/CMAQ/intel/src/CMAQ-master/CMAQ_Project/data/output_CCTM_v54_intel_AMBA
Deberíamos tener los siguientes ficheros:
CCTM_ACONC_v54_intel_AMBA_20121115.nc CCTM_AELMO_v54_intel_AMBA_20121115.nc CCTM_BUDGET_v54_intel_AMBA_20121115.txt CCTM_CONC_v54_intel_AMBA_20121115.nc CCTM_DRYDEP_v54_intel_AMBA_20121115.nc CCTM_v54_intel_AMBA_20121115.cfg CCTM_WETDEP1_v54_intel_AMBA_20121115.nc LOGS
La data en estos ficheros eso:
ACONC: Hourly average concentration file AELMO: Average hourly ELMO (Explicit and Lumped Model Output) output file. Este fichero es opcional BUDGET: Budget Tool Output File. Outputs domain-wide changes for user-specified species every output time step. Opcional CONC: Hourly instantaneous concentration file DRYDEP: Hourly cumulative dry deposition file. Opcional WETDEP: Hourly cumulative wet deposition file. Opcional