From fd1d9699433e7bd18924dc6960da6d4a8f1f9fd7 Mon Sep 17 00:00:00 2001
From: adfboyd <adfboyd@UbuntuVM.myguest.virtualbox.org>
Date: Thu, 21 Mar 2024 17:41:28 +0000
Subject: [PATCH] added some extra debugging parameters

---
 src/BC-Ellipsoid.f90 |  8 ++---
 src/module_param.f90 |  2 +-
 src/parameters.f90   |  2 +-
 src/xcompact3d.f90   | 85 +++++++++++++++++++++++++++++++++++++-------
 4 files changed, 78 insertions(+), 19 deletions(-)

diff --git a/src/BC-Ellipsoid.f90 b/src/BC-Ellipsoid.f90
index ba4a83f0..ec64576c 100644
--- a/src/BC-Ellipsoid.f90
+++ b/src/BC-Ellipsoid.f90
@@ -313,10 +313,10 @@ subroutine init_ellip (ux1,uy1,uz1,phi1)
                  if (sine_z.eq.1) then 
                     uz1(i,j,k)=-sin_prec(x*twopi)*-cos_prec(y*twopi)*cos_prec(z*twopi)
                  endif
-                 if (iscalar == 1) then
-                    phi1(i,j,k,1:numscalar)=sin_prec(x)*sin_prec(y)*cos_prec(z)
-                 endif
-                 uz1(i,j,k)=zero
+                !  if (iscalar == 1) then
+                !     phi1(i,j,k,1:numscalar)=sin_prec(x)*sin_prec(y)*cos_prec(z)
+                !  endif
+                !  uz1(i,j,k)=zero
               enddo
            enddo
         enddo
diff --git a/src/module_param.f90 b/src/module_param.f90
index 284c8901..788921ef 100644
--- a/src/module_param.f90
+++ b/src/module_param.f90
@@ -623,6 +623,6 @@ module ibm_param
   real(mytype) :: chord,thickness,omega
   integer :: sine_init, sine_x, sine_y, sine_z
   integer :: inana ! Analytical BC as Input
-  integer :: imove, nozdrift, force_csv
+  integer :: imove, nozdrift, force_csv, bodies_fixed
 end module ibm_param
 !############################################################################
diff --git a/src/parameters.f90 b/src/parameters.f90
index c163992f..3d4da04c 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
+      ubcx,ubcy,ubcz,rads,rho_s, c_air, grav_x,grav_y,grav_z, nozdrift, force_csv, bodies_fixed
   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, &
diff --git a/src/xcompact3d.f90 b/src/xcompact3d.f90
index c47b94b6..f59b6bcb 100644
--- a/src/xcompact3d.f90
+++ b/src/xcompact3d.f90
@@ -18,10 +18,13 @@ program xcompact3d
   use genepsi, only : genepsi3d
   use ellipsoid_utils, only: lin_step, ang_step, QuaternionNorm
   use forces, only : force, init_forces, iforces,update_forces, xld,xrd,yld,yud,zld,zrd
+  use dbg_schemes, only : sin_prec, cos_prec
   implicit none
+!   real(mytype),dimension(xsize(1),xsize(2),xsize(3)):: ux1_exact,uy1_exact,uz1_exact
+
   real(mytype)  :: dummy,drag,lift,lat,grav_effy,grav_effx,grav_effz
-  integer :: iounit,ierr,i
-  real, dimension(100) :: x
+  integer :: iounit,ierr,i,j,k
+  real(mytype) :: x,y,z
 
 
   call init_xcompact3d()
@@ -37,12 +40,37 @@ program xcompact3d
    write(*,*) 'Outputting forces'
   end if 
 
-  if (sine_init.eq.1) then
-   write(*,*) 'Generated Sinusoidal flow field.'
-  endif
+!   if (sine_init.eq.1) then
+!    write(*,*) 'Generated Sinusoidal flow field.'
+
+!   do k=1,xsize(3)
+!    z=real((k+xstart(3)-1-1),mytype)*dz
+!    do j=1,xsize(2)
+!       y=real((j+xstart(2)-1-1),mytype)*dy
+!       do i=1,xsize(1)
+!          x=real(i-1,mytype)*dx
+            
+!          if (sine_x.eq.1) then 
+!             ux1_exact(i,j,k)=-twopi * cos_prec(x*twopi)*cos_prec(y*twopi)*cos_prec(z*twopi)
+!          endif
+!          if (sine_y.eq.1) then 
+!             uy1_exact(i,j,k)=-twopi * cos_prec(x*twopi)*cos_prec(y*twopi)*cos_prec(z*twopi)
+!          endif 
+!          if (sine_z.eq.1) then 
+!             uz1_exact(i,j,k)= twopi * sin_prec(x*twopi)*-cos_prec(y*twopi)*sin_prec(z*twopi)
+!          endif
+!         !  if (iscalar == 1) then
+!         !     phi1(i,j,k,1:numscalar)=sin_prec(x)*sin_prec(y)*cos_prec(z)
+!         !  endif
+!         !  uz1(i,j,k)=zero
+!       enddo
+!    enddo
+! enddo
+! endif
 
   
 
