// CelerisLab/kernels/macros.h

// cuda parameters
#define MULT_GPU False
#define NT 128
#define X_1U 384
#define Y_1U 192
#define Z_1U 1

// flow parameters
#define LBtype float
#define UX 1
#define UY 1
#define UZ 1
#define NX 384
#define NY 192
#define NZ 1
#define DIM 2
#define NQ 9
#define VIS 0.0144000000
#define RHO 1.0
#define U0 0.04

// constants
#define PI 3.141592653589793238
#define FLUID       0b00000001
#define SOLID       0b00000010
#define GAS         0b00000100
#define INTERFACE   0b00001000
#define SENSOR      0b00010000

// vortex type
#define V_TAYLOR    0b00000001

// variables
#define N_OBJS 0
// #define N_SENS 2

// ============================================================================
// New architecture configuration (Stage 1)
// These defaults are safe for backward compatibility.
// compiler.py can override any of them via modify_macro().
// ============================================================================

// Collision model: 0=SRT, 1=TRT, 2=MRT
#ifndef COLLISION_MODEL
#define COLLISION_MODEL 0
#endif

// Streaming model: 0=double-buffer, 1=esoteric-pull
#ifndef STREAMING_MODEL
#define STREAMING_MODEL 0
#endif

// Storage precision: 0=FP32, 1=FP16S, 2=FP16C
#ifndef STORE_PRECISION
#define STORE_PRECISION 0
#endif

// DDF-shifting: 0=off, 1=on
#ifndef USE_DDF_SHIFTING
#define USE_DDF_SHIFTING 0
#endif

// LES model: 0=off, 1=Smagorinsky
#ifndef USE_LES
#define USE_LES 0
#endif

// Smagorinsky constant C_s
#ifndef LES_CS
#define LES_CS 0.160000f
#endif

// Inlet profile: 1=parabolic (channel), 0=uniform (external flow)
#ifndef INLET_PROFILE
#define INLET_PROFILE 1
#endif

// Outlet mode: 0=non-equilibrium extrapolation, 1=zero-gradient copy (more dissipative)
#ifndef OUTLET_MODE
#define OUTLET_MODE 0
#endif

// Outlet blend factor for damped outlet mode (OUTLET_MODE=2):
// f_out = a*(non-eq extrapolation) + (1-a)*(zero-gradient copy)
#ifndef OUTLET_BLEND_ALPHA
#define OUTLET_BLEND_ALPHA 0.700f
#endif

// Outlet backflow clamp: 0=off, 1=force non-negative streamwise velocity at outlet target
#ifndef OUTLET_BACKFLOW_CLAMP
#define OUTLET_BACKFLOW_CLAMP 1
#endif

// Global collision omega guardrails
#ifndef OMEGA_COLLISION_MIN
#define OMEGA_COLLISION_MIN 0.01f
#endif

#ifndef OMEGA_COLLISION_MAX
#define OMEGA_COLLISION_MAX 1.999f
#endif

// TRT magic parameter Lambda used to map omega+ -> omega-
#ifndef TRT_MAGIC_PARAM
#define TRT_MAGIC_PARAM 0.187500f
#endif