Changeset 842


Ignore:
Timestamp:
05/03/19 18:16:12 (5 years ago)
Author:
jisesh
Message:

devel: separate module for compute_caldyn_kv

Location:
codes/icosagcm/devel/src/dynamics
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/devel/src/dynamics/caldyn_hevi.f90

    r831 r842  
    66  USE caldyn_kernels_base_mod 
    77  USE compute_theta_mod, ONLY : compute_theta 
     8  USE compute_caldyn_kv_mod, ONLY : compute_caldyn_kv 
    89  IMPLICIT NONE 
    910  PRIVATE 
  • codes/icosagcm/devel/src/dynamics/caldyn_kernels_hevi.F90

    r837 r842  
    1313  LOGICAL, SAVE :: debug_hevi_solver = .FALSE. 
    1414 
    15   PUBLIC :: compute_caldyn_Kv, compute_caldyn_Coriolis, & 
     15  PUBLIC :: compute_caldyn_Coriolis, & 
    1616       compute_caldyn_slow_hydro, compute_caldyn_slow_NH, & 
    1717       compute_caldyn_solver, compute_caldyn_fast 
    1818 
    1919CONTAINS 
    20  
    21   SUBROUTINE compute_caldyn_kv(ue, Kv) 
    22     REAL(rstd),INTENT(IN) :: ue(3*iim*jjm,llm) 
    23     REAL(rstd),INTENT(OUT) :: Kv(2*iim*jjm,llm) 
    24     REAL(rstd) :: ue2(3*iim*jjm), dem2(3*iim*jjm), r2_Av(2*iim*jjm), rad2 
    25     INTEGER :: ij,l, u_up, u_down 
    26      
    27     u_up    = t_lup + u_right 
    28     u_down  = t_rdown + u_left 
    29      
    30     rad2=radius**2 
    31  
    32     !DIR$ SIMD 
    33     DO ij=ij_begin_ext,ij_end_ext 
    34        dem2(ij+u_right) = de(ij+u_right)**(-2) 
    35        dem2(ij+u_lup)   = de(ij+u_lup)**(-2) 
    36        dem2(ij+u_ldown) = de(ij+u_ldown)**(-2) 
    37        r2_Av(ij+z_up)   = rad2*(1./Av(ij+z_up)) 
    38        r2_Av(ij+z_down) = rad2*(1./Av(ij+z_down)) 
    39     END DO 
    40  
    41     DO l=ll_begin,ll_end 
    42        ! compute squared normal component from 1-form 
    43        !DIR$ SIMD 
    44        DO ij=ij_begin_ext,ij_end_ext 
    45           ue2(ij+u_right) = dem2(ij+u_right)* (ue(ij+u_right,l)**2) 
    46           ue2(ij+u_lup)   = dem2(ij+u_lup)  * (ue(ij+u_lup,l)**2) 
    47           ue2(ij+u_ldown) = dem2(ij+u_ldown)* (ue(ij+u_ldown,l)**2) 
    48        END DO 
    49        ! average squared normal component to vertices 
    50        !DIR$ SIMD 
    51        DO ij=ij_begin_ext,ij_end_ext 
    52           Kv(ij+z_up,l) = r2_Av(ij+z_up)*(                       & 
    53                                S1(ij,vup)*ue2(ij+u_rup) +        & 
    54                                S2(ij,vup)*ue2(ij+u_lup) +        & 
    55                                S2(ij+t_lup,vrdown)*ue2(ij+u_up)) 
    56  
    57           Kv(ij+z_down,l) = r2_Av(ij+z_down)*(                   & 
    58                                S1(ij,vdown)*ue2(ij+u_ldown) +    & 
    59                                S2(ij,vdown)*ue2(ij+u_rdown) +    & 
    60                                S2(ij+t_rdown,vlup)*ue2(ij+u_down) ) 
    61        ENDDO 
    62     ENDDO 
    63   END SUBROUTINE compute_caldyn_kv 
    6420 
    6521  SUBROUTINE compute_NH_geopot(tau, phis, m_ik, m_il, theta, W_il, Phi_il) 
Note: See TracChangeset for help on using the changeset viewer.