Changeset 159 for codes/icosagcm/trunk/src/disvert.f90
- Timestamp:
- 06/25/13 09:32:16 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/trunk/src/disvert.f90
r156 r159 5 5 REAL(rstd), SAVE, POINTER :: presnivs(:) 6 6 REAL(rstd), SAVE, POINTER :: mass_al(:), mass_bl(:), mass_ak(:), mass_bk(:), mass_dak(:), mass_dbk(:) 7 7 8 REAL(rstd) :: ptop ! pressure at top of atmosphere l=llm+1 9 ! vertical coordinate : Lagrangian or mass-based 10 INTEGER, SAVE :: caldyn_eta 11 INTEGER, PARAMETER :: eta_mass=1, eta_lag=2 8 12 9 13 CONTAINS … … 91 95 END SUBROUTINE init_disvert 92 96 97 SUBROUTINE compute_rhodz(comp, ps, rhodz) 98 USE icosa 99 USE omp_para 100 LOGICAL, INTENT(IN) :: comp ! .TRUE. to compute, .FALSE. to check 101 REAL(rstd), INTENT(IN) :: ps(iim*jjm) 102 REAL(rstd), INTENT(INOUT) :: rhodz(iim*jjm,llm) 103 REAL(rstd) :: m, err 104 INTEGER :: l,i,j,ij,dd 105 err=0. 106 107 dd=0 108 109 DO l = ll_begin, ll_end 110 DO j=jj_begin-dd,jj_end+dd 111 DO i=ii_begin-dd,ii_end+dd 112 ij=(j-1)*iim+i 113 m = ( ap(l) - ap(l+1) + (bp(l)-bp(l+1))*ps(ij) )/g 114 IF(comp) THEN 115 rhodz(ij,l) = m 116 ELSE 117 err = MAX(err,abs(m-rhodz(ij,l))) 118 END IF 119 ENDDO 120 ENDDO 121 ENDDO 122 123 IF(.NOT. comp) THEN 124 IF(err>1e-10) THEN 125 PRINT *, 'Discrepancy between ps and rhodz detected', err 126 STOP 127 ELSE 128 ! PRINT *, 'No discrepancy between ps and rhodz detected' 129 END IF 130 END IF 131 132 END SUBROUTINE compute_rhodz 133 134 93 135 SUBROUTINE write_apbp 94 136 USE icosa
Note: See TracChangeset
for help on using the changeset viewer.