Solver-plugin-source settings

I was trying to simulate the flow around an airfoil at Re=300000, M=0.7 and alpha=4° and I was using [solver-plugin-source] in order to trip transition of the boundary layer.
I tried the two following settings:

  1. a normal source rhov on the airfoil:
precision = single
[backend-cuda]
mpi-type = cuda-aware
device-id = local-rank
;[backend-openmp]
;cc = gcc
[constants]
gamma = 1.4
u_dim = 50.0
rho_dim =1.225
p_dim = 4464.285714285716
T_dim = 12.697961215347267
mu = 0.00020416666666666668
alpha = 4
Pr    = 0.72
M     = 0.7
Re    = 3e5
# centro streamwise del forcing
x0 = 0.1
y0=0.05
# spatial extents (ell_x, ell_y)
lx = 0.003    ;# l_x (streamwise width)
ly = 0.002  ; # l_y (wall-normal width)

# --- amplitude ---
A = 1000    ; # amplitude of the forcing 

# --- temporal band-limited surrogate 
f1 = 10000
f2 = 2500
f3 = 1000
f4 = 5000
f5= 15000

# fixed "random-like" phases to keep forcing deterministic and restartable
p1 = 0.13
p2 = 1.70
p3 = 0.90
p4 = 2.40
p5 = 0.50

# relative weights for each harmonic 
w1 = 0.2
w2 = 0.2
w3 = 0.2
w4 = 0.2
w5 = 0.2


[solver-time-integrator]
scheme = euler
tstart = 0.840
dt   =8e-8
tend = 1.24
controller = none
atol = 0.00001
rtol = 0.00001
errest-norm = l2
safety-fact = 0.9
min-fact = 0.3
max-fact = 2.5

[soln-plugin-writer]
dt-out = 0.02
basedir =  sol/.
basename =v2c_{t:.4f}
post-action = echo "Wrote file {soln} at time {t} for mesh {mesh}."

[solver]
system = navier-stokes
order  = 3
#viscosity-correction = sutherland
shock-capturing =entropy-filter
[solver-entropy-filter]
d-min = 1e-6
p-min = 1e-6
e-tol = 1e-6
niters = 4
formulation = nonlinear
;e-func = physical

[solver-interfaces]
riemann-solver = exact
ldg-beta = 0.5
ldg-tau = 0.1
[solver-interfaces-line]
flux-pts = gauss-legendre-lobatto
quad-deg = 11
quad-pts = gauss-legendre-lobatto

[solver-interfaces-quad]
flux-pts = gauss-legendre-lobatto
quad-deg = 11
quad-pts = gauss-legendre-lobatto

[solver-elements-quad]
soln-pts = gauss-legendre-lobatto
quad-deg = 11
quad-pts = gauss-legendre-lobatto

[solver-elements-tri]
soln-pts = alpha-opt
quad-deg = 11
quad-pts = williams-shunn

[solver-interfaces-tri]
flux-pts = alpha-opt
quad-deg = 11
quad-pts = alpha-opt

[soln-bcs-inlet]
type = char-riem-inv
rho = rho_dim
u = 50.0*cos((alpha*3.14/180))
v = 50*sin(alpha*3.14/180)
p = p_dim
w = 0

[soln-bcs-outlet]
type = char-riem-inv
rho = rho_dim
u = 50.00*cos((alpha*3.14/180))
v = 50.00*sin(alpha*3.14/180)
p = p_dim
w = 0

[soln-bcs-wall]
type = no-slp-adia-wall

[soln-ics]
rho = rho_dim
u = 50.0*cos((alpha*3.14/180))
v = 50.0*sin(alpha*3.14/180)
p = p_dim
w = 0

[soln-plugin-fluidforce-wall]
nsteps = 500
file = force_rae.csv
header = true
quad-deg = 6
morigin = (0.0, 0.0)

[soln-plugin-residual]
nsteps = 500
file = residual_rae.csv
header = true
norm = inf

[soln-plugin-nancheck]
nsteps = 90
[solver-plugin-source]
rhov= rho * A * exp(-(powf((x - x0),2) /pow(lx,2) +pow((y-y0),2) / pow(ly,2))) * ( w1*sin(2*pi*f1*t + p1) + w2*sin(2*pi*f2*t + p2) + w3*sin(2*pi*f3*t + p3) + w4*sin(2*pi*f4*t + p4)+  w5*sin(2*pi*f5*t + p5))

rhou = 0.0
rhow = 0.0
E    = 0.0
rho  = 0.0

  1. a source of rhov and rhou ahead the leading edge:
