Changeset 836 for codes/icosagcm/devel/src/kernels_unst/compute_geopot.k90
- Timestamp:
- 05/03/19 13:25:21 (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/devel/src/kernels_unst/compute_geopot.k90
r686 r836 70 70 END DO 71 71 !$OMP END DO 72 CASE(thermo_variable_Cp) 73 ! thermodynamics with variable Cp 74 ! Cp.dT = dh = Tds + vdp 75 ! pv = RT 76 ! => ds = (dh+v.dp)/T = Cp.dT/T - R dp/p 77 ! Cp(T) = Cp0 * (T/T0)^nu 78 ! => s(p,T) = Cp(T)/nu - R log(p/preff) 79 ! h = Cp(T).T/(nu+1) 80 !$OMP DO SCHEDULE(STATIC) 81 DO ij=1,primal_num 82 pk(llm,ij) = ptop + .5*g* rhodz(llm,ij) 83 DO l = llm-1,1,-1 84 pk(l,ij) = pk(l+1,ij) + (.5*g)*( rhodz(l,ij) + rhodz(l+1,ij) ) 85 END DO 86 IF(caldyn_eta == eta_lag) THEN 87 ps(ij) = pk(1,ij) + .5*g* rhodz(1,ij) 88 END IF 89 END DO 90 !$OMP END DO 91 !$OMP DO SCHEDULE(STATIC) 92 DO ij=1,primal_num 93 DO l = 1,llm 94 p_ik = pk(l,ij) 95 Cp_ik = nu*( theta(l,ij,1) + Rd*log(p_ik/preff) ) 96 temp_ik = Treff* (Cp_ik/cpp)**(1./nu) 97 gv = (g*Rd)*temp_ik/p_ik ! specific volume v = Rd*T/p 98 pk(l,ij) = temp_ik 99 geopot(l+1,ij) = geopot(l,ij) + gv*rhodz(l,ij) 100 END DO 101 END DO 102 !$OMP END DO 72 103 CASE(thermo_moist) 73 104 !$OMP DO SCHEDULE(STATIC)
Note: See TracChangeset
for help on using the changeset viewer.