Ignore:
Timestamp:
05/03/19 13:25:21 (5 years ago)
Author:
dubos
Message:

devel : Cp(T) thermodynamics (TBC)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/devel/src/kernels_unst/compute_geopot.k90

    r686 r836  
    7070      END DO 
    7171      !$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 
    72103   CASE(thermo_moist) 
    73104      !$OMP DO SCHEDULE(STATIC) 
Note: See TracChangeset for help on using the changeset viewer.