60 :: bccsound, & !< at cell bary centers
124 LOGICAL :: fargo_transformation_applied = .false.
126 :: density => null(), &
127 velocity => null(), &
166 TYPE(
dict_typ),
POINTER :: config, IO
168 INTEGER :: next_idx,err
173 this%VNUM = this%VDIM + 1
176 CALL getattr(config,
"cs", this%csiso, 0.0)
179 ALLOCATE(this%pvarname(this%VNUM),this%cvarname(this%VNUM),this%bccsound, &
183 CALL this%Error(
"InitPhysics_eulerisotherm",
"Unable to allocate memory.")
189 this%pvarname(this%DENSITY) =
"density"
190 this%cvarname(this%DENSITY) =
"density"
193 IF (this%VDIM.GE.2)
THEN
200 IF (this%VDIM.EQ.3)
THEN
213 IF (btest(mesh%VECTOR_COMPONENTS,0))
THEN
214 this%pvarname(next_idx) =
"xvelocity"
215 this%cvarname(next_idx) =
"xmomentum"
216 next_idx = next_idx + 1
218 IF (btest(mesh%VECTOR_COMPONENTS,1))
THEN
219 this%pvarname(next_idx) =
"yvelocity"
220 this%cvarname(next_idx) =
"ymomentum"
221 next_idx = next_idx + 1
223 IF (btest(mesh%VECTOR_COMPONENTS,2))
THEN
224 this%pvarname(next_idx) =
"zvelocity"
225 this%cvarname(next_idx) =
"zmomentum"
232 IF(this%csiso.GT.0.)
THEN
233 this%bccsound%data1d(:) = this%csiso
234 this%fcsound%data1d(:) = this%csiso
236 this%bccsound%data1d(:) = 0.
237 this%fcsound%data1d(:) = 0.
241 this%supports_absorbing = .true.
242 this%supports_farfield = .true.
244 CALL this%SetOutput(mesh,config,io)
253 TYPE(
dict_typ),
POINTER :: config,IO
258 CALL getattr(config,
"output/bccsound", valwrite, 0)
259 IF (valwrite .EQ. 1) &
260 CALL setattr(io,
"bccsound",&
261 this%bccsound%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX))
263 CALL getattr(config,
"output/fcsound", valwrite, 0)
264 IF (valwrite .EQ. 1) &
265 CALL setattr(io,
"fcsound",&
266 this%fcsound%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,:))
275 INTEGER,
OPTIONAL,
INTENT(IN) :: flavour,num
277 IF (
ASSOCIATED(new_sv))
THEN
280 CALL this%Warning(
"physics_eulerisotherm::new_statevector",
"new statevector already associated")
293 REAL,
DIMENSION(Mesh%IGMIN:Mesh%IGMAX,Mesh%JGMIN:Mesh%JGMAX,Mesh%KGMIN:Mesh%KGMAX), &
294 INTENT(IN) :: bccsound
296 this%bccsound = bccsound
305 REAL,
DIMENSION(Mesh%IGMIN:Mesh%IGMAX,Mesh%JGMIN:Mesh%JGMAX,Mesh%KGMIN:Mesh%KGMAX,Mesh%NFACES), &
306 INTENT(IN) :: fcsound
308 this%fcsound = fcsound
318 SELECT TYPE(c => cvar)
320 SELECT TYPE(p => pvar)
324 SELECT CASE(
this%VDIM)
326 CALL cons2prim(c%density%data1d(:),c%momentum%data1d(:), &
327 p%density%data1d(:),p%velocity%data1d(:))
329 CALL cons2prim(c%density%data1d(:),c%momentum%data2d(:,1), &
330 c%momentum%data2d(:,2),p%density%data1d(:), &
331 p%velocity%data2d(:,1),p%velocity%data2d(:,2))
333 CALL cons2prim(c%density%data1d(:),c%momentum%data2d(:,1), &
334 c%momentum%data2d(:,2),c%momentum%data2d(:,3), &
335 p%density%data1d(:),p%velocity%data2d(:,1), &
336 p%velocity%data2d(:,2),p%velocity%data2d(:,3))
338 p%fargo_transformation_applied = c%fargo_transformation_applied
351 INTEGER,
INTENT(IN) :: i1,i2,j1,j2,k1,k2
354 SELECT TYPE(c => cvar)
356 SELECT TYPE(p => pvar)
359 SELECT CASE (c%density%RANK)
362 SELECT CASE(
this%VDIM)
364 CALL cons2prim(c%density%data3d(i1:i2,j1:j2,k1:k2), &
365 c%momentum%data4d(i1:i2,j1:j2,k1:k2,1), &
366 p%density%data3d(i1:i2,j1:j2,k1:k2), &
367 p%velocity%data4d(i1:i2,j1:j2,k1:k2,1))
369 CALL cons2prim(c%density%data3d(i1:i2,j1:j2,k1:k2), &
370 c%momentum%data4d(i1:i2,j1:j2,k1:k2,1), &
371 c%momentum%data4d(i1:i2,j1:j2,k1:k2,2), &
372 p%density%data3d(i1:i2,j1:j2,k1:k2), &
373 p%velocity%data4d(i1:i2,j1:j2,k1:k2,1), &
374 p%velocity%data4d(i1:i2,j1:j2,k1:k2,2))
376 CALL cons2prim(c%density%data3d(i1:i2,j1:j2,k1:k2), &
377 c%momentum%data4d(i1:i2,j1:j2,k1:k2,1), &
378 c%momentum%data4d(i1:i2,j1:j2,k1:k2,2), &
379 c%momentum%data4d(i1:i2,j1:j2,k1:k2,3), &
380 p%density%data3d(i1:i2,j1:j2,k1:k2), &
381 p%velocity%data4d(i1:i2,j1:j2,k1:k2,1), &
382 p%velocity%data4d(i1:i2,j1:j2,k1:k2,2), &
383 p%velocity%data4d(i1:i2,j1:j2,k1:k2,3))
387 SELECT CASE(
this%VDIM)
389 CALL cons2prim(c%density%data4d(i1:i2,j1:j2,k1:k2,:), &
390 c%momentum%data5d(i1:i2,j1:j2,k1:k2,:,1), &
391 p%density%data4d(i1:i2,j1:j2,k1:k2,:), &
392 p%velocity%data5d(i1:i2,j1:j2,k1:k2,:,1))
394 CALL cons2prim(c%density%data4d(i1:i2,j1:j2,k1:k2,:), &
395 c%momentum%data5d(i1:i2,j1:j2,k1:k2,:,1), &
396 c%momentum%data5d(i1:i2,j1:j2,k1:k2,:,2), &
397 p%density%data4d(i1:i2,j1:j2,k1:k2,:), &
398 p%velocity%data5d(i1:i2,j1:j2,k1:k2,:,1), &
399 p%velocity%data5d(i1:i2,j1:j2,k1:k2,:,2))
401 CALL cons2prim(c%density%data4d(i1:i2,j1:j2,k1:k2,:), &
402 c%momentum%data5d(i1:i2,j1:j2,k1:k2,:,1), &
403 c%momentum%data5d(i1:i2,j1:j2,k1:k2,:,2), &
404 c%momentum%data5d(i1:i2,j1:j2,k1:k2,:,3), &
405 p%density%data4d(i1:i2,j1:j2,k1:k2,:), &
406 p%velocity%data5d(i1:i2,j1:j2,k1:k2,:,1), &
407 p%velocity%data5d(i1:i2,j1:j2,k1:k2,:,2), &
408 p%velocity%data5d(i1:i2,j1:j2,k1:k2,:,3))
427 SELECT TYPE(p => pvar)
429 SELECT TYPE(c => cvar)
433 SELECT CASE(
this%VDIM)
435 CALL prim2cons(p%density%data1d(:),p%velocity%data1d(:), &
436 c%density%data1d(:),c%momentum%data1d(:))
438 CALL prim2cons(p%density%data1d(:),p%velocity%data2d(:,1), &
439 p%velocity%data2d(:,2),c%density%data1d(:), &
440 c%momentum%data2d(:,1),c%momentum%data2d(:,2))
442 CALL prim2cons(p%density%data1d(:),p%velocity%data2d(:,1), &
443 p%velocity%data2d(:,2),p%velocity%data2d(:,3), &
444 c%density%data1d(:),c%momentum%data2d(:,1), &
445 c%momentum%data2d(:,2),c%momentum%data2d(:,3))
447 c%fargo_transformation_applied = p%fargo_transformation_applied
460 INTEGER,
INTENT(IN) :: i1,i2,j1,j2,k1,k2
463 SELECT TYPE(p => pvar)
465 SELECT TYPE(c => cvar)
468 SELECT CASE (p%density%RANK)
471 SELECT CASE(
this%VDIM)
473 CALL prim2cons(p%density%data3d(i1:i2,j1:j2,k1:k2), &
474 p%velocity%data4d(i1:i2,j1:j2,k1:k2,1), &
475 c%density%data3d(i1:i2,j1:j2,k1:k2), &
476 c%momentum%data4d(i1:i2,j1:j2,k1:k2,1))
478 CALL prim2cons(p%density%data3d(i1:i2,j1:j2,k1:k2), &
479 p%velocity%data4d(i1:i2,j1:j2,k1:k2,1), &
480 p%velocity%data4d(i1:i2,j1:j2,k1:k2,2), &
481 c%density%data3d(i1:i2,j1:j2,k1:k2), &
482 c%momentum%data4d(i1:i2,j1:j2,k1:k2,1), &
483 c%momentum%data4d(i1:i2,j1:j2,k1:k2,2))
485 CALL prim2cons(p%density%data3d(i1:i2,j1:j2,k1:k2), &
486 p%velocity%data4d(i1:i2,j1:j2,k1:k2,1), &
487 p%velocity%data4d(i1:i2,j1:j2,k1:k2,2), &
488 p%velocity%data4d(i1:i2,j1:j2,k1:k2,3), &
489 c%density%data3d(i1:i2,j1:j2,k1:k2), &
490 c%momentum%data4d(i1:i2,j1:j2,k1:k2,1), &
491 c%momentum%data4d(i1:i2,j1:j2,k1:k2,2), &
492 c%momentum%data4d(i1:i2,j1:j2,k1:k2,3))
496 SELECT CASE(
this%VDIM)
498 CALL prim2cons(p%density%data4d(i1:i2,j1:j2,k1:k2,:), &
499 p%velocity%data5d(i1:i2,j1:j2,k1:k2,:,1), &
500 c%density%data4d(i1:i2,j1:j2,k1:k2,:), &
501 c%momentum%data5d(i1:i2,j1:j2,k1:k2,:,1))
503 CALL prim2cons(p%density%data4d(i1:i2,j1:j2,k1:k2,:), &
504 p%velocity%data5d(i1:i2,j1:j2,k1:k2,:,1), &
505 p%velocity%data5d(i1:i2,j1:j2,k1:k2,:,2), &
506 c%density%data4d(i1:i2,j1:j2,k1:k2,:), &
507 c%momentum%data5d(i1:i2,j1:j2,k1:k2,:,1), &
508 c%momentum%data5d(i1:i2,j1:j2,k1:k2,:,2))
510 CALL prim2cons(p%density%data4d(i1:i2,j1:j2,k1:k2,:), &
511 p%velocity%data5d(i1:i2,j1:j2,k1:k2,:,1), &
512 p%velocity%data5d(i1:i2,j1:j2,k1:k2,:,2), &
513 p%velocity%data5d(i1:i2,j1:j2,k1:k2,:,3), &
514 c%density%data4d(i1:i2,j1:j2,k1:k2,:), &
515 c%momentum%data5d(i1:i2,j1:j2,k1:k2,:,1), &
516 c%momentum%data5d(i1:i2,j1:j2,k1:k2,:,2), &
517 c%momentum%data5d(i1:i2,j1:j2,k1:k2,:,3))
541 SELECT TYPE(p => pvar)
546 IF (mesh%ROTSYM.EQ.n) m = m + 1
548 minwav%data2d(:,n),maxwav%data2d(:,n))
560 REAL,
DIMENSION(Mesh%IGMIN:Mesh%IGMAX,Mesh%JGMIN:Mesh%JGMAX,Mesh%KGMIN:Mesh%KGMAX,Mesh%NFACES,this%VNUM), &
561 INTENT(IN) :: prim,cons
568 IF (mesh%INUM.GT.1)
THEN
573 minwav%data4d(:,:,:,n),maxwav%data4d(:,:,:,n))
575 DO k=mesh%KGMIN,mesh%KGMAX
576 DO j=mesh%JGMIN,mesh%JGMAX
578 DO i=mesh%IMIN+mesh%IM1,mesh%IMAX
580 minwav%data4d(i,j,k,n) = min(0.0,
this%tmp(i+mesh%IP1,j,k) ,minwav%data4d(i,j,k,n))
581 maxwav%data4d(i,j,k,n) = max(0.0,
this%tmp1(i+mesh%IP1,j,k),maxwav%data4d(i,j,k,n))
588 IF (mesh%ROTSYM.EQ.1) m = m + 1
591 IF (mesh%JNUM.GT.1)
THEN
596 minwav%data4d(:,:,:,n),maxwav%data4d(:,:,:,n))
598 DO k=mesh%KGMIN,mesh%KGMAX
599 DO j=mesh%JMIN+mesh%JM1,mesh%JMAX
601 DO i=mesh%IGMIN,mesh%IGMAX
603 minwav%data4d(i,j,k,n) = min(0.0,
this%tmp(i,j+mesh%JP1,k),minwav%data4d(i,j,k,n))
604 maxwav%data4d(i,j,k,n) = max(0.0,
this%tmp1(i,j+mesh%JP1,k),maxwav%data4d(i,j,k,n))
611 IF (mesh%ROTSYM.EQ.2) m = m + 1
614 IF (mesh%KNUM.GT.1)
THEN
619 minwav%data4d(:,:,:,n),maxwav%data4d(:,:,:,n))
621 DO k=mesh%KMIN+mesh%KM1,mesh%KMAX
622 DO j=mesh%JGMIN,mesh%JGMAX
624 DO i=mesh%IGMIN,mesh%IGMAX
626 minwav%data4d(i,j,k,n) = min(0.0,
this%tmp(i,j,k+mesh%KP1),minwav%data4d(i,j,k,n))
627 maxwav%data4d(i,j,k,n) = max(0.0,
this%tmp1(i,j,k+mesh%KP1),maxwav%data4d(i,j,k,n))
698 SELECT TYPE(mgeo => mesh%geometry)
699 TYPE IS(geometry_cartesian)
703 SELECT TYPE(p => pvar)
705 SELECT TYPE(c => cvar)
707 SELECT TYPE(s => sterm)
710 s%density%data1d(:) = 0.0
711 SELECT CASE(mesh%VECTOR_COMPONENTS)
715 mesh%cxyx%data2d(:,2),mesh%cxzx%data2d(:,2), &
716 mesh%cyxy%data2d(:,2),mesh%czxz%data2d(:,2), &
717 p%velocity%data2d(:,1),0.0,0.0, &
718 p%density%data1d(:)*
this%bccsound%data1d(:)**2, &
723 mesh%cxyx%data2d(:,2),mesh%cyxy%data2d(:,2), &
724 mesh%cyzy%data2d(:,2),mesh%czyz%data2d(:,2), &
725 0.0,p%velocity%data2d(:,1),0.0, &
726 p%density%data1d(:)*
this%bccsound%data1d(:)**2, &
731 mesh%cxzx%data2d(:,2),mesh%cyzy%data2d(:,2), &
732 mesh%czxz%data2d(:,2),mesh%czyz%data2d(:,2), &
733 0.0,0.0,p%velocity%data2d(:,1), &
734 p%density%data1d(:)*
this%bccsound%data1d(:)**2, &
740 mesh%cxyx%data2d(:,2),mesh%cxzx%data2d(:,2), &
741 mesh%cyxy%data2d(:,2),mesh%czxz%data2d(:,2), &
742 p%velocity%data2d(:,1),p%velocity%data2d(:,2),0.0, &
743 p%density%data1d(:)*
this%bccsound%data1d(:)**2, &
744 c%momentum%data2d(:,2),0.0)
747 mesh%cxyx%data2d(:,2),mesh%cyxy%data2d(:,2), &
748 mesh%cyzy%data2d(:,2),mesh%czyz%data2d(:,2), &
749 p%velocity%data2d(:,1),p%velocity%data2d(:,2),0.0, &
750 p%density%data1d(:)*
this%bccsound%data1d(:)**2, &
751 c%momentum%data2d(:,1),0.0)
756 mesh%cxyx%data2d(:,2),mesh%cxzx%data2d(:,2), &
757 mesh%cyxy%data2d(:,2),mesh%czxz%data2d(:,2), &
758 p%velocity%data2d(:,1),0.0,p%velocity%data2d(:,2), &
759 p%density%data1d(:)*
this%bccsound%data1d(:)**2, &
760 0.0,c%momentum%data2d(:,2))
763 mesh%cxzx%data2d(:,2),mesh%cyzy%data2d(:,2), &
764 mesh%czxz%data2d(:,2),mesh%czyz%data2d(:,2), &
765 p%velocity%data2d(:,1),0.0,p%velocity%data2d(:,2), &
766 p%density%data1d(:)*
this%bccsound%data1d(:)**2, &
767 c%momentum%data2d(:,1),0.0)
772 mesh%cxyx%data2d(:,2),mesh%cyxy%data2d(:,2), &
773 mesh%cyzy%data2d(:,2),mesh%czyz%data2d(:,2), &
774 0.0,p%velocity%data2d(:,1),p%velocity%data2d(:,2), &
775 p%density%data1d(:)*
this%bccsound%data1d(:)**2, &
776 0.0,c%momentum%data2d(:,2))
779 mesh%cxzx%data2d(:,2),mesh%cyzy%data2d(:,2), &
780 mesh%czxz%data2d(:,2),mesh%czyz%data2d(:,2), &
781 0.0,p%velocity%data2d(:,1),p%velocity%data2d(:,2), &
782 p%density%data1d(:)*
this%bccsound%data1d(:)**2, &
783 0.0,c%momentum%data2d(:,1))
787 mesh%cxyx%data2d(:,2),mesh%cxzx%data2d(:,2), &
788 mesh%cyxy%data2d(:,2),mesh%czxz%data2d(:,2), &
789 p%velocity%data2d(:,1),p%velocity%data2d(:,2), &
790 p%velocity%data2d(:,3), &
791 p%density%data1d(:)*
this%bccsound%data1d(:)**2, &
792 c%momentum%data2d(:,2),c%momentum%data2d(:,3))
795 mesh%cxyx%data2d(:,2),mesh%cyxy%data2d(:,2), &
796 mesh%cyzy%data2d(:,2),mesh%czyz%data2d(:,2), &
797 p%velocity%data2d(:,1),p%velocity%data2d(:,2), &
798 p%velocity%data2d(:,3), &
799 p%density%data1d(:)*
this%bccsound%data1d(:)**2, &
800 c%momentum%data2d(:,1),c%momentum%data2d(:,3))
803 mesh%cxzx%data2d(:,2),mesh%cyzy%data2d(:,2), &
804 mesh%czxz%data2d(:,2),mesh%czyz%data2d(:,2), &
805 p%velocity%data2d(:,1),p%velocity%data2d(:,2), &
806 p%velocity%data2d(:,3), &
807 p%density%data1d(:)*
this%bccsound%data1d(:)**2, &
808 c%momentum%data2d(:,1),c%momentum%data2d(:,2))
818 IF (mesh%INUM.GT.1)
THEN
819 sterm%data4d(mesh%IGMIN:mesh%IMIN+mesh%IM1,:,:,:) = 0.0
820 sterm%data4d(mesh%IMAX+mesh%IP1:mesh%IGMAX,:,:,:) = 0.0
822 IF (mesh%JNUM.GT.1)
THEN
823 sterm%data4d(:,mesh%JGMIN:mesh%JMIN+mesh%JM1,:,:) = 0.0
824 sterm%data4d(:,mesh%JMAX+mesh%JP1:mesh%JGMAX,:,:) = 0.0
826 IF (mesh%KNUM.GT.1)
THEN
828 sterm%data3d(:,mesh%KGMIN:mesh%KMIN+mesh%KM1,:) = 0.0
829 sterm%data3d(:,mesh%KMAX+mesh%KP1:mesh%KGMAX,:) = 0.0
835 PURE SUBROUTINE calcfluxesx(this,Mesh,nmin,nmax,prim,cons,xfluxes)
840 INTEGER,
INTENT(IN) :: nmin,nmax
843 SELECT TYPE(p => prim)
845 SELECT TYPE(c => cons)
847 SELECT TYPE(f => xfluxes)
849 SELECT CASE(
this%VDIM)
852 p%density%data2d(:,nmin:nmax), &
853 p%velocity%data3d(:,nmin:nmax,1), &
854 c%momentum%data3d(:,nmin:nmax,1), &
855 f%density%data2d(:,nmin:nmax), &
856 f%momentum%data3d(:,nmin:nmax,1))
859 p%density%data2d(:,nmin:nmax), &
860 p%velocity%data3d(:,nmin:nmax,1), &
861 c%momentum%data3d(:,nmin:nmax,1), &
862 c%momentum%data3d(:,nmin:nmax,2), &
863 f%density%data2d(:,nmin:nmax), &
864 f%momentum%data3d(:,nmin:nmax,1), &
865 f%momentum%data3d(:,nmin:nmax,2))
868 p%density%data2d(:,nmin:nmax), &
869 p%velocity%data3d(:,nmin:nmax,1), &
870 c%momentum%data3d(:,nmin:nmax,1), &
871 c%momentum%data3d(:,nmin:nmax,2), &
872 c%momentum%data3d(:,nmin:nmax,3), &
873 f%density%data2d(:,nmin:nmax), &
874 f%momentum%data3d(:,nmin:nmax,1), &
875 f%momentum%data3d(:,nmin:nmax,2), &
876 f%momentum%data3d(:,nmin:nmax,3))
884 PURE SUBROUTINE calcfluxesy(this,Mesh,nmin,nmax,prim,cons,yfluxes)
889 INTEGER,
INTENT(IN) :: nmin,nmax
892 SELECT TYPE(p => prim)
894 SELECT TYPE(c => cons)
896 SELECT TYPE(f => yfluxes)
898 SELECT CASE(
this%VDIM)
901 p%density%data2d(:,nmin:nmax), &
902 p%velocity%data3d(:,nmin:nmax,1), &
903 c%momentum%data3d(:,nmin:nmax,1), &
904 f%density%data2d(:,nmin:nmax), &
905 f%momentum%data3d(:,nmin:nmax,1))
908 p%density%data2d(:,nmin:nmax), &
909 p%velocity%data3d(:,nmin:nmax,2), &
910 c%momentum%data3d(:,nmin:nmax,2), &
911 c%momentum%data3d(:,nmin:nmax,1), &
912 f%density%data2d(:,nmin:nmax), &
913 f%momentum%data3d(:,nmin:nmax,2), &
914 f%momentum%data3d(:,nmin:nmax,1))
917 p%density%data2d(:,nmin:nmax), &
918 p%velocity%data3d(:,nmin:nmax,2), &
919 c%momentum%data3d(:,nmin:nmax,2), &
920 c%momentum%data3d(:,nmin:nmax,1), &
921 c%momentum%data3d(:,nmin:nmax,3), &
922 f%density%data2d(:,nmin:nmax), &
923 f%momentum%data3d(:,nmin:nmax,2), &
924 f%momentum%data3d(:,nmin:nmax,1), &
925 f%momentum%data3d(:,nmin:nmax,3))
933 PURE SUBROUTINE calcfluxesz(this,Mesh,nmin,nmax,prim,cons,zfluxes)
938 INTEGER,
INTENT(IN) :: nmin,nmax
941 SELECT TYPE(p => prim)
943 SELECT TYPE(c => cons)
945 SELECT TYPE(f => zfluxes)
947 SELECT CASE(
this%VDIM)
950 p%density%data2d(:,nmin:nmax), &
951 p%velocity%data3d(:,nmin:nmax,1), &
952 c%momentum%data3d(:,nmin:nmax,1), &
953 f%density%data2d(:,nmin:nmax), &
954 f%momentum%data3d(:,nmin:nmax,1))
957 p%density%data2d(:,nmin:nmax), &
958 p%velocity%data3d(:,nmin:nmax,2), &
959 c%momentum%data3d(:,nmin:nmax,2), &
960 c%momentum%data3d(:,nmin:nmax,1), &
961 f%density%data2d(:,nmin:nmax), &
962 f%momentum%data3d(:,nmin:nmax,2), &
963 f%momentum%data3d(:,nmin:nmax,1))
966 p%density%data2d(:,nmin:nmax), &
967 p%velocity%data3d(:,nmin:nmax,3), &
968 c%momentum%data3d(:,nmin:nmax,3), &
969 c%momentum%data3d(:,nmin:nmax,1), &
970 c%momentum%data3d(:,nmin:nmax,2), &
971 f%density%data2d(:,nmin:nmax), &
972 f%momentum%data3d(:,nmin:nmax,3), &
973 f%momentum%data3d(:,nmin:nmax,1), &
974 f%momentum%data3d(:,nmin:nmax,2))
989 DIMENSION(Mesh%IGMIN:Mesh%IGMAX,Mesh%JGMIN:Mesh%JGMAX,Mesh%KGMIN:Mesh%KGMAX) &
990 :: btxx,btxy,btxz,btyy,btyz,btzz
992 SELECT TYPE(p => pvar)
994 SELECT TYPE(s => sterm)
997 s%density%data1d(:) = 0.0
999 SELECT CASE(this%VDIM)
1004 CALL mesh%Divergence(btxx,btxy,btxy,btyy,s%momentum%data4d(:,:,:,1), &
1005 s%momentum%data4d(:,:,:,2))
1008 CALL mesh%Divergence(btxx,btxy,btxz,btxy,btyy,btyz,btxz,btyz,btzz, &
1009 s%momentum%data4d(:,:,:,1),s%momentum%data4d(:,:,:,2), &
1010 s%momentum%data4d(:,:,:,3))
1024 btxx,btxy,btxz,btyy,btyz,btzz)
1030 CLASS(
marray_base),
INTENT(INOUT) :: dynvis,bulkvis
1031 REAL,
DIMENSION(Mesh%IGMIN:Mesh%IGMAX,Mesh%JGMIN:Mesh%JGMAX,Mesh%KGMIN:Mesh%KGMAX) :: &
1032 btxx,btxy,btxz,btyy,btyz,btzz
1036 INTENT(OUT) :: btxx,btxy,btxz,btyy,btyz,btzz
1038 SELECT TYPE(p => pvar)
1040 SELECT CASE(mesh%VECTOR_COMPONENTS)
1047 CALL mesh%Divergence(p%velocity%data4d(:,:,:,1),p%velocity%data4d(:,:,:,2),&
1049 this%tmp(:,:,:) = bulkvis%data3d(:,:,:)*
this%tmp(:,:,:)
1050 DO k=mesh%KMIN-mesh%KP1,mesh%KMAX+mesh%KP1
1051 DO j=mesh%JMIN-mesh%JP1,mesh%JMAX+mesh%JP1
1053 DO i=mesh%IMIN-mesh%IP1,mesh%IMAX+mesh%IP1
1055 btxx(i,j,k) = dynvis%data3d(i,j,k) * &
1056 ((p%velocity%data4d(i+mesh%IP1,j,k,1) - p%velocity%data4d(i-mesh%IP1,j,k,1)) &
1057 / mesh%dlx%data3d(i,j,k) &
1058 + 2.0 * mesh%cxyx%bcenter(i,j,k) * p%velocity%data4d(i,j,k,2)) +
this%tmp(i,j,k)
1059 btyy(i,j,k) = dynvis%data3d(i,j,k) * &
1060 ((p%velocity%data4d(i,j+mesh%JP1,k,2) - p%velocity%data4d(i,j-mesh%JP1,k,2)) &
1061 / mesh%dly%data3d(i,j,k) &
1062 + 2.0 * mesh%cyxy%bcenter(i,j,k) * p%velocity%data4d(i,j,k,1) ) +
this%tmp(i,j,k)
1064 btxy(i,j,k) = dynvis%data3d(i,j,k) * ( 0.5 * &
1065 ((p%velocity%data4d(i+mesh%IP1,j,k,2) - p%velocity%data4d(i-mesh%IP1,j,k,2)) &
1066 / mesh%dlx%data3d(i,j,k) &
1067 + (p%velocity%data4d(i,j+mesh%JP1,k,1) - p%velocity%data4d(i,j-mesh%JP1,k,1)) &
1068 / mesh%dly%data3d(i,j,k) ) &
1069 - mesh%cxyx%bcenter(i,j,k) * p%velocity%data4d(i,j,k,1) &
1070 - mesh%cyxy%bcenter(i,j,k) * p%velocity%data4d(i,j,k,2) )
1076 CALL mesh%Divergence(p%velocity%data4d(:,:,:,1),p%velocity%data4d(:,:,:,2),&
1078 this%tmp(:,:,:) = bulkvis%data3d(:,:,:)*
this%tmp(:,:,:)
1079 DO k=mesh%KMIN-mesh%KP1,mesh%KMAX+mesh%KP1
1080 DO j=mesh%JMIN-mesh%JP1,mesh%JMAX+mesh%JP1
1082 DO i=mesh%IMIN-mesh%IP1,mesh%IMAX+mesh%IP1
1084 btxx(i,j,k) = dynvis%data3d(i,j,k) * &
1085 ((p%velocity%data4d(i+mesh%IP1,j,k,1) - p%velocity%data4d(i-mesh%IP1,j,k,1)) &
1086 / mesh%dlx%data3d(i,j,k) &
1087 + 2.0 * mesh%cxzx%bcenter(i,j,k) * p%velocity%data4d(i,j,k,2) ) &
1089 btyy(i,j,k) = dynvis%data3d(i,j,k) * &
1090 ((p%velocity%data4d(i,j,k+mesh%KP1,2) - p%velocity%data4d(i,j,k-mesh%KP1,2)) &
1091 / mesh%dlz%data3d(i,j,k) &
1092 + 2.0 * mesh%czxz%bcenter(i,j,k) * p%velocity%data4d(i,j,k,1) ) &
1095 btxy(i,j,k) = dynvis%data3d(i,j,k) * ( 0.5 * &
1096 ((p%velocity%data4d(i+mesh%IP1,j,k,2) - p%velocity%data4d(i-mesh%IP1,j,k,2)) &
1097 / mesh%dlx%data3d(i,j,k) &
1098 + (p%velocity%data4d(i,j,k+mesh%KP1,1) - p%velocity%data4d(i,j,k-mesh%KP1,1)) &
1099 / mesh%dlz%data3d(i,j,k) ) &
1100 - mesh%czxz%bcenter(i,j,k) * p%velocity%data4d(i,j,k,2) &
1101 - mesh%cxzx%bcenter(i,j,k) * p%velocity%data4d(i,j,k,1) )
1106 CALL mesh%Divergence(p%velocity%data4d(:,:,:,1),p%velocity%data4d(:,:,:,2),&
1108 this%tmp(:,:,:) = bulkvis%data3d(:,:,:)*
this%tmp(:,:,:)
1109 DO k=mesh%KMIN-mesh%KP1,mesh%KMAX+mesh%KP1
1110 DO j=mesh%JMIN-mesh%JP1,mesh%JMAX+mesh%JP1
1112 DO i=mesh%IMIN-mesh%IP1,mesh%IMAX+mesh%IP1
1114 btxx(i,j,k) = dynvis%data3d(i,j,k) * &
1115 ((p%velocity%data4d(i,j+mesh%JP1,k,1) - p%velocity%data4d(i,j-mesh%JP1,k,1)) &
1116 / mesh%dly%data3d(i,j,k) &
1117 + 2.0 * mesh%cyzy%bcenter(i,j,k) * p%velocity%data4d(i,j,k,2) ) &
1119 btyy(i,j,k) = dynvis%data3d(i,j,k) * &
1120 ((p%velocity%data4d(i,j,k+mesh%KP1,2) - p%velocity%data4d(i,j,k-mesh%KP1,2)) &
1121 / mesh%dlz%data3d(i,j,k) &
1122 + 2.0 * mesh%czyz%bcenter(i,j,k) * p%velocity%data4d(i,j,k,1) ) &
1125 btxy(i,j,k) = dynvis%data3d(i,j,k) * ( 0.5 * &
1126 ((p%velocity%data4d(i,j,k+mesh%KP1,1) - p%velocity%data4d(i,j,k-mesh%KP1,1)) &
1127 / mesh%dlz%data3d(i,j,k) &
1128 + (p%velocity%data4d(i,j+mesh%JP1,k,2) - p%velocity%data4d(i,j-mesh%JP1,k,2)) &
1129 / mesh%dly%data3d(i,j,k) ) &
1130 - mesh%czyz%bcenter(i,j,k) * p%velocity%data4d(i,j,k,2) &
1131 - mesh%cyzy%bcenter(i,j,k) * p%velocity%data4d(i,j,k,1) )
1137 CALL mesh%Divergence(p%velocity%data4d(:,:,:,1),p%velocity%data4d(:,:,:,2),&
1138 p%velocity%data4d(:,:,:,3),
this%tmp(:,:,:))
1139 this%tmp(:,:,:) = bulkvis%data3d(:,:,:)*
this%tmp(:,:,:)
1140 DO k=mesh%KMIN-mesh%KP1,mesh%KMAX+mesh%KP1
1141 DO j=mesh%JMIN-mesh%JP1,mesh%JMAX+mesh%JP1
1143 DO i=mesh%IMIN-mesh%IP1,mesh%IMAX+mesh%IP1
1145 btxx(i,j,k) = dynvis%data3d(i,j,k) * &
1146 ((p%velocity%data4d(i+mesh%IP1,j,k,1) - p%velocity%data4d(i-mesh%IP1,j,k,1)) &
1147 / mesh%dlx%data3d(i,j,k) &
1148 + 2.0 * mesh%cxyx%bcenter(i,j,k) * p%velocity%data4d(i,j,k,2) &
1149 + 2.0 * mesh%cxzx%bcenter(i,j,k) * p%velocity%data4d(i,j,k,3) ) &
1151 btyy(i,j,k) = dynvis%data3d(i,j,k) * &
1152 ((p%velocity%data4d(i,j+mesh%JP1,k,2) - p%velocity%data4d(i,j-mesh%JP1,k,2)) &
1153 / mesh%dly%data3d(i,j,k) &
1154 + 2.0 * mesh%cyxy%bcenter(i,j,k) * p%velocity%data4d(i,j,k,1) &
1155 + 2.0 * mesh%cyzy%bcenter(i,j,k) * p%velocity%data4d(i,j,k,3) ) &
1157 btzz(i,j,k) = dynvis%data3d(i,j,k) * &
1158 ((p%velocity%data4d(i,j,k+mesh%KP1,3) - p%velocity%data4d(i,j,k-mesh%KP1,3)) &
1159 / mesh%dlz%data3d(i,j,k) &
1160 + 2.0 * mesh%czxz%bcenter(i,j,k) * p%velocity%data4d(i,j,k,1) &
1161 + 2.0 * mesh%czyz%bcenter(i,j,k) * p%velocity%data4d(i,j,k,2) ) &
1164 btxy(i,j,k) = dynvis%data3d(i,j,k) * ( 0.5 * &
1165 ((p%velocity%data4d(i+mesh%IP1,j,k,2) - p%velocity%data4d(i-mesh%IP1,j,k,2)) &
1166 / mesh%dlx%data3d(i,j,k) &
1167 + (p%velocity%data4d(i,j+mesh%JP1,k,1) - p%velocity%data4d(i,j-mesh%JP1,k,1)) &
1168 / mesh%dly%data3d(i,j,k) ) &
1169 - mesh%cxyx%bcenter(i,j,k) * p%velocity%data4d(i,j,k,1) &
1170 - mesh%cyxy%bcenter(i,j,k) * p%velocity%data4d(i,j,k,2) )
1171 btxz(i,j,k) = dynvis%data3d(i,j,k) * ( 0.5 * &
1172 ((p%velocity%data4d(i+mesh%IP1,j,k,3) - p%velocity%data4d(i-mesh%IP1,j,k,3)) &
1173 / mesh%dlx%data3d(i,j,k) &
1174 + (p%velocity%data4d(i,j,k+mesh%KP1,1) - p%velocity%data4d(i,j,k-mesh%KP1,1)) &
1175 / mesh%dlz%data3d(i,j,k) ) &
1176 - mesh%czxz%bcenter(i,j,k) * p%velocity%data4d(i,j,k,3) &
1177 - mesh%cxzx%bcenter(i,j,k) * p%velocity%data4d(i,j,k,1) )
1178 btyz(i,j,k) = dynvis%data3d(i,j,k) * ( 0.5 * &
1179 ((p%velocity%data4d(i,j,k+mesh%KP1,2) - p%velocity%data4d(i,j,k-mesh%KP1,2)) &
1180 / mesh%dlz%data3d(i,j,k) &
1181 + (p%velocity%data4d(i,j+mesh%JP1,k,3) - p%velocity%data4d(i,j-mesh%JP1,k,3)) &
1182 / mesh%dly%data3d(i,j,k) ) &
1183 - mesh%czyz%bcenter(i,j,k) * p%velocity%data4d(i,j,k,3) &
1184 - mesh%cyzy%bcenter(i,j,k) * p%velocity%data4d(i,j,k,2) )
1210 SELECT TYPE(p => pvar)
1212 SELECT TYPE(c => cvar)
1214 SELECT TYPE(s => sterm)
1218 DO concurrent(m=1:
SIZE(c%density%data1d))
1219 s%density%data1d(m) = 0.0
1220 s%momentum%data2d(m,n) = c%density%data1d(m) * accel%data2d(m,n)
1235 REAL,
DIMENSION(Mesh%JGMIN:Mesh%JGMAX,Mesh%KGMIN:Mesh%KGMAX), &
1241 SELECT TYPE(p => pvar)
1243 SELECT TYPE(c => cvar)
1245 IF (c%fargo_transformation_applied)
THEN
1246 IF (.NOT.p%fargo_transformation_applied)
RETURN
1247 DO k=mesh%KGMIN,mesh%KGMAX
1248 DO j=mesh%JGMIN,mesh%JGMAX
1249 DO i=mesh%IGMIN,mesh%IGMAX
1250 p%velocity%data4d(i,j,k,1) = p%velocity%data4d(i,j,k,1) + w(j,k)
1251 c%momentum%data4d(i,j,k,1) = c%momentum%data4d(i,j,k,1) &
1252 + c%density%data3d(i,j,k)*w(j,k)
1256 c%fargo_transformation_applied = .false.
1257 p%fargo_transformation_applied = .false.
1269 REAL,
DIMENSION(Mesh%IGMIN:Mesh%IGMAX,Mesh%KGMIN:Mesh%KGMAX), &
1273 INTEGER :: i,j,k,v_idx
1275 SELECT TYPE(p => pvar)
1277 SELECT TYPE(c => cvar)
1279 IF (c%fargo_transformation_applied)
THEN
1280 IF (.NOT.p%fargo_transformation_applied)
RETURN
1282 IF (btest(mesh%VECTOR_COMPONENTS,0))
THEN
1289 DO k=mesh%KGMIN,mesh%KGMAX
1290 DO j=mesh%JGMIN,mesh%JGMAX
1291 DO i=mesh%IGMIN,mesh%IGMAX
1292 p%velocity%data4d(i,j,k,v_idx) = p%velocity%data4d(i,j,k,v_idx) + w(i,k)
1293 c%momentum%data4d(i,j,k,v_idx) = c%momentum%data4d(i,j,k,v_idx) &
1294 + c%density%data3d(i,j,k)*w(i,k)
1298 c%fargo_transformation_applied = .false.
1299 p%fargo_transformation_applied = .false.
1311 REAL,
DIMENSION(Mesh%IGMIN:Mesh%IGMAX,Mesh%JGMIN:Mesh%JGMAX), &
1317 SELECT TYPE(p => pvar)
1319 SELECT TYPE(c => cvar)
1321 IF (c%fargo_transformation_applied)
THEN
1322 IF (.NOT.p%fargo_transformation_applied)
RETURN
1323 DO k=mesh%KGMIN,mesh%KGMAX
1324 DO j=mesh%JGMIN,mesh%JGMAX
1325 DO i=mesh%IGMIN,mesh%IGMAX
1326 p%velocity%data4d(i,j,k,
this%VDIM) = p%velocity%data4d(i,j,k,
this%VDIM) + w(i,j)
1327 c%momentum%data4d(i,j,k,
this%VDIM) = c%momentum%data4d(i,j,k,
this%VDIM) &
1328 + c%density%data3d(i,j,k)*w(i,j)
1332 c%fargo_transformation_applied = .false.
1333 p%fargo_transformation_applied = .false.
1345 REAL,
DIMENSION(Mesh%JGMIN:Mesh%JGMAX,Mesh%KGMIN:Mesh%KGMAX), &
1351 SELECT TYPE(p => pvar)
1353 SELECT TYPE(c => cvar)
1355 IF (.NOT.c%fargo_transformation_applied)
THEN
1356 IF (p%fargo_transformation_applied)
RETURN
1357 DO k=mesh%KGMIN,mesh%KGMAX
1358 DO j=mesh%JGMIN,mesh%JGMAX
1359 DO i=mesh%IGMIN,mesh%IGMAX
1360 p%velocity%data4d(i,j,k,1) = p%velocity%data4d(i,j,k,1) - w(j,k)
1361 c%momentum%data4d(i,j,k,1) = c%momentum%data4d(i,j,k,1) &
1362 - c%density%data3d(i,j,k)*w(j,k)
1366 c%fargo_transformation_applied = .true.
1367 p%fargo_transformation_applied = .true.
1379 REAL,
DIMENSION(Mesh%IGMIN:Mesh%IGMAX,Mesh%KGMIN:Mesh%KGMAX), &
1383 INTEGER :: i,j,k,v_idx
1385 SELECT TYPE(p => pvar)
1387 SELECT TYPE(c => cvar)
1389 IF (.NOT.c%fargo_transformation_applied)
THEN
1390 IF (p%fargo_transformation_applied)
RETURN
1392 IF (btest(mesh%VECTOR_COMPONENTS,0))
THEN
1399 DO k=mesh%KGMIN,mesh%KGMAX
1400 DO j=mesh%JGMIN,mesh%JGMAX
1401 DO i=mesh%IGMIN,mesh%IGMAX
1402 p%velocity%data4d(i,j,k,v_idx) = p%velocity%data4d(i,j,k,v_idx) - w(i,k)
1403 c%momentum%data4d(i,j,k,v_idx) = c%momentum%data4d(i,j,k,v_idx) &
1404 - c%density%data3d(i,j,k)*w(i,k)
1408 c%fargo_transformation_applied = .true.
1409 p%fargo_transformation_applied = .true.
1421 REAL,
DIMENSION(Mesh%IGMIN:Mesh%IGMAX,Mesh%JGMIN:Mesh%JGMAX), &
1427 SELECT TYPE(p => pvar)
1429 SELECT TYPE(c => cvar)
1431 IF (.NOT.c%fargo_transformation_applied)
THEN
1432 IF (p%fargo_transformation_applied)
RETURN
1433 DO k=mesh%KGMIN,mesh%KGMAX
1434 DO j=mesh%JGMIN,mesh%JGMAX
1435 DO i=mesh%IGMIN,mesh%IGMAX
1436 p%velocity%data4d(i,j,k,
this%VDIM) = p%velocity%data4d(i,j,k,
this%VDIM) - w(i,j)
1437 c%momentum%data4d(i,j,k,
this%VDIM) = c%momentum%data4d(i,j,k,
this%VDIM) &
1438 - c%density%data3d(i,j,k)*w(i,j)
1442 c%fargo_transformation_applied = .true.
1443 p%fargo_transformation_applied = .true.
1467 REAL,
DIMENSION(Mesh%JGMIN:Mesh%JGMAX,Mesh%KGMIN:Mesh%KGMAX),
INTENT(IN) :: w
1472 SELECT TYPE(c => cvar)
1474 SELECT TYPE(s => sterm)
1477 SELECT CASE(mesh%VECTOR_COMPONENTS)
1480 DO k=mesh%KMIN,mesh%KMAX
1481 DO j=mesh%JMIN,mesh%JMAX
1482 DO i=mesh%IMIN,mesh%IMAX
1483 s%momentum%data4d(i,j,k,1) = s%momentum%data4d(i,j,k,1) &
1484 - c%momentum%data4d(i,j,k,2) * 0.5 * (w(j+1,k)-w(j-1,k)) &
1485 / mesh%dly%data3d(i,j,k)
1491 DO k=mesh%KMIN,mesh%KMAX
1492 DO j=mesh%JMIN,mesh%JMAX
1493 DO i=mesh%IMIN,mesh%IMAX
1494 s%momentum%data4d(i,j,k,1) = s%momentum%data4d(i,j,k,1) &
1495 - c%momentum%data4d(i,j,k,2) * 0.5 * (w(j,k+1)-w(j,k-1)) &
1496 / mesh%dlz%data3d(i,j,k)
1502 DO k=mesh%KMIN,mesh%KMAX
1503 DO j=mesh%JMIN,mesh%JMAX
1504 DO i=mesh%IMIN,mesh%IMAX
1505 s%momentum%data4d(i,j,k,1) = s%momentum%data4d(i,j,k,1) &
1506 - c%momentum%data4d(i,j,k,2) * 0.5 * (w(j+1,k)-w(j-1,k)) &
1507 / mesh%dly%data3d(i,j,k) &
1508 - c%momentum%data4d(i,j,k,3) * 0.5 * (w(j,k+1)-w(j,k-1)) &
1509 / mesh%dlz%data3d(i,j,k)
1536 REAL,
DIMENSION(Mesh%IGMIN:Mesh%IGMAX,Mesh%KGMIN:Mesh%KGMAX),
INTENT(IN) :: w
1541 SELECT TYPE(c => cvar)
1543 SELECT TYPE(s => sterm)
1545 SELECT CASE(mesh%VECTOR_COMPONENTS)
1548 DO k=mesh%KMIN,mesh%KMAX
1549 DO j=mesh%JMIN,mesh%JMAX
1550 DO i=mesh%IMIN,mesh%IMAX
1551 s%momentum%data4d(i,j,k,2) = s%momentum%data4d(i,j,k,2) &
1552 - c%momentum%data4d(i,j,k,1) * 0.5 * (w(i+1,k)-w(i-1,k)) &
1553 / mesh%dlx%data3d(i,j,k)
1559 DO k=mesh%KMIN,mesh%KMAX
1560 DO j=mesh%JMIN,mesh%JMAX
1561 DO i=mesh%IMIN,mesh%IMAX
1562 s%momentum%data4d(i,j,k,1) = s%momentum%data4d(i,j,k,1) &
1563 - c%momentum%data4d(i,j,k,2) * 0.5 * (w(i,k+1)-w(i,k-1)) &
1564 / mesh%dlz%data3d(i,j,k)
1570 DO k=mesh%KMIN,mesh%KMAX
1571 DO j=mesh%JMIN,mesh%JMAX
1572 DO i=mesh%IMIN,mesh%IMAX
1573 s%momentum%data4d(i,j,k,2) = s%momentum%data4d(i,j,k,2) &
1574 - c%momentum%data4d(i,j,k,1) * 0.5 * (w(i+1,k)-w(i-1,k)) &
1575 / mesh%dlx%data3d(i,j,k) &
1576 - c%momentum%data4d(i,j,k,3) * 0.5 * (w(i,k+1)-w(i,k-1)) &
1577 / mesh%dlz%data3d(i,j,k)
1604 REAL,
DIMENSION(Mesh%IGMIN:Mesh%IGMAX,Mesh%JGMIN:Mesh%JGMAX),
INTENT(IN) :: w
1609 SELECT TYPE(c => cvar)
1611 SELECT TYPE(s => sterm)
1613 SELECT CASE(mesh%VECTOR_COMPONENTS)
1616 DO k=mesh%KMIN,mesh%KMAX
1617 DO j=mesh%JMIN,mesh%JMAX
1618 DO i=mesh%IMIN,mesh%IMAX
1619 s%momentum%data4d(i,j,k,2) = s%momentum%data4d(i,j,k,2) &
1620 - c%momentum%data4d(i,j,k,1) * 0.5 * (w(i+1,j)-w(i-1,j)) &
1621 / mesh%dlx%data3d(i,j,k)
1627 DO k=mesh%KMIN,mesh%KMAX
1628 DO j=mesh%JMIN,mesh%JMAX
1629 DO i=mesh%IMIN,mesh%IMAX
1630 s%momentum%data4d(i,j,k,2) = s%momentum%data4d(i,j,k,2) &
1631 - c%momentum%data4d(i,j,k,1) * 0.5 * (w(i,j+1)-w(i,j-1)) &
1632 / mesh%dly%data3d(i,j,k)
1638 DO k=mesh%KMIN,mesh%KMAX
1639 DO j=mesh%JMIN,mesh%JMAX
1640 DO i=mesh%IMIN,mesh%IMAX
1641 s%momentum%data4d(i,j,k,3) = s%momentum%data4d(i,j,k,3) &
1642 - c%momentum%data4d(i,j,k,1) * 0.5 * (w(i+1,j)-w(i-1,j)) &
1643 / mesh%dlx%data3d(i,j,k) &
1644 - c%momentum%data4d(i,j,k,2) * 0.5 * (w(i,j+1)-w(i,j-1)) &
1645 / mesh%dly%data3d(i,j,k)
1664 LOGICAL,
DIMENSION(this%VNUM),
INTENT(OUT) :: reflx,refly,reflz
1669 SELECT CASE(
this%VDIM)
1671 IF (mesh%INUM.GT.1) reflx(2) = .true.
1672 IF (mesh%JNUM.GT.1) refly(2) = .true.
1673 IF (mesh%KNUM.GT.1) reflz(2) = .true.
1675 IF (mesh%KNUM.EQ.1.AND..NOT.mesh%ROTSYM.EQ.3)
THEN
1679 ELSE IF (mesh%JNUM.EQ.1.AND..NOT.mesh%ROTSYM.EQ.2)
THEN
1683 ELSE IF (mesh%INUM.EQ.1.AND..NOT.mesh%ROTSYM.EQ.1)
THEN
1706 LOGICAL,
DIMENSION(this%VNUM),
INTENT(OUT) :: reflx,refly,reflz
1712 CALL this%ReflectionMasks(mesh,reflx,refly,reflz)
1714 aidx = mesh%geometry%GetAzimuthIndex()
1717 SELECT CASE(
this%VDIM)
1720 IF (mesh%KNUM.EQ.1.AND..NOT.mesh%ROTSYM.EQ.3)
THEN
1730 ELSE IF (mesh%JNUM.EQ.1.AND..NOT.mesh%ROTSYM.EQ.2)
THEN
1740 ELSE IF (mesh%INUM.EQ.1.AND..NOT.mesh%ROTSYM.EQ.1)
THEN
1769 INTEGER,
INTENT(IN) :: i1,i2
1771 REAL,
DIMENSION(Mesh%JMIN:Mesh%JMAX,Mesh%KMIN:Mesh%KMAX,this%VNUM), &
1772 INTENT(OUT) :: lambda,xvar
1776 SELECT TYPE(p => pvar)
1780 SELECT CASE(
this%VDIM)
1784 this%bccsound%data3d(i1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
1785 p%velocity%data4d(i1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
1786 lambda(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
1787 lambda(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2))
1792 this%fcsound%data4d(ir,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,
west), &
1793 p%density%data3d(il,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
1794 p%density%data3d(ir,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
1795 p%velocity%data4d(il,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
1796 p%velocity%data4d(ir,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
1797 xvar(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
1798 xvar(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2))
1802 this%bccsound%data3d(i1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
1803 p%velocity%data4d(i1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
1804 lambda(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
1805 lambda(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
1806 lambda(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,3))
1811 this%fcsound%data4d(ir,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,
west), &
1812 p%density%data3d(il,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
1813 p%density%data3d(ir,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
1814 p%velocity%data4d(il,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
1815 p%velocity%data4d(ir,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
1816 p%velocity%data4d(il,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
1817 p%velocity%data4d(ir,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
1818 xvar(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
1819 xvar(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
1820 xvar(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,3))
1824 this%bccsound%data3d(i1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
1825 p%velocity%data4d(i1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
1826 lambda(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
1827 lambda(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
1828 lambda(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,3), &
1829 lambda(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,4))
1834 this%fcsound%data4d(ir,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,
west), &
1835 p%density%data3d(il,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
1836 p%density%data3d(ir,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
1837 p%velocity%data4d(il,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
1838 p%velocity%data4d(ir,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
1839 p%velocity%data4d(il,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
1840 p%velocity%data4d(ir,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
1841 p%velocity%data4d(il,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,3), &
1842 p%velocity%data4d(ir,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,3), &
1843 xvar(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
1844 xvar(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
1845 xvar(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,3), &
1846 xvar(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,4))
1857 INTEGER,
INTENT(IN) :: j1,j2
1859 REAL,
DIMENSION(Mesh%IMIN:Mesh%IMAX,Mesh%KMIN:Mesh%KMAX,this%VNUM), &
1860 INTENT(OUT) :: lambda,xvar
1862 INTEGER :: jl,jr,vn,vt
1864 SELECT TYPE(p => pvar)
1868 SELECT CASE(
this%VDIM)
1872 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j1,mesh%KMIN:mesh%KMAX,1), &
1873 lambda(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,1), &
1874 lambda(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,2))
1879 p%density%data3d(mesh%IMIN:mesh%IMAX,jl,mesh%KMIN:mesh%KMAX), &
1880 p%density%data3d(mesh%IMIN:mesh%IMAX,jr,mesh%KMIN:mesh%KMAX), &
1881 p%velocity%data4d(mesh%IMIN:mesh%IMAX,jl,mesh%KMIN:mesh%KMAX,1), &
1882 p%velocity%data4d(mesh%IMIN:mesh%IMAX,jr,mesh%KMIN:mesh%KMAX,1), &
1883 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,1), &
1884 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,2))
1887 SELECT CASE(mesh%VECTOR_COMPONENTS)
1900 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j1,mesh%KMIN:mesh%KMAX,vn), &
1901 lambda(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,1), &
1902 lambda(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,2), &
1903 lambda(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,3))
1908 p%density%data3d(mesh%IMIN:mesh%IMAX,jl,mesh%KMIN:mesh%KMAX), &
1909 p%density%data3d(mesh%IMIN:mesh%IMAX,jr,mesh%KMIN:mesh%KMAX), &
1910 p%velocity%data4d(mesh%IMIN:mesh%IMAX,jl,mesh%KMIN:mesh%KMAX,vn), &
1911 p%velocity%data4d(mesh%IMIN:mesh%IMAX,jr,mesh%KMIN:mesh%KMAX,vn), &
1912 p%velocity%data4d(mesh%IMIN:mesh%IMAX,jl,mesh%KMIN:mesh%KMAX,vt), &
1913 p%velocity%data4d(mesh%IMIN:mesh%IMAX,jr,mesh%KMIN:mesh%KMAX,vt), &
1914 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,1), &
1915 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,2), &
1916 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,3))
1920 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j1,mesh%KMIN:mesh%KMAX,2), &
1921 lambda(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,1), &
1922 lambda(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,2), &
1923 lambda(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,3), &
1924 lambda(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,4))
1929 p%density%data3d(mesh%IMIN:mesh%IMAX,jl,mesh%KMIN:mesh%KMAX), &
1930 p%density%data3d(mesh%IMIN:mesh%IMAX,jr,mesh%KMIN:mesh%KMAX), &
1931 p%velocity%data4d(mesh%IMIN:mesh%IMAX,jl,mesh%KMIN:mesh%KMAX,2), &
1932 p%velocity%data4d(mesh%IMIN:mesh%IMAX,jr,mesh%KMIN:mesh%KMAX,2), &
1933 p%velocity%data4d(mesh%IMIN:mesh%IMAX,jl,mesh%KMIN:mesh%KMAX,1), &
1934 p%velocity%data4d(mesh%IMIN:mesh%IMAX,jr,mesh%KMIN:mesh%KMAX,1), &
1935 p%velocity%data4d(mesh%IMIN:mesh%IMAX,jl,mesh%KMIN:mesh%KMAX,3), &
1936 p%velocity%data4d(mesh%IMIN:mesh%IMAX,jr,mesh%KMIN:mesh%KMAX,3), &
1937 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,1), &
1938 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,2), &
1939 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,3), &
1940 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,4))
1951 INTEGER,
INTENT(IN) :: k1,k2
1953 REAL,
DIMENSION(Mesh%IMIN:Mesh%IMAX,Mesh%JMIN:Mesh%JMAX,this%VNUM), &
1954 INTENT(OUT) :: lambda,xvar
1958 SELECT TYPE(p => pvar)
1962 SELECT CASE(
this%VDIM)
1966 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k1,1), &
1967 lambda(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,1), &
1968 lambda(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,2))
1973 p%density%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,kl), &
1974 p%density%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,kr), &
1975 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,kl,1), &
1976 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,kr,1), &
1977 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,1), &
1978 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,2))
1982 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k1,2), &
1983 lambda(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,1), &
1984 lambda(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,2), &
1985 lambda(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,3))
1990 p%density%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,kl), &
1991 p%density%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,kr), &
1992 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,kl,2), &
1993 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,kr,2), &
1994 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,kl,1), &
1995 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,kr,1), &
1996 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,1), &
1997 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,2), &
1998 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,3))
2002 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k1,3), &
2003 lambda(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,1), &
2004 lambda(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,2), &
2005 lambda(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,3), &
2006 lambda(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,4))
2011 p%density%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,kl), &
2012 p%density%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,kr), &
2013 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,kl,3), &
2014 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,kr,3), &
2015 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,kl,1), &
2016 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,kr,1), &
2017 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,kl,2), &
2018 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,kr,2), &
2019 xvar(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,1), &
2020 xvar(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,2), &
2021 xvar(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,3), &
2022 xvar(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,4))
2032 INTEGER,
INTENT(IN) :: i1,i2
2033 REAL,
DIMENSION(Mesh%JMIN:Mesh%JMAX,Mesh%KMIN:Mesh%KMAX,this%VNUM), &
2044 SELECT TYPE(p => pvar)
2046 SELECT CASE(
this%VDIM)
2049 this%fcsound%data4d(i1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,fidx), &
2050 p%density%data3d(i1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
2051 p%velocity%data4d(i1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2052 xvar(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2053 xvar(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
2054 p%density%data3d(i2,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
2055 p%velocity%data4d(i2,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1))
2058 this%fcsound%data4d(i1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,fidx), &
2059 p%density%data3d(i1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
2060 p%velocity%data4d(i1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2061 p%velocity%data4d(i1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
2062 xvar(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2063 xvar(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
2064 xvar(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,3), &
2065 p%density%data3d(i2,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
2066 p%velocity%data4d(i2,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2067 p%velocity%data4d(i2,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2))
2070 this%fcsound%data4d(i1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,fidx), &
2071 p%density%data3d(i1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
2072 p%velocity%data4d(i1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2073 p%velocity%data4d(i1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
2074 p%velocity%data4d(i1,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,3), &
2075 xvar(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2076 xvar(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
2077 xvar(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,3), &
2078 xvar(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,4), &
2079 p%density%data3d(i2,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
2080 p%velocity%data4d(i2,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2081 p%velocity%data4d(i2,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
2082 p%velocity%data4d(i2,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,3))
2093 INTEGER,
INTENT(IN) :: j1,j2
2094 REAL,
DIMENSION(Mesh%IMIN:Mesh%IMAX,Mesh%KMIN:Mesh%KMAX,this%VNUM), &
2098 INTEGER :: fidx,vt,vn
2105 SELECT TYPE(p => pvar)
2107 SELECT CASE(
this%VDIM)
2110 this%fcsound%data4d(mesh%IMIN:mesh%IMAX,j1,mesh%KMIN:mesh%KMAX,fidx), &
2111 p%density%data3d(mesh%IMIN:mesh%IMAX,j1,mesh%KMIN:mesh%KMAX), &
2112 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j1,mesh%KMIN:mesh%KMAX,1), &
2113 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,1), &
2114 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,2), &
2115 p%density%data3d(mesh%IMIN:mesh%IMAX,j2,mesh%KMIN:mesh%KMAX), &
2116 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j2,mesh%KMIN:mesh%KMAX,1))
2119 SELECT CASE(mesh%VECTOR_COMPONENTS)
2131 this%fcsound%data4d(mesh%IMIN:mesh%IMAX,j1,mesh%KMIN:mesh%KMAX,fidx), &
2132 p%density%data3d(mesh%IMIN:mesh%IMAX,j1,mesh%KMIN:mesh%KMAX), &
2133 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j1,mesh%KMIN:mesh%KMAX,vn), &
2134 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j1,mesh%KMIN:mesh%KMAX,vt), &
2135 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,1), &
2136 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,2), &
2137 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,3), &
2138 p%density%data3d(mesh%IMIN:mesh%IMAX,j2,mesh%KMIN:mesh%KMAX), &
2139 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j2,mesh%KMIN:mesh%KMAX,vn), &
2140 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j2,mesh%KMIN:mesh%KMAX,vt))
2143 this%fcsound%data4d(mesh%IMIN:mesh%IMAX,j1,mesh%KMIN:mesh%KMAX,fidx), &
2144 p%density%data3d(mesh%IMIN:mesh%IMAX,j1,mesh%KMIN:mesh%KMAX), &
2145 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j1,mesh%KMIN:mesh%KMAX,2), &
2146 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j1,mesh%KMIN:mesh%KMAX,1), &
2147 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j1,mesh%KMIN:mesh%KMAX,3), &
2148 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,1), &
2149 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,2), &
2150 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,3), &
2151 xvar(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,4), &
2152 p%density%data3d(mesh%IMIN:mesh%IMAX,j2,mesh%KMIN:mesh%KMAX), &
2153 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j2,mesh%KMIN:mesh%KMAX,2), &
2154 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j2,mesh%KMIN:mesh%KMAX,1), &
2155 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j2,mesh%KMIN:mesh%KMAX,3))
2165 INTEGER,
INTENT(IN) :: k1,k2
2166 REAL,
DIMENSION(Mesh%IMIN:Mesh%IMAX,Mesh%JMIN:Mesh%JMAX,this%VNUM), &
2177 SELECT TYPE(p => pvar)
2179 SELECT CASE(
this%VDIM)
2182 this%fcsound%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k1,fidx), &
2183 p%density%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k1), &
2184 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k1,1), &
2185 xvar(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,1), &
2186 xvar(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,2), &
2187 p%density%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k2), &
2188 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k2,1))
2191 this%fcsound%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k1,fidx), &
2192 p%density%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k1), &
2193 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k1,2), &
2194 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k1,1), &
2195 xvar(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,1), &
2196 xvar(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,2), &
2197 xvar(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,3), &
2198 p%density%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k2), &
2199 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k2,2), &
2200 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k2,1))
2203 this%fcsound%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k1,fidx), &
2204 p%density%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k1), &
2205 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k1,3), &
2206 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k1,1), &
2207 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k1,2), &
2208 xvar(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,1), &
2209 xvar(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,2), &
2210 xvar(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,3), &
2211 xvar(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,4), &
2212 p%density%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k2), &
2213 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k2,3), &
2214 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k2,1), &
2215 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k2,2))
2227 INTEGER,
INTENT(IN) :: i
2229 REAL,
INTENT(OUT), &
2230 DIMENSION(Mesh%JMIN:Mesh%JMAX,Mesh%KMIN:Mesh%KMAX,this%VNUM) &
2232 REAL,
INTENT(OUT), &
2233 DIMENSION(Mesh%JMIN:Mesh%JMAX,Mesh%KMIN:Mesh%KMAX,this%VNUM) &
2236 SELECT TYPE(p => pvar)
2238 SELECT CASE(
this%VDIM)
2241 this%bccsound%data3d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
2242 p%velocity%data4d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2243 lambda(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2244 lambda(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2))
2247 this%bccsound%data3d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
2248 p%density%data3d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
2249 p%velocity%data4d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2250 rinv(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2251 rinv(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2))
2254 this%bccsound%data3d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
2255 p%velocity%data4d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2256 lambda(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2257 lambda(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
2258 lambda(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,3))
2261 this%bccsound%data3d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
2262 p%density%data3d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
2263 p%velocity%data4d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2264 p%velocity%data4d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
2265 rinv(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2266 rinv(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
2267 rinv(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,3))
2271 this%bccsound%data3d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
2272 p%velocity%data4d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2273 lambda(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2274 lambda(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
2275 lambda(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,3), &
2276 lambda(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,4))
2279 this%bccsound%data3d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
2280 p%density%data3d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
2281 p%velocity%data4d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2282 p%velocity%data4d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
2283 p%velocity%data4d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,3), &
2284 rinv(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2285 rinv(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
2286 rinv(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,3), &
2287 rinv(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,4))
2300 INTEGER,
INTENT(IN) :: j
2302 REAL,
INTENT(OUT), &
2303 DIMENSION(Mesh%IMIN:Mesh%IMAX,Mesh%KMIN:Mesh%KMAX,this%VNUM) &
2305 REAL,
INTENT(OUT), &
2306 DIMENSION(Mesh%IMIN:Mesh%IMAX,Mesh%KMIN:Mesh%KMAX,this%VNUM) &
2309 SELECT TYPE(p => pvar)
2311 SELECT CASE(
this%VDIM)
2315 this%bccsound%data3d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX), &
2316 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX,1), &
2317 lambda(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,1), &
2318 lambda(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,2))
2321 this%bccsound%data3d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX), &
2322 p%density%data3d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX), &
2323 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX,1), &
2324 rinv(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,1), &
2325 rinv(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,2))
2329 this%bccsound%data3d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX), &
2330 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX,2), &
2331 lambda(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,1), &
2332 lambda(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,2), &
2333 lambda(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,3))
2336 this%bccsound%data3d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX), &
2337 p%density%data3d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX), &
2338 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX,2), &
2339 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX,1), &
2340 rinv(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,1), &
2341 rinv(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,2), &
2342 rinv(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,3))
2346 this%bccsound%data3d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX), &
2347 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX,2), &
2348 lambda(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,1), &
2349 lambda(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,2), &
2350 lambda(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,3), &
2351 lambda(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,4))
2354 this%bccsound%data3d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX), &
2355 p%density%data3d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX), &
2356 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX,2), &
2357 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX,3), &
2358 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX,1), &
2359 rinv(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,1), &
2360 rinv(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,2), &
2361 rinv(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,3), &
2362 rinv(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,4))
2375 INTEGER,
INTENT(IN) :: k
2377 REAL,
INTENT(OUT), &
2378 DIMENSION(Mesh%IMIN:Mesh%IMAX,Mesh%JMIN:Mesh%JMAX,this%VNUM) &
2380 REAL,
INTENT(OUT), &
2381 DIMENSION(Mesh%IMIN:Mesh%IMAX,Mesh%JMIN:Mesh%JMAX,this%VNUM) &
2384 SELECT TYPE(p => pvar)
2386 SELECT CASE(
this%VDIM)
2390 this%bccsound%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k), &
2391 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k,1), &
2392 lambda(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,1), &
2393 lambda(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,2))
2396 this%bccsound%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k), &
2397 p%density%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k), &
2398 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k,1), &
2399 rinv(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,1), &
2400 rinv(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,2))
2404 this%bccsound%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k), &
2405 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k,2), &
2406 lambda(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,1), &
2407 lambda(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,2), &
2408 lambda(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,3))
2411 this%bccsound%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k), &
2412 p%density%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k), &
2413 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k,2), &
2414 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k,1), &
2415 rinv(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,1), &
2416 rinv(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,2), &
2417 rinv(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,3))
2422 this%bccsound%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k), &
2423 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k,3), &
2424 lambda(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,1), &
2425 lambda(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,2), &
2426 lambda(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,3), &
2427 lambda(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,4))
2430 this%bccsound%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k), &
2431 p%density%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k), &
2432 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k,3), &
2433 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k,1), &
2434 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k,2), &
2435 rinv(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,1), &
2436 rinv(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,2), &
2437 rinv(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,3), &
2438 rinv(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,4))
2451 INTEGER,
INTENT(IN) :: i
2453 DIMENSION(Mesh%JMIN:Mesh%JMAX,Mesh%KMIN:Mesh%KMAX,this%VNUM) &
2457 SELECT TYPE(p => pvar)
2459 SELECT CASE(
this%VDIM)
2462 this%bccsound%data3d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
2463 rinv(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2464 rinv(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
2465 p%density%data3d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
2466 p%velocity%data4d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1))
2469 this%bccsound%data3d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
2470 rinv(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2471 rinv(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
2472 rinv(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,3), &
2473 p%density%data3d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
2474 p%velocity%data4d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2475 p%velocity%data4d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2))
2478 this%bccsound%data3d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
2479 rinv(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2480 rinv(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
2481 rinv(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,3), &
2482 rinv(mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,4), &
2483 p%density%data3d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX), &
2484 p%velocity%data4d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,1), &
2485 p%velocity%data4d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,2), &
2486 p%velocity%data4d(i,mesh%JMIN:mesh%JMAX,mesh%KMIN:mesh%KMAX,3))
2499 INTEGER,
INTENT(IN) :: j
2501 DIMENSION(Mesh%IMIN:Mesh%IMAX,Mesh%KMIN:Mesh%KMAX,this%VNUM) &
2505 SELECT TYPE(p => pvar)
2507 SELECT CASE(
this%VDIM)
2510 this%bccsound%data3d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX), &
2511 rinv(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,1), &
2512 rinv(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,2), &
2513 p%density%data3d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX), &
2514 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX,1))
2517 this%bccsound%data3d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX), &
2518 rinv(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,1), &
2519 rinv(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,2), &
2520 rinv(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,3), &
2521 p%density%data3d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX), &
2522 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX,2), &
2523 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX,1))
2526 this%bccsound%data3d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX), &
2527 rinv(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,1), &
2528 rinv(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,2), &
2529 rinv(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,3), &
2530 rinv(mesh%IMIN:mesh%IMAX,mesh%KMIN:mesh%KMAX,4), &
2531 p%density%data3d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX), &
2532 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX,2), &
2533 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX,3), &
2534 p%velocity%data4d(mesh%IMIN:mesh%IMAX,j,mesh%KMIN:mesh%KMAX,1))
2547 INTEGER,
INTENT(IN) :: k
2549 DIMENSION(Mesh%IMIN:Mesh%IMAX,Mesh%JMIN:Mesh%JMAX,this%VNUM) &
2553 SELECT TYPE(p => pvar)
2555 SELECT CASE(
this%VDIM)
2558 this%bccsound%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k), &
2559 rinv(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,1), &
2560 rinv(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,2), &
2561 p%density%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k), &
2562 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k,1))
2565 this%bccsound%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k), &
2566 rinv(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,1), &
2567 rinv(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,2), &
2568 rinv(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,3), &
2569 p%density%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k), &
2570 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k,2), &
2571 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k,1))
2574 this%bccsound%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k), &
2575 rinv(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,1), &
2576 rinv(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,2), &
2577 rinv(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,3), &
2578 rinv(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,4), &
2579 p%density%data3d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k), &
2580 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k,3), &
2581 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k,1), &
2582 p%velocity%data4d(mesh%IMIN:mesh%IMAX,mesh%JMIN:mesh%JMAX,k,2))
2593 DEALLOCATE(this%bccsound,this%fcsound)
2594 CALL this%Finalize_base()
2609 INTEGER,
OPTIONAL,
INTENT(IN) :: flavour,num
2612 LOGICAL :: success = .false.
2616 print *,
"DEBUG INFO in physics_eulerisotherm::CreateStateVector: creating statevector"
2618 IF (.NOT.physics%Initialized()) &
2619 CALL physics%Error(
"physics_eulerisotherm::CreateStatevector", &
2620 "Physics not initialized.")
2624 IF (
PRESENT(flavour))
THEN
2625 SELECT CASE(flavour)
2627 new_sv%flavour = flavour
2633 ALLOCATE(new_sv%density,new_sv%velocity,stat=err)
2636 IF (
PRESENT(num))
THEN
2644 success = new_sv%AppendMArray(new_sv%density)
2645 success = success .AND. new_sv%AppendMArray(new_sv%velocity)
2648 print *,
"ERROR in physics_eulerisotherm::CreateStateVector: memory allocation failed"
2651 SELECT CASE(new_sv%flavour)
2653 new_sv%momentum => null()
2655 new_sv%momentum => new_sv%velocity
2656 new_sv%velocity => null()
2659 print *,
"ERROR in physics_eulerisotherm::CreateStateVector: unknown flavour"
2663 CALL physics%Error(
"physics_eulerisotherm::CreateStateVector", &
2664 "state vector initialization failed")
2675 print *,
"DEBUG INFO in physics_eulerisotherm::AssignMArray_0: assigning state vectors"
2677 SELECT TYPE(src => ma)
2679 CALL this%marray_compound%AssignMArray_0(src)
2680 IF (
SIZE(this%data1d).LE.0)
THEN
2682 print *,
"DEBUG INFO in physics_eulerisotherm::AssignMArray_0: found empty compound on lhs"
2688 print *,
"ERROR in physics_eulerisotherm::AssignMArray_0: rhs should be a compound"
2693 SELECT TYPE(src => ma)
2696 print *,
"DEBUG INFO in physics_eulerisotherm::AssignMArray_0: restore component pointers"
2699 this%flavour = src%flavour
2701 this%fargo_transformation_applied = src%fargo_transformation_applied
2705 this%density => this%GetItem(this%FirstItem())
2706 SELECT CASE(this%flavour)
2709 this%velocity => this%GetItem(this%NextItem(this%FirstItem()))
2710 this%momentum => null()
2713 this%momentum => this%GetItem(this%NextItem(this%FirstItem()))
2714 this%velocity => null()
2718 print *,
"ERROR in physics_eulerisotherm::AssignMArray_0: unsupported flavour"
2733 print *,
"DEBUG INFO in physics_eulerisotherm::Finalize: cleanup statevector"
2735 NULLIFY(this%density,this%velocity,this%momentum)
2745 REAL,
INTENT(IN) :: cs,v
2746 REAL,
INTENT(OUT) :: minwav,maxwav
2748 minwav = min(0.,v-cs)
2749 maxwav = max(0.,v+cs)
2756 REAL,
INTENT(IN) :: cs,v
2757 REAL,
INTENT(OUT) :: l1,l2
2766 REAL,
INTENT(IN) :: cs,v
2767 REAL,
INTENT(OUT) :: l1,l2,l3
2777 REAL,
INTENT(IN) :: cs,v
2778 REAL,
INTENT(OUT) :: l1,l2,l3,l4
2790 REAL,
INTENT(IN) :: cs,rho,u,mu
2791 REAL,
INTENT(OUT) :: f1,f2
2794 f2 = mu*u + rho*cs*cs
2801 REAL,
INTENT(IN) :: cs,rho,u,mu,mv
2802 REAL,
INTENT(OUT) :: f1,f2,f3
2809 ELEMENTAL SUBROUTINE setflux3d(cs,rho,u,mu,mv,mw,f1,f2,f3,f4)
2812 REAL,
INTENT(IN) :: cs,rho,u,mu,mv,mw
2813 REAL,
INTENT(OUT) :: f1,f2,f3,f4
2823 REAL,
INTENT(IN) :: rho_in,mu
2824 REAL,
INTENT(OUT) :: rho_out,u
2834 REAL,
INTENT(IN) :: rho_in,mu,mv
2835 REAL,
INTENT(OUT) :: rho_out,u,v
2849 REAL,
INTENT(IN) :: rho_in,mu,mv,mw
2850 REAL,
INTENT(OUT) :: rho_out,u,v,w
2865 REAL,
INTENT(IN) :: rho_in,u
2866 REAL,
INTENT(OUT) :: rho_out,mu
2876 REAL,
INTENT(IN) :: rho_in,u,v
2877 REAL,
INTENT(OUT) :: rho_out,mu,mv
2887 REAL,
INTENT(IN) :: rho_in,u,v,w
2888 REAL,
INTENT(OUT) :: rho_out,mu,mv,mw
2898 REAL,
INTENT(IN) :: cs,rho1,rho2,u1,u2
2899 REAL,
INTENT(OUT) :: xvar1,xvar2
2903 dlnrho = log(rho2/rho1)
2906 xvar1 = dlnrho - ducs
2907 xvar2 = dlnrho + ducs
2914 REAL,
INTENT(IN) :: cs,rho1,rho2,u1,u2,v1,v2
2915 REAL,
INTENT(OUT) :: xvar1,xvar2,xvar3
2923 xvar1,xvar2,xvar3,xvar4)
2926 REAL,
INTENT(IN) :: cs,rho1,rho2,u1,u2,v1,v2,w1,w2
2927 REAL,
INTENT(OUT) :: xvar1,xvar2,xvar3,xvar4
2931 CALL setcharvars2d(cs,rho1,rho2,u1,u2,v1,v2,xvar1,xvar2,xvar4)
2939 INTEGER,
INTENT(IN) :: delta
2940 REAL,
INTENT(IN) :: cs,rho1,u1,xvar1,xvar2
2941 REAL,
INTENT(OUT) :: rho2,u2
2943 rho2 = rho1 * exp(delta*0.5*(xvar2+xvar1))
2944 u2 = u1 + delta*0.5*cs*(xvar2-xvar1)
2951 INTEGER,
INTENT(IN) :: delta
2952 REAL,
INTENT(IN) :: cs,rho1,u1,v1,xvar1,xvar2,xvar3
2953 REAL,
INTENT(OUT) :: rho2,u2,v2
2956 v2 = v1 + delta*xvar2
2960 xvar4,rho2,u2,v2,w2)
2963 INTEGER,
INTENT(IN) :: delta
2964 REAL,
INTENT(IN) :: cs,rho1,u1,v1,w1,xvar1,xvar2,xvar3,xvar4
2965 REAL,
INTENT(OUT) :: rho2,u2,v2,w2
2967 CALL setboundarydata2d(delta,cs,rho1,u1,v1,xvar1,xvar2,xvar4,rho2,u2,v2)
2968 w2 = w1 + delta*xvar3
2976 REAL,
INTENT(IN) :: cs,rho,vx
2977 REAL,
INTENT(OUT) :: rminus,rplus
2981 cslnrho = cs*log(rho)
2983 rplus = vx + cslnrho
2985 rminus = vx - cslnrho
2994 REAL,
INTENT(IN) :: cs,rho,vx,vy
2995 REAL,
INTENT(OUT) :: rminus,rvt,rplus
3008 REAL,
INTENT(IN) :: cs,rho,vx,vy,vz
3009 REAL,
INTENT(OUT) :: rminus,rvt,rwt,rplus
3020 REAL,
INTENT(IN) :: cs,rminus,rplus
3021 REAL,
INTENT(OUT) :: rho,vx
3024 vx = 0.5*(rplus+rminus)
3026 rho = exp(0.5*(rplus-rminus)/cs)
3035 REAL,
INTENT(IN) :: cs,rminus,rvt,rplus
3036 REAL,
INTENT(OUT) :: rho,vx,vy
3051 REAL,
INTENT(IN) :: cs,rminus,rvt,rwt,rplus
3052 REAL,
INTENT(OUT) :: rho,vx,vy,vz
3072 REAL,
INTENT(IN) :: cxyx,cxzx,cyxy,czxz,vx,vy,vz,p,my,mz
3083 REAL,
INTENT(IN) :: cxyx,cyxy,cyzy,czyz,vx,vy,vz,p,mx,mz
3094 REAL,
INTENT(IN) :: cxzx,cyzy,czxz,czyz,vx,vy,vz,p,mx,my
Dictionary for generic data types.
type(logging_base), save this
constructor for geometry class
real, save nan_default_real
NaN real constant.
subroutine finalize(this)
Destructor of logging_base class.
base class for mesh arrays
subroutine assignmarray_0(this, ma)
assigns one mesh array to another mesh array
derived class for compound of mesh arrays
integer, parameter east
named constant for eastern boundary
integer, parameter bottom
named constant for bottom boundary
integer, parameter vector_y
integer, parameter vector_z
integer, parameter south
named constant for southern boundary
integer, parameter vector_x
flags to check which vector components are enabled
subroutine setoutput(this, config, IO)
Setup mesh fields for i/o.
integer, parameter top
named constant for top boundary
integer, parameter north
named constant for northern boundary
integer, parameter west
named constant for western boundary
integer, parameter, public euler_isotherm
physics module for 1D,2D and 3D isothermal Euler equations
subroutine setsoundspeeds_center(this, Mesh, bccsound)
Sets soundspeeds at cell-centers.
pure subroutine calculateprim2riemannz(this, Mesh, k, pvar, lambda, Rinv)
Conversion from primitive to riemann invariants for farfield boundaries.
elemental real function getgeometricalsourcez(cxzx, cyzy, czxz, czyz, vx, vy, vz, P, mx, my)
z-momentum geometrical source term
pure subroutine calcfluxesy(this, Mesh, nmin, nmax, prim, cons, yfluxes)
Calculate Fluxes in y-direction.
elemental subroutine seteigenvalues3d(cs, v, l1, l2, l3, l4)
pure subroutine calculateprim2riemannx(this, Mesh, i, pvar, lambda, Rinv)
Conversion from primitive to riemann invariants for farfield boundaries.
elemental subroutine setflux2d(cs, rho, u, mu, mv, f1, f2, f3)
set mass and 2D momentum flux for transport along the 1st dimension
pure subroutine subtractbackgroundvelocityx(this, Mesh, w, pvar, cvar)
elemental subroutine seteigenvalues1d(cs, v, l1, l2)
compute all eigenvalues
pure subroutine subtractbackgroundvelocityy(this, Mesh, w, pvar, cvar)
elemental subroutine setflux3d(cs, rho, u, mu, mv, mw, f1, f2, f3, f4)
set mass and 3D momentum flux for transport along the 1st dimension
pure subroutine calculatecharsystemy(this, Mesh, j1, j2, pvar, lambda, xvar)
pure subroutine calcwavespeeds_center(this, Mesh, pvar, minwav, maxwav)
Calculates wave speeds at cell-centers.
elemental subroutine prim2cons2d(rho_in, u, v, rho_out, mu, mv)
Convert from 2D primitive to conservative variables.
elemental subroutine riemann2prim1d(cs, Rminus, Rplus, rho, vx)
pure subroutine addbackgroundvelocityz(this, Mesh, w, pvar, cvar)
pure subroutine convert2primitive_all(this, cvar, pvar)
Converts to primitives at cell centers using state vectors.
elemental subroutine cons2prim1d(rho_in, mu, rho_out, u)
Convert from 1D conservative to primitive variables.
pure subroutine geometricalsources(this, Mesh, pvar, cvar, sterm)
Calculates geometrical sources.
pure subroutine calculateriemann2primz(this, Mesh, k, Rinv, pvar)
Convert Riemann invariants to primitives for farfield boundaries.
elemental real function getgeometricalsourcex(cxyx, cxzx, cyxy, czxz, vx, vy, vz, P, my, mz)
geometrical momentum source terms P is the either isothermal pressure rho*cs**2 or the real pressure.
pure subroutine addfargosourcesz(this, Mesh, w, pvar, cvar, sterm)
sources terms for fargo advection along z-direction
elemental real function getgeometricalsourcey(cxyx, cyxy, cyzy, czyz, vx, vy, vz, P, mx, mz)
y-momentum geometrical source term
subroutine finalize_statevector(this)
destructor of statevector_eulerisotherm
elemental subroutine setcharvars2d(cs, rho1, rho2, u1, u2, v1, v2, xvar1, xvar2, xvar3)
compute characteristic variables using adjacent primitve states
elemental subroutine setcharvars3d(cs, rho1, rho2, u1, u2, v1, v2, w1, w2, xvar1, xvar2, xvar3, xvar4)
compute characteristic variables using adjacent primitve states
pure subroutine addfargosourcesx(this, Mesh, w, pvar, cvar, sterm)
sources terms for fargo advection along x-direction
subroutine externalsources(this, accel, pvar, cvar, sterm)
compute momentum sources given an external force
elemental subroutine setboundarydata3d(delta, cs, rho1, u1, v1, w1, xvar1, xvar2, xvar3, xvar4, rho2, u2, v2, w2)
pure subroutine convert2primitive_subset(this, i1, i2, j1, j2, k1, k2, cvar, pvar)
Converts to primitives at cell centers using state vectors.
pure subroutine axismasks(this, Mesh, reflX, reflY, reflZ)
return masks for axis boundaries
elemental subroutine setcharvars1d(cs, rho1, rho2, u1, u2, xvar1, xvar2)
compute characteristic variables using adjacent primitve states
elemental subroutine riemann2prim2d(cs, Rminus, Rvt, Rplus, rho, vx, vy)
elemental subroutine seteigenvalues2d(cs, v, l1, l2, l3)
pure subroutine calcstresses(this, Mesh, pvar, dynvis, bulkvis, btxx, btxy, btxz, btyy, btyz, btzz)
calculate components of the stress tensor
pure subroutine addfargosourcesy(this, Mesh, w, pvar, cvar, sterm)
sources terms for fargo advection along y-direction
pure subroutine calculateboundarydatax(this, Mesh, i1, i2, xvar, pvar)
elemental subroutine setboundarydata2d(delta, cs, rho1, u1, v1, xvar1, xvar2, xvar3, rho2, u2, v2)
elemental subroutine setboundarydata1d(delta, cs, rho1, u1, xvar1, xvar2, rho2, u2)
extrapolate boundary values using primitve and characteristic variables
subroutine initphysics(this, Mesh, config, IO)
Intialization of isothermal physics.
pure subroutine addbackgroundvelocityx(this, Mesh, w, pvar, cvar)
pure subroutine subtractbackgroundvelocityz(this, Mesh, w, pvar, cvar)
elemental subroutine riemann2prim3d(cs, Rminus, Rvt, Rwt, Rplus, rho, vx, vy, vz)
pure subroutine calcfluxesz(this, Mesh, nmin, nmax, prim, cons, zfluxes)
Calculate Fluxes in z-direction.
elemental subroutine prim2riemann3d(cs, rho, vx, vy, vz, Rminus, Rvt, Rwt, Rplus)
pure subroutine calculateriemann2primx(this, Mesh, i, Rinv, pvar)
Convert Riemann invariants to primitives for farfield boundaries.
elemental subroutine prim2cons1d(rho_in, u, rho_out, mu)
Convert from 1D primitive to conservative variables.
elemental subroutine cons2prim2d(rho_in, mu, mv, rho_out, u, v)
Convert from 2D conservative to primitive variables.
elemental subroutine prim2riemann2d(cs, rho, vx, vy, Rminus, Rvt, Rplus)
elemental subroutine prim2riemann1d(cs, rho, vx, Rminus, Rplus)
elemental subroutine setflux1d(cs, rho, u, mu, f1, f2)
set mass and 1D momentum flux for transport along the 1st dimension
pure subroutine reflectionmasks(this, Mesh, reflX, reflY, reflZ)
return masks for reflecting boundaries
pure subroutine calculateboundarydataz(this, Mesh, k1, k2, xvar, pvar)
elemental subroutine prim2cons3d(rho_in, u, v, w, rho_out, mu, mv, mw)
Convert from 3D primitive to conservative variables.
elemental subroutine setwavespeeds(cs, v, minwav, maxwav)
set minimal and maximal wave speeds
pure subroutine calculateprim2riemanny(this, Mesh, j, pvar, lambda, Rinv)
Conversion from primitive to riemann invariants for farfield boundaries.
pure subroutine convert2conservative_subset(this, i1, i2, j1, j2, k1, k2, pvar, cvar)
Converts to primitive to conservative variables on a subset of the data.
subroutine setsoundspeeds_faces(this, Mesh, fcsound)
Sets soundspeeds at cell-faces.
pure subroutine addbackgroundvelocityy(this, Mesh, w, pvar, cvar)
subroutine viscositysources(this, Mesh, pvar, btxx, btxy, btxz, btyy, btyz, btzz, sterm)
compute viscous source terms
pure subroutine calculateboundarydatay(this, Mesh, j1, j2, xvar, pvar)
pure subroutine calcfluxesx(this, Mesh, nmin, nmax, prim, cons, xfluxes)
Calculate Fluxes in x-direction.
pure subroutine calcwavespeeds_faces(this, Mesh, prim, cons, minwav, maxwav)
Calculates wave speeds at cell-faces.
pure subroutine calculatecharsystemz(this, Mesh, k1, k2, pvar, lambda, xvar)
pure subroutine convert2conservative_all(this, pvar, cvar)
Converts primitive to conservative variables on the whole mesh.
pure subroutine calculateriemann2primy(this, Mesh, j, Rinv, pvar)
Convert Riemann invariants to primitives for farfield boundaries.
elemental subroutine cons2prim3d(rho_in, mu, mv, mw, rho_out, u, v, w)
Convert from 3D conservative to primitive variables.
character(len=32), parameter problem_name
type(statevector_eulerisotherm) function createstatevector(Physics, flavour, num)
Constructor of statevector_eulerisotherm.
pure subroutine calculatecharsystemx(this, Mesh, i1, i2, pvar, lambda, xvar)