Changeset 537 for codes/icosagcm/devel


Ignore:
Timestamp:
05/30/17 21:33:09 (7 years ago)
Author:
dubos
Message:

devel : macro-generated kernels for compute_geopot and caldyn_slow_hydro

Location:
codes/icosagcm/devel/src/dynamics
Files:
1 edited
1 moved

Legend:

Unmodified
Added
Removed
  • codes/icosagcm/devel/src/dynamics/caldyn_kernels_base.F90

    r536 r537  
    3535 
    3636    INTEGER :: i,j,ij,l 
    37     REAL(rstd) :: Rd, p_ik, exner_ik, temp_ik, qv, chi, Rmix 
     37    REAL(rstd) :: Rd, p_ik, exner_ik, temp_ik, qv, chi, Rmix, gv 
    3838    INTEGER    :: ij_omp_begin_ext, ij_omp_end_ext 
    3939 
     
    4747 
    4848    Rd = kappa*cpp 
     49 
     50#ifdef CPP_DYSL 
     51#include "../kernels/compute_geopot.k90" 
     52#else 
    4953 
    5054    ! Pressure is computed first top-down (temporarily stored in pk) 
     
    158162    END IF 
    159163 
     164#endif 
     165 
    160166    !ym flush geopot 
    161167    !$OMP BARRIER 
  • codes/icosagcm/devel/src/dynamics/caldyn_kernels_hevi.F90

    r536 r537  
    638638    REAL(rstd),INTENT(INOUT) :: du(3*iim*jjm,llm) 
    639639     
    640     REAL(rstd) :: berni(iim*jjm)  ! Bernoulli function 
    641     REAL(rstd) :: uu_right, uu_lup, uu_ldown 
     640    REAL(rstd) :: berni(iim*jjm,llm)  ! Bernoulli function 
     641    REAL(rstd) :: uu_right, uu_lup, uu_ldown, ke, uu 
    642642    INTEGER :: ij,l 
    643643 
    644644    CALL trace_start("compute_caldyn_slow_hydro") 
     645 
     646#ifdef CPP_DYSL 
     647#define BERNI(ij,l) berni(ij,l) 
     648#include "../kernels/caldyn_slow_hydro.k90" 
     649#else 
     650#define BERNI(ij) berni(ij,1) 
    645651 
    646652    DO l = ll_begin, ll_end 
     
    662668       !DIR$ SIMD 
    663669       DO ij=ij_begin,ij_end          
    664           berni(ij) = & 
     670          BERNI(ij) = & 
    665671               1/(4*Ai(ij))*(le_de(ij+u_right)*u(ij+u_right,l)**2 +    & 
    666672               le_de(ij+u_rup)*u(ij+u_rup,l)**2 +          & 
     
    674680          !DIR$ SIMD 
    675681          DO ij=ij_begin,ij_end 
    676              du(ij+u_right,l) = ne_right*(berni(ij)-berni(ij+t_right)) 
    677              du(ij+u_lup,l)   = ne_lup*(berni(ij)-berni(ij+t_lup)) 
    678              du(ij+u_ldown,l) = ne_ldown*(berni(ij)-berni(ij+t_ldown)) 
     682             du(ij+u_right,l) = ne_right*(BERNI(ij)-BERNI(ij+t_right)) 
     683             du(ij+u_lup,l)   = ne_lup*(BERNI(ij)-BERNI(ij+t_lup)) 
     684             du(ij+u_ldown,l) = ne_ldown*(BERNI(ij)-BERNI(ij+t_ldown)) 
    679685          END DO 
    680686       ELSE 
     
    682688          DO ij=ij_begin,ij_end 
    683689             du(ij+u_right,l) = du(ij+u_right,l) + & 
    684                   ne_right*(berni(ij)-berni(ij+t_right)) 
     690                  ne_right*(BERNI(ij)-BERNI(ij+t_right)) 
    685691             du(ij+u_lup,l)   = du(ij+u_lup,l) + & 
    686                   ne_lup*(berni(ij)-berni(ij+t_lup)) 
     692                  ne_lup*(BERNI(ij)-BERNI(ij+t_lup)) 
    687693             du(ij+u_ldown,l) = du(ij+u_ldown,l) + & 
    688                   ne_ldown*(berni(ij)-berni(ij+t_ldown)) 
     694                  ne_ldown*(BERNI(ij)-BERNI(ij+t_ldown)) 
    689695          END DO 
    690696       END IF 
    691697    END DO 
     698#endif 
     699#undef BERNI 
    692700    CALL trace_end("compute_caldyn_slow_hydro")     
    693701  END SUBROUTINE compute_caldyn_slow_hydro 
Note: See TracChangeset for help on using the changeset viewer.