[backend]
precision = single
[backend-cuda]
mpi-type = cuda-aware
device-id = local-rank
;[backend-openmp]
;cc = gcc
[constants]
gamma = 1.4
u_dim = 50.0
rho_dim =1.225
p_dim = 4464.285714285716
T_dim = 12.697961215347267
mu = 0.00020416666666666668
alpha = 4
Pr    = 0.72
M     = 0.7
Re    = 3e5
# centro streamwise del forcing
x0 = -1
y0=0.0
# spatial extents (ell_x, ell_y)
lx = 0.1   ;# l_x (streamwise width)
ly =0.1  ; # l_y (wall-normal width)

# --- amplitude ---
A = 1000    ;

# --- temporal band-limited surrogate 
f1 = 50
f2 = 0
f3 = 0
f4 = 0
f5= 0

# fixed "random-like" phases to keep forcing deterministic and restartable
p1 = 0
p2 = 0
p3 = 0
p4 = 0
p5 = 0

# relative weights for each harmonic 
w1 = 1
w2 = 0
w3 = 0
w4 = 0
w5 = 0

[solver-time-integrator]
scheme = euler
tstart = 0.0
dt   =4e-8
tend = 0.80
controller = none
atol = 0.00001
rtol = 0.00001
errest-norm = l2
safety-fact = 0.9
min-fact = 0.3
max-fact = 2.5

[soln-plugin-writer]
dt-out = 0.02
basedir =  sol/.
basename =v2c_{t:.4f}
post-action = echo "Wrote file {soln} at time {t} for mesh {mesh}."

[solver]
system = navier-stokes
order  = 3
#viscosity-correction = sutherland
shock-capturing =entropy-filter
[solver-entropy-filter]
d-min = 1e-6
p-min = 1e-6
e-tol = 1e-6
niters = 4
formulation = nonlinear
;e-func = physical

[solver-interfaces]
riemann-solver = exact
ldg-beta = 0.5
ldg-tau = 0.1
[solver-interfaces-line]
flux-pts = gauss-legendre-lobatto
quad-deg = 11
quad-pts = gauss-legendre-lobatto

[solver-interfaces-quad]
flux-pts = gauss-legendre-lobatto
quad-deg = 11
quad-pts = gauss-legendre-lobatto

[solver-elements-quad]
soln-pts = gauss-legendre-lobatto
quad-deg = 11
quad-pts = gauss-legendre-lobatto

[solver-elements-tri]
soln-pts = alpha-opt
quad-deg = 11
quad-pts = williams-shunn

[solver-interfaces-tri]
flux-pts = alpha-opt
quad-deg = 11
quad-pts = alpha-opt

[soln-bcs-inlet]
type = char-riem-inv
rho = rho_dim
u = 50.0*cos((alpha*3.14/180))
v = 50*sin(alpha*3.14/180)
p = p_dim
w = 0

[soln-bcs-outlet]
type = char-riem-inv
rho = rho_dim
u = 50.00*cos((alpha*3.14/180))
v = 50.00*sin(alpha*3.14/180)
p = p_dim
w = 0

[soln-bcs-wall]
type = no-slp-adia-wall

[soln-ics]
rho = rho_dim
u = 50.0*cos((alpha*3.14/180))
v = 50.0*sin(alpha*3.14/180)
p = p_dim
w = 0

[soln-plugin-fluidforce-wall]
nsteps = 500
file = force_rae.csv
header = true
quad-deg = 6
morigin = (0.0, 0.0)

[soln-plugin-residual]
nsteps = 500
file = residual_rae.csv
header = true
norm = inf

[soln-plugin-nancheck]
nsteps = 90
[solver-plugin-source]
rhov= rho * A * exp(-(powf((x - x0),2) /pow(lx,2) +pow((y-y0),2) / pow(ly,2))) * ( w1*sin(2*pi*f1*t + p1) + w2*sin(2*pi*f2*t + p2) + w3*sin(2*pi*f3*t + p3) + w4*sin(2*pi*f4*t + p4)+  w5*sin(2*pi*f5*t + p5))
rhou= rho * A * exp(-(powf((x - x0),2) /pow(lx,2) +pow((y-y0),2) / pow(ly,2))) * ( w1*sin(2*pi*f1*t + p1) + w2*sin(2*pi*f2*t + p2) + w3*sin(2*pi*f3*t + p3) + w4*sin(2*pi*f4*t + p4)+  w5*sin(2*pi*f5*t + p5))

rhow = 0.0
E    = 0.0
rho  = 0.0

However in both cases I evaluated the mean statistics but I found no significant differences with the case without the plugin. Are there recommendations on how to set up the source terms (type, location, frequency content) to effectively promote transition?

It is often useful to plot your source function with the mesh overlaid. This way you can see its extent more clearly. To have any meaningful impact on the flow it likely needs to be several elements in size.

Regards, Freddie.