405 integer,
intent(in) :: ixI^L, ixO^L
406 double precision,
intent(in) :: x(ixI^S,1:ndim)
407 double precision,
intent(in) :: w(ixI^S,1:nw)
409 double precision,
intent(in) :: rho(ixI^S),Te(ixI^S)
410 double precision,
intent(in) :: alpha
411 double precision,
intent(out) :: qvec(ixI^S,1:ndim)
414 double precision,
dimension(ixI^S,1:ndim) :: mf,Bc,Bcf,gradT
415 double precision,
dimension(ixI^S) :: ka,kaf,ke,kef,qdd,Bnorm
416 double precision :: minq,maxq,qd(ixI^S,2**(ndim-1)), Blocal(ndim)
417 integer :: idims,idir,ix^D,ix^L,ixC^L,ixA^L,ixB^L
423 if(
allocated(iw_mag))
then
425 {
do ix^db=ixmin^db,ixmax^db\}
426 ^d&blocal(^d)=w({ix^d},iw_mag(^d))+
block%B0({ix^d},^d,0)\
428 if(blocal(1)/=0.d0)
then
429 mf(ix^d,1)=sign(1.d0,blocal(1))/dsqrt(1.d0+(blocal(2)/blocal(1))**2)
433 if(blocal(2)/=0.d0)
then
434 mf(ix^d,2)=sign(1.d0,blocal(2))/dsqrt(1.d0+(blocal(1)/blocal(2))**2)
440 if(blocal(1)/=0.d0)
then
441 mf(ix^d,1)=sign(1.d0,blocal(1))/dsqrt(1.d0+(blocal(2)/blocal(1))**2+(blocal(3)/blocal(1))**2)
445 if(blocal(2)/=0.d0)
then
446 mf(ix^d,2)=sign(1.d0,blocal(2))/dsqrt(1.d0+(blocal(1)/blocal(2))**2+(blocal(3)/blocal(2))**2)
450 if(blocal(3)/=0.d0)
then
451 mf(ix^d,3)=sign(1.d0,blocal(3))/dsqrt(1.d0+(blocal(1)/blocal(3))**2+(blocal(2)/blocal(3))**2)
458 {
do ix^db=ixmin^db,ixmax^db\}
460 if(w(ix^d,iw_mag(1))/=0.d0)
then
461 mf(ix^d,1)=sign(1.d0,w(ix^d,iw_mag(1)))/dsqrt(1.d0+(w(ix^d,iw_mag(2))/w(ix^d,iw_mag(1)))**2)
465 if(w(ix^d,iw_mag(2))/=0.d0)
then
466 mf(ix^d,2)=sign(1.d0,w(ix^d,iw_mag(2)))/dsqrt(1.d0+(w(ix^d,iw_mag(1))/w(ix^d,iw_mag(2)))**2)
472 if(w(ix^d,iw_mag(1))/=0.d0)
then
473 mf(ix^d,1)=sign(1.d0,w(ix^d,iw_mag(1)))/dsqrt(1.d0+(w(ix^d,iw_mag(2))/w(ix^d,iw_mag(1)))**2+&
474 (w(ix^d,iw_mag(3))/w(ix^d,iw_mag(1)))**2)
478 if(w(ix^d,iw_mag(2))/=0.d0)
then
479 mf(ix^d,2)=sign(1.d0,w(ix^d,iw_mag(2)))/dsqrt(1.d0+(w(ix^d,iw_mag(1))/w(ix^d,iw_mag(2)))**2+&
480 (w(ix^d,iw_mag(3))/w(ix^d,iw_mag(2)))**2)
484 if(w(ix^d,iw_mag(3))/=0.d0)
then
485 mf(ix^d,3)=sign(1.d0,w(ix^d,iw_mag(3)))/dsqrt(1.d0+(w(ix^d,iw_mag(1))/w(ix^d,iw_mag(3)))**2+&
486 (w(ix^d,iw_mag(2))/w(ix^d,iw_mag(3)))**2)
494 mf(ix^s,1:ndim)=block%B0(ix^s,1:ndim,0)
497 ixcmax^d=ixomax^d; ixcmin^d=ixomin^d-1;
501 {
do ix^db=ixcmin^db,ixcmax^db\}
502 bc(ix^d,idims)=0.125d0*(mf(ix1,ix2,ix3,idims)+mf(ix1+1,ix2,ix3,idims)&
503 +mf(ix1,ix2+1,ix3,idims)+mf(ix1+1,ix2+1,ix3,idims)&
504 +mf(ix1,ix2,ix3+1,idims)+mf(ix1+1,ix2,ix3+1,idims)&
505 +mf(ix1,ix2+1,ix3+1,idims)+mf(ix1+1,ix2+1,ix3+1,idims))
511 {
do ix^db=ixcmin^db,ixcmax^db\}
512 bc(ix^d,idims)=0.25d0*(mf(ix1,ix2,idims)+mf(ix1+1,ix2,idims)&
513 +mf(ix1,ix2+1,idims)+mf(ix1+1,ix2+1,idims))
520 ixbmax^d=ixmax^d-kr(idims,^d);
521 call gradientf(te,x,ixi^l,ixb^l,idims,gradt(ixi^s,idims))
523 if(fl%tc_constant)
then
524 if(fl%tc_perpendicular)
then
525 ka(ixc^s)=fl%tc_k_para-fl%tc_k_perp
526 ke(ixc^s)=fl%tc_k_perp
528 ka(ixc^s)=fl%tc_k_para
533 {
do ix^db=ixmin^db,ixmax^db\}
534 if(te(ix^d) < block%wextra(ix^d,fl%Tcoff_))
then
535 qdd(ix^d)=fl%tc_k_para*sqrt(block%wextra(ix^d,fl%Tcoff_)**5)
537 qdd(ix^d)=fl%tc_k_para*sqrt(te(ix^d)**5)
541 qdd(ix^s)=fl%tc_k_para*sqrt(te(ix^s)**5)
545 {
do ix^db=ixcmin^db,ixcmax^db\}
546 ka(ix^d)=0.125d0*(qdd(ix1,ix2,ix3)+qdd(ix1+1,ix2,ix3)&
547 +qdd(ix1,ix2+1,ix3)+qdd(ix1+1,ix2+1,ix3)&
548 +qdd(ix1,ix2,ix3+1)+qdd(ix1+1,ix2,ix3+1)&
549 +qdd(ix1,ix2+1,ix3+1)+qdd(ix1+1,ix2+1,ix3+1))
553 {
do ix^db=ixcmin^db,ixcmax^db\}
554 ka(ix^d)=0.25d0*(qdd(ix1,ix2)+qdd(ix1+1,ix2)&
555 +qdd(ix1,ix2+1)+qdd(ix1+1,ix2+1))
559 if(fl%tc_perpendicular)
then
561 qdd(ix^s)=fl%tc_k_perp*rho(ix^s)**2/((^d&(w(ix^s,iw_mag(^d))+block%B0(ix^s,^d,0))**2+)*dsqrt(te(ix^s))+smalldouble)
563 qdd(ix^s)=fl%tc_k_perp*rho(ix^s)**2/((^d&w(ix^s,iw_mag(^d))**2+)*dsqrt(te(ix^s))+smalldouble)
566 {
do ix^db=ixcmin^db,ixcmax^db\}
567 ke(ix^d)=0.125d0*(qdd(ix1,ix2,ix3)+qdd(ix1+1,ix2,ix3)&
568 +qdd(ix1,ix2+1,ix3)+qdd(ix1+1,ix2+1,ix3)&
569 +qdd(ix1,ix2,ix3+1)+qdd(ix1+1,ix2,ix3+1)&
570 +qdd(ix1,ix2+1,ix3+1)+qdd(ix1+1,ix2+1,ix3+1))
571 if(ke(ix^d)<ka(ix^d))
then
572 ka(ix^d)=ka(ix^d)-ke(ix^d)
580 {
do ix^db=ixcmin^db,ixcmax^db\}
581 ke(ix^d)=0.25d0*(qdd(ix1,ix2)+qdd(ix1+1,ix2)&
582 +qdd(ix1,ix2+1)+qdd(ix1+1,ix2+1))
583 if(ke(ix^d)<ka(ix^d))
then
584 ka(ix^d)=ka(ix^d)-ke(ix^d)
593 if(fl%tc_slope_limiter==0)
then
599 if({ ix^d==0 .and. ^d==idims | .or.})
then
600 ixbmin^d=ixcmin^d+ix^d;
601 ixbmax^d=ixcmax^d+ix^d;
602 qdd(ixc^s)=qdd(ixc^s)+gradt(ixb^s,idims)
606 qvec(ixc^s,idims)=qdd(ixc^s)*0.5d0**(ndim-1)
609 qdd(ixc^s)=sum(qvec(ixc^s,1:ndim)*bc(ixc^s,1:ndim),dim=ndim+1)
612 gradt(ixc^s,idims)=ka(ixc^s)*bc(ixc^s,idims)*qdd(ixc^s)
613 if(fl%tc_perpendicular) gradt(ixc^s,idims)=gradt(ixc^s,idims)+ke(ixc^s)*qvec(ixc^s,idims)
618 ixb^l=ixo^l-kr(idims,^d);
619 ixamax^d=ixomax^d; ixamin^d=ixbmin^d;
621 if({ ix^d==0 .and. ^d==idims | .or.})
then
622 ixbmin^d=ixamin^d-ix^d;
623 ixbmax^d=ixamax^d-ix^d;
624 qvec(ixa^s,idims)=qvec(ixa^s,idims)+gradt(ixb^s,idims)
627 qvec(ixa^s,idims)=qvec(ixa^s,idims)*0.5d0**(ndim-1)
628 if(fl%tc_saturate)
then
633 if({ ix^d==0 .and. ^d==idims | .or.})
then
634 ixbmin^d=ixamin^d-ix^d;
635 ixbmax^d=ixamax^d-ix^d;
636 bcf(ixa^s,idims)=bcf(ixa^s,idims)+bc(ixb^s,idims)
640 bcf(ixa^s,idims)=bcf(ixa^s,idims)*0.5d0**(ndim-1)
641 ixb^l=ixa^l+kr(idims,^d);
642 qdd(ixa^s)=2.75d0*(rho(ixa^s)+rho(ixb^s))*dsqrt(0.5d0*(te(ixa^s)+te(ixb^s)))**3*dabs(bcf(ixa^s,idims))
643 {
do ix^db=ixamin^db,ixamax^db\}
644 if(dabs(qvec(ix^d,idims))>qdd(ix^d))
then
645 qvec(ix^d,idims)=sign(1.d0,qvec(ix^d,idims))*qdd(ix^d)
653 ixamax^d=ixomax^d; ixamin^d=ixomin^d-kr(idims,^d);
656 {
do ix^db=ixamin^db,ixamax^db\}
658 ^d&bcf({ix^d},^d)=0.25d0*(bc({ix^d},^d)+bc(ix1,ix2-1,ix3,^d)&
659 +bc(ix1,ix2,ix3-1,^d)+bc(ix1,ix2-1,ix3-1,^d))\
660 kaf(ix^d)=0.25d0*(ka(ix1,ix2,ix3)+ka(ix1,ix2-1,ix3)&
661 +ka(ix1,ix2,ix3-1)+ka(ix1,ix2-1,ix3-1))
663 if(fl%tc_perpendicular) &
664 kef(ix^d)=0.25d0*(ke(ix1,ix2,ix3)+ke(ix1,ix2-1,ix3)&
665 +ke(ix1,ix2,ix3-1)+ke(ix1,ix2-1,ix3-1))
667 else if(idims==2)
then
668 {
do ix^db=ixamin^db,ixamax^db\}
669 ^d&bcf({ix^d},^d)=0.25d0*(bc({ix^d},^d)+bc(ix1-1,ix2,ix3,^d)&
670 +bc(ix1,ix2,ix3-1,^d)+bc(ix1-1,ix2,ix3-1,^d))\
671 kaf(ix^d)=0.25d0*(ka(ix1,ix2,ix3)+ka(ix1-1,ix2,ix3)&
672 +ka(ix1,ix2,ix3-1)+ka(ix1-1,ix2,ix3-1))
673 if(fl%tc_perpendicular) &
674 kef(ix^d)=0.25d0*(ke(ix1,ix2,ix3)+ke(ix1-1,ix2,ix3)&
675 +ke(ix1,ix2,ix3-1)+ke(ix1-1,ix2,ix3-1))
678 {
do ix^db=ixamin^db,ixamax^db\}
679 ^d&bcf({ix^d},^d)=0.25d0*(bc({ix^d},^d)+bc(ix1,ix2-1,ix3,^d)&
680 +bc(ix1-1,ix2,ix3,^d)+bc(ix1-1,ix2-1,ix3,^d))\
681 kaf(ix^d)=0.25d0*(ka(ix1,ix2,ix3)+ka(ix1,ix2-1,ix3)&
682 +ka(ix1-1,ix2,ix3)+ka(ix1-1,ix2-1,ix3))
683 if(fl%tc_perpendicular) &
684 kef(ix^d)=0.25d0*(ke(ix1,ix2,ix3)+ke(ix1,ix2-1,ix3)&
685 +ke(ix1-1,ix2,ix3)+ke(ix1-1,ix2-1,ix3))
691 {
do ix^db=ixamin^db,ixamax^db\}
692 ^d&bcf({ix^d},^d)=0.5d0*(bc(ix1,ix2,^d)+bc(ix1,ix2-1,^d))\
693 kaf(ix^d)=0.5d0*(ka(ix1,ix2)+ka(ix1,ix2-1))
694 if(fl%tc_perpendicular) &
695 kef(ix^d)=0.5d0*(ke(ix1,ix2)+ke(ix1,ix2-1))
698 {
do ix^db=ixamin^db,ixamax^db\}
699 ^d&bcf({ix^d},^d)=0.5d0*(bc(ix1,ix2,^d)+bc(ix1-1,ix2,^d))\
700 kaf(ix^d)=0.5d0*(ka(ix1,ix2)+ka(ix1-1,ix2))
701 if(fl%tc_perpendicular) &
702 kef(ix^d)=0.5d0*(ke(ix1,ix2)+ke(ix1-1,ix2))
710 {
do ix^db=ixcmin^db,ixcmax^db\}
711 qdd(ix^d)=0.25d0*(gradt(ix1,ix2,ix3,idims)+gradt(ix1,ix2+1,ix3,idims)&
712 +gradt(ix1,ix2,ix3+1,idims)+gradt(ix1,ix2+1,ix3+1,idims))
714 else if(idims==2)
then
715 {
do ix^db=ixcmin^db,ixcmax^db\}
716 qdd(ix^d)=0.25d0*(gradt(ix1,ix2,ix3,idims)+gradt(ix1+1,ix2,ix3,idims)&
717 +gradt(ix1,ix2,ix3+1,idims)+gradt(ix1+1,ix2,ix3+1,idims))
720 {
do ix^db=ixcmin^db,ixcmax^db\}
721 qdd(ix^d)=0.25d0*(gradt(ix1,ix2,ix3,idims)+gradt(ix1+1,ix2,ix3,idims)&
722 +gradt(ix1,ix2+1,ix3,idims)+gradt(ix1+1,ix2+1,ix3,idims))
728 {
do ix^db=ixcmin^db,ixcmax^db\}
729 qdd(ix^d)=0.5d0*(gradt(ix1,ix2,idims)+gradt(ix1,ix2+1,idims))
732 {
do ix^db=ixcmin^db,ixcmax^db\}
733 qdd(ix^d)=0.5d0*(gradt(ix1,ix2,idims)+gradt(ix1+1,ix2,idims))
740 {
do ix^db=ixamin^db,ixamax^db\}
741 minq=min(alpha*gradt(ix^d,idims),gradt(ix^d,idims)/alpha)
742 maxq=max(alpha*gradt(ix^d,idims),gradt(ix^d,idims)/alpha)
743 if(qdd(ix^d)<minq)
then
745 else if(qdd(ix^d)>maxq)
then
750 if(qdd(ix1,ix2-1,ix3)<minq)
then
752 else if(qdd(ix1,ix2-1,ix3)>maxq)
then
755 qd(ix^d,2)=qdd(ix1,ix2-1,ix3)
757 if(qdd(ix1,ix2,ix3-1)<minq)
then
759 else if(qdd(ix1,ix2,ix3-1)>maxq)
then
762 qd(ix^d,3)=qdd(ix1,ix2,ix3-1)
764 if(qdd(ix1,ix2-1,ix3-1)<minq)
then
766 else if(qdd(ix1,ix2-1,ix3-1)>maxq)
then
769 qd(ix^d,4)=qdd(ix1,ix2-1,ix3-1)
771 qvec(ix^d,idims)=kaf(ix^d)*0.25d0*(bc(ix^d,idims)**2*qd(ix^d,1)+bc(ix1,ix2-1,ix3,idims)**2*qd(ix^d,2)&
772 +bc(ix1,ix2,ix3-1,idims)**2*qd(ix^d,3)+bc(ix1,ix2-1,ix3-1,idims)**2*qd(ix^d,4))
773 if(fl%tc_perpendicular) &
774 qvec(ix^d,idims)=qvec(ix^d,idims)+kef(ix^d)*0.25d0*(qd(ix^d,1)+qd(ix^d,2)+qd(ix^d,3)+qd(ix^d,4))
776 else if(idims==2)
then
777 {
do ix^db=ixamin^db,ixamax^db\}
778 minq=min(alpha*gradt(ix^d,idims),gradt(ix^d,idims)/alpha)
779 maxq=max(alpha*gradt(ix^d,idims),gradt(ix^d,idims)/alpha)
780 if(qdd(ix^d)<minq)
then
782 else if(qdd(ix^d)>maxq)
then
787 if(qdd(ix1-1,ix2,ix3)<minq)
then
789 else if(qdd(ix1-1,ix2,ix3)>maxq)
then
792 qd(ix^d,2)=qdd(ix1-1,ix2,ix3)
794 if(qdd(ix1,ix2,ix3-1)<minq)
then
796 else if(qdd(ix1,ix2,ix3-1)>maxq)
then
799 qd(ix^d,3)=qdd(ix1,ix2,ix3-1)
801 if(qdd(ix1-1,ix2,ix3-1)<minq)
then
803 else if(qdd(ix1-1,ix2,ix3-1)>maxq)
then
806 qd(ix^d,4)=qdd(ix1-1,ix2,ix3-1)
808 qvec(ix^d,idims)=kaf(ix^d)*0.25d0*(bc(ix^d,idims)**2*qd(ix^d,1)+bc(ix1-1,ix2,ix3,idims)**2*qd(ix^d,2)&
809 +bc(ix1,ix2,ix3-1,idims)**2*qd(ix^d,3)+bc(ix1-1,ix2,ix3-1,idims)**2*qd(ix^d,4))
810 if(fl%tc_perpendicular) &
811 qvec(ix^d,idims)=qvec(ix^d,idims)+kef(ix^d)*0.25d0*(qd(ix^d,1)+qd(ix^d,2)+qd(ix^d,3)+qd(ix^d,4))
814 {
do ix^db=ixamin^db,ixamax^db\}
815 minq=min(alpha*gradt(ix^d,idims),gradt(ix^d,idims)/alpha)
816 maxq=max(alpha*gradt(ix^d,idims),gradt(ix^d,idims)/alpha)
817 if(qdd(ix^d)<minq)
then
819 else if(qdd(ix^d)>maxq)
then
824 if(qdd(ix1-1,ix2,ix3)<minq)
then
826 else if(qdd(ix1-1,ix2,ix3)>maxq)
then
829 qd(ix^d,2)=qdd(ix1-1,ix2,ix3)
831 if(qdd(ix1,ix2-1,ix3)<minq)
then
833 else if(qdd(ix1,ix2-1,ix3)>maxq)
then
836 qd(ix^d,3)=qdd(ix1,ix2-1,ix3)
838 if(qdd(ix1-1,ix2-1,ix3)<minq)
then
840 else if(qdd(ix1-1,ix2-1,ix3)>maxq)
then
843 qd(ix^d,4)=qdd(ix1-1,ix2-1,ix3)
845 qvec(ix^d,idims)=kaf(ix^d)*0.25d0*(bc(ix^d,idims)**2*qd(ix^d,1)+bc(ix1-1,ix2,ix3,idims)**2*qd(ix^d,2)&
846 +bc(ix1,ix2-1,ix3,idims)**2*qd(ix^d,3)+bc(ix1-1,ix2-1,ix3,idims)**2*qd(ix^d,4))
847 if(fl%tc_perpendicular) &
848 qvec(ix^d,idims)=qvec(ix^d,idims)+kef(ix^d)*0.25d0*(qd(ix^d,1)+qd(ix^d,2)+qd(ix^d,3)+qd(ix^d,4))
854 {
do ix^db=ixamin^db,ixamax^db\}
855 minq=min(alpha*gradt(ix^d,idims),gradt(ix^d,idims)/alpha)
856 maxq=max(alpha*gradt(ix^d,idims),gradt(ix^d,idims)/alpha)
857 if(qdd(ix^d)<minq)
then
859 else if(qdd(ix^d)>maxq)
then
864 if(qdd(ix1,ix2-1)<minq)
then
866 else if(qdd(ix1,ix2-1)>maxq)
then
869 qd(ix^d,2)=qdd(ix1,ix2-1)
871 qvec(ix^d,idims)=kaf(ix^d)*0.5d0*(bc(ix1,ix2,idims)**2*qd(ix^d,1)+bc(ix1,ix2-1,idims)**2*qd(ix^d,2))
872 if(fl%tc_perpendicular) &
873 qvec(ix^d,idims)=qvec(ix^d,idims)+kef(ix^d)*0.5d0*(qd(ix^d,1)+qd(ix^d,2))
876 {
do ix^db=ixamin^db,ixamax^db\}
877 minq=min(alpha*gradt(ix^d,idims),gradt(ix^d,idims)/alpha)
878 maxq=max(alpha*gradt(ix^d,idims),gradt(ix^d,idims)/alpha)
879 if(qdd(ix^d)<minq)
then
881 else if(qdd(ix^d)>maxq)
then
886 if(qdd(ix1-1,ix2)<minq)
then
888 else if(qdd(ix1-1,ix2)>maxq)
then
891 qd(ix^d,2)=qdd(ix1-1,ix2)
893 qvec(ix^d,idims)=kaf(ix^d)*0.5d0*(bc(ix1,ix2,idims)**2*qd(ix^d,1)+bc(ix1-1,ix2,idims)**2*qd(ix^d,2))
894 if(fl%tc_perpendicular) &
895 qvec(ix^d,idims)=qvec(ix^d,idims)+kef(ix^d)*0.5d0*(qd(ix^d,1)+qd(ix^d,2))
900 ixb^l=ixa^l+kr(idims,^d);
901 bnorm(ixa^s)=0.5d0*(mf(ixa^s,idims)+mf(ixb^s,idims))
904 ixbmax^d=ixamax^d+kr(idims,^d);
906 if(idir==idims) cycle
907 qdd(ixi^s)=
slope_limiter(gradt(ixi^s,idir),ixi^l,ixb^l,idir,-1,fl%tc_slope_limiter)
908 qdd(ixi^s)=
slope_limiter(qdd,ixi^l,ixa^l,idims,1,fl%tc_slope_limiter)
909 qvec(ixa^s,idims)=qvec(ixa^s,idims)+kaf(ixa^s)*bnorm(ixa^s)*bcf(ixa^s,idir)*qdd(ixa^s)
911 if(fl%tc_saturate)
then
914 ixb^l=ixa^l+kr(idims,^d);
915 qdd(ixa^s)=2.75d0*(rho(ixa^s)+rho(ixb^s))*dsqrt(0.5d0*(te(ixa^s)+te(ixb^s)))**3*dabs(bnorm(ixa^s))
916 {
do ix^db=ixamin^db,ixamax^db\}
917 if(dabs(qvec(ix^d,idims))>qdd(ix^d))
then
918 qvec(ix^d,idims)=sign(1.d0,qvec(ix^d,idims))*qdd(ix^d)
1087 integer,
intent(in) :: ixI^L, ixO^L
1088 double precision,
intent(in) :: x(ixI^S,1:ndim)
1089 double precision,
intent(in) :: w(ixI^S,1:nw)
1091 double precision,
intent(in) :: Te(ixI^S),rho(ixI^S)
1092 double precision,
intent(out) :: qvec(ixI^S,1:ndim)
1093 double precision :: gradT(ixI^S,1:ndim),ke(ixI^S),qd(ixI^S)
1094 integer :: idims,ix^D,ix^L,ixC^L,ixA^L,ixB^L,ixD^L
1098 ixcmax^d=ixomax^d; ixcmin^d=ixomin^d-1;
1104 ixbmax^d=ixmax^d-
kr(idims,^d);
1105 call gradientf(te,x,ixi^l,ixb^l,idims,ke)
1108 {
do ix^db=ixcmin^db,ixcmax^db\}
1109 qvec(ix^d,idims)=0.25d0*(ke(ix1,ix2,ix3)+ke(ix1,ix2+1,ix3)&
1110 +ke(ix1,ix2,ix3+1)+ke(ix1,ix2+1,ix3+1))
1112 else if(idims==2)
then
1113 {
do ix^db=ixcmin^db,ixcmax^db\}
1114 qvec(ix^d,idims)=0.25d0*(ke(ix1,ix2,ix3)+ke(ix1+1,ix2,ix3)&
1115 +ke(ix1,ix2,ix3+1)+ke(ix1+1,ix2,ix3+1))
1118 {
do ix^db=ixcmin^db,ixcmax^db\}
1119 qvec(ix^d,idims)=0.25d0*(ke(ix1,ix2,ix3)+ke(ix1+1,ix2,ix3)&
1120 +ke(ix1,ix2+1,ix3)+ke(ix1+1,ix2+1,ix3))
1126 {
do ix^db=ixcmin^db,ixcmax^db\}
1127 qvec(ix^d,idims)=0.5d0*(ke(ix1,ix2)+ke(ix1,ix2+1))
1130 {
do ix^db=ixcmin^db,ixcmax^db\}
1131 qvec(ix^d,idims)=0.5d0*(ke(ix1,ix2)+ke(ix1+1,ix2))
1136 do ix1=ixcmin1,ixcmax1
1137 qvec(ix1,idims)=ke(ix1)
1143 {
do ix^db=ixmin^db,ixmax^db\}
1144 if(te(ix^d) < block%wextra(ix^d,fl%Tcoff_))
then
1145 qd(ix^d)=fl%tc_k_para*sqrt(block%wextra(ix^d,fl%Tcoff_)**5)
1147 qd(ix^d)=fl%tc_k_para*sqrt(te(ix^d)**5)
1151 qd(ix^s)=fl%tc_k_para*sqrt(te(ix^s)**5)
1155 {
do ix^db=ixcmin^db,ixcmax^db\}
1156 ke(ix^d)=0.125d0*(qd(ix1,ix2,ix3)+qd(ix1+1,ix2,ix3)&
1157 +qd(ix1,ix2+1,ix3)+qd(ix1+1,ix2+1,ix3)&
1158 +qd(ix1,ix2,ix3+1)+qd(ix1+1,ix2,ix3+1)&
1159 +qd(ix1,ix2+1,ix3+1)+qd(ix1+1,ix2+1,ix3+1))
1163 {
do ix^db=ixcmin^db,ixcmax^db\}
1164 ke(ix^d)=0.25d0*(qd(ix1,ix2)+qd(ix1+1,ix2)+qd(ix1,ix2+1)+qd(ix1+1,ix2+1))
1168 do ix1=ixcmin1,ixcmax1
1169 ke(ix1)=0.5d0*(qd(ix1)+qd(ix1+1))
1174 gradt(ixc^s,idims)=ke(ixc^s)*qvec(ixc^s,idims)
1177 if(fl%tc_saturate)
then
1180 qd(ix^s)=5.5d0*rho(ix^s)*dsqrt(te(ix^s)**3)
1183 {
do ix^db=ixcmin^db,ixcmax^db\}
1184 ke(ix^d)=0.125d0*(qd(ix1,ix2,ix3)+qd(ix1+1,ix2,ix3)&
1185 +qd(ix1,ix2+1,ix3)+qd(ix1+1,ix2+1,ix3)&
1186 +qd(ix1,ix2,ix3+1)+qd(ix1+1,ix2,ix3+1)&
1187 +qd(ix1,ix2+1,ix3+1)+qd(ix1+1,ix2+1,ix3+1))
1191 {
do ix^db=ixcmin^db,ixcmax^db\}
1192 ke(ix^d)=0.25d0*(qd(ix1,ix2)+qd(ix1+1,ix2)+qd(ix1,ix2+1)+qd(ix1+1,ix2+1))
1196 do ix1=ixcmin1,ixcmax1
1197 ke(ix1)=0.5d0*(qd(ix1)+qd(ix1+1))
1201 qd(ixc^s)=norm2(gradt(ixc^s,:),dim=ndim+1)
1202 {
do ix^db=ixcmin^db,ixcmax^db\}
1203 if(qd(ix^d)>ke(ix^d))
then
1204 ke(ix^d)=ke(ix^d)/(qd(ix^d)+smalldouble)
1205 ^d&gradt({ix^d},^d)=ke({ix^d})*gradt({ix^d},^d)\
1213 ixb^l=ixo^l-kr(idims,^d);
1214 ixamax^d=ixomax^d; ixamin^d=ixbmin^d;
1217 {
do ix^db=ixamin^db,ixamax^db\}
1218 qvec(ix^d,idims)=0.25d0*(gradt(ix1,ix2,ix3,idims)+gradt(ix1,ix2-1,ix3,idims)&
1219 +gradt(ix1,ix2,ix3-1,idims)+gradt(ix1,ix2-1,ix3-1,idims))
1221 else if(idims==2)
then
1222 {
do ix^db=ixamin^db,ixamax^db\}
1223 qvec(ix^d,idims)=0.25d0*(gradt(ix1,ix2,ix3,idims)+gradt(ix1-1,ix2,ix3,idims)&
1224 +gradt(ix1,ix2,ix3-1,idims)+gradt(ix1-1,ix2,ix3-1,idims))
1227 {
do ix^db=ixamin^db,ixamax^db\}
1228 qvec(ix^d,idims)=0.25d0*(gradt(ix1,ix2,ix3,idims)+gradt(ix1,ix2-1,ix3,idims)&
1229 +gradt(ix1-1,ix2,ix3,idims)+gradt(ix1-1,ix2-1,ix3,idims))
1235 {
do ix^db=ixamin^db,ixamax^db\}
1236 qvec(ix^d,idims)=0.5d0*(gradt(ix1,ix2,idims)+gradt(ix1,ix2-1,idims))
1239 {
do ix^db=ixamin^db,ixamax^db\}
1240 qvec(ix^d,idims)=0.5d0*(gradt(ix1,ix2,idims)+gradt(ix1-1,ix2,idims))
1245 do ix1=ixamin1,ixamax1
1246 qvec(ix1,idims)=gradt(ix1,idims)