CMAQ/pruebaAMBA
Prueba de simulado en AMBA
WORKDIR = /home/solange.luque/estudios/CMAQ-AMBA/prueba
Contenido |
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
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 ' '
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
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.
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
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
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
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
.
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
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
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
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
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 enrun_AMBA.csh, cambiando los valores de:
@ NPCOL = 8; @ NPROW = 4
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
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