!-------------------------------------------------------------------------- !---------------------------- compute_temperature ---------------------------------- SELECT CASE(caldyn_thermo) CASE(thermo_theta) IF(physics_thermo==thermo_fake_moist) THEN !$OMP DO SCHEDULE(STATIC) DO ij = 1, primal_num !DIR$ SIMD DO l = 1, llm p_ik = pmid(l,ij) theta_ik = temp(l,ij) qv = q(l,ij,1) ! water vapor mixing ratio = mv/md temp_ik = theta_ik*((p_ik/preff)**kappa) temp_ik = temp_ik/(1+0.608*qv) temp(l,ij) = temp_ik END DO END DO !$OMP END DO ELSE !$OMP DO SCHEDULE(STATIC) DO ij = 1, primal_num !DIR$ SIMD DO l = 1, llm p_ik = pmid(l,ij) theta_ik = temp(l,ij) qv = q(l,ij,1) ! water vapor mixing ratio = mv/md temp_ik = theta_ik*((p_ik/preff)**kappa) temp(l,ij) = temp_ik END DO END DO !$OMP END DO END IF CASE(thermo_entropy) IF(physics_thermo==thermo_fake_moist) THEN !$OMP DO SCHEDULE(STATIC) DO ij = 1, primal_num !DIR$ SIMD DO l = 1, llm p_ik = pmid(l,ij) theta_ik = temp(l,ij) qv = q(l,ij,1) ! water vapor mixing ratio = mv/md temp_ik = Treff*exp((theta_ik + Rd*log(p_ik/preff))/cpp) temp_ik = temp_ik/(1+0.608*qv) temp(l,ij) = temp_ik END DO END DO !$OMP END DO ELSE !$OMP DO SCHEDULE(STATIC) DO ij = 1, primal_num !DIR$ SIMD DO l = 1, llm p_ik = pmid(l,ij) theta_ik = temp(l,ij) qv = q(l,ij,1) ! water vapor mixing ratio = mv/md temp_ik = Treff*exp((theta_ik + Rd*log(p_ik/preff))/cpp) temp(l,ij) = temp_ik END DO END DO !$OMP END DO END IF CASE(thermo_variable_Cp) !$OMP DO SCHEDULE(STATIC) DO ij = 1, primal_num !DIR$ SIMD DO l = 1, llm p_ik = pmid(l,ij) theta_ik = temp(l,ij) qv = q(l,ij,1) ! water vapor mixing ratio = mv/md Cp_ik = nu*( theta_ik + Rd*log(p_ik/preff) ) temp_ik = Treff* (Cp_ik/cpp)**(1./nu) temp(l,ij) = temp_ik END DO END DO !$OMP END DO CASE(thermo_moist) !$OMP DO SCHEDULE(STATIC) DO ij = 1, primal_num !DIR$ SIMD DO l = 1, llm p_ik = pmid(l,ij) theta_ik = temp(l,ij) qv = q(l,ij,1) ! water vapor mixing ratio = mv/md Rmix = Rd+qv*Rv chi = ( theta_ik + Rmix*log(p_ik/preff) ) / (cpp + qv*cppv) ! log(T/Treff) temp_ik = Treff*exp(chi) temp(l,ij) = temp_ik END DO END DO !$OMP END DO END SELECT !---------------------------- compute_temperature ---------------------------------- !--------------------------------------------------------------------------