diff --git a/src/common/m_constants.fpp b/src/common/m_constants.fpp index f926824cb8..1a87f0a912 100644 --- a/src/common/m_constants.fpp +++ b/src/common/m_constants.fpp @@ -44,7 +44,7 @@ module m_constants ! Interface Compression real(wp), parameter :: dflt_ic_eps = 1e-4_wp !< Ensure compression is only applied to surface cells in THINC real(wp), parameter :: dflt_ic_beta = 1.6_wp !< Sharpness parameter's default value used in THINC - integer, parameter :: moncon_cutoff = 1e-8_wp !< Monotonicity constraint's limiter to prevent extremas in THINC + real(wp), parameter :: moncon_cutoff = 1e-8_wp !< Monotonicity constraint's limiter to prevent extremas in THINC ! Chemistry real(wp), parameter :: dflt_T_guess = 1200._wp ! Default guess for temperature (when a previous value is not available) diff --git a/src/pre_process/m_assign_variables.fpp b/src/pre_process/m_assign_variables.fpp index e41428bf90..bfb6f9d159 100644 --- a/src/pre_process/m_assign_variables.fpp +++ b/src/pre_process/m_assign_variables.fpp @@ -38,9 +38,9 @@ module m_assign_variables !> Skeleton of s_assign_patch_mixture_primitive_variables !! and s_assign_patch_species_primitive_variables !! @param patch_id is the patch identifier - !! @param j (x) cell index in which the mixture or species primitive variables from the indicated patch areassigned - !! @param k (y,th) cell index in which the mixture or species primitive variables from the indicated patch areassigned - !! @param l (z) cell index in which the mixture or species primitive variables from the indicated patch areassigned + !! @param j (x) cell index in which the mixture or species primitive variables from the indicated patch are assigned + !! @param k (y,th) cell index in which the mixture or species primitive variables from the indicated patch are assigned + !! @param l (z) cell index in which the mixture or species primitive variables from the indicated patch are assigned !! @param eta pseudo volume fraction !! @param q_prim_vf Primitive variables !! @param patch_id_fp Array to track patch ids @@ -233,7 +233,6 @@ contains if (qbmm) then do i = 1, nb R3bar = R3bar + weight(i)*0.5_wp*(q_prim_vf(bubxb + 1 + (i - 1)*nmom)%sf(j, k, l))**3._wp - R3bar = R3bar + weight(i)*0.5_wp*(q_prim_vf(bubxb + 1 + (i - 1)*nmom)%sf(j, k, l))**3._wp end do else do i = 1, nb diff --git a/src/pre_process/m_grid.f90 b/src/pre_process/m_grid.f90 index 92bf4aa052..6ea71bd592 100644 --- a/src/pre_process/m_grid.f90 +++ b/src/pre_process/m_grid.f90 @@ -131,7 +131,7 @@ impure subroutine s_generate_serial_grid end do y_cb = y_cb*length - y_cc(0:m) = (y_cb(0:n) + y_cb(-1:n - 1))/2._wp + y_cc(0:n) = (y_cb(0:n) + y_cb(-1:n - 1))/2._wp dy = minval(y_cb(0:n) - y_cb(-1:n - 1)) @@ -168,7 +168,7 @@ impure subroutine s_generate_serial_grid end do z_cb = z_cb*length - z_cc(0:m) = (z_cb(0:p) + z_cb(-1:p - 1))/2._wp + z_cc(0:p) = (z_cb(0:p) + z_cb(-1:p - 1))/2._wp dz = minval(z_cb(0:p) - z_cb(-1:p - 1)) diff --git a/src/pre_process/m_mpi_proxy.fpp b/src/pre_process/m_mpi_proxy.fpp index 30ef061689..abc6a0e5d9 100644 --- a/src/pre_process/m_mpi_proxy.fpp +++ b/src/pre_process/m_mpi_proxy.fpp @@ -76,10 +76,6 @@ contains call MPI_BCAST(patch_bc(i)%${VAR}$, 1, MPI_INTEGER, 0, MPI_COMM_WORLD, ierr) #:endfor - #:for VAR in ['vel', 'angular_vel', 'angles'] - call MPI_BCAST(patch_ib(i)%${VAR}$, 3, mpi_p, 0, MPI_COMM_WORLD, ierr) - #:endfor - call MPI_BCAST(patch_bc(i)%radius, 1, mpi_p, 0, MPI_COMM_WORLD, ierr) #:for VAR in ['centroid', 'length'] @@ -120,7 +116,11 @@ contains if (chemistry) then call MPI_BCAST(patch_icpp(i)%Y, size(patch_icpp(i)%Y), mpi_p, 0, MPI_COMM_WORLD, ierr) end if - ! Broadcast IB variables + ! Broadcast IB variables: patch_ib is indexed 1:num_patches_max, + ! not 1:num_bc_patches_max, so these must live in the num_patches_max loop. + #:for VAR in ['vel', 'angular_vel', 'angles'] + call MPI_BCAST(patch_ib(i)%${VAR}$, size(patch_ib(i)%${VAR}$), mpi_p, 0, MPI_COMM_WORLD, ierr) + #:endfor call MPI_BCAST(patch_ib(i)%geometry, 1, MPI_INTEGER, 0, MPI_COMM_WORLD, ierr) call MPI_BCAST(patch_ib(i)%model_filepath, len(patch_ib(i)%model_filepath), MPI_CHARACTER, 0, MPI_COMM_WORLD, ierr) call MPI_BCAST(patch_ib(i)%model_threshold, 1, mpi_p, 0, MPI_COMM_WORLD, ierr) diff --git a/src/pre_process/m_perturbation.fpp b/src/pre_process/m_perturbation.fpp index 18fb89cd34..2093ea30dd 100644 --- a/src/pre_process/m_perturbation.fpp +++ b/src/pre_process/m_perturbation.fpp @@ -83,8 +83,8 @@ contains perturb_alpha = q_prim_vf(E_idx + perturb_flow_fluid)%sf(i, j, k) call random_number(rand_real) rand_real = rand_real*perturb_flow_mag - q_prim_vf(mom_idx%beg)%sf(i, j, k) = (1._wp + rand_real)*q_prim_vf(mom_idx%beg)%sf(i, j, k) q_prim_vf(mom_idx%end)%sf(i, j, k) = rand_real*q_prim_vf(mom_idx%beg)%sf(i, j, k) + q_prim_vf(mom_idx%beg)%sf(i, j, k) = (1._wp + rand_real)*q_prim_vf(mom_idx%beg)%sf(i, j, k) if (bubbles_euler) then q_prim_vf(alf_idx)%sf(i, j, k) = (1._wp + rand_real)*q_prim_vf(alf_idx)%sf(i, j, k) end if @@ -245,7 +245,7 @@ contains !> This subroutine computes velocity perturbations for a temporal mixing !! layer with a hyperbolic tangent mean streamwise velocity - !! profile, using an inverter version of the spectrum-based + !! profile, using an inverted version of the spectrum-based !! synthetic turbulence generation method proposed by !! Guo et al. (2023, JFM). subroutine s_perturb_mixlayer(q_prim_vf) diff --git a/src/pre_process/m_start_up.fpp b/src/pre_process/m_start_up.fpp index 3b45547c29..3950bf3efe 100644 --- a/src/pre_process/m_start_up.fpp +++ b/src/pre_process/m_start_up.fpp @@ -2,6 +2,8 @@ !! @file !! @brief Contains module m_start_up +#:include 'macros.fpp' + !> @brief Reads and validates user inputs, loads existing grid/IC data, and initializes pre-process modules module m_start_up @@ -767,7 +769,8 @@ contains real(wp), intent(inout) :: start, finish - integer :: j, k + integer :: j, k, l + real(wp) :: r2 ! Setting up the grid and the initial condition. If the grid is read in from ! preexisting grid data files, it is checked for consistency. If the grid is @@ -787,10 +790,16 @@ contains ! hard-coded psi if (hyper_cleaning) then - do j = 0, m + @:ASSERT(psi_idx > 0, "hyper_cleaning requires psi_idx to be set") + do l = 0, p do k = 0, n - q_cons_vf(psi_idx)%sf(j, k, 0) = 1d-2*exp(-(x_cc(j)**2 + y_cc(k)**2)/(2.0*0.05**2)) - q_prim_vf(psi_idx)%sf(j, k, 0) = q_cons_vf(psi_idx)%sf(j, k, 0) + do j = 0, m + r2 = x_cc(j)**2 + if (n > 0) r2 = r2 + y_cc(k)**2 + if (p > 0) r2 = r2 + z_cc(l)**2 + q_cons_vf(psi_idx)%sf(j, k, l) = 1.0e-2_wp*exp(-r2/(2.0_wp*0.05_wp**2)) + q_prim_vf(psi_idx)%sf(j, k, l) = q_cons_vf(psi_idx)%sf(j, k, l) + end do end do end do end if