Changeset 166 for codes/icosagcm/trunk
- Timestamp:
- 06/29/13 02:33:24 (11 years ago)
- Location:
- codes/icosagcm/trunk/src
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/trunk/src/disvert.f90
r161 r166 10 10 INTEGER, SAVE :: caldyn_eta 11 11 INTEGER, PARAMETER :: eta_mass=1, eta_lag=2 12 LOGICAL,SAVE :: ap_bp_present 12 13 13 14 CONTAINS … … 22 23 USE mpipara 23 24 IMPLICIT NONE 24 CHARACTER( LEN=255) :: disvert_type = 'std'25 CHARACTER(len=255) :: def 25 26 INTEGER :: l 26 27 27 CALL getin("disvert",disvert_type) 28 29 SELECT CASE (TRIM(disvert_type)) 28 def='eta_mass' 29 CALL getin('caldyn_eta',def) 30 SELECT CASE(TRIM(def)) 31 CASE('eta_mass') 32 caldyn_eta=eta_mass 33 CASE('eta_lag') 34 caldyn_eta=eta_lag 35 CASE DEFAULT 36 IF (is_mpi_root) PRINT *,'Bad selector for variable caldyn_eta : <', TRIM(def),'> options are <eta_mass>, <eta_lag>' 37 STOP 38 END SELECT 39 IF (is_mpi_root) PRINT *, 'caldyn_eta=',TRIM(def), caldyn_eta, eta_lag, eta_mass 40 41 def='std' 42 ap_bp_present=.TRUE. 43 CALL getin("disvert",def) 44 SELECT CASE (TRIM(def)) 45 CASE('none') 46 IF(caldyn_eta/=eta_lag) THEN 47 IF(is_mpi_root) PRINT *,'disvert_type=none must be used with caldyn_eta=eta_lag' 48 STOP 49 END IF 50 ap_bp_present=.FALSE. 30 51 CASE('std') 31 52 … … 64 85 65 86 CASE default 66 IF (is_mpi_root) PRINT*,'Bad selector for variable disvert : <', TRIM(d isvert_type),"> options are <std>, <ncar>, <ncarl30>"87 IF (is_mpi_root) PRINT*,'Bad selector for variable disvert : <', TRIM(def),"> options are <std>, <ncar>, <ncarl30>" 67 88 STOP 68 89 69 90 END SELECT 70 91 71 ! Convert from pressure coordinate to mass coordinate 72 ! pk = ap(k) + bp(k)*ps(ij) = ptop + g*( mass_ak(k) + mass_bk(k)*ms(ij) ) 73 ptop = ap(llm+1) 74 ALLOCATE(mass_al(llm+1)) 75 ALLOCATE(mass_bl(llm+1)) 76 ALLOCATE(mass_ak(llm)) 77 ALLOCATE(mass_bk(llm)) 78 ALLOCATE(mass_dak(llm)) 79 ALLOCATE(mass_dbk(llm)) 80 81 ! FIXME : leave ps for the moment ; change ps to ms later 82 DO l=1,llm+1 83 ! mass_al(l) = (ap(l)-ptop)/g 84 ! mass_bl(l) = bp(l)/g 85 mass_al(l) = (ap(l)-ptop) 86 mass_bl(l) = bp(l) 87 END DO 88 DO l=1,llm 89 mass_ak(l) = .5*(mass_al(l)+mass_al(l+1)) 90 mass_bk(l) = .5*(mass_bl(l)+mass_bl(l+1)) 91 mass_dak(l) = mass_al(l)-mass_al(l+1) ! >0 92 mass_dbk(l) = mass_bl(l)-mass_bl(l+1) ! >0 93 END DO 92 IF(ap_bp_present) THEN 93 ! Convert from pressure coordinate to mass coordinate 94 ! pk = ap(k) + bp(k)*ps(ij) = ptop + g*( mass_ak(k) + mass_bk(k)*ms(ij) ) 95 ptop = ap(llm+1) 96 ALLOCATE(mass_al(llm+1)) 97 ALLOCATE(mass_bl(llm+1)) 98 ALLOCATE(mass_ak(llm)) 99 ALLOCATE(mass_bk(llm)) 100 ALLOCATE(mass_dak(llm)) 101 ALLOCATE(mass_dbk(llm)) 102 103 ! FIXME : leave ps for the moment ; change ps to ms later 104 DO l=1,llm+1 105 ! mass_al(l) = (ap(l)-ptop)/g 106 ! mass_bl(l) = bp(l)/g 107 mass_al(l) = (ap(l)-ptop) 108 mass_bl(l) = bp(l) 109 END DO 110 DO l=1,llm 111 mass_ak(l) = .5*(mass_al(l)+mass_al(l+1)) 112 mass_bk(l) = .5*(mass_bl(l)+mass_bl(l+1)) 113 mass_dak(l) = mass_al(l)-mass_al(l+1) ! >0 114 mass_dbk(l) = mass_bl(l)-mass_bl(l+1) ! >0 115 END DO 116 END IF 94 117 95 118 END SUBROUTINE init_disvert … … 147 170 INTEGER :: l 148 171 172 IF(ap_bp_present) THEN 149 173 status = NF90_CREATE('apbp.nc', NF90_CLOBBER, ncid) 150 174 status = NF90_DEF_DIM(ncid,'lev',llm,lev) … … 204 228 status=NF90_PUT_VAR(ncid,P0id, Preff) 205 229 206 status=NF90_CLOSE(ncid) 230 status=NF90_CLOSE(ncid) 231 END IF 207 232 END SUBROUTINE write_apbp 208 233 -
codes/icosagcm/trunk/src/pression.f90
r151 r166 32 32 INTEGER :: i,j,ij,l 33 33 34 IF(ap_bp_present) THEN 34 35 DO l = 1, llm+1 35 36 DO j=jj_begin-offset,jj_end+offset … … 40 41 ENDDO 41 42 ENDDO 42 43 END IF 43 44 END SUBROUTINE compute_pression 44 45
Note: See TracChangeset
for help on using the changeset viewer.