Changeset 529 for codes/icosagcm/devel/src/caldyn_kernels_hevi.f90
- Timestamp:
- 01/27/17 16:54:36 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/devel/src/caldyn_kernels_hevi.f90
r499 r529 32 32 !DIR$ SIMD 33 33 DO ij=ij_begin_ext,ij_end_ext 34 IF(DEC) THEN ! ps is actually Ms 35 m = mass_dak(l)+(ps(ij)*g+ptop)*mass_dbk(l) 36 ELSE 37 m = mass_dak(l)+ps(ij)*mass_dbk(l) 38 END IF 34 m = mass_dak(l)+(ps(ij)*g+ptop)*mass_dbk(l) ! ps is actually Ms 39 35 rhodz(ij,l) = m/g 40 36 END DO … … 69 65 !DIR$ SIMD 70 66 DO ij=ij_begin_ext,ij_end_ext 71 IF(DEC) THEN 72 etav= 1./Av(ij+z_up)*( ne_rup * u(ij+u_rup,l) & 73 + ne_left * u(ij+t_rup+u_left,l) & 74 - ne_lup * u(ij+u_lup,l) ) 75 76 hv = Riv2(ij,vup) * rhodz(ij,l) & 77 + Riv2(ij+t_rup,vldown) * rhodz(ij+t_rup,l) & 78 + Riv2(ij+t_lup,vrdown) * rhodz(ij+t_lup,l) 79 qv(ij+z_up,l) = ( etav+fv(ij+z_up) )/hv 80 81 etav = 1./Av(ij+z_down)*( ne_ldown * u(ij+u_ldown,l) & 82 + ne_right * u(ij+t_ldown+u_right,l) & 83 - ne_rdown * u(ij+u_rdown,l) ) 84 hv = Riv2(ij,vdown) * rhodz(ij,l) & 85 + Riv2(ij+t_ldown,vrup) * rhodz(ij+t_ldown,l) & 86 + Riv2(ij+t_rdown,vlup) * rhodz(ij+t_rdown,l) 87 qv(ij+z_down,l) =( etav+fv(ij+z_down) )/hv 88 ELSE 89 etav= 1./Av(ij+z_up)*( ne_rup * u(ij+u_rup,l) * de(ij+u_rup) & 90 + ne_left * u(ij+t_rup+u_left,l) * de(ij+t_rup+u_left) & 91 - ne_lup * u(ij+u_lup,l) * de(ij+u_lup) ) 92 93 hv = Riv2(ij,vup) * rhodz(ij,l) & 94 + Riv2(ij+t_rup,vldown) * rhodz(ij+t_rup,l) & 95 + Riv2(ij+t_lup,vrdown) * rhodz(ij+t_lup,l) 96 qv(ij+z_up,l) = ( etav+fv(ij+z_up) )/hv 97 98 etav = 1./Av(ij+z_down)*( ne_ldown * u(ij+u_ldown,l) * de(ij+u_ldown) & 99 + ne_right * u(ij+t_ldown+u_right,l) * de(ij+t_ldown+u_right) & 100 - ne_rdown * u(ij+u_rdown,l) * de(ij+u_rdown) ) 101 hv = Riv2(ij,vdown) * rhodz(ij,l) & 102 + Riv2(ij+t_ldown,vrup) * rhodz(ij+t_ldown,l) & 103 + Riv2(ij+t_rdown,vlup) * rhodz(ij+t_rdown,l) 104 qv(ij+z_down,l) =( etav+fv(ij+z_down) )/hv 105 END IF 67 etav= 1./Av(ij+z_up)*( ne_rup * u(ij+u_rup,l) & 68 + ne_left * u(ij+t_rup+u_left,l) & 69 - ne_lup * u(ij+u_lup,l) ) 70 hv = Riv2(ij,vup) * rhodz(ij,l) & 71 + Riv2(ij+t_rup,vldown) * rhodz(ij+t_rup,l) & 72 + Riv2(ij+t_lup,vrdown) * rhodz(ij+t_lup,l) 73 qv(ij+z_up,l) = ( etav+fv(ij+z_up) )/hv 74 75 etav = 1./Av(ij+z_down)*( ne_ldown * u(ij+u_ldown,l) & 76 + ne_right * u(ij+t_ldown+u_right,l) & 77 - ne_rdown * u(ij+u_rdown,l) ) 78 hv = Riv2(ij,vdown) * rhodz(ij,l) & 79 + Riv2(ij+t_ldown,vrup) * rhodz(ij+t_ldown,l) & 80 + Riv2(ij+t_rdown,vlup) * rhodz(ij+t_rdown,l) 81 qv(ij+z_down,l) =( etav+fv(ij+z_down) )/hv 106 82 ENDDO 107 83 … … 649 625 END SUBROUTINE compute_caldyn_Coriolis 650 626 651 SUBROUTINE compute_caldyn_slow_hydro(u,rhodz,hflux,du) 627 SUBROUTINE compute_caldyn_slow_hydro(u,rhodz,hflux,du, zero) 628 LOGICAL, INTENT(IN) :: zero 652 629 REAL(rstd),INTENT(IN) :: u(3*iim*jjm,llm) ! prognostic "velocity" 653 630 REAL(rstd),INTENT(IN) :: rhodz(iim*jjm,llm) 654 631 REAL(rstd),INTENT(OUT) :: hflux(3*iim*jjm,llm) ! hflux in kg/s 655 REAL(rstd),INTENT( OUT) :: du(3*iim*jjm,llm)632 REAL(rstd),INTENT(INOUT) :: du(3*iim*jjm,llm) 656 633 657 634 REAL(rstd) :: berni(iim*jjm) ! Bernoulli function … … 690 667 ENDDO 691 668 ! Compute du=-grad(Bernoulli) 692 !DIR$ SIMD 693 DO ij=ij_begin,ij_end 669 IF(zero) THEN 670 !DIR$ SIMD 671 DO ij=ij_begin,ij_end 694 672 du(ij+u_right,l) = ne_right*(berni(ij)-berni(ij+t_right)) 695 673 du(ij+u_lup,l) = ne_lup*(berni(ij)-berni(ij+t_lup)) 696 674 du(ij+u_ldown,l) = ne_ldown*(berni(ij)-berni(ij+t_ldown)) 697 END DO 675 END DO 676 ELSE 677 !DIR$ SIMD 678 DO ij=ij_begin,ij_end 679 du(ij+u_right,l) = du(ij+u_right,l) + & 680 ne_right*(berni(ij)-berni(ij+t_right)) 681 du(ij+u_lup,l) = du(ij+u_lup,l) + & 682 ne_lup*(berni(ij)-berni(ij+t_lup)) 683 du(ij+u_ldown,l) = du(ij+u_ldown,l) + & 684 ne_ldown*(berni(ij)-berni(ij+t_ldown)) 685 END DO 686 END IF 698 687 END DO 699 688
Note: See TracChangeset
for help on using the changeset viewer.