Click on a cylinder → Combustion tab. For SI engines at full load, select:
Do not use the old “Vibe 2-parameter” unless specifically required – the new model auto-calibrates from laminar flame speed correlations.
AVL Boost expects a specific subroutine interface. Navigate to your project directory and locate or create the user.f file. Below is a template for a custom burn rate model (a simple Gaussian function, as example): avl boost tutorial upd
SUBROUTINE USER_CYLINDER(CA, X, DX, V, DV, P, DENS, T, & MF, AF, ETAC, ETAS, QLHV, & HR, BURN, PTHB, USER_PAR, & N_UP, I_ERR, TEXT)IMPLICIT NONE REAL*8 CA, X, DX, V, DV, P, DENS, T, MF, AF, ETAC, ETAS REAL*8 QLHV, HR, BURN, PTHB, USER_PAR(*) INTEGER N_UP, I_ERR CHARACTER*80 TEXT ! Local variables for custom model REAL*8 CA_SOC, CA_DUR, SHAPE, CUM_BURN, PI PARAMETER (PI = 3.1415926535) ! --- Read user parameters from GUI --- ! USER_PAR(1) = Start of Combustion [deg CA] ! USER_PAR(2) = Combustion Duration [deg CA] ! USER_PAR(3) = Gaussian shape factor CA_SOC = USER_PAR(1) CA_DUR = USER_PAR(2) SHAPE = USER_PAR(3) ! --- Gaussian Burn Rate Function --- ! Normalized burn rate = exp(-0.5 * ((CA - CA_SOC)/(CA_DUR/6))^2) IF (CA .LT. CA_SOC) THEN BURN = 0.0 ELSE BURN = EXP(-0.5 * ((CA - CA_SOC) / (CA_DUR/6.0))**2) ! Normalize integral to 1.0 over combustion duration CUM_BURN = ... (numerical integration simplified here) END IF ! Assign results ! BURN = dMF/dcrank (mass fraction burned derivative) ! HR = Heat Release Rate [J/deg] = BURN * MF * QLHV HR = BURN * MF * QLHV ! [J/deg] ! Error handling I_ERR = 0 TEXT = 'User model executed' RETURN END
Key variables to know:
Maya used Boost in three places:
Using boost::optional made user-facing APIs safer; iterator_facade saved boilerplate for const/non-const iterators.
To export cylinder pressure to CSV for external plotting (Matlab/Python): Click on a cylinder → Combustion tab
# Inside AVL BOOST Python Console (Tools → Python Console)
import avl_boost_api as avl
case = avl.get_current_case()
pressure = case.get_element_result("Cylinder_1", "CylinderPressure")
pressure.to_csv("pressure_vs_ca.csv")
To follow this tutorial, ensure your system meets:
Installation UPD tip: After installing the latest version, always run the AVL License Manager and verify that your license file includes BOOST_Core and BOOST_Opt features. Without _Opt, you cannot use the optimizer module. Do not use the old “Vibe 2-parameter” unless