18 #include "inc_openmp.h" 78 #define F2H(k,p,q) (CDZ(k+p-1)*GSQRT(k+p-1,i,j)/(CDZ(k)*GSQRT(k,i,j)+CDZ(k+1)*GSQRT(k+1,i,j))) 80 #define F2H(k,p,q) 0.5_RP 87 real(RP),
parameter :: F2 = 0.5_rp
90 real(RP),
parameter :: F41 = 7.0_rp/12.0_rp
91 real(RP),
parameter :: F42 = -1.0_rp/12.0_rp
106 real(RP),
intent(out) :: valw (
ka)
107 real(RP),
intent(in) :: mflx (
ka)
108 real(RP),
intent(in) :: val (
ka)
109 real(RP),
intent(in) :: gsqrt(
ka)
110 real(RP),
intent(in) :: cdz (
ka)
117 call check( __line__, mflx(k) )
119 call check( __line__, val(k) )
120 call check( __line__, val(k+1) )
122 call check( __line__, val(k-1) )
123 call check( __line__, val(k+2) )
126 valw(k) = f41 * ( val(k+1)+val(k) ) &
127 + f42 * ( val(k+2)+val(k-1) )
135 call check( __line__, mflx(
ks) )
136 call check( __line__, val(
ks ) )
137 call check( __line__, val(
ks+1) )
138 call check( __line__, mflx(
ke-1) )
139 call check( __line__, val(
ke ) )
140 call check( __line__, val(
ke-1) )
146 valw(
ks) = f2 * ( val(
ks+1)+val(
ks) )
147 valw(
ke-1) = f2 * ( val(
ke)+val(
ke-1) )
163 real(RP),
intent(inout) :: flux (
ka,
ia,
ja)
164 real(RP),
intent(in) :: mflx (
ka,
ia,
ja)
165 real(RP),
intent(in) :: val (
ka,
ia,
ja)
166 real(RP),
intent(in) :: gsqrt (
ka,
ia,
ja)
167 real(RP),
intent(in) :: num_diff(
ka,
ia,
ja)
168 real(RP),
intent(in) :: cdz (
ka)
169 integer,
intent(in) :: iis, iie, jjs, jje
182 call check( __line__, mflx(k,i,j) )
184 call check( __line__, val(k,i,j) )
185 call check( __line__, val(k+1,i,j) )
187 call check( __line__, val(k-1,i,j) )
188 call check( __line__, val(k+2,i,j) )
193 * ( f41 * ( val(k+1,i,j)+val(k,i,j) ) &
194 + f42 * ( val(k+2,i,j)+val(k-1,i,j) ) ) &
195 + gsqrt(k,i,j) * num_diff(k,i,j)
200 k = iundef; i = iundef; j = iundef
210 call check( __line__, mflx(
ks,i,j) )
211 call check( __line__, val(
ks ,i,j) )
212 call check( __line__, val(
ks+1,i,j) )
213 call check( __line__, mflx(
ke-1,i,j) )
214 call check( __line__, val(
ke ,i,j) )
215 call check( __line__, val(
ke-1,i,j) )
218 flux(
ks-1,i,j) = 0.0_rp
222 * ( f2 * ( val(
ks+1,i,j)+val(
ks,i,j) ) ) &
223 + gsqrt(
ks,i,j) * num_diff(
ks,i,j)
225 flux(
ke-1,i,j) = vel &
226 * ( f2 * ( val(
ke,i,j)+val(
ke-1,i,j) ) ) &
227 + gsqrt(
ke-1,i,j) * num_diff(
ke-1,i,j)
229 flux(
ke ,i,j) = 0.0_rp
233 k = iundef; i = iundef; j = iundef
249 real(RP),
intent(inout) :: flux (
ka,
ia,
ja)
250 real(RP),
intent(in) :: mflx (
ka,
ia,
ja)
251 real(RP),
intent(in) :: val (
ka,
ia,
ja)
252 real(RP),
intent(in) :: gsqrt (
ka,
ia,
ja)
253 real(RP),
intent(in) :: num_diff(
ka,
ia,
ja)
254 real(RP),
intent(in) :: cdz(
ka)
255 integer,
intent(in) :: iis, iie, jjs, jje
268 call check( __line__, mflx(k,i,j) )
270 call check( __line__, val(k,i,j) )
271 call check( __line__, val(k,i+1,j) )
273 call check( __line__, val(k,i-1,j) )
274 call check( __line__, val(k,i+2,j) )
279 * ( f41 * ( val(k,i+1,j)+val(k,i,j) ) &
280 + f42 * ( val(k,i+2,j)+val(k,i-1,j) ) ) &
281 + gsqrt(k,i,j) * num_diff(k,i,j)
286 k = iundef; i = iundef; j = iundef
302 real(RP),
intent(inout) :: flux (
ka,
ia,
ja)
303 real(RP),
intent(in) :: mflx (
ka,
ia,
ja)
304 real(RP),
intent(in) :: val (
ka,
ia,
ja)
305 real(RP),
intent(in) :: gsqrt (
ka,
ia,
ja)
306 real(RP),
intent(in) :: num_diff(
ka,
ia,
ja)
307 real(RP),
intent(in) :: cdz(
ka)
308 integer,
intent(in) :: iis, iie, jjs, jje
321 call check( __line__, mflx(k,i,j) )
323 call check( __line__, val(k,i,j) )
324 call check( __line__, val(k,i,j+1) )
326 call check( __line__, val(k,i,j-1) )
327 call check( __line__, val(k,i,j+2) )
332 * ( f41 * ( val(k,i,j+1)+val(k,i,j) ) &
333 + f42 * ( val(k,i,j+2)+val(k,i,j-1) ) ) &
334 + gsqrt(k,i,j) * num_diff(k,i,j)
339 k = iundef; i = iundef; j = iundef
358 real(RP),
intent(inout) :: flux (
ka,
ia,
ja)
359 real(RP),
intent(in) :: mom (
ka,
ia,
ja)
360 real(RP),
intent(in) :: val (
ka,
ia,
ja)
361 real(RP),
intent(in) :: dens (
ka,
ia,
ja)
362 real(RP),
intent(in) :: gsqrt (
ka,
ia,
ja)
363 real(RP),
intent(in) :: j33g
364 real(RP),
intent(in) :: num_diff(
ka,
ia,
ja)
365 real(RP),
intent(in) :: cdz (
ka)
366 real(RP),
intent(in) :: fdz (
ka-1)
367 real(RP),
intent(in) :: dtrk
368 integer,
intent(in) :: iis, iie, jjs, jje
383 call check( __line__, mom(k-1,i,j) )
384 call check( __line__, mom(k ,i,j) )
386 call check( __line__, val(k-1,i,j) )
387 call check( __line__, val(k,i,j) )
389 call check( __line__, val(k-2,i,j) )
390 call check( __line__, val(k+1,i,j) )
393 vel = ( 0.5_rp * ( mom(k-1,i,j) &
396 flux(k-1,i,j) = j33g * vel &
397 * ( f41 * ( val(k,i,j)+val(k-1,i,j) ) &
398 + f42 * ( val(k+1,i,j)+val(k-2,i,j) ) ) &
399 + gsqrt(k,i,j) * num_diff(k,i,j)
404 k = iundef; i = iundef; j = iundef
414 call check( __line__, val(
ks ,i,j) )
415 call check( __line__, val(
ks+1,i,j) )
422 flux(
ks-1,i,j) = 0.0_rp
424 vel = ( 0.5_rp * ( mom(
ks,i,j) &
425 + mom(
ks+1,i,j) ) ) &
427 flux(
ks,i,j) = j33g * vel &
428 * ( f2 * ( val(
ks+1,i,j)+val(
ks,i,j) ) ) &
429 + gsqrt(
ks+1,i,j) * num_diff(
ks+1,i,j)
433 flux(
ke-1,i,j) = 0.0_rp
434 flux(
ke ,i,j) = 0.0_rp
452 real(RP),
intent(inout) :: flux (
ka,
ia,
ja)
453 real(RP),
intent(in) :: mom (
ka,
ia,
ja)
454 real(RP),
intent(in) :: val (
ka,
ia,
ja)
455 real(RP),
intent(in) :: dens (
ka,
ia,
ja)
456 real(RP),
intent(in) :: gsqrt (
ka,
ia,
ja)
457 real(RP),
intent(in) :: j13g (
ka,
ia,
ja)
458 real(RP),
intent(in) :: mapf (
ia,
ja,2)
459 real(RP),
intent(in) :: cdz (
ka)
460 integer,
intent(in) :: iis, iie, jjs, jje
472 vel = ( 0.5_rp * ( mom(k,i,j)+mom(k,i-1,j) ) ) &
474 flux(k-1,i,j) = j13g(k,i,j) / mapf(i,j,+2) * vel &
475 * ( f41 * ( val(k,i,j)+val(k-1,i,j) ) &
476 + f42 * ( val(k+1,i,j)+val(k-2,i,j) ) )
489 flux(
ks-1,i,j) = 0.0_rp
492 vel = ( ( 0.5_rp * ( mom(
ks+1,i,j)+mom(
ks+1,i-1,j) ) ) / dens(
ks+1,i,j) &
493 + ( 0.5_rp * ( mom(
ks,i,j)+mom(
ks,i-1,j) ) ) / dens(
ks ,i,j) ) * 0.5_rp
496 flux(
ks,i,j) = j13g(
ks+1,i,j) / mapf(i,j,+2) * vel &
497 * ( f2 * ( val(
ks+1,i,j)+val(
ks,i,j) ) )
500 flux(
ke-1,i,j) = 0.0_rp
517 real(RP),
intent(inout) :: flux (
ka,
ia,
ja)
518 real(RP),
intent(in) :: mom (
ka,
ia,
ja)
519 real(RP),
intent(in) :: val (
ka,
ia,
ja)
520 real(RP),
intent(in) :: dens (
ka,
ia,
ja)
521 real(RP),
intent(in) :: gsqrt (
ka,
ia,
ja)
522 real(RP),
intent(in) :: j23g (
ka,
ia,
ja)
523 real(RP),
intent(in) :: mapf (
ia,
ja,2)
524 real(RP),
intent(in) :: cdz (
ka)
525 integer,
intent(in) :: iis, iie, jjs, jje
537 vel = ( 0.5_rp * ( mom(k,i,j)+mom(k,i,j-1) ) ) &
539 flux(k-1,i,j) = j23g(k,i,j) / mapf(i,j,+1) * vel &
540 * ( f41 * ( val(k,i,j)+val(k-1,i,j) ) &
541 + f42 * ( val(k+1,i,j)+val(k-2,i,j) ) )
554 flux(
ks-1,i,j) = 0.0_rp
557 vel = ( ( 0.5_rp * ( mom(
ks+1,i,j)+mom(
ks+1,i,j-1) ) ) / dens(
ks+1,i,j) &
558 + ( 0.5_rp * ( mom(
ks,i,j)+mom(
ks,i,j-1) ) ) / dens(
ks ,i,j) ) * 0.5_rp
561 flux(
ks,i,j) = j23g(
ks+1,i,j) / mapf(i,j,+1) * vel &
562 * ( f2 * ( val(
ks+1,i,j)+val(
ks,i,j) ) )
565 flux(
ke-1,i,j) = 0.0_rp
584 real(RP),
intent(inout) :: flux (
ka,
ia,
ja)
585 real(RP),
intent(in) :: mom (
ka,
ia,
ja)
586 real(RP),
intent(in) :: val (
ka,
ia,
ja)
587 real(RP),
intent(in) :: dens (
ka,
ia,
ja)
588 real(RP),
intent(in) :: gsqrt (
ka,
ia,
ja)
589 real(RP),
intent(in) :: mapf (
ia,
ja,2)
590 real(RP),
intent(in) :: num_diff(
ka,
ia,
ja)
591 real(RP),
intent(in) :: cdz (
ka)
592 integer,
intent(in) :: iis, iie, jjs, jje
606 call check( __line__, mom(k ,i,j) )
607 call check( __line__, mom(k+1,i,j) )
609 call check( __line__, val(k,i,j) )
610 call check( __line__, val(k,i+1,j) )
612 call check( __line__, val(k,i-1,j) )
613 call check( __line__, val(k,i+2,j) )
616 vel = ( f2h(k,1,i_uyz) &
621 * 0.5_rp * ( dens(k+1,i,j)+dens(k+1,i+1,j) ) &
623 * 0.5_rp * ( dens(k,i,j)+dens(k,i+1,j) ) )
624 flux(k,i,j) = gsqrt(k,i,j) / mapf(i,j,+2) * vel &
625 * ( f41 * ( val(k,i+1,j)+val(k,i,j) ) &
626 + f42 * ( val(k,i+2,j)+val(k,i-1,j) ) ) &
627 + gsqrt(k,i,j) * num_diff(k,i,j)
632 k = iundef; i = iundef; j = iundef
640 flux(
ke,i,j) = 0.0_rp
644 k = iundef; i = iundef; j = iundef
661 real(RP),
intent(inout) :: flux (
ka,
ia,
ja)
662 real(RP),
intent(in) :: mom (
ka,
ia,
ja)
663 real(RP),
intent(in) :: val (
ka,
ia,
ja)
664 real(RP),
intent(in) :: dens (
ka,
ia,
ja)
665 real(RP),
intent(in) :: gsqrt (
ka,
ia,
ja)
666 real(RP),
intent(in) :: mapf (
ia,
ja,2)
667 real(RP),
intent(in) :: num_diff(
ka,
ia,
ja)
668 real(RP),
intent(in) :: cdz (
ka)
669 integer,
intent(in) :: iis, iie, jjs, jje
683 call check( __line__, mom(k ,i,j) )
684 call check( __line__, mom(k+1,i,j) )
686 call check( __line__, val(k,i,j) )
687 call check( __line__, val(k,i,j+1) )
689 call check( __line__, val(k,i,j-1) )
690 call check( __line__, val(k,i,j+2) )
693 vel = ( f2h(k,1,i_xvz) &
698 * 0.5_rp * ( dens(k+1,i,j)+dens(k+1,i,j+1) ) &
700 * 0.5_rp * ( dens(k,i,j)+dens(k,i,j+1) ) )
701 flux(k,i,j) = gsqrt(k,i,j) / mapf(i,j,+1) * vel &
702 * ( f41 * ( val(k,i,j+1)+val(k,i,j) ) &
703 + f42 * ( val(k,i,j+2)+val(k,i,j-1) ) ) &
704 + gsqrt(k,i,j) * num_diff(k,i,j)
709 k = iundef; i = iundef; j = iundef
717 flux(
ke,i,j) = 0.0_rp
721 k = iundef; i = iundef; j = iundef
739 real(RP),
intent(inout) :: flux (
ka,
ia,
ja)
740 real(RP),
intent(in) :: mom (
ka,
ia,
ja)
741 real(RP),
intent(in) :: val (
ka,
ia,
ja)
742 real(RP),
intent(in) :: dens (
ka,
ia,
ja)
743 real(RP),
intent(in) :: gsqrt (
ka,
ia,
ja)
744 real(RP),
intent(in) :: j33g
745 real(RP),
intent(in) :: num_diff(
ka,
ia,
ja)
746 real(RP),
intent(in) :: cdz (
ka)
747 integer,
intent(in) :: iis, iie, jjs, jje
761 call check( __line__, mom(k,i,j) )
762 call check( __line__, mom(k,i+1,j) )
764 call check( __line__, val(k,i,j) )
765 call check( __line__, val(k+1,i,j) )
767 call check( __line__, val(k-1,i,j) )
768 call check( __line__, val(k+2,i,j) )
771 vel = ( 0.5_rp * ( mom(k,i,j)+mom(k,i+1,j) ) ) &
773 * 0.5_rp * ( dens(k+1,i,j)+dens(k+1,i+1,j) ) &
775 * 0.5_rp * ( dens(k,i,j)+dens(k,i+1,j) ) )
776 flux(k,i,j) = j33g * vel &
777 * ( f41 * ( val(k+1,i,j)+val(k,i,j) ) &
778 + f42 * ( val(k+2,i,j)+val(k-1,i,j) ) ) &
779 + gsqrt(k,i,j) * num_diff(k,i,j)
784 k = iundef; i = iundef; j = iundef
794 call check( __line__, mom(
ks,i ,j) )
795 call check( __line__, mom(
ks,i+1,j) )
796 call check( __line__, val(
ks+1,i,j) )
797 call check( __line__, val(
ks,i,j) )
803 flux(
ks-1,i,j) = 0.0_rp
805 vel = ( 0.5_rp * ( mom(
ks,i,j)+mom(
ks,i+1,j) ) ) &
806 / ( f2h(
ks,1,i_uyz) &
807 * 0.5_rp * ( dens(
ks+1,i,j)+dens(
ks+1,i+1,j) ) &
809 * 0.5_rp * ( dens(
ks,i,j)+dens(
ks,i+1,j) ) )
810 flux(
ks,i,j) = j33g * vel &
811 * ( f2 * ( val(
ks+1,i,j)+val(
ks,i,j) ) ) &
812 + gsqrt(
ks,i,j) * num_diff(
ks,i,j)
813 vel = ( 0.5_rp * ( mom(
ke-1,i,j)+mom(
ke-1,i+1,j) ) ) &
814 / ( f2h(
ke-1,1,i_uyz) &
815 * 0.5_rp * ( dens(
ke,i,j)+dens(
ke,i+1,j) ) &
816 + f2h(
ke-1,2,i_uyz) &
817 * 0.5_rp * ( dens(
ke-1,i,j)+dens(
ke-1,i+1,j) ) )
818 flux(
ke-1,i,j) = j33g * vel &
819 * ( f2 * ( val(
ke,i,j)+val(
ke-1,i,j) ) ) &
820 + gsqrt(
ke-1,i,j) * num_diff(
ke-1,i,j)
822 flux(
ke,i,j) = 0.0_rp
826 k = iundef; i = iundef; j = iundef
842 real(RP),
intent(inout) :: flux (
ka,
ia,
ja)
843 real(RP),
intent(in) :: mom (
ka,
ia,
ja)
844 real(RP),
intent(in) :: val (
ka,
ia,
ja)
845 real(RP),
intent(in) :: dens (
ka,
ia,
ja)
846 real(RP),
intent(in) :: gsqrt (
ka,
ia,
ja)
847 real(RP),
intent(in) :: j13g (
ka,
ia,
ja)
848 real(RP),
intent(in) :: mapf (
ia,
ja,2)
849 real(RP),
intent(in) :: cdz (
ka)
850 integer,
intent(in) :: iis, iie, jjs, jje
863 vel = ( f2h(k,1,i_uyz) &
868 * 0.5_rp * ( dens(k+1,i,j)+dens(k+1,i+1,j) ) &
870 * 0.5_rp * ( dens(k,i,j)+dens(k,i+1,j) ) )
871 flux(k,i,j) = j13g(k,i,j) / mapf(i,j,+2) * vel &
872 * ( f41 * ( val(k+1,i,j)+val(k,i,j) ) &
873 + f42 * ( val(k+2,i,j)+val(k-1,i,j) ) )
887 flux(
ks-1,i,j) = 0.0_rp
889 vel = ( f2h(
ks,1,i_uyz) &
893 / ( f2h(
ks,1,i_uyz) &
894 * 0.5_rp * ( dens(
ks+1,i,j)+dens(
ks+1,i+1,j) ) &
896 * 0.5_rp * ( dens(
ks,i,j)+dens(
ks,i+1,j) ) )
897 flux(
ks,i,j) = j13g(
ks,i,j) / mapf(i,j,+2) * vel &
898 * ( f2 * ( val(
ks+1,i,j)+val(
ks,i,j) ) )
900 vel = ( f2h(
ke-1,1,i_uyz) &
902 + f2h(
ke-1,2,i_uyz) &
904 / ( f2h(
ke-1,1,i_uyz) &
905 * 0.5_rp * ( dens(
ke,i,j)+dens(
ke,i+1,j) ) &
906 + f2h(
ke-1,2,i_uyz) &
907 * 0.5_rp * ( dens(
ke-1,i,j)+dens(
ke-1,i+1,j) ) )
908 flux(
ke-1,i,j) = j13g(
ke-1,i,j) / mapf(i,j,+2) * vel &
909 * ( f2 * ( val(
ke,i,j)+val(
ke-1,i,j) ) )
911 flux(
ke ,i,j) = 0.0_rp
928 real(RP),
intent(inout) :: flux (
ka,
ia,
ja)
929 real(RP),
intent(in) :: mom (
ka,
ia,
ja)
930 real(RP),
intent(in) :: val (
ka,
ia,
ja)
931 real(RP),
intent(in) :: dens (
ka,
ia,
ja)
932 real(RP),
intent(in) :: gsqrt (
ka,
ia,
ja)
933 real(RP),
intent(in) :: j23g (
ka,
ia,
ja)
934 real(RP),
intent(in) :: mapf (
ia,
ja,2)
935 real(RP),
intent(in) :: cdz (
ka)
936 integer,
intent(in) :: iis, iie, jjs, jje
949 vel = ( f2h(k,1,i_uyz) &
950 * 0.25_rp * ( mom(k+1,i,j)+mom(k+1,i+1,j)+mom(k+1,i,j-1)+mom(k+1,i+1,j-1) ) &
952 * 0.25_rp * ( mom(k,i,j)+mom(k,i+1,j)+mom(k,i,j-1)+mom(k,i+1,j-1) ) ) &
954 * 0.5_rp * ( dens(k+1,i,j)+dens(k+1,i+1,j) ) &
956 * 0.5_rp * ( dens(k,i,j)+dens(k,i+1,j) ) )
957 flux(k,i,j) = j23g(k,i,j) / mapf(i,j,+1) * vel &
958 * ( f41 * ( val(k+1,i,j)+val(k,i,j) ) &
959 + f42 * ( val(k+2,i,j)+val(k-1,i,j) ) )
973 flux(
ks-1,i,j) = 0.0_rp
975 vel = ( f2h(
ks,1,i_uyz) &
976 * 0.25_rp * ( mom(
ks+1,i,j)+mom(
ks+1,i+1,j)+mom(
ks+1,i,j-1)+mom(
ks+1,i+1,j-1) ) &
978 * 0.25_rp * ( mom(
ks,i,j)+mom(
ks,i+1,j)+mom(
ks,i,j-1)+mom(
ks,i+1,j-1) ) ) &
979 / ( f2h(
ks,1,i_uyz) &
980 * 0.5_rp * ( dens(
ks+1,i,j)+dens(
ks+1,i+1,j) ) &
982 * 0.5_rp * ( dens(
ks,i,j)+dens(
ks,i+1,j) ) )
983 flux(
ks,i,j) = j23g(
ks,i,j) / mapf(i,j,+1) * vel &
984 * ( f2 * ( val(
ks+1,i,j)+val(
ks,i,j) ) )
986 vel = ( f2h(
ke-1,1,i_uyz) &
987 * 0.25_rp * ( mom(
ke,i,j)+mom(
ke,i+1,j)+mom(
ke,i,j-1)+mom(
ke,i+1,j-1) ) &
988 + f2h(
ke-1,2,i_uyz) &
989 * 0.25_rp * ( mom(
ke-1,i,j)+mom(
ke-1,i+1,j)+mom(
ke-1,i,j-1)+mom(
ke-1,i+1,j-1) ) ) &
990 / ( f2h(
ke-1,1,i_uyz) &
991 * 0.5_rp * ( dens(
ke,i,j)+dens(
ke,i+1,j) ) &
992 + f2h(
ke-1,2,i_uyz) &
993 * 0.5_rp * ( dens(
ke-1,i,j)+dens(
ke-1,i+1,j) ) )
994 flux(
ke-1,i,j) = j23g(
ke-1,i,j) / mapf(i,j,+1) * vel &
995 * ( f2 * ( val(
ke,i,j)+val(
ke-1,i,j) ) )
997 flux(
ke ,i,j) = 0.0_rp
1012 IIS, IIE, JJS, JJE )
1015 real(RP),
intent(inout) :: flux (
ka,
ia,
ja)
1016 real(RP),
intent(in) :: mom (
ka,
ia,
ja)
1017 real(RP),
intent(in) :: val (
ka,
ia,
ja)
1018 real(RP),
intent(in) :: dens (
ka,
ia,
ja)
1019 real(RP),
intent(in) :: gsqrt (
ka,
ia,
ja)
1020 real(RP),
intent(in) :: mapf (
ia,
ja,2)
1021 real(RP),
intent(in) :: num_diff(
ka,
ia,
ja)
1022 real(RP),
intent(in) :: cdz (
ka)
1023 integer,
intent(in) :: iis, iie, jjs, jje
1038 call check( __line__, mom(k,i ,j) )
1039 call check( __line__, mom(k,i-1,j) )
1041 call check( __line__, val(k,i-1,j) )
1042 call check( __line__, val(k,i,j) )
1044 call check( __line__, val(k,i-2,j) )
1045 call check( __line__, val(k,i+1,j) )
1048 vel = ( 0.5_rp * ( mom(k,i,j)+mom(k,i-1,j) ) ) &
1050 flux(k,i-1,j) = gsqrt(k,i,j) / mapf(i,j,+2) * vel &
1051 * ( f41 * ( val(k,i,j)+val(k,i-1,j) ) &
1052 + f42 * ( val(k,i+1,j)+val(k,i-2,j) ) ) &
1053 + gsqrt(k,i,j) * num_diff(k,i,j)
1058 k = iundef; i = iundef; j = iundef
1072 IIS, IIE, JJS, JJE )
1075 real(RP),
intent(inout) :: flux (
ka,
ia,
ja)
1076 real(RP),
intent(in) :: mom (
ka,
ia,
ja)
1077 real(RP),
intent(in) :: val (
ka,
ia,
ja)
1078 real(RP),
intent(in) :: dens (
ka,
ia,
ja)
1079 real(RP),
intent(in) :: gsqrt (
ka,
ia,
ja)
1080 real(RP),
intent(in) :: mapf (
ia,
ja,2)
1081 real(RP),
intent(in) :: num_diff(
ka,
ia,
ja)
1082 real(RP),
intent(in) :: cdz (
ka)
1083 integer,
intent(in) :: iis, iie, jjs, jje
1096 call check( __line__, mom(k,i ,j) )
1097 call check( __line__, mom(k,i-1,j) )
1099 call check( __line__, val(k,i,j) )
1100 call check( __line__, val(k,i,j+1) )
1102 call check( __line__, val(k,i,j-1) )
1103 call check( __line__, val(k,i,j+2) )
1106 vel = ( 0.5_rp * ( mom(k,i,j)+mom(k,i+1,j) ) ) &
1107 / ( 0.25_rp * ( dens(k,i,j)+dens(k,i+1,j)+dens(k,i,j+1)+dens(k,i+1,j+1) ) )
1108 flux(k,i,j) = gsqrt(k,i,j) / mapf(i,j,+1) * vel &
1109 * ( f41 * ( val(k,i,j+1)+val(k,i,j) ) &
1110 + f42 * ( val(k,i,j+2)+val(k,i,j-1) ) ) &
1111 + gsqrt(k,i,j) * num_diff(k,i,j)
1116 k = iundef; i = iundef; j = iundef
1132 IIS, IIE, JJS, JJE )
1135 real(RP),
intent(inout) :: flux (
ka,
ia,
ja)
1136 real(RP),
intent(in) :: mom (
ka,
ia,
ja)
1137 real(RP),
intent(in) :: val (
ka,
ia,
ja)
1138 real(RP),
intent(in) :: dens (
ka,
ia,
ja)
1139 real(RP),
intent(in) :: gsqrt (
ka,
ia,
ja)
1140 real(RP),
intent(in) :: j33g
1141 real(RP),
intent(in) :: num_diff(
ka,
ia,
ja)
1142 real(RP),
intent(in) :: cdz (
ka)
1143 integer,
intent(in) :: iis, iie, jjs, jje
1157 call check( __line__, mom(k,i,j) )
1158 call check( __line__, mom(k,i,j+1) )
1160 call check( __line__, val(k,i,j) )
1161 call check( __line__, val(k+1,i,j) )
1163 call check( __line__, val(k-1,i,j) )
1164 call check( __line__, val(k+2,i,j) )
1167 vel = ( 0.5_rp * ( mom(k,i,j)+mom(k,i,j+1) ) ) &
1168 / ( f2h(k,1,i_xvz) &
1169 * 0.5_rp * ( dens(k+1,i,j)+dens(k+1,i,j+1) ) &
1171 * 0.5_rp * ( dens(k,i,j)+dens(k,i,j+1) ) )
1172 flux(k,i,j) = j33g * vel &
1173 * ( f41 * ( val(k+1,i,j)+val(k,i,j) ) &
1174 + f42 * ( val(k+2,i,j)+val(k-1,i,j) ) ) &
1175 + gsqrt(k,i,j) * num_diff(k,i,j)
1180 k = iundef; i = iundef; j = iundef
1190 call check( __line__, mom(
ks,i ,j) )
1191 call check( __line__, mom(
ks,i,j+1) )
1192 call check( __line__, val(
ks+1,i,j) )
1193 call check( __line__, val(
ks,i,j) )
1199 flux(
ks-1,i,j) = 0.0_rp
1201 vel = ( 0.5_rp * ( mom(
ks,i,j)+mom(
ks,i,j+1) ) ) &
1202 / ( f2h(
ks,1,i_xvz) &
1203 * 0.5_rp * ( dens(
ks+1,i,j)+dens(
ks+1,i,j+1) ) &
1205 * 0.5_rp * ( dens(
ks,i,j)+dens(
ks,i,j+1) ) )
1206 flux(
ks,i,j) = j33g * vel &
1207 * ( f2 * ( val(
ks+1,i,j)+val(
ks,i,j) ) ) &
1208 + gsqrt(
ks,i,j) * num_diff(
ks,i,j)
1209 vel = ( 0.5_rp * ( mom(
ke-1,i,j)+mom(
ke-1,i,j+1) ) ) &
1210 / ( f2h(
ke-1,1,i_xvz) &
1211 * 0.5_rp * ( dens(
ke,i,j)+dens(
ke,i,j+1) ) &
1212 + f2h(
ke-1,2,i_xvz) &
1213 * 0.5_rp * ( dens(
ke-1,i,j)+dens(
ke-1,i,j+1) ) )
1214 flux(
ke-1,i,j) = j33g * vel &
1215 * ( f2 * ( val(
ke,i,j)+val(
ke-1,i,j) ) ) &
1216 + gsqrt(
ke-1,i,j) * num_diff(
ke-1,i,j)
1218 flux(
ke,i,j) = 0.0_rp
1222 k = iundef; i = iundef; j = iundef
1233 GSQRT, J13G, MAPF, &
1235 IIS, IIE, JJS, JJE )
1238 real(RP),
intent(inout) :: flux (
ka,
ia,
ja)
1239 real(RP),
intent(in) :: mom (
ka,
ia,
ja)
1240 real(RP),
intent(in) :: val (
ka,
ia,
ja)
1241 real(RP),
intent(in) :: dens (
ka,
ia,
ja)
1242 real(RP),
intent(in) :: gsqrt (
ka,
ia,
ja)
1243 real(RP),
intent(in) :: j13g (
ka,
ia,
ja)
1244 real(RP),
intent(in) :: mapf (
ia,
ja,2)
1245 real(RP),
intent(in) :: cdz (
ka)
1246 integer,
intent(in) :: iis, iie, jjs, jje
1259 vel = ( f2h(k,1,i_xvz) &
1260 * 0.25_rp * ( mom(k+1,i,j)+mom(k+1,i-1,j)+mom(k+1,i,j+1)+mom(k+1,i-1,j+1) ) &
1262 * 0.25_rp * ( mom(k,i,j)+mom(k,i-1,j)+mom(k,i,j+1)+mom(k,i-1,j+1) ) ) &
1263 / ( f2h(k,1,i_xvz) &
1264 * 0.5_rp * ( dens(k+1,i,j)+dens(k+1,i,j+1) ) &
1266 * 0.5_rp * ( dens(k,i,j)+dens(k,i,j+1) ) )
1267 flux(k,i,j) = j13g(k,i,j) / mapf(i,j,+2) * vel &
1268 * ( f41 * ( val(k+1,i,j)+val(k,i,j) ) &
1269 + f42 * ( val(k+2,i,j)+val(k-1,i,j) ) )
1283 flux(
ks-1,i,j) = 0.0_rp
1285 vel = ( f2h(
ks,1,i_xvz) &
1286 * 0.25_rp * ( mom(
ks+1,i,j)+mom(
ks+1,i-1,j)+mom(
ks+1,i,j+1)+mom(
ks+1,i-1,j+1) ) &
1288 * 0.25_rp * ( mom(
ks,i,j)+mom(
ks,i-1,j)+mom(
ks,i,j+1)+mom(
ks,i-1,j+1) ) ) &
1289 / ( f2h(
ks,1,i_xvz) &
1290 * 0.5_rp * ( dens(
ks+1,i,j)+dens(
ks+1,i,j+1) ) &
1292 * 0.5_rp * ( dens(
ks,i,j)+dens(
ks,i,j+1) ) )
1293 flux(
ks,i,j) = j13g(
ks,i,j) / mapf(i,j,+2) * vel &
1294 * ( f2 * ( val(
ks+1,i,j)+val(
ks,i,j) ) )
1296 vel = ( f2h(
ke-1,1,i_xvz) &
1297 * 0.25_rp * ( mom(
ke,i,j)+mom(
ke,i-1,j)+mom(
ke,i,j+1)+mom(
ke,i-1,j+1) ) &
1298 + f2h(
ke-1,2,i_xvz) &
1299 * 0.25_rp * ( mom(
ke-1,i,j)+mom(
ke-1,i-1,j)+mom(
ke-1,i,j+1)+mom(
ke-1,i-1,j+1) ) ) &
1300 / ( f2h(
ke-1,1,i_xvz) &
1301 * 0.5_rp * ( dens(
ke,i,j)+dens(
ke,i,j+1) ) &
1302 + f2h(
ke-1,2,i_xvz) &
1303 * 0.5_rp * ( dens(
ke-1,i,j)+dens(
ke-1,i,j+1) ) )
1304 flux(
ke-1,i,j) = j13g(
ke-1,i,j) / mapf(i,j,+2) * vel &
1305 * ( f2 * ( val(
ke,i,j)+val(
ke-1,i,j) ) )
1307 flux(
ke ,i,j) = 0.0_rp
1319 GSQRT, J23G, MAPF, &
1321 IIS, IIE, JJS, JJE )
1324 real(RP),
intent(inout) :: flux (
ka,
ia,
ja)
1325 real(RP),
intent(in) :: mom (
ka,
ia,
ja)
1326 real(RP),
intent(in) :: val (
ka,
ia,
ja)
1327 real(RP),
intent(in) :: dens (
ka,
ia,
ja)
1328 real(RP),
intent(in) :: gsqrt (
ka,
ia,
ja)
1329 real(RP),
intent(in) :: j23g (
ka,
ia,
ja)
1330 real(RP),
intent(in) :: mapf (
ia,
ja,2)
1331 real(RP),
intent(in) :: cdz (
ka)
1332 integer,
intent(in) :: iis, iie, jjs, jje
1345 vel = ( f2h(k,1,i_xvz) &
1349 / ( f2h(k,1,i_xvz) &
1350 * 0.5_rp * ( dens(k+1,i,j)+dens(k+1,i,j+1) ) &
1352 * 0.5_rp * ( dens(k,i,j)+dens(k,i,j+1) ) )
1353 flux(k,i,j) = j23g(k,i,j) / mapf(i,j,+1) * vel &
1354 * ( f41 * ( val(k+1,i,j)+val(k,i,j) ) &
1355 + f42 * ( val(k+2,i,j)+val(k-1,i,j) ) )
1369 flux(
ks-1,i,j) = 0.0_rp
1371 vel = ( f2h(
ks,1,i_xvz) &
1375 / ( f2h(
ks,1,i_xvz) &
1376 * 0.5_rp * ( dens(
ks+1,i,j)+dens(
ks+1,i,j+1) ) &
1378 * 0.5_rp * ( dens(
ks,i,j)+dens(
ks,i,j+1) ) )
1379 flux(
ks,i,j) = j23g(
ks,i,j) / mapf(i,j,+1) * vel &
1380 * ( f2 * ( val(
ks+1,i,j)+val(
ks,i,j) ) )
1382 vel = ( f2h(
ke-1,1,i_xvz) &
1384 + f2h(
ke-1,2,i_xvz) &
1386 / ( f2h(
ke-1,1,i_xvz) &
1387 * 0.5_rp * ( dens(
ke,i,j)+dens(
ke,i,j+1) ) &
1388 + f2h(
ke-1,2,i_xvz) &
1389 * 0.5_rp * ( dens(
ke-1,i,j)+dens(
ke-1,i,j+1) ) )
1390 flux(
ke-1,i,j) = j23g(
ke-1,i,j) / mapf(i,j,+1) * vel &
1391 * ( f2 * ( val(
ke,i,j)+val(
ke-1,i,j) ) )
1393 flux(
ke ,i,j) = 0.0_rp
1408 IIS, IIE, JJS, JJE )
1411 real(RP),
intent(inout) :: flux (
ka,
ia,
ja)
1412 real(RP),
intent(in) :: mom (
ka,
ia,
ja)
1413 real(RP),
intent(in) :: val (
ka,
ia,
ja)
1414 real(RP),
intent(in) :: dens (
ka,
ia,
ja)
1415 real(RP),
intent(in) :: gsqrt (
ka,
ia,
ja)
1416 real(RP),
intent(in) :: mapf (
ia,
ja,2)
1417 real(RP),
intent(in) :: num_diff(
ka,
ia,
ja)
1418 real(RP),
intent(in) :: cdz (
ka)
1419 integer,
intent(in) :: iis, iie, jjs, jje
1432 call check( __line__, mom(k,i ,j) )
1433 call check( __line__, mom(k,i,j-1) )
1435 call check( __line__, val(k,i,j) )
1436 call check( __line__, val(k,i+1,j) )
1438 call check( __line__, val(k,i-1,j) )
1439 call check( __line__, val(k,i+2,j) )
1442 vel = ( 0.5_rp * ( mom(k,i,j)+mom(k,i,j+1) ) ) &
1443 / ( 0.25_rp * ( dens(k,i,j)+dens(k,i+1,j)+dens(k,i,j+1)+dens(k,i+1,j+1) ) )
1444 flux(k,i,j) = gsqrt(k,i,j) / mapf(i,j,+2) * vel &
1445 * ( f41 * ( val(k,i+1,j)+val(k,i,j) ) &
1446 + f42 * ( val(k,i+2,j)+val(k,i-1,j) ) ) &
1447 + gsqrt(k,i,j) * num_diff(k,i,j)
1452 k = iundef; i = iundef; j = iundef
1466 IIS, IIE, JJS, JJE )
1469 real(RP),
intent(inout) :: flux (
ka,
ia,
ja)
1470 real(RP),
intent(in) :: mom (
ka,
ia,
ja)
1471 real(RP),
intent(in) :: val (
ka,
ia,
ja)
1472 real(RP),
intent(in) :: dens (
ka,
ia,
ja)
1473 real(RP),
intent(in) :: gsqrt (
ka,
ia,
ja)
1474 real(RP),
intent(in) :: mapf (
ia,
ja,2)
1475 real(RP),
intent(in) :: num_diff(
ka,
ia,
ja)
1476 real(RP),
intent(in) :: cdz (
ka)
1477 integer,
intent(in) :: iis, iie, jjs, jje
1492 call check( __line__, mom(k,i ,j) )
1493 call check( __line__, mom(k,i,j-1) )
1495 call check( __line__, val(k,i,j-1) )
1496 call check( __line__, val(k,i,j) )
1498 call check( __line__, val(k,i,j-2) )
1499 call check( __line__, val(k,i,j+1) )
1502 vel = ( 0.5_rp * ( mom(k,i,j)+mom(k,i,j-1) ) ) &
1504 flux(k,i,j-1) = gsqrt(k,i,j) / mapf(i,j,+1) * vel &
1505 * ( f41 * ( val(k,i,j)+val(k,i,j-1) ) &
1506 + f42 * ( val(k,i,j+1)+val(k,i,j-2) ) ) &
1507 + gsqrt(k,i,j) * num_diff(k,i,j)
1512 k = iundef; i = iundef; j = iundef
subroutine, public atmos_dyn_fvm_fluxy_xyw_cd4(flux, mom, val, DENS, GSQRT, MAPF, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation Y-flux at XYW
subroutine, public atmos_dyn_fvm_fluxj13_xyw_cd4(flux, mom, val, DENS, GSQRT, J13G, MAPF, CDZ, IIS, IIE, JJS, JJE)
calculation J13-flux at XYW
module scale_atmos_dyn_fvm_flux_cd4
integer, public ke
end point of inner domain: z, local
subroutine, public check(current_line, v)
Undefined value checker.
subroutine, public atmos_dyn_fvm_fluxy_uyz_cd4(flux, mom, val, DENS, GSQRT, MAPF, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation Y-flux at UY
subroutine, public atmos_dyn_fvm_fluxz_xyw_cd4(flux, mom, val, DENS, GSQRT, J33G, num_diff, CDZ, FDZ, dtrk, IIS, IIE, JJS, JJE)
calculation z-flux at XYW
subroutine, public atmos_dyn_fvm_fluxx_xvz_cd4(flux, mom, val, DENS, GSQRT, MAPF, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation X-flux at XV
real(rp), public const_undef
subroutine, public atmos_dyn_fvm_fluxj23_uyz_cd4(flux, mom, val, DENS, GSQRT, J23G, MAPF, CDZ, IIS, IIE, JJS, JJE)
calculation J23-flux at UYZ
subroutine, public atmos_dyn_fvm_fluxj23_xvz_cd4(flux, mom, val, DENS, GSQRT, J23G, MAPF, CDZ, IIS, IIE, JJS, JJE)
calculation J23-flux at XVZ
subroutine, public atmos_dyn_fvm_fluxz_xyz_cd4(flux, mflx, val, GSQRT, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation z-flux at XYZ
integer, public ia
of whole cells: x, local, with HALO
subroutine, public atmos_dyn_fvm_fluxj23_xyw_cd4(flux, mom, val, DENS, GSQRT, J23G, MAPF, CDZ, IIS, IIE, JJS, JJE)
calculation J23-flux at XYW
integer, public ka
of whole cells: z, local, with HALO
subroutine, public atmos_dyn_fvm_fluxx_uyz_cd4(flux, mom, val, DENS, GSQRT, MAPF, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation X-flux at UY
integer, parameter, public const_undef2
undefined value (INT2)
subroutine, public atmos_dyn_fvm_fluxz_uyz_cd4(flux, mom, val, DENS, GSQRT, J33G, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation z-flux at UY
integer, public ks
start point of inner domain: z, local
subroutine, public atmos_dyn_fvm_fluxx_xyz_cd4(flux, mflx, val, GSQRT, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation X-flux at XYZ
subroutine, public atmos_dyn_fvm_fluxj13_xvz_cd4(flux, mom, val, DENS, GSQRT, J13G, MAPF, CDZ, IIS, IIE, JJS, JJE)
calculation J13-flux at XVZ
subroutine, public atmos_dyn_fvm_fluxj13_uyz_cd4(flux, mom, val, DENS, GSQRT, J13G, MAPF, CDZ, IIS, IIE, JJS, JJE)
calculation J13-flux at UYZ
subroutine, public atmos_dyn_fvm_fluxx_xyw_cd4(flux, mom, val, DENS, GSQRT, MAPF, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation X-flux at XYW
subroutine, public atmos_dyn_fvm_fluxy_xvz_cd4(flux, mom, val, DENS, GSQRT, MAPF, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation Y-flux at XV
subroutine, public atmos_dyn_fvm_fluxy_xyz_cd4(flux, mflx, val, GSQRT, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation Y-flux at XYZ
subroutine, public atmos_dyn_fvm_fluxz_xvz_cd4(flux, mom, val, DENS, GSQRT, J33G, num_diff, CDZ, IIS, IIE, JJS, JJE)
calculation z-flux at XV
subroutine, public atmos_dyn_fvm_flux_valuew_z_cd4(valW, mflx, val, GSQRT, CDZ)
value at XYW
integer, public ja
of whole cells: y, local, with HALO