Beruflich Dokumente
Kultur Dokumente
Ctedra de Motores
Especialidad Ingeniera del Automvil
Escuela de Ingeniera Mecnica (EIM)
Universidad Nacional de Rosario (UNR)
Q chem
Qht
Qht
COOLING
WATER
Julio 2006
El simulador de motor SIM1D requiere de al menos 1 archivo de datos cuyo nombre por el
momento debe ser datos.dat.
Este archivo de texto (editable con cualquier editor de texto) tiene datos que a
continuacin se explican.
Antes de empezar es necesario saber que el smbolo numeral al comienzo de cualquier
lnea equivale a un comentario.
&nombre
donde nombre es el rtulo que identifica al tipo de dato que comienza con el smbolo & y
termina con la barra /.
Todo lo que est en el interior son datos que deben estar definidos en el NAMELIST
Ejemplo 1:
#-------------<Datos Generales>---------------#
&nlist_gral
inicia = .false.
Llave que permite arrancar una rutina desde el comienzo (.true.) o recomenzar una corrida
previamente hecha (.false.) a los fines de continuarla.
ncycle =5
Nmero mximo de ciclos termodinmicos a efectuar. Hay que tener en cuenta que se
requieren algunos ciclos para lograr una solucin lmite o convergida. Esta se evidencia
por una variacin del torque o la potencia de ciclo a ciclo menor que una cierta tolerancia
definida como del 1%.
filein_state = 'motor_01800.state'
filein_spd = 'motor_01800.spd'
Nombre de los archivos que contienen el estado en los nodos (extensin .state) y la
concentracin en porcentaje en masa de combustible, aire y productos para el caso que se
requiere esta informacin, por ejemplos modelos que incluyen dispositivos EGR.
filesave_state = 'motor_'
filesave_spd = 'motor_'
Raz del nombre de los archivos que contendrn los estados en los nodos (extensin .state)
y la concentracin en porcentaje en masa de combustible para toda la gama de regmenes
de giro del motor. Para cada diferente velocidad de giro se le concatena al nombre del
archivo el valor de la rpm, por ejemplo, si en este caso estamos corriendo a 2200 rpm el
archivo se llamar motor_02200 con la extensin correspondiente.
ntubes = 2
ncyl =1
ntank = 0
njunc = 0
nvalves = 2
nswirl = 0
Nmero de vlvulas de swirl en la configuracin del motor. Esta opcin no est muy
operativa en la actualidad. Est en revisin.
nvalves_EGR = 0
nsave =5
nappend =5
node_sampling = 2 5 6
Numeracin de los nodos de muestreo en la configuracin inicial. En este caso los nodos 2,
5 y 6. (Ver figura con la configuracin al final)
ndf =3
nsp =3
nnod_red =9
dtheta_rpm = 1.0
nrpms = 22
Courant = 0.5
Criterio numrico para garantizar la estabilidad temporal. Este valor nunca debe ser
mayor que 1 pero a veces se requiere que sea algo menor. Cuanto ms chico ms preciso
en el tiempo es pero a la vez es ms costoso..
ga = 1.4
Para clculos donde la concentracin no juega ningn role se puede usar un valor de
coeficiente gamma fijado por el usuario.
viscous_flow = 1.0
heat_flow = 1.0
Llave que permite activar la transferencia de calor de los tubos con el exterior.
R_gas = 287.0
rho_atm = 1.1647
Densidad atmosfrica.
vel_atm = 0.000
p_atm = 101330.0
Presin atmosfrica.
T_atm = 303.15
Temperatura atmosfrica.
Fraccin msica de los distintos componentes del aire atmosfrico (12 especies). En este
momento est fuera de uso. Se prev en el futuro incorporarlo.
ig_order =1
write_cylinder_state = .true.
Activa la escritura del estado en cada uno de los cilindros para evaluar su evolucin
temporal.
time_functions_flag
Este flag permite incorporar funciones temporales definidas por el usuario para algunos
de los grados de libertad de algunos de los nodos de la configuracin del motor.
number_time_functions
crank_dynamics_flag
Este flag permite incorporar el clculo de la velocidad de giro del motor en funcin de un
torque resistente liberando la imposicin de velocidad de giro fijada por el usuario. Sirve
para evaluar como se comporta dinmicamente el motor ante variaciones de carga.
filein_crank
Fin NAMELIST
Comentario identificando que ahora se ingresan los datos del o de los tubos de admisin.
&nlist_tube
itube = 1
ndiam = 2
Cantidad de dimetros a ingresar para los tubos (interpola en forma lineal a trozos)
xdiam(1) = 0.0d0
xdiam(2) = 1.0d0
Coordenadas porcentuales del largo del tubo en los cuales se ingresar un dimetro.
diam(1) = 0.036
diam(2) = 0.036
ntwall = 2
xtwall(1) = 0.0d0
xtwall(2) = 1.0d0
Coordenadas porcentuales del largo del tubo en los cuales se ingresar una temperatura
de pared.
Twall(1) = 300.0d0
Twall(2) = 300.0d0
ncurva = 2
xcurva(1) = 0.0d0
xcurva(2) = 1.0d0
curva(1) = 0.0d0
curva(2) = 0.0d0
nnod = 40
long = 0.400
inod_tube_red(1) = 1
inod_tube_red(2) = 2
inod_bc(1) = 3
inod_bc(2) = 4
Numeracin de los nodos de referencia de los extremos del tubo en la configuracin del
motor. Cada nodo extremo de un tubo requiere un nodo de referencia del cual tomar o
calcular su estado en funcin del tipo de borde que sea. Ver prxima variable.
type_of_bc(1) = 1
type_of_bc(2) = 0
Identifica el tipo de borde. Si es de tipo 1 significa que all el extremo tomar los valores
impuestos de densidad y presin si es entrada de la atmsfera y presin si es salida a la
atmsfera. Si es de tipo 0 el estado en el nodo extremo se calcula como una funcin del
valor del estado de su nodo vecino interior y de su nodo de referencia (ver variable
indo_bc explicada anteriormente)
Fin NAMELIST
&nlist_cyl
icyl = 1
node_C= 5
node_I_in= 2
node_E_in= 6
node_I_out= 4
node_E_out= 8
Bore = 0.08051
Dimetro del cilindro en metros. Todas las medidas lineales son en metros, las de rea en
metros cuadrados y las de volumen en metros cbicos.
crank_radius = 0.0425
Vol_displacement = 4.0000e-04
Vol_clearance = 3.8095e-05
rod_length = 0.128
Longitud de biela
head_chamber_area= 0.0051
piston_area = 0.0051
theta_ig_0 = 5.5851e+000
theta_ig_f = 7.8540e+000
phi = 1.0
Q_fuel = 44.0e6
Poder calorfico del combustible.
y = 2.25
Twall_cyl = 450
valve_intake =1
valve_exhaust =2
type_ig =0
0 para encendido por chispa (Otto) y 1 para encendido por compresin (Diesel)
model_ht =3
= 1 modelo de ANNAND
= 2 1er modelo de WOSCHNI
= 3 2do modelo de WOSCHNI
factor_ht = 1.
Parmetro de ajuste para el m odelo de prdidas trmicas que debe ser ajustado para
lograr que el motor termine erogando una cantidad de potencia similar a aquella relevada
en banco de ensayo previo a introducir los cambios a evaluar. Si el motor es un concept se
debera utilizar aquel que surja de la calibracin con un motor similar en la gama.
comb_var_meth = 0
Esta llave permite usar un modelo de combustin que tenga una duracin variable con el
rgimen de giro (rpms). Usar 0 salvo que se anime a tocar la rutina agregando aquel que
requiera evaluar y agregarle un identificador apropiado.
/
Fin NAMELIST
&nlist_valve
ivalve = 1
Nval = 2
type_dat = 0
Sirve para informarle al programa si el perfil de alzada de vlvula lo calcula con una ley
senoidal (tipo 0), con una apertura y cierre sbito (tipo -1) o si lo ingresa el usuario
proveniente de algn tipo de relevamiento cinemtica del tren de vlvulas (tipo 1).
Dv = 0.030
Dimetro de la vlvula.
Lvmax = 0.009
Alzada de la vlvula.
angle_VO = 12.4442
angle_VC = 3.9619
file_Cd = 'flow_CD_data_I_01.dat'
Fichero de donde salen los valores del coeficiente de descarga. Estos en general surgen de
hacer una flujometra previa. Si no est este archivo considera que el valor del Cd es
constante y unitario.
file_Lv = 'Lv_I_sen.dat'
Fichero de donde sale la ley de alzada (type_dat = 1). Caso contrario no hace falta este
archivo.
Fin NAMELIST
&nlist_valve
ivalve = 2
Nval = 2
type_dat = 0
Dv = 0.029
Lvmax = 0.008
angle_VO = 8.6394
angle_VC = 0.0873
file_Cd = 'flow_CD_data_E_01.dat'
file_Lv = 'Lv_E_sen.dat'
&nlist_tube
itube = 2
nnod = 14
ndiam = 2
ntwall = 2
ncurva = 2
long = 0.140
xdiam(1) = 0.0d0
xdiam(2) = 1.0d0
diam(1) = 0.032
diam(2) = 0.032
xtwall(1) = 0.0d0
xtwall(2) = 1.0d0
Twall(1) = 400.0d0
Twall(2) = 400.0d0
inod_tube_red(1) = 6
inod_tube_red(2) = 7
inod_bc(1) = 8
inod_bc(2) = 9
type_of_bc(1) = 0
type_of_bc(2) = 1
/
Como se ve no hace falta que los tubos estn uno a continuacin del otro pero lo que si es
requerido es que todos los elementos estn ingresados en orden de su identificador, o al
menos que el ltimo este al final.
Ejemplo 2:
6 7 8 9 34 37 38
5
1 2 3 4 35 36
6 15 16 17 39 42 43
14 56 60
10 11 12 13 40 41
6 23 24 25 44 47 48
54 55
22
18 19 20 21 45 46
6 31 32 33 52 53
49
30
26 27 28 29 50 51
# ======================================================#
# Ejemplo 2 : Motor Diesel pluricilindrico
#
# ======================================================
# datos generales
&nlist_gral
inicia = .true.
ncycle =3
filesave_state = 'motor_'
filesave_spd = 'motor_'
ntubes = 13
ncyl = 4
ntank = 4
njunc = 1
nvalves = 2
nswirl = 0
nvalves_EGR = 0
Aqu se define un motor que posee 4 cilindros, con 4 tanques, 1 sola union (4 a 1), 2
vlvulas, una para admisin y otra para escape.
nsave =1
nappend =1
ndf =3
nsp =3
nnod_red = 60
nrpms =1
dtheta_rpm = 1.0
rpms = 3500.0 4000.0
rpms = 1000.0
Esta situacin en la cual uno define dos veces lo mismo es vlida y toma siempre la ltima.
Courant = 0.8
ga = 1.4
viscous_flow = 1.0
heat_flow = 1.0
R_gas = 287.0
rho_atm = 1.2085
vel_atm = 0.100
p_atm = 101330.0
T_atm = 292.15
mfrac_atm = 0.0 0.2200910204 0.7650385386 9.913863271e -3
4.956577746e -3 0.0 0.0 0.0 0.0 0.0 0.0 0.0
mfrac_atm = 0.0 1.0 0.0 0.0
0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0
ig_order =1342
Aqu vemos como se aplica el orden de encendido, es decir que enciende primero el 1er
cilindro, luego el 3ro, luego el 4to y finalmente el 2do.
nnod_sampling = 4
node_sampling = 34 39 44 49
write_cylinder_state = .true.
time_functions_flag = .true.
number_time_functions = 1
Aqu vemos como se define alguna funcin temporal a aplicar sobre determinado grado de
libertad de un nodo. En este caso hay una sola funcin pero eventualmente podra haber la
cantidad que se desee.
/
filein_state = 'motor_01000.state'
filein_spd = 'motor_01000.spd'
Aqu vemos que si ponemos datos de alg n NAMELIST fuera de los espacios
correspondientes a cada uno de ellos es vlido pero no lo toma al dato. Es como no
ponerlo.
Aqu vemos algo que nos indica que se pueden poner comentarios fuera de los NAMELIST
como ayuda memoria.
&nlist_tube
itube = 2
inod_tube_red(1) = 10
inod_tube_red(2) = 11
inod_bc(1) = 57
inod_bc(1) = 6
inod_bc(2) = 15
/
Aqu vemos cmo se ingresa el segundo tubo. No hace falta volver a escribir lo que es
igual al anterior. Solo las diferencias.
&nlist_tube
itube = 3
inod_tube_red(1) = 18
inod_tube_red(2) = 19
inod_bc(1) = 58
inod_bc(1) = 6
inod_bc(2) = 23
/
&nlist_tube
itube = 4
inod_tube_red(1) = 26
inod_tube_red(2) = 27
inod_bc(1) = 59
inod_bc(1) = 6
inod_bc(2) = 31
/
&nlist_tube
itube = 5
nnod = 10
ndiam = 2
ntwall = 2
ncurva = 2
long = 0.100
xdiam(1) = 0.0d0
xdiam(2) = 1.0d0
diam(1) = 0.045
diam(2) = 0.045
xtwall(1) = 0.0d0
xtwall(2) = 1.0d0
Twall(1) = 500.0d0
Twall(2) = 500.0d0
inod_tube_red(1) = 3
inod_tube_red(2) = 4
inod_bc(1) = 8
inod_bc(2) = 9
type_of_bc(1) = 0
type_of_bc(2) = 0
/
&nlist_tube
itube = 6
inod_tube_red(1) = 12
inod_tube_red(2) = 13
inod_bc(1) = 16
inod_bc(2) = 17
/
&nlist_tube
itube = 7
inod_tube_red(1) = 20
inod_tube_red(2) = 21
inod_bc(1) = 24
inod_bc(2) = 25
/
&nlist_tube
itube = 8
inod_tube_red(1) = 28
inod_tube_red(2) = 29
inod_bc(1) = 32
inod_bc(2) = 33
/
&nlist_tube
itube = 9
nnod = 25
ndiam = 2
ntwall = 2
ncurva = 2
long = 0.250
xdiam(1) = 0.0d0
xdiam(2) = 1.0d0
diam(1) = 0.044
diam(2) = 0.044
xtwall(1) = 0.0d0
xtwall(2) = 1.0d0
Twall(1) = 500.0d0
Twall(2) = 500.0d0
inod_tube_red(1) = 35
inod_tube_red(2) = 36
inod_bc(1) = 37
inod_bc(2) = 38
type_of_bc(1) = 0
type_of_bc(2) = 0
/
&nlist_tube
itube = 10
inod_tube_red(1) = 40
inod_tube_red(2) = 41
inod_bc(1) = 42
inod_bc(2) = 43
/
&nlist_tube
itube = 11
inod_tube_red(1) = 45
inod_tube_red(2) = 46
inod_bc(1) = 47
inod_bc(2) = 48
/
&nlist_tube
itube = 12
inod_tube_red(1) = 50
inod_tube_red(2) = 51
inod_bc(1) = 52
inod_bc(2) = 53
/
&nlist_tube
itube = 13
nnod = 70
long = 0.700
xdiam(1) = 0.0d0
xdiam(2) = 1.0d0
diam(1) = 0.044
diam(2) = 0.044
xtwall(1) = 0.0d0
xtwall(2) = 1.0d0
Twall(1) = 500.0d0
Twall(2) = 500.0d0
inod_tube_red(1) = 54
inod_tube_red(2) = 55
inod_bc(1) = 56
inod_bc(2) = 60
type_of_bc(1) = 0
type_of_bc(2) = 1
/
Aqu vemos cmo se ingresa el ltimo de los 13 tubos. Como mencionamos en el primer
ejemplo es requisito que el ltimo tubo sea ingresado ltimo, los restantes pueden estar en
cualquier orden. No obstante siempre conviene que el orden sea efectuado tomando
ventaja de la similitud de datos de los tubos entre s.
&nlist_cyl
icyl = 1
node_C= 34
node_I_in= 4
node_E_in= 35
node_I_out= 9
node_E_out= 37
Bore = 0.105
crank_radius = 0.0685
Vol_displacement = 1.186e-003
Vol_clearance = 7.461e-005
rod_length = 0.202
head_chamber_area= 8.659e -003
piston_area = 8.659e -003
theta_ig_0 = 6.1086e+000
theta_ig_f = 8.5521e+000
phi = 0.419
phi = 0.700
Q_fuel = 42.5e6
y = 2.25
Twall_cyl = 450
type_ig =1
model_ht =2
comb_var_meth = 0
factor_ht = 2.5
valve_intake = 1
valve_exhaust = 2
/
Aqu vemos cmo se ingresa el primer cilindro. Los datos ya fueron todos explicados en el
ejemplo previo.
&nlist_cyl
icyl = 2
node_C= 39
node_I_in= 13
node_E_in= 40
node_I_out= 17
node_E_out= 42
/
&nlist_cyl
icyl = 3
node_C= 44
node_I_in= 21
node_E_in= 45
node_I_out= 25
node_E_out= 47
/
&nlist_cyl
icyl = 4
node_C= 49
node_I_in= 29
node_E_in= 50
node_I_out= 33
node_E_out= 52
/
Aqu vemos cmo se ingresa el ltimo cilindro y se ve cmo se saca provecho de la
similitud de datos para ingresar la menor cantidad de datos posibles.
&nlist_valve
ivalve = 1
Nval = 2
type_dat = 0
Dv = 0.0449
Lvmax = 0.0111
angle_VO = 12.514
angle_VC = 3.5605
file_Cd = 'flow_CD_data_I.dat'
/
file_Lv = 'Lv_I.dat'
&nlist_valve
ivalve = 2
Nval = 2
type_dat = 0
Dv = 0.0409
Lvmax = 0.01122
angle_VO = 8.8488e+000
angle_VC = 3.4907e-002
file_Cd = 'flow_CD_data_E.dat'
/
file_Lv = 'Lv_E.dat'
Aqu vemos cmo se ingresan las vlvulas. Notar que al poner type_dat=0 se usa un perfil
de alzada de vlvula senoidal y el file_Lv definido fuera del NAMELIST de las v lvulas no
tiene ningn efecto.
&nlist_junc
ijunc = 1
Identificador de la unin.
nnod_junc = 5
Nmero de tubos que confluyen a la unin, en este caso por ser una unin 4 a 1 son 5..
modelo_junc = 1
tubes_to_junc(1) = 9
tubes_to_junc(2) = 10
tubes_to_junc(3) = 11
tubes_to_junc(4) = 12
tubes_to_junc(5) = 13
nodes_out(1) = 38
nodes_out(2) = 43
nodes_out(3) = 48
nodes_out(4) = 53
nodes_out(5) = 56
Los 5 Identificadores de nodos en los cuales se escribe la solucin del modelo de la unin y
que sirven como nodos de referencia para los nodos extremos de los tubos conectados a la
unin.
type_end(1) = +1
type_end(2) = +1
type_end(3) = +1
type_end(4) = +1
type_end(5) = -1
Los 5 Identificadores del tipo de extremo de la unin. Asumiendo que los tubos son
unidimensionales, que el sentido positivo +x se dirige desde la admisin hacia el escape, el
type_end(j) del tubo j-simo vinculado a la unin nos dice el sentido de su normal exterior,
es decir si es +1 significa que la normal exterior al tubo se dirige hacia el escape mientras
que si su valor es -1 se dirige hacia la admisin.
&nlist_tank
itank = 1
nnod_tank = 2
node_tank_C = 5
tubes_to_tank(1) = 1
tubes_to_tank(2) = 5
nodes_tank_out(1) = 7
nodes_tank_out(2) = 8
Nodos que almacenan la solucin del elemento tanque y que luego sern usados como
estados de referencia para los tubos que confluyen al mismo.
type_end_tank(1) = +1
type_end_tank(2) = -1
volume = 0.018
h_film = 300
Coeficiente pelicular de conveccin del tanque para transferencia de calor con el exterior.
Area_wall = 8.64e-2
T_wall = 323
&nlist_tank
itank = 2
nnod_tank = 2
node_tank_C = 14
tubes_to_tank(1) = 2
tubes_to_tank(2) = 6
nodes_tank_out(1) = 15
nodes_tank_out(2) = 16
/
&nlist_tank
itank = 3
nnod_tank = 2
node_tank_C = 22
tubes_to_tank(1) = 3
tubes_to_tank(2) = 7
nodes_tank_out(1) = 23
nodes_tank_out(2) = 24
/
&nlist_tank
itank = 4
nnod_tank = 2
node_tank_C = 30
tubes_to_tank(1) = 4
tubes_to_tank(2) = 8
nodes_tank_out(1) = 31
nodes_tank_out(2) = 32
/
&nlist_time_fun
i_time _fun = 1
Identificador de la function
node_time_fun = 6
dof_time_fun = 3
type_function = 'Sin'
En este caso se esta aplicando a la presin del nodo 6 (entrada de la admisin una funcin
senoidal cuyos coeficientes, en el orden que se los presentan representan:
1. Amplitude (amplitude)
2. Frequency (frecuencia)
3. Phase (fase)
4. vmean (valor medio)
Es decir que aqu es simplemente un valor medio sin oscilacin. Equivale a pensar que a la
entrada de la admisin hay un turbo que eleva la presin de admisin a un valor de 2 bars.
1. t0 (tiempo inicial)
2. tf (tiempo final)
3. Amplitude (amplitud)
4. vmean (valor medio)
type_function = 'Pol'
Un polinomio de tercer grado en el tiempo (4 coeficientes).
INTERPRETACION DE LOS ARCHIVOS DE RESULTADOS
El simulador SIM1D genera para cada rpm archivo que tienen un nombre compuesto por
su raz ingresada por el usuario en las variables filesave_state y filesave_spd , cuya
extensiones son .state y .spd respectivamente.
Archivo filename.state
Archivo filename.spd
Archivo filename.cyl_h
Archivo filename.histo
Archivo filename.sal
Archivo filename.crank
Para poder postprocesar la versin del simulador SIM1D se debe contar con un software
que permita levantar datos de ficheros y tenga capacidades grficas para poder realizar al
menos curvas XY. Aqu proponemos la versin libre (GNU) de Matlab llamada Octave,
pero eso queda a criterio del usuario.
En caso de usar Octave incluimos dos rutinas para poder automticamente realizar las
siguientes curvas:
fileroot = 'motor_';
rpms = (5000:200:5800)
donde fileroot representa la raz del nombre de los archivos generador por el simulador.
Ese nombre debe coincidir con la variable filesave que se ingresa en el archivo de datos.
El usuario puede ver que el simulador genera una serie de archivos cuyo nombre siempre
empieza con lo que esta definido en filesave (o sea fileroot para el post.m) acompaado de
una serie de caracteres que representan la velocidad de giro, ya que la salida son archivos
separados para cada velocidad en rpm.
La variable rpms del post.m representa el vector de velocidades de giro a procesar escrito
en sintaxis Octave (es decir sea v un vector , entonces v=(vs:dv:vf) representa un vector
que arranca del valor vs, genera elementos cada dv hasta el valor vf)
La rutina post.m continua con una variable post que es aquella que calcula todo lo que se
necesita para el postproceso. Inicialmente debe estar en 1 (post=1) pero una vez calculado
puede ponerse en 0 (post=0) para poder graficar algunas curvas que dependen de las rpms
sin tener que volver a hacer los clculos de postprocesamiento ya hechos y guardados en
memoria.