diff --git a/src/BC-Ellipsoid.f90 b/src/BC-Ellipsoid.f90
index 022acf80f56cd79c181cd8485809252af5792d6c..21847075200c34cd67ac23fcc9bffaa2152ed9ea 100644
--- a/src/BC-Ellipsoid.f90
+++ b/src/BC-Ellipsoid.f90
@@ -130,7 +130,7 @@ subroutine inflow (phi)
 
     implicit none
 
-    integer  :: j,k,is
+    integer  :: i,j,k,is
     real(mytype),dimension(xsize(1),xsize(2),xsize(3),numscalar) :: phi
 
     !call random_number(bxo)
@@ -144,6 +144,19 @@ subroutine inflow (phi)
         enddo
     enddo
 
+    if (shear_flow_ybc.eq.1) then 
+        do k=1,xsize(3)
+            do i=1,xsize(1)
+                byxn(i,k)=+shear_velocity
+            enddo
+        enddo
+        do k=1,xsize(3)
+            do i=1,xsize(1)
+                byx1(i,k)=-shear_velocity
+            enddo 
+        enddo 
+    endif   
+
     if (iscalar.eq.1) then
         do is=1, numscalar
         do k=1,xsize(3)
@@ -245,7 +258,7 @@ subroutine init_ellip (ux1,uy1,uz1,phi1)
     real(mytype),dimension(xsize(1),xsize(2),xsize(3)) :: ux1,uy1,uz1
     real(mytype),dimension(xsize(1),xsize(2),xsize(3),numscalar) :: phi1
 
-    real(mytype) :: y,um,eqr
+    real(mytype) :: y,um,eqr,temp_vel
     integer :: k,j,i,ii,is,code
 
     ! write(*,*) 'INSIDE INIT ELLIP'
@@ -279,6 +292,8 @@ subroutine init_ellip (ux1,uy1,uz1,phi1)
 
     ux1=zero; uy1=zero; uz1=zero
 
+    
+
     if (iin.ne.0) then
         call system_clock(count=code)
         if (iin.eq.2) code=0
@@ -293,6 +308,7 @@ subroutine init_ellip (ux1,uy1,uz1,phi1)
         do j=1,xsize(2)
             do i=1,xsize(1)
                 ux1(i,j,k)=init_noise*(ux1(i,j,k)-0.5)
+                
                 uy1(i,j,k)=init_noise*(uy1(i,j,k)-0.5)
                 uz1(i,j,k)=init_noise*(uz1(i,j,k)-0.5)
             enddo
@@ -319,6 +335,11 @@ subroutine init_ellip (ux1,uy1,uz1,phi1)
         do j=1,xsize(2)
         do i=1,xsize(1)
             ux1(i,j,k)=ux1(i,j,k)+u1
+            if (shear_flow_ybc.eq.1) then 
+                temp_vel=(real((j+xstart(2)-1-1),mytype)*dy-yly/2.)/(yly/2.0)*shear_velocity
+                ux1(i,j,k)=ux1(i,j,k)+temp_vel
+                ! write(*,*) "shear velocity at y = ", real((j+xstart(2)-1-1),mytype)*dy, " = ",  temp_vel
+            endif
             uy1(i,j,k)=uy1(i,j,k)
             uz1(i,j,k)=uz1(i,j,k)
         enddo
diff --git a/src/module_param.f90 b/src/module_param.f90
index 9d16bbe878ea1fbff3cb582848cf6a5e16aa7016..0f700ca2a7671047cb84d2f1ef633a8868749817 100644
--- a/src/module_param.f90
+++ b/src/module_param.f90
@@ -620,8 +620,8 @@ module ibm_param
   real(mytype) :: cex,cey,cez,shx,shy,shz,oriw,orii,orij,orik,lvx,lvy,lvz,avx,avy,avz,ra,ubcx,ubcy,ubcz,rads,rho_s,ellip_m,c_air,cvl_scalar,grav_y,grav_x,grav_z
   real(mytype) :: position(3),orientation(4),linearVelocity(3),angularVelocity(4),linearAcceleration(3),linearForce(3),torque(3),shape(3),inertia(3,3)
   real(mytype) :: position_1(3),linearVelocity_1(3),orientation_1(4),angularVelocity_1(4)
-  real(mytype) :: chord,thickness,omega, tconv2_sign
+  real(mytype) :: chord,thickness,omega, tconv2_sign, shear_velocity
   integer :: inana ! Analytical BC as Input
-  integer :: imove, nozdrift, force_csv, bodies_fixed, cube_flag
+  integer :: imove, nozdrift, force_csv, bodies_fixed, cube_flag, shear_flow_ybc
 end module ibm_param
 !############################################################################
diff --git a/src/parameters.f90 b/src/parameters.f90
index 2e50404ee4ad5cf9a369459c825ed5b1f9dd9cd0..a2e0e80315339fbd5fd6c1739f5df4b76206e22f 100644
--- a/src/parameters.f90
+++ b/src/parameters.f90
@@ -62,7 +62,7 @@ subroutine parameter(input_i3d)
   NAMELIST /Tripping/ itrip,A_tr,xs_tr_tbl,ys_tr_tbl,ts_tr_tbl,x0_tr_tbl
   NAMELIST /ibmstuff/ cex,cey,cez,shx,shy,shz,oriw,orii,orij,orik,lvx,lvy,lvz,avx,avy,avz,ra, &
       nobjmax,nraf,nvol,iforces, cvl_scalar, npif, izap, ianal, imove, thickness, chord, omega , &
-      ubcx,ubcy,ubcz,rads,rho_s, c_air, grav_x,grav_y,grav_z, nozdrift, force_csv, bodies_fixed, cube_flag, tconv2_sign
+      ubcx,ubcy,ubcz,rads,rho_s, c_air, grav_x,grav_y,grav_z, nozdrift, force_csv, bodies_fixed, cube_flag, tconv2_sign, shear_flow_ybc, shear_velocity
   NAMELIST /ForceCVs/ xld, xrd, yld, yud, zld, zrd
   NAMELIST /LMN/ dens1, dens2, prandtl, ilmn_bound, ivarcoeff, ilmn_solve_temp, &
        massfrac, mol_weight, imultispecies, primary_species, &