26 INTEGER :: I, J, K, IJK, IPJK, IJPK, IJKP
33 mmax_tot =
mmax+des_mmax
45 IF (.NOT.is_on_mype_plus1layer(i,j,k)) cycle
46 IF(.NOT.fluid_at(ijk)) cycle
51 DO m =
mmax+1, mmax_tot
59 DO m =
mmax+1, mmax_tot
68 DO m =
mmax+1, mmax_tot
112 INTEGER :: I, J, K, IJK, IPJK, IJPK, IJKP
119 mmax_tot =
mmax+des_mmax
131 IF (.NOT.is_on_mype_plus1layer(i,j,k)) cycle
140 if(.not.fluid_at(ijk)) cycle
143 IF(fluid_at(ipjk))
THEN 144 DO m =
mmax+1, mmax_tot
155 if(.not.fluid_at(ijk)) cycle
157 IF(fluid_at(ijpk))
THEN 158 DO m =
mmax+1, mmax_tot
170 if(.not.fluid_at(ijk)) cycle
172 IF(fluid_at(ijkp))
THEN 173 DO m =
mmax+1, mmax_tot
205 INTEGER,
INTENT(IN) :: L
212 DOUBLE PRECISION COEFF_EN, COEFF_EN2
214 DOUBLE PRECISION DELUP(dimn), PS_FORCE(dimn), VEL_ORIG(dimn)
219 DOUBLE PRECISION :: RELVEL(dimn)
220 DOUBLE PRECISION :: MEANVEL(dimn)
221 DOUBLE PRECISION :: VEL_NEW(dimn)
224 LOGICAL :: INSIDE_DOMAIN
232 vel_orig(1:dimn) = des_vel_new(l,:)
233 vel_new(1:dimn) = des_vel_new(l,:)
235 IF(l.EQ.focus_particle)
THEN 237 WRITE(*,
'(A20,2x,3(2x,i4))')
'CELL ID = ', pijk(l,1:3)
238 WRITE(*,
'(A20,2x,3(2x,g17.8))')
'EPS = ', 1.d0 -
ep_g(pijk(l,4)
239 WRITE(*,
'(A20,2x,3(2x,g17.8))')
'DES_VEL ORIG = ', des_vel_new(l
241 WRITE(*,
'(A20,2x,3(2x,g17.8))')
'FC = ', fc(l,:)
244 meanvel(1) =
u_s(ijk,m)
245 meanvel(2) =
v_s(ijk,m)
246 IF(do_k) meanvel(3) =
w_s(ijk,m)
250 delup(:) = -ps_force(:)
254 relvel(:) = des_vel_new(l,:) - meanus(:,m)
260 IF(abs(ps_force(idim)).eq.
zero) cycle
262 IF(vel_orig(idim)*meanus(idim,m).GT.
zero)
THEN 264 IF(vel_orig(idim)*delup(idim).GT.
zero)
THEN 266 IF(abs(meanus(idim,m)) .GT. abs(vel_orig(idim)))
THEN 269 if(vel_orig(idim).LT.
zero) ijk_c = im_of(ijk)
270 if(vel_orig(idim).GT.
zero) ijk_c = ip_of(ijk)
271 ELSEIF(idim.eq.2)
then 272 if(vel_orig(idim).LT.
zero) ijk_c = jm_of(ijk)
273 if(vel_orig(idim).GT.
zero) ijk_c = jp_of(ijk)
274 ELSEIF(idim.eq.3)
then 275 if(vel_orig(idim).LT.
zero) ijk_c = km_of(ijk)
276 if(vel_orig(idim).GT.
zero) ijk_c = kp_of(ijk)
278 inside_domain = .false.
279 inside_domain = fluid_at(ijk_c)
281 if(inside_domain)
then 282 vel_new(idim) = meanus(idim,m) - coeff_en*relvel(idim
289 IF(abs(vel_orig(idim)).GT.abs(meanus(idim,m)))
then 293 if(vel_orig(idim).LT.
zero) ijk_c = im_of(ijk)
294 if(vel_orig(idim).GT.
zero) ijk_c = ip_of(ijk)
295 ELSEIF(idim.eq.2)
then 296 if(vel_orig(idim).LT.
zero) ijk_c = jm_of(ijk)
297 if(vel_orig(idim).GT.
zero) ijk_c = jp_of(ijk)
298 ELSEIF(idim.eq.3)
then 299 if(vel_orig(idim).LT.
zero) ijk_c = km_of(ijk)
300 if(vel_orig(idim).GT.
zero) ijk_c = kp_of(ijk)
304 inside_domain = .false.
305 inside_domain = fluid_at(ijk_c)
307 if(inside_domain)
then 308 vel_new(idim) = (meanus(idim,m) - coeff_en*relvel(idim
310 vel_new(idim) = -coeff_en*vel_orig(idim)
315 if(vel_new(idim).LT.
zero) ijk_c = im_of(ijk)
316 if(vel_new(idim).GT.
zero) ijk_c = ip_of(ijk)
317 ELSEIF(idim.eq.2)
then 318 if(vel_new(idim).LT.
zero) ijk_c = jm_of(ijk)
319 if(vel_new(idim).GT.
zero) ijk_c = jp_of(ijk)
320 ELSEIF(idim.eq.3)
then 321 if(vel_new(idim).LT.
zero) ijk_c = km_of(ijk)
322 if(vel_new(idim).GT.
zero) ijk_c = kp_of(ijk)
324 inside_domain = .false.
325 inside_domain = fluid_at(ijk_c)
334 vel_new(idim) = coeff_en2 * vel_orig(idim)
341 IF(meanus(idim,m)*delup(idim).GT.
zero)
THEN 342 vel_new(idim) = meanus(idim,m) - coeff_en*relvel(idim)
351 IF(delup(idim)*grav(idim).LT.
zero.AND.vel_orig(idim)*grav(idim
THEN 352 vel_new(idim) = -coeff_en*vel_orig(idim)
355 des_vel_new( l,idim) = vel_new(idim)
359 if(l.eq.focus_particle)
THEN 363 WRITE(*,
'(A20,2x,3(2x,i5))')
'PIJK I, J, K =', i_of(ijk),j_of(ijk
364 WRITE(*,
'(A20,2x,3(2x,g17.8))')
'DES_VEL ORIG = ', vel_orig(:)
365 WRITE(*,
'(A20,2x,3(2x,g17.8))')
'DES_VEL NEW = ', des_vel_new(l
366 WRITE(*,
'(A20,2x,3(2x,g17.8))')
'MEANUS = ', meanus(:,1)
367 WRITE(*,
'(A20,2x,3(2x,g17.8))')
'DES_POS_NEW = ', des_pos_new(l
368 WRITE(*,
'(A20,2x,3(2x,g17.8))')
'GRAD PS = ', ps_force(:)
369 WRITE(*,
'(A20,2x,3(2x,g17.8))')
'DELUP = ', delup(:)
427 INTEGER :: I1, J1, K1, IJK,&
436 IF (.NOT.is_on_mype_owns(i1,j1,k1)) cycle
437 ijk_wall = funijk(i1,j1,k1)
438 ijk = funijk(i1,j1,k1+1)
446 IF (.NOT.is_on_mype_owns(i1,j1,k1)) cycle
447 ijk_wall = funijk(i1,j1,k1)
448 ijk = funijk(i1,j1,k1-1)
457 IF (.NOT.is_on_mype_owns(i1,j1,k1)) cycle
458 ijk_wall = funijk(i1,j1,k1)
459 ijk = funijk(i1,j1+1,k1)
466 IF (.NOT.is_on_mype_owns(i1,j1,k1)) cycle
467 ijk_wall = funijk(i1,j1,k1)
468 ijk = funijk(i1,j1-1,k1)
502 INTEGER I1, J1, K1, IJK,&
511 IF (.NOT.is_on_mype_owns(i1,j1,k1)) cycle
512 ijk_wall = funijk(i1,j1,k1)
513 ijk = funijk(i1,j1,k1+1)
520 IF (.NOT.is_on_mype_owns(i1,j1,k1)) cycle
521 ijk_wall = funijk(i1,j1,k1)
522 ijk = funijk(i1,j1,k1-1)
531 IF (.NOT.is_on_mype_owns(i1,j1,k1)) cycle
532 ijk_wall = funijk(i1,j1,k1)
533 ijk = funijk(i1+1,j1,k1)
541 IF (.NOT.is_on_mype_owns(i1,j1,k1)) cycle
542 ijk_wall = funijk(i1,j1,k1)
543 ijk = funijk(i1-1,j1,k1)
575 INTEGER :: I1, J1, K1, IJK,&
583 IF (.NOT.is_on_mype_owns(i1,j1,k1)) cycle
584 ijk = funijk(i1,j1+1,k1)
585 ijk_wall = funijk(i1,j1,k1)
592 IF (.NOT.is_on_mype_owns(i1,j1,k1)) cycle
593 ijk = funijk(i1,j1-1,k1)
594 ijk_wall = funijk(i1,j1,k1)
601 IF (.NOT.is_on_mype_owns(i1,j1,k1)) cycle
602 ijk = funijk(i1+1,j1,k1)
603 ijk_wall = funijk(i1,j1,k1)
610 IF (.NOT.is_on_mype_owns(i1,j1,k1)) cycle
611 ijk = funijk(i1-1,j1,k1)
612 ijk_wall = funijk(i1,j1,k1)
641 integer,
intent(in) :: funit
643 integer :: ijk, i, j,k
645 write(funit,*)
'VARIABLES= ',
' "I" ',
' "J" ',
' "K" ',&
648 write(funit, *)
'ZONE F=POINT, I=', (
iend1-
istart2)+1,
', J=', &
654 ijk = funijk(i, j, k)
657 WRITE(funit,
'(3(2x, i10), 3x, g17.8)') i, j, k,&
662 CLOSE(funit, status =
'keep')
686 integer :: i, j, k, ijk, fluid_ind, LL, PC, IDIM
687 double precision :: zcor
688 character(LEN=255) :: filename
690 WRITE(filename,
'(A,"_",I5.5,".dat")') trim(
run_name)//
'_U_S_',
mype 691 OPEN(1000, file = trim(filename), form =
'formatted', &
692 status=
'unknown',convert=
'BIG_ENDIAN')
694 write(1000,*)
'VARIABLES= ',
' "X" ',
' "Y" ',
' "Z" ', &
695 ' "EP_s " ',
' "pU_S" ',
' "pV_S" ',
' "dU_s" ',&
697 write(1000,*)
'ZONE F=POINT, I=', (
iend3-
istart3)+1,
', J=',&
700 write(1000,*)
'VARIABLES= ',
' "X" ',
' "Y" ',
' "Z" ', &
701 ' "EP_s " ',
' "pU_S" ',
' "pV_S" ',
' "pW_S" ',&
702 ' "dU_s" ',
' "dV_s" ',
' "dW_s" ' 704 write(1000,*)
'ZONE F=POINT, I=', (
iend3-
istart3)+1,
', J=',&
711 IF(fluid_at(ijk))
THEN 718 WRITE(1000,
'(3(2X,G17.8),4( 2X, G17.8))') &
719 xe(i-1)+
dx(i), yn(j-1)+
dy(j), zcor, 1.d0-
ep_g(ijk),
723 zcor = zt(k-1) +
dz(k)
724 WRITE(1000,
'(3(2X,G17.8),4( 2X, G17.8))') xe(i-1)+
dx(i
732 CLOSE(1000, status=
'KEEP')
736 WRITE(filename,
'(A,"_",I5.5,".DAT")') &
738 OPEN(1000, file = trim(filename), form =
'formatted',&
739 status=
'unknown',convert=
'BIG_ENDIAN')
741 IF(dimn.eq.3)
write(1000,*)
'VARIABLES= ',
' "X" ',
' "Y" ',
' "Z" ',&
742 ' "DELPX" ',
'"DELPY"',
'"DELPZ" ',&
743 ' "US_part" ',
'"VS_part"' ,
'"WS_part"',
'"EP_s_part"' 744 IF(dimn.eq.2)
write(1000,*)
'VARIABLES= ',
' "X" ',
' "Y" ', &
745 ' "DELPX" ',
'"DELPY"',
' "US_part" ',
'"VS_part"' , &
752 IF(is_nonexistent(ll)) cycle
754 IF(is_ghost(ll) .OR. is_entering_ghost(ll) .OR. &
755 is_exiting_ghost(ll)) cycle
757 WRITE(1000,
'(10( 2x, g17.8))') &
758 (des_pos_new(ll,idim), idim=1,dimn), &
759 (
ps_grad(idim,ll), idim=1,dimn), &
762 close(1000, status=
'keep')
double precision, dimension(:,:), allocatable v_s
integer, dimension(:), allocatable i_of
logical, dimension(:), allocatable wall_u_at
double precision, dimension(:), allocatable ep_g
double precision, dimension(:,:), allocatable avgsolvel_p
double precision, dimension(:,:), allocatable ps_grad
double precision, dimension(:,:), allocatable w_s
character(len=60) run_name
logical, dimension(:), allocatable wall_v_at
double precision, dimension(0:dim_j) dy
double precision, dimension(0:dim_k) dz
double precision, dimension(:,:), allocatable pic_v_s
double precision, dimension(:,:), allocatable u_s
integer, dimension(:), allocatable k_of
double precision mppic_coeff_en2
integer, dimension(:), allocatable j_of
logical, dimension(:), allocatable wall_w_at
subroutine mppic_comp_eulerian_vels_non_cg
double precision, dimension(0:dim_i) dx
double precision, dimension(:,:), allocatable pic_w_s
subroutine mppic_comp_eulerian_vels_cg
subroutine write_nodedata(funit)
double precision, dimension(:), allocatable epg_p
subroutine write_mppic_vel_s
double precision mppic_coeff_en1
double precision, dimension(:,:), allocatable pic_u_s
subroutine mppic_apply_ps_grad_part(L)
logical mppic_grav_treatment
double precision, parameter zero