Changeset 167 for codes/icosagcm/trunk/src/dissip_gcm.f90
- Timestamp:
- 06/29/13 02:35:03 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/trunk/src/dissip_gcm.f90
r151 r167 27 27 REAL, save :: rayleigh_tau 28 28 29 ! INTEGER,SAVE :: itau_dissip30 29 REAL,SAVE :: dtdissip 31 30 … … 368 367 fact=2 369 368 DO l=1,llm 370 zz= 1. - preff/presnivs(l) 369 IF(ap_bp_present) THEN ! height-dependent dissipation 370 zz= 1. - preff/presnivs(l) 371 ELSE 372 zz = 0. 373 END IF 371 374 zvert=fact-(fact-1)/(1+zz*zz) 372 375 tau_graddiv(l) = tau_graddiv(l)/zvert … … 390 393 391 394 392 SUBROUTINE dissip(f_ue,f_due,f_ ps,f_phis,f_theta_rhodz,f_dtheta_rhodz)395 SUBROUTINE dissip(f_ue,f_due,f_mass,f_phis,f_theta_rhodz,f_dtheta_rhodz) 393 396 USE icosa 394 397 USE theta2theta_rhodz_mod … … 402 405 TYPE(t_field),POINTER :: f_ue(:) 403 406 TYPE(t_field),POINTER :: f_due(:) 404 TYPE(t_field),POINTER :: f_ ps(:), f_phis(:)407 TYPE(t_field),POINTER :: f_mass(:), f_phis(:) 405 408 TYPE(t_field),POINTER :: f_theta_rhodz(:) 406 409 TYPE(t_field),POINTER :: f_dtheta_rhodz(:) … … 421 424 CALL gradiv(f_ue,f_due_diss1) 422 425 CALL gradrot(f_ue,f_due_diss2) 423 424 CALL divgrad_theta_rhodz(f_ ps,f_theta_rhodz,f_dtheta_rhodz_diss)426 427 CALL divgrad_theta_rhodz(f_mass,f_theta_rhodz,f_dtheta_rhodz_diss) 425 428 426 429 ! later for openmp … … 646 649 END SUBROUTINE divgrad 647 650 648 SUBROUTINE divgrad_theta_rhodz(f_ ps,f_theta_rhodz,f_dtheta_rhodz)651 SUBROUTINE divgrad_theta_rhodz(f_mass,f_theta_rhodz,f_dtheta_rhodz) 649 652 USE icosa 650 653 USE trace 651 654 USE omp_para 652 USE disvert_mod653 655 IMPLICIT NONE 654 TYPE(t_field),POINTER :: f_ ps(:)656 TYPE(t_field),POINTER :: f_mass(:) 655 657 TYPE(t_field),POINTER :: f_theta_rhodz(:) 656 658 TYPE(t_field),POINTER :: f_dtheta_rhodz(:) 657 659 658 REAL(rstd),POINTER :: ps(:)660 REAL(rstd),POINTER :: mass(:,:) 659 661 REAL(rstd),POINTER :: theta_rhodz(:,:) 660 662 REAL(rstd),POINTER :: dtheta_rhodz(:,:) … … 668 670 CALL swap_dimensions(ind) 669 671 CALL swap_geometry(ind) 670 ps=f_ps(ind)672 mass=f_mass(ind) 671 673 theta_rhodz=f_theta_rhodz(ind) 672 674 dtheta_rhodz=f_dtheta_rhodz(ind) … … 675 677 DO i=ii_begin,ii_end 676 678 ij=(j-1)*iim+i 677 dtheta_rhodz(ij,l) = theta_rhodz(ij,l) / ( ap(l)-ap(l+1) + (bp(l)-bp(l+1))*ps(ij))/g679 dtheta_rhodz(ij,l) = theta_rhodz(ij,l) / mass(ij,l) 678 680 ENDDO 679 681 ENDDO … … 703 705 DO i=ii_begin,ii_end 704 706 ij=(j-1)*iim+i 705 dtheta_rhodz(ij,l) = dtheta_rhodz(ij,l) * ( ap(l)-ap(l+1) + (bp(l)-bp(l+1))*ps(ij))/g707 dtheta_rhodz(ij,l) = dtheta_rhodz(ij,l) * mass(ij,l) 706 708 ENDDO 707 709 ENDDO
Note: See TracChangeset
for help on using the changeset viewer.