After simulation completes:
From the Elements Library (opened via ribbon icon Elements), drag the following onto the canvas:
| Element | Symbol | Quantity | |---------|--------|----------| | System boundary (SB) | Arrow into a circle | 1 (ambient) | | Cylinder (C) | Cylinder icon | 4 | | Plenum (PL) | Box | 1 (intake manifold) | | Pipe (P) | Two parallel lines | 4 (runners) + 1 (exhaust) | | Junction (J) | Node with multiple legs | 1 (collector) | | Measuring point (MP) | Gauge icon | 2 (intake & exhaust) |
UPD Shortcut: Right-click on the canvas and select “Add commonly used – SI engine template” – a pre-built 4-cyl template appears. We will modify it for learning.
Go to View → Dashboard. Drag the following widgets: avl boost tutorial upd
This live dashboard updates as you change parameters – no re-run needed for existing results.
Double-click Case Explorer → Simulation tab:
Initial conditions (Engine State):
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): This live dashboard updates as you change parameters
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:
Below is a compact, production-oriented interface sketch and notes (conceptual; adapt and expand for real projects). Initial conditions (Engine State): AVL Boost expects a
Interface:
template<typename Key, typename Value, typename Compare = std::less<Key>,
typename Alloc = std::allocator<std::pair<const Key, Value>>>
class avl_map
public:
using key_type = Key;
using mapped_type = Value;
using value_type = std::pair<const Key, Value>;
avl_map();
~avl_map();
// modifiers
std::pair<iterator, bool> insert(const value_type& v);
size_t erase(const key_type& k);
void clear();
// lookup
iterator find(const key_type& k);
bool contains(const key_type& k) const;
// access
mapped_type& operator[](const key_type& k);
mapped_type& at(const key_type& k);
// iterators
iterator begin();
iterator end();
size_t size() const;
bool empty() const;
;
Core implementation notes:
Memory and allocator notes:
Testing and validation:
The post-processor (AVL Impress) remains the standard, but the workflow has changed: