-
Notifications
You must be signed in to change notification settings - Fork 0
/
functions.sh
247 lines (240 loc) · 6.8 KB
/
functions.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
#!/bin/bash
#
#: Title : functions.sh
#: Date : 02/01/2024
#: Author : "Jose Agustin Garcia Reynoso" <agustin@atmosfera.unam.mx>
#: Version : 1.0 26/04/2021 Actualizacion para IE del 2016
#: Description : Functios to run emissions
#: Options : None
#: Title : crea_anio_csv()
#: Date : 2/01/2024
#: Author : "Jose Agustin Garcia Reynoso" <agustin@atmosfera.unam.mx>
#: Version : 1.0 2/01/2024
#: Description : Crea el archivo de anio con base en la fecha
#: Options : recibe fecha y la convierte anio, mes dia
#
crea_anio_csv()
{
if [ $# -eq 0 ];
then
export anio1=`date +%Y`
linea=$(date +%m,%d,%w,%a)
echo "**** sin argumentos *****"
echo Se realizara para hoy $anio1 $linea
else
echo Con argumentos
if [[ $1 -gt 1000 && $1 -le 2050 ]];
then
anio1=$1
else
echo "Anio no corresponde "$1
exit 1
fi
if [[ $2 -ge 1 && $2 -le 12 ]];
then
mes1=$2
else
echo "Mes no corresponde "$2
exit 2
fi
fecha=$1/$mes1/$3
echo $fecha
if [[ $(date -d$fecha +%w) -eq 0 ]];
then
linea=$(date -d$fecha +%m,%d,7,%a)
else
linea=$(date -d$fecha +%m,%d,%w,%a)
#para mac linea=$(date -v$fecha +%m,%d,%w,%a)
fi
fi
echo "mes,dia,n_dia_semana,nomdia_semana" > anio${anio1}.csv
echo $linea >>anio${anio1}.csv
mv anio${anio1}.csv ../time
}
#: Title : make_tmpdir
#: Date : 25/04/2021
#: Author : "Jose Agustin Garcia Reynoso" <agustin@atmosfera.unam.mx>
#: Version : 1.0 26/04/2021 Actualizacion para IE del 2016
#: Description : Creates the working directory for emissions
#: Options : name of directory
make_tmpdir ()
{
if [ ! -d $1 ]
then
echo " *** Creating directory "$1" *****"
mkdir $1
else
if [ $HacerArea -eq 1 ]; then
echo " Erasing and creating Directory"
rm -rf $1
mkdir $1
else
echo " hacearea="$HacerArea
if [ ! -f $1/AVOC_2016.csv ];then
echo -e " \033[1;45m There is no Spatial Distribution \033[0m"
exit 2
fi
fi
fi
echo " *** In directory "$1" *****"
cd $1
ln -fs ../01_datos/$dominio .
ln -fs ../01_datos/chem .
ln -fs ../01_datos/time .
ln -fs ../01_datos/emis .
ln -fs ../bin .
}
#: Title : hace_area
#: Date : 25/04/2021
#: Author : "Jose Agustin Garcia Reynoso" <agustin@atmosfera.unam.mx>
#: Version : 1.0 26/04/2021 Actualizacion para IE del 2016
#: Description : Apatial distribution area emissions
#: Options : none
hace_area(){
if [ $HacerArea -eq 1 ]; then
echo -e " \033[1;48m Making Spatial distribution in Area sources \033[0m"
bin/ASpatial.exe >./area.log
fi
}
#: Title : hace_movil
#: Date : 25/04/2021
#: Author : "Jose Agustin Garcia Reynoso" <agustin@atmosfera.unam.mx>
#: Version : 1.0 26/04/2021 Actualizacion para IE del 2016
#: Description : Spatial distribution mobile emissions
#: Options : none
hace_movil(){
if [ $HacerArea -eq 1 ]; then
echo " Making Spatial distribution in Mobile sources"
bin/vial.exe > ./movil.log &
bin/carr.exe >> ./movil.log&
wait
bin/agrega.exe > ./movil.log
bin/MSpatial.exe > ./movil.log &
fi
}
#: Title : emis_area
#: Date : 25/04/2021
#: Author : "Jose Agustin Garcia Reynoso" <agustin@atmosfera.unam.mx>
#: Version : 1.0 26/04/2021 Actualizacion para IE del 2016
#: Description : Area emissions processing
#: Options : none
emis_area(){
echo 'Area Temporal distribution'
../bin/Atemporal.exe > ../area.log
echo 'Area Speciation distribution PM2.5'
../bin/spm25a.exe >> ../area.log &
echo 'Area Speciation distribution VOCs'
echo '** Area '$MECHA' *****'
ln -fs ../chem/profile_${MECHA}.csv .
../bin/spa.exe >> ../area.log
}
#: Title : emis_fijas
#: Date : 25/04/2021
#: Author : "Jose Agustin Garcia Reynoso" <agustin@atmosfera.unam.mx>
#: Version : 1.0 26/04/2021 Actualizacion para IE del 2016
#: Description : Point emissions processing
#: Options : none
emis_fijas(){
echo 'Point Temporal distribution'
../bin/Puntual.exe > ../puntual.log
echo 'Point Speciation distribution PM2.5'
../bin/spm25p.exe >> ../puntual.log &
echo 'Point Speciation distribution VOCs'
#
echo '** Point '$MECHA' *****'
../bin/spp.exe >> ../puntual.log
}
#: Title : emis_movil
#: Date : 25/04/2021
#: Author : "Jose Agustin Garcia Reynoso" <agustin@atmosfera.unam.mx>
#: Version : 1.0 26/04/2021 Actualizacion para IE del 2016
#: Description : Movile emissions processing
#: Options : none
emis_movil(){
pwd
echo 'Movil Temporal distribution'
../bin/Mtemporal.exe > ../movil.log
echo 'Movil Speciation distribution PM2.5'
../bin/spm25m.exe >> ../movil.log&
echo '** Movil '$MECHA' *****'
../bin/spm.exe >> ../movil.log
}
#: Title : check_domain
#: Date : 25/04/2021
#: Author : "Jose Agustin Garcia Reynoso" <agustin@atmosfera.unam.mx>
#: Version : 1.0 26/04/2021 Actualizacion para IE del 2016
#: Description : Identifies if the domain are for emissions exists
#: Options : domain
check_domain ()
{
echo -e " \033[3;46m ___ _ ___ _____ ___ \033[0m"
echo -e " \033[3;46m | \(_) __|_ _| __| \033[0m"
echo -e " \033[3;46m | |) | | _| | | | _| \033[0m"
echo -e " \033[3;46m |___/|_|___| |_| |___| \033[0m"
echo -e " \033[3;46m \033[0m"
cd 01_datos
existe=0
if [ -d $1 ]
then
echo " *** Realizando para "$dominio" *****"
else
echo -e "\033[1;45m Dominio "$dominio" no existe en el directorio \033[0m"
exit 1
fi
cd ..
}
#: Title : hace_namelist
#: Date : 25/04/2021
#: Author : "Jose Agustin Garcia Reynoso" <agustin@atmosfera.unam.mx>
#: Version : 1.0 26/04/2021 Actualizacion para IE del 2016
#: Description : generates the namelist.nml
#: Options : $dia $dia2
hace_namelist()
{
if [ $1 -eq $2 ]
then
echo " *** Creating namelist.nml for "$dominio" *****"
else
echo " *** Creating namelist.nml for day "$1" *****"
fi
cat > namelist_emis.nml << End_Of_File
!
! Definicion de variables para calculo del Inventario
!
®ion_nml
zona ="$dominio"
!
! bajio bajio3 cdjuarez colima ecacor ecaim ecaim3
! guadalajara jalisco mexicali mexico mexico9
! monterrey monterrey3 queretaro tijuana
/
&fecha_nml
! Se indica el dia y el mes a calcular
! se proporciona el anio
! month jan =1 to dec=12
! day in the month (from 1 to 28,30 or 31)
! anio a modelar validos: 2014 a 2022
! Si se quiere un archvio de 24 hr periodo=1
! o dos archivos de 12 hr peridodo=2
idia=$dia
month=$mes
anio=$nyear
periodo=$nfile
/
!Horario de verano
&verano_nml
! .true. o .false. para considerar o no el cambio cuando se
! esta en horario de verano
!
lsummer = .false.
/
! Quimica a utilizar
! Los mecanismos a usar:
! cbm04 cbm05 mozart racm2 radm2 saprc99 saprc07
! if saprc07 model= 0 WRF 1 CHIMERE
&chem_nml
mecha='$MECHA'
model=$AQM_SELECT
/
End_Of_File
}