Changeset 836 for codes/icosagcm/devel/src/kernels_hex
- Timestamp:
- 05/03/19 13:25:21 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/devel/src/kernels_hex/compute_geopot.k90
r724 r836 82 82 END DO 83 83 END DO 84 CASE(thermo_variable_Cp) 85 ! thermodynamics with variable Cp 86 ! Cp.dT = dh = Tds + vdp 87 ! pv = RT 88 ! => ds = (dh+v.dp)/T = Cp.dT/T - R dp/p 89 ! Cp(T) = Cp0 * (T/T0)^nu 90 ! => s(p,T) = Cp(T)/nu - R log(p/preff) 91 ! h = Cp(T).T/(nu+1) 92 !DIR$ SIMD 93 DO ij=ij_omp_begin_ext,ij_omp_end_ext 94 pk(ij,llm) = ptop + .5*g* rhodz(ij,llm) 95 END DO 96 DO l = llm-1,1,-1 97 !DIR$ SIMD 98 DO ij=ij_omp_begin_ext,ij_omp_end_ext 99 pk(ij,l) = pk(ij,l+1) + (.5*g)*( rhodz(ij,l) + rhodz(ij,l+1) ) 100 END DO 101 END DO 102 IF(caldyn_eta == eta_lag) THEN 103 !DIR$ SIMD 104 DO ij=ij_omp_begin_ext,ij_omp_end_ext 105 ps(ij) = pk(ij,1) + .5*g* rhodz(ij,1) 106 END DO 107 END IF 108 DO l = 1,llm 109 !DIR$ SIMD 110 DO ij=ij_omp_begin_ext,ij_omp_end_ext 111 p_ik = pk(ij,l) 112 Cp_ik = nu*( theta(ij,l,1) + Rd*log(p_ik/preff) ) 113 temp_ik = Treff* (Cp_ik/cpp)**(1./nu) 114 gv = (g*Rd)*temp_ik/p_ik ! specific volume v = Rd*T/p 115 pk(ij,l) = temp_ik 116 geopot(ij,l+1) = geopot(ij,l) + gv*rhodz(ij,l) 117 END DO 118 END DO 84 119 CASE(thermo_moist) 85 120 !DIR$ SIMD
Note: See TracChangeset
for help on using the changeset viewer.