- Timestamp:
- 05/01/19 15:13:35 (5 years ago)
- 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 16 16 17 17 SUBROUTINE init_caldyn 18 USE compute_mod, ONLY : compute_pvort_only 19 USE compute_pvort_only_mod, ONLY : compute_pvort_only_hex 20 18 21 CHARACTER(len=255) :: def 19 22 INTEGER :: ind … … 154 157 CALL compute_planetvel(planetvel) 155 158 END DO 159 160 compute_pvort_only => compute_pvort_only_hex 156 161 157 162 END SUBROUTINE init_caldyn -
codes/icosagcm/devel/src/dynamics/caldyn_hevi.f90
r735 r827 26 26 USE output_field_mod 27 27 USE checksum_mod 28 USE compute_mod, ONLY : compute_pvort_only 28 29 IMPLICIT NONE 29 30 LOGICAL,INTENT(IN) :: write_out -
codes/icosagcm/devel/src/dynamics/caldyn_kernels_hevi.F90
r821 r827 13 13 LOGICAL, SAVE :: debug_hevi_solver = .FALSE. 14 14 15 PUBLIC :: compute_theta, compute_ pvort_only, compute_caldyn_Kv, compute_caldyn_Coriolis, &15 PUBLIC :: compute_theta, compute_caldyn_Kv, compute_caldyn_Coriolis, & 16 16 compute_caldyn_slow_hydro, compute_caldyn_slow_NH, & 17 17 compute_caldyn_solver, compute_caldyn_fast … … 49 49 CALL trace_end("compute_theta") 50 50 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,l60 REAL(rstd) :: etav,hv,radius_m261 62 CALL trace_start("compute_pvort_only")63 !!! Compute shallow-water potential vorticity64 IF(dysl_pvort_only) THEN65 #include "../kernels_hex/pvort_only.k90"66 ELSE67 68 radius_m2=radius**(-2)69 DO l = ll_begin,ll_end70 !DIR$ SIMD71 DO ij=ij_begin_ext,ij_end_ext72 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) )/hv79 hv_(ij+z_up,l) = hv80 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) )/hv88 hv_(ij+z_down,l) = hv89 ENDDO90 91 !DIR$ SIMD92 DO ij=ij_begin,ij_end93 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 DO97 98 ENDDO99 100 END IF ! dysl101 CALL trace_end("compute_pvort_only")102 103 END SUBROUTINE compute_pvort_only104 51 105 52 SUBROUTINE compute_caldyn_kv(ue, Kv) -
codes/icosagcm/devel/src/dynamics/caldyn_vars.f90
r735 r827 3 3 USE transfert_mod 4 4 IMPLICIT NONE 5 P UBLIC5 PRIVATE 6 6 SAVE 7 7 8 INTEGER, P ARAMETER :: conserv_energy=1, conserv_enstrophy=2, conserv_gassmann=3, &8 INTEGER, PUBLIC, PARAMETER :: conserv_energy=1, conserv_enstrophy=2, conserv_gassmann=3, & 9 9 kinetic_trisk=1, kinetic_consistent=2, & 10 10 caldyn_vert_noncons=1, caldyn_vert_cons=2, & … … 12 12 thermo_moist=3, thermo_boussinesq=4, thermo_dry=10, thermo_fake_moist=11, thermo_moist_debug=100 13 13 14 INTEGER :: caldyn_conserv, caldyn_kinetic, caldyn_thermo, caldyn_vert_variant, physics_thermo14 INTEGER, PUBLIC :: caldyn_conserv, caldyn_kinetic, caldyn_thermo, caldyn_vert_variant, physics_thermo 15 15 !$OMP THREADPRIVATE(caldyn_conserv, caldyn_kinetic, caldyn_thermo, caldyn_vert_variant, physics_thermo) 16 16 17 LOGICAL :: boussinesq, hydrostatic17 LOGICAL, PUBLIC :: boussinesq, hydrostatic 18 18 !$OMP THREADPRIVATE(boussinesq, hydrostatic) 19 19 20 LOGICAL :: dysl, dysl_geopot, dysl_pvort_only, dysl_caldyn_fast, dysl_caldyn_coriolis, dysl_slow_hydro, dysl_caldyn_vert20 LOGICAL, PUBLIC :: dysl, dysl_geopot, dysl_pvort_only, dysl_caldyn_fast, dysl_caldyn_coriolis, dysl_slow_hydro, dysl_caldyn_vert 21 21 !$OMP THREADPRIVATE(dysl, dysl_geopot, dysl_pvort_only, dysl_caldyn_fast, dysl_caldyn_coriolis, dysl_slow_hydro, dysl_caldyn_vert) 22 22 23 23 ! 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(:), & 25 25 f_pk(:),f_wwuu(:),f_planetvel(:), & 26 26 f_Fel(:), f_gradPhi2(:), f_wil(:), f_Wetadot(:) 27 27 28 TYPE(t_message) :: req_ps, req_mass, req_theta_rhodz, req_u, req_qu, req_geopot, req_w, req_Kv28 TYPE(t_message), PUBLIC :: req_ps, req_mass, req_theta_rhodz, req_u, req_qu, req_geopot, req_w, req_Kv 29 29 30 30 END MODULE caldyn_vars_mod
Note: See TracChangeset
for help on using the changeset viewer.