
   import numpy as np
   import sys


# N.B. All variables that are set in this module must be included in the 'return' statement at the last line

########### section 0 choice of CPU or GPU ###################
   gpu = True

########### section 1 choice of differencing scheme ###########
   scheme='c'  #hybrid
   scheme_turb='u'  #hybrid upwind-central 
   acrank=1.0  # for pressure gradient
   acrank_conv=0.5  # for convection-diffusion
   acrank_conv_kom=1  # for convection-diffusion
   acrank_conv_keps=1  # for convection-diffusion
   jl0=0
#  scheme_turb='h'  #hybrid upwind-central 


########### section 2 turbulence models ###########
   cmu=0.09
   pans = False
   fkmin_limit=0
   keps = False
   kom_des = False
   keps_des = True
   kom = False
   wale = False
   smag = False
   sst = False
   c_eps_1=1.5
   c_eps_2=1.9
   cmu=0.09
   c_omega_1= 5./9.
   c_omega_2=3./40.
   prand_omega=2.0
   prand_eps=1.4
   prand_k=1.4
   jl0=0
   cdes=0.67
   kappa=0.4
   c_t=1.87
   c_l=5

   if keps:
      prand_k=1.4

   if pans: #pitm
      prand_k=1.4 
      prand_eps=1.4 

   if kom or kom_des:
      prand_k=2.0
   if smag:
      cmu=0.1

########### section 3 restart/save ###########
   restart = False
   save = True

########### section 4 fluid properties ###########
   viscos=1/16000

########### section 5 relaxation factors ###########
   urfvis=0.5

########### section 6 number of iteration and convergence criterira ###########
   maxit=5
   min_iter=2
   sormax=1e-3

########### section 7 all variables are printed during the iteration at node ###########
   imon=0
   jmon=0
   kmon=0

########### section 8 time-averaging ###########
   ntstep=20000
   uin=20
   dt=0.25*(x2d[1,0]-x2d[0,0])*xp.ones(ntstep)/uin
   itstep_start=ntstep-10000
   itstep_save=2000  # save every itstep_save timestep
   itstep_stats=1 # time average every itstep_stats timestep
   vtk=False

########### section 9 residual scaling parameters ###########
   resnorm_p=uin*zmax*y2d[1,-1]
   resnorm_vel=uin**2*zmax*y2d[1,-1]

########### Section 10 boundary conditions ###########
   cyclic_x = False
   cyclic_z = True

# synthetic inlet fluct
   L_t_synt=0.2
   nmodes_synt=150
   jmirror_synt=int(nj/2) # mirror vsynt at node jmirror; jmirror=0 means no mirroring
   dmin_synt=dz/4

# boundary conditions for u
   u_bc_west=xp.zeros((nj,nk))
   u_bc_east=xp.zeros((nj,nk))
   u_bc_south=xp.zeros((ni,nk))
   u_bc_north=xp.zeros((ni,nk))
   u_bc_z=0

   u_bc_west_type='d' 
   u_bc_east_type='n' 
   u_bc_south_type='n' # wall functions
   u_bc_north_type='n' # wall functions
   u_bc_z_type='n'

# boundary conditions for v
   v_bc_west=xp.zeros((nj,nk))
   v_bc_east=xp.zeros((nj,nk))
   v_bc_south=xp.zeros((ni,nk))
   v_bc_north=xp.zeros((ni,nk))
   v_bc_z=0

   v_bc_west_type='d' 
   v_bc_east_type='n' 
   v_bc_south_type='d'
   v_bc_north_type='d'
   v_bc_z_type='n'

# boundary conditions for w
   w_bc_west=xp.zeros((nj,nk))
   w_bc_east=xp.zeros((nj,nk))
   w_bc_south=xp.zeros((ni,nk))
   w_bc_north=xp.zeros((ni,nk))
   w_bc_z=0

   w_bc_west_type='d' 
   w_bc_east_type='n' 
   w_bc_south_type='d'
   w_bc_north_type='d'
   w_bc_z_type='d'

# boundary conditions for p
   p_bc_west=xp.zeros((nj,nk))
   p_bc_east=xp.zeros((nj,nk))
   p_bc_south=xp.zeros((ni,nk))
   p_bc_north=xp.zeros((ni,nk))
   p_bc_z=0

   p_bc_west_type='n'
   p_bc_east_type='n'
   p_bc_south_type='n'
   p_bc_north_type='n'
   p_bc_z_type='n'

# boundary conditions for k
   k_bc_west=xp.zeros((nj,nk))
   k_bc_east=xp.zeros((nj,nk))
   k_bc_south=xp.zeros((ni,nk))
   k_bc_north=xp.zeros((ni,nk))
   k_bc_z=0

   k_bc_west_type='d'
   k_bc_east_type='n'
   k_bc_south_type='d'
   k_bc_north_type='d'
   k_bc_z_type='n'

# boundary conditions for eps
   eps_bc_west=xp.zeros((nj,nk))
   eps_bc_east=xp.zeros((nj,nk))
   eps_bc_south=xp.zeros((ni,nk))
   eps_bc_north=xp.zeros((ni,nk))
   eps_bc_z=0

   eps_bc_west_type='d'
   eps_bc_east_type='n'
   eps_bc_south_type='d' 
   eps_bc_north_type='d' 
   eps_bc_z_type='n'

# boundary conditions for omega
   om_bc_west=xp.zeros((nj,nk))
   om_bc_east=xp.zeros((nj,nk))
   om_bc_south=xp.zeros((ni,nk))
   om_bc_north=xp.zeros((ni,nk))

   xwall_s=0.5*(x2d[0:-1,0]+x2d[1:,0])
   ywall_s=0.5*(y2d[0:-1,0]+y2d[1:,0])
   dist2_s=(yp2d[:,0]-ywall_s)**2+(xp2d[:,0]-xwall_s)**2
   om_bc_south=10*6*viscos/0.075/dist2_s

# make it 2D
   om_bc_south=xp.repeat(om_bc_south[:,None], repeats=nk, axis=1)

   xwall_n=0.5*(x2d[0:-1,-1]+x2d[1:,-1])
   ywall_n=0.5*(y2d[0:-1,-1]+y2d[1:,-1])
   dist2_n=(yp2d[:,-1]-ywall_n)**2+(xp2d[:,-1]-xwall_n)**2
   om_bc_north=10*6*viscos/0.075/dist2_n

# make it 2D
   om_bc_north=xp.repeat(om_bc_north[:,None], repeats=nk, axis=1)
   om_bc_z=0

   om_bc_west_type='d'
   om_bc_east_type='n'
   om_bc_south_type='d'
   om_bc_north_type='d'
   om_bc_z_type='n'

   return 


