Changeset 827 for codes


Ignore:
Timestamp:
05/01/19 15:13:35 (5 years ago)
Author:
dubos
Message:

devel : towards Fortran driver for unstructured/LAM meshes

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

Legend:

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

    r735 r827  
    1616   
    1717  SUBROUTINE init_caldyn 
     18    USE compute_mod, ONLY : compute_pvort_only 
     19    USE compute_pvort_only_mod, ONLY : compute_pvort_only_hex 
     20 
    1821    CHARACTER(len=255) :: def 
    1922    INTEGER            :: ind 
     
    154157       CALL compute_planetvel(planetvel) 
    155158    END DO 
     159 
     160    compute_pvort_only => compute_pvort_only_hex 
    156161 
    157162  END SUBROUTINE init_caldyn 
  • codes/icosagcm/devel/src/dynamics/caldyn_hevi.f90

    r735 r827  
    2626    USE output_field_mod 
    2727    USE checksum_mod 
     28    USE compute_mod, ONLY : compute_pvort_only 
    2829    IMPLICIT NONE 
    2930    LOGICAL,INTENT(IN)    :: write_out 
  • codes/icosagcm/devel/src/dynamics/caldyn_kernels_hevi.F90

    r821 r827  
    1313  LOGICAL, SAVE :: debug_hevi_solver = .FALSE. 
    1414 
    15   PUBLIC :: compute_theta, compute_pvort_only, compute_caldyn_Kv, compute_caldyn_Coriolis, & 
     15  PUBLIC :: compute_theta, compute_caldyn_Kv, compute_caldyn_Coriolis, & 
    1616       compute_caldyn_slow_hydro, compute_caldyn_slow_NH, & 
    1717       compute_caldyn_solver, compute_caldyn_fast 
     
    4949    CALL trace_end("compute_theta") 
    5050  END SUBROUTINE compute_theta 
    51  
    52   SUBROUTINE compute_pvort_only(u,rhodz,qu,qv,hv_) 
    53     REAL(rstd),INTENT(IN)  :: u(iim*3*jjm,llm) 
    54     REAL(rstd),INTENT(INOUT) :: rhodz(iim*jjm,llm) 
    55     REAL(rstd),INTENT(OUT) :: qu(iim*3*jjm,llm) 
    56     REAL(rstd),INTENT(OUT) :: qv(iim*2*jjm,llm) 
    57     REAL(rstd),INTENT(OUT) :: hv_(iim*2*jjm,llm) 
    58  
    59     INTEGER :: ij,l 
    60     REAL(rstd) :: etav,hv,radius_m2 
    61  
    62     CALL trace_start("compute_pvort_only")   
    63 !!! Compute shallow-water potential vorticity 
    64     IF(dysl_pvort_only) THEN 
    65 #include "../kernels_hex/pvort_only.k90" 
    66     ELSE 
    67  
    68     radius_m2=radius**(-2) 
    69     DO l = ll_begin,ll_end 
    70        !DIR$ SIMD 
    71        DO ij=ij_begin_ext,ij_end_ext 
    72           etav= 1./Av(ij+z_up)*(  ne_rup  * u(ij+u_rup,l)   & 
    73                   + ne_left * u(ij+t_rup+u_left,l)          & 
    74                   - ne_lup  * u(ij+u_lup,l) )                                
    75           hv =   Riv2(ij,vup)          * rhodz(ij,l)        & 
    76                + Riv2(ij+t_rup,vldown) * rhodz(ij+t_rup,l)  & 
    77                + Riv2(ij+t_lup,vrdown) * rhodz(ij+t_lup,l) 
    78           qv(ij+z_up,l) = ( etav+fv(ij+z_up) )/hv 
    79           hv_(ij+z_up,l) = hv 
    80            
    81           etav = 1./Av(ij+z_down)*(  ne_ldown * u(ij+u_ldown,l)   & 
    82                + ne_right * u(ij+t_ldown+u_right,l)               & 
    83                - ne_rdown * u(ij+u_rdown,l) ) 
    84           hv =   Riv2(ij,vdown)        * rhodz(ij,l)              & 
    85                + Riv2(ij+t_ldown,vrup) * rhodz(ij+t_ldown,l)      & 
    86                + Riv2(ij+t_rdown,vlup) * rhodz(ij+t_rdown,l) 
    87           qv(ij+z_down,l) =( etav+fv(ij+z_down) )/hv 
    88           hv_(ij+z_down,l) = hv 
    89        ENDDO 
    90  
    91        !DIR$ SIMD 
    92        DO ij=ij_begin,ij_end 
    93           qu(ij+u_right,l) = 0.5*(qv(ij+z_rdown,l)+qv(ij+z_rup,l))   
    94           qu(ij+u_lup,l) = 0.5*(qv(ij+z_up,l)+qv(ij+z_lup,l))   
    95           qu(ij+u_ldown,l) = 0.5*(qv(ij+z_ldown,l)+qv(ij+z_down,l))   
    96        END DO 
    97  
    98     ENDDO 
    99     
    100     END IF ! dysl 
    101     CALL trace_end("compute_pvort_only") 
    102  
    103   END SUBROUTINE compute_pvort_only 
    10451 
    10552  SUBROUTINE compute_caldyn_kv(ue, Kv) 
  • codes/icosagcm/devel/src/dynamics/caldyn_vars.f90

    r735 r827  
    33  USE transfert_mod 
    44  IMPLICIT NONE 
    5   PUBLIC 
     5  PRIVATE 
    66  SAVE 
    77 
    8   INTEGER, PARAMETER :: conserv_energy=1, conserv_enstrophy=2, conserv_gassmann=3, & 
     8  INTEGER, PUBLIC, PARAMETER :: conserv_energy=1, conserv_enstrophy=2, conserv_gassmann=3, & 
    99       kinetic_trisk=1, kinetic_consistent=2, & 
    1010       caldyn_vert_noncons=1, caldyn_vert_cons=2, & 
     
    1212       thermo_moist=3, thermo_boussinesq=4, thermo_dry=10, thermo_fake_moist=11, thermo_moist_debug=100 
    1313 
    14   INTEGER :: caldyn_conserv, caldyn_kinetic, caldyn_thermo, caldyn_vert_variant, physics_thermo 
     14  INTEGER, PUBLIC :: caldyn_conserv, caldyn_kinetic, caldyn_thermo, caldyn_vert_variant, physics_thermo 
    1515  !$OMP THREADPRIVATE(caldyn_conserv, caldyn_kinetic, caldyn_thermo, caldyn_vert_variant, physics_thermo) 
    1616 
    17   LOGICAL :: boussinesq, hydrostatic 
     17  LOGICAL, PUBLIC :: boussinesq, hydrostatic 
    1818  !$OMP THREADPRIVATE(boussinesq, hydrostatic) 
    1919 
    20   LOGICAL :: dysl, dysl_geopot, dysl_pvort_only, dysl_caldyn_fast, dysl_caldyn_coriolis, dysl_slow_hydro, dysl_caldyn_vert 
     20  LOGICAL, PUBLIC :: dysl, dysl_geopot, dysl_pvort_only, dysl_caldyn_fast, dysl_caldyn_coriolis, dysl_slow_hydro, dysl_caldyn_vert 
    2121  !$OMP THREADPRIVATE(dysl, dysl_geopot, dysl_pvort_only, dysl_caldyn_fast, dysl_caldyn_coriolis, dysl_slow_hydro, dysl_caldyn_vert) 
    2222 
    2323  ! temporary shared variables for caldyn 
    24   TYPE(t_field),POINTER :: f_qu(:), f_qv(:), f_Kv(:), f_hv(:), & 
     24  TYPE(t_field),POINTER, PUBLIC :: f_qu(:), f_qv(:), f_Kv(:), f_hv(:), & 
    2525                           f_pk(:),f_wwuu(:),f_planetvel(:), & 
    2626                           f_Fel(:), f_gradPhi2(:), f_wil(:), f_Wetadot(:) 
    2727 
    28   TYPE(t_message) :: req_ps, req_mass, req_theta_rhodz, req_u, req_qu, req_geopot, req_w, req_Kv 
     28  TYPE(t_message), PUBLIC :: req_ps, req_mass, req_theta_rhodz, req_u, req_qu, req_geopot, req_w, req_Kv 
    2929 
    3030END MODULE caldyn_vars_mod 
Note: See TracChangeset for help on using the changeset viewer.