Ignore:
Timestamp:
12/30/17 02:00:38 (7 years ago)
Author:
dubos
Message:

devel/unstructured : updated kernels

File:
1 edited

Legend:

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

    r614 r658  
    11   !-------------------------------------------------------------------------- 
    22   !---------------------------- caldyn_solver ---------------------------------- 
    3    !$OMP DO SCHEDULE(STATIC) 
    4    DO ij = 1, primal_num 
    5       l=1 
    6       m_il(l,ij) = .5*rhodz(l,ij) 
    7       DO l = 2, llm 
    8          m_il(l,ij) = .5*(rhodz(l,ij)+rhodz(l-1,ij)) 
    9       END DO 
    10       l=llm+1 
    11       m_il(l,ij) = .5*rhodz(l-1,ij) 
    12    END DO 
    13    !$OMP END DO 
    14    ! 
    15    IF(tau>0) THEN ! solve implicit problem for geopotential 
    16       CALL compute_NH_geopot(tau,PHI_BOT_VAR, rhodz, m_il, theta, W, geopot) 
    17    END IF 
    183   ! 
    194   ! Compute pressure (pres) and Exner function (pk) 
     
    238   gamma = 1./(1.-kappa) 
    249   vreff = Rd*Treff/preff ! reference specific volume 
    25    Cvd = cpp-Rd 
     10   Cvd = 1./(cpp-Rd) 
     11   Rd_preff = kappa*cpp/preff 
    2612   SELECT CASE(caldyn_thermo) 
    2713   CASE(thermo_theta) 
    2814      !$OMP DO SCHEDULE(STATIC) 
    2915      DO ij = 1, primal_num 
     16         !DIR$ SIMD 
    3017         DO l = 1, llm 
    31             rho_ij = g*rhodz(l,ij)/(geopot(l+1,ij)-geopot(l,ij)) 
    32             X_ij = (cpp/preff)*kappa*theta(l,ij,1)*rho_ij 
     18            rho_ij = 1./(geopot(l+1,ij)-geopot(l,ij)) 
     19            rho_ij = rho_ij*g*rhodz(l,ij) 
     20            X_ij = Rd_preff*theta(l,ij,1)*rho_ij 
    3321            ! kappa.theta.rho = p/exner 
    3422            ! => X = (p/p0)/(exner/Cp) 
     
    4432      !$OMP DO SCHEDULE(STATIC) 
    4533      DO ij = 1, primal_num 
     34         !DIR$ SIMD 
    4635         DO l = 1, llm 
    47             rho_ij = g*rhodz(l,ij)/(geopot(l+1,ij)-geopot(l,ij)) 
    48             T_ij = Treff*exp( (theta(l,ij,1)+Rd*log(vreff*rho_ij))/Cvd ) 
     36            rho_ij = 1./(geopot(l+1,ij)-geopot(l,ij)) 
     37            rho_ij = rho_ij*g*rhodz(l,ij) 
     38            T_ij = Treff*exp( (theta(l,ij,1)+Rd*log(vreff*rho_ij))*Cvd ) 
    4939            pres(l,ij) = rho_ij*Rd*T_ij 
    5040            pk(l,ij) = T_ij 
     
    6454      W(l,ij) = W(l,ij)+tau*dW(l,ij) ! update W 
    6555      dPhi(l,ij) = g*g*W(l,ij)/m_il(l,ij) 
     56      !DIR$ SIMD 
    6657      DO l = 2, llm 
    6758         dW(l,ij) = (1./g)*(pres(l-1,ij)-pres(l,ij)) - m_il(l,ij) 
     
    8071   !$OMP DO SCHEDULE(STATIC) 
    8172   DO ij = 1, primal_num 
     73      !DIR$ SIMD 
    8274      DO l = 1, llm 
    8375         ! compute du = -0.5*g^2.grad(w^2) 
     
    9082      ij_left = left(edge) 
    9183      ij_right = right(edge) 
     84      !DIR$ SIMD 
    9285      DO l = 1, llm 
    9386         du(l,edge) = 1.*(berni(l,ij_left)-berni(l,ij_right)) 
Note: See TracChangeset for help on using the changeset viewer.