+
 !   do i = 1,100
 !    x(i) = i
 !   enddo
@@ -131,6 +159,10 @@ program xcompact3d
             linearForce(3)=zero
         endif
 
+        if (bodies_fixed==1) then
+            linearForce(:)=zero
+        endif
+
         if ((nrank==0).and.(force_csv.eq.1)) then
          open(unit=20, file='force_out.dat', action='write')
          write(20, *) linearForce(1), linearForce(2), linearForce(3), '\n'
@@ -169,14 +201,41 @@ program xcompact3d
       !    write(*,*) 'Centroid position is ', position
       !    write(*,*) 'Orientation is ', orientation
       !   end if
-
-     enddo !! End sub timesteps
-
-     call restart(ux1,uy1,uz1,dux1,duy1,duz1,ep1,pp3(:,:,:,1),phi1,dphi1,px1,py1,pz1,rho1,drho1,mu1,1)
-
-     call simu_stats(3)
-
-     call postprocessing(rho1,ux1,uy1,uz1,pp3,phi1,ep1)
+         if (sine_init.eq.1) then 
+            !x-derivatives
+               call derx (ta1,ux1,di1,sx,ffx,fsx,fwx,xsize(1),xsize(2),xsize(3),0,1) !ubcx is 1. etc
+               call derx (tb1,uy1,di1,sx,ffxp,fsxp,fwxp,xsize(1),xsize(2),xsize(3),1,2)
+               call derx (tc1,uz1,di1,sx,ffxp,fsxp,fwxp,xsize(1),xsize(2),xsize(3),1,3)
+               !y-derivatives
+               call dery (ta2,ux2,di2,sy,ffyp,fsyp,fwyp,ppy,ysize(1),ysize(2),ysize(3),1,1)
+               call dery (tb2,uy2,di2,sy,ffy,fsy,fwy,ppy,ysize(1),ysize(2),ysize(3),0,2)
+               call dery (tc2,uz2,di2,sy,ffyp,fsyp,fwyp,ppy,ysize(1),ysize(2),ysize(3),1,3)
+               !!z-derivatives
+               call derz (ta3,ux3,di3,sz,ffzp,fszp,fwzp,zsize(1),zsize(2),zsize(3),1,1)
+               call derz (tb3,uy3,di3,sz,ffzp,fszp,fwzp,zsize(1),zsize(2),zsize(3),1,2)
+               call derz (tc3,uz3,di3,sz,ffz,fsz,fwz,zsize(1),zsize(2),zsize(3),0,3)
+               !!all back to x-pencils
+               call transpose_z_to_y(ta3,td2)
+               call transpose_z_to_y(tb3,te2)
+               call transpose_z_to_y(tc3,tf2)
+               call transpose_y_to_x(td2,tg1)
+               call transpose_y_to_x(te2,th1)
+               call transpose_y_to_x(tf2,ti1)
+               call transpose_y_to_x(ta2,td1)
+               call transpose_y_to_x(tb2,te1)
+               call transpose_y_to_x(tc2,tf1)
+               !du/dx=ta1 du/dy=td1 and du/dz=tg1
+               !dv/dx=tb1 dv/dy=te1 and dv/dz=th1
+               !dw/dx=tc1 dw/dy=tf1 and dw/dz=ti1
+         endif
+
+      enddo !! End sub timesteps
+
+      call restart(ux1,uy1,uz1,dux1,duy1,duz1,ep1,pp3(:,:,:,1),phi1,dphi1,px1,py1,pz1,rho1,drho1,mu1,1)
+
+      call simu_stats(3)
+
+      call postprocessing(rho1,ux1,uy1,uz1,pp3,phi1,ep1)
 
   enddo !! End time loop
 
-- 
GitLab