Changeset 2999
- Timestamp:
- 2011-10-26T14:47:41+02:00 (13 years ago)
- Location:
- branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/CONFIG/ORCA2_LIM/cpp_ORCA2_LIM.fcm
r2996 r2999 1 bld::tool::fppkeys key_trabbl key_vectopt_loop key_orca_r2 key_lim2 key_diaeiv key_ldfslp key_traldf_c2d key_traldf_eiv key_dynldf_c3d key_dtatem key_dtasal key_tradmp key_zdftke key_zdfddm key_zdftmx key_iomput key_ vvl key_dynspg_ts1 bld::tool::fppkeys key_trabbl key_vectopt_loop key_orca_r2 key_lim2 key_diaeiv key_ldfslp key_traldf_c2d key_traldf_eiv key_dynldf_c3d key_dtatem key_dtasal key_tradmp key_zdftke key_zdfddm key_zdftmx key_iomput key_dynspg_flt key_vvl -
branches/2011/dev_r2739_LOCEAN8_ZTC/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90
r2996 r2999 8 8 !! 3.3 ! 2011-10 (M. Leclair) totally rewrote domvvl: 9 9 !! vvl option includes z_star and z_tilde coordinates 10 #if defined key_vvl11 10 !!---------------------------------------------------------------------- 12 11 !! 'key_vvl' variable volume … … 40 39 41 40 !!* Namelist nam_vvl 42 LOGICAL , PUBLIC :: ln_vvl_zstar = . TRUE.! zstar vertical coordinate41 LOGICAL , PUBLIC :: ln_vvl_zstar = .FALSE. ! zstar vertical coordinate 43 42 LOGICAL , PUBLIC :: ln_vvl_ztilde = .FALSE. ! ztilde vertical coordinate 44 43 LOGICAL , PUBLIC :: ln_vvl_layer = .FALSE. ! level vertical coordinate 45 44 LOGICAL , PUBLIC :: ln_vvl_kepe = .FALSE. ! kinetic/potential energy transfer 46 45 ! ! conservation: not used yet 47 REAL(wp) , PUBLIC:: ahe3 = 0.e0 ! thickness diffusion coefficient46 REAL(wp) :: ahe3 = 0.e0 ! thickness diffusion coefficient 48 47 49 48 !! * Module variables 50 INTEGER :: nvvl ! choice of vertical coordinate51 49 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: un_td, vn_td ! thickness diffusion transport 52 50 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: hdiv_lf ! low frequency part of hz divergence 53 51 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: e3t_t_b, e3t_t_n, e3t_t_a ! baroclinic scale factors 54 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:) :: frq_r estore_e3t! retoring period for scale factors55 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:) :: frq_r estore_hdv! retoring period for low freq. divergence52 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:) :: frq_rst_e3t ! retoring period for scale factors 53 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:) :: frq_rst_hdv ! retoring period for low freq. divergence 56 54 57 55 … … 78 76 ENDIF 79 77 IF( ln_vvl_ztilde ) THEN 80 ALLOCATE( frq_r estore_e3t(jpi,jpj) , frq_restore_hdv(jpi,jpj) , hdiv_lf(jpi,jpj,jpk) , STAT= dom_vvl_alloc )78 ALLOCATE( frq_rst_e3t(jpi,jpj) , frq_rst_hdv(jpi,jpj) , hdiv_lf(jpi,jpj,jpk) , STAT= dom_vvl_alloc ) 81 79 IF( lk_mpp ) CALL mpp_sum ( dom_vvl_alloc ) 82 80 IF( dom_vvl_alloc /= 0 ) CALL ctl_warn('dom_vvl_alloc: failed to allocate arrays') … … 103 101 !! fse3(u/v)w_n 104 102 !! fsdept_n, fsdepw_n and fsde3w_n 105 !! h(u/v) and h(u/v)r106 !! - ht_0 and ht1_0103 !! - h(t/u/v)_0 104 !! - frq_rst_e3t and frq_rst_hdv 107 105 !! 108 106 !! Reference : Leclair, M., and G. Madec, 2011, Ocean Modelling. … … 172 170 ! ============================================ 173 171 IF( ln_vvl_ztilde ) THEN 174 ! - ML - In the future, this should be tunable by the user 175 ! DO jj = 1, jpj 176 ! DO ji = 1, jpi 177 ! frq_restore_hdv(ji,jj) = 2.e0 * rpi / 86400.e0 / 5.e0 & 178 ! & * MAX( SIN( ABS( gphit(ji,jj) ) / .5e0, 1.e0 / 6.e0) ) 179 ! END DO 180 ! END DO 181 ! frq_restore_e3t(:,:) = ( 1.e0 / 6.e0 ) * frq_restore_hdv(:,:) 182 frq_restore_e3t(:,:) = 2.e0 * rpi / ( 30.e0 * 86400.e0 ) 183 frq_restore_hdv(:,:) = 2.e0 * rpi / ( 5.e0 * 86400.e0 ) 184 ! frq_restore_hdv(:,:) = 2.e0 * rpi / ( 2.e0 * 86400.e0 ) 172 ! - ML - In the future, this should be tunable by the user (namelist) 173 ! frq_rst_hdv(:,:) = 2.e0 * rpi / 86400.e0 / 5.e0 * MAX( SIN( ABS( gphit(:,:) ) / .5e0, 1.e0 / 6.e0) ) 174 ! frq_rst_e3t(:,:) = ( 1.e0 / 6.e0 ) * frq_rst_hdv(:,:) 175 frq_rst_e3t(:,:) = 2.e0 * rpi / ( 30.e0 * 86400.e0 ) 176 frq_rst_hdv(:,:) = 2.e0 * rpi / ( 5.e0 * 86400.e0 ) 177 ! frq_rst_hdv(:,:) = 2.e0 * rpi / ( 2.e0 * 86400.e0 ) 185 178 ENDIF 186 179 … … 270 263 IF( kt .GT. nit000 ) THEN 271 264 DO jk = 1, jpkm1 272 hdiv_lf(:,:,jk) = hdiv_lf(:,:,jk) - rdt * frq_r estore_hdv(:,:) &265 hdiv_lf(:,:,jk) = hdiv_lf(:,:,jk) - rdt * frq_rst_hdv(:,:) & 273 266 & * ( hdiv_lf(:,:,jk) - fse3t_n(:,:,jk) * ( hdivn(:,:,jk) - zhdiv(:,:) ) ) 274 267 END DO … … 296 289 IF( ln_vvl_ztilde ) THEN 297 290 DO jk = 1, jpk 298 e3t_t_a(:,:,jk) = e3t_t_a(:,:,jk) - frq_r estore_e3t(:,:) * e3t_t_b(:,:,jk)291 e3t_t_a(:,:,jk) = e3t_t_a(:,:,jk) - frq_rst_e3t(:,:) * e3t_t_b(:,:,jk) 299 292 END DO 300 293 END IF … … 737 730 !! *** ROUTINE dom_vvl_ctl *** 738 731 !! 739 !! ** Purpose : Control the consistency between namelist options for740 !! vertical coordinate and set nvvl732 !! ** Purpose : Control the consistency between namelist options 733 !! for vertical coordinate 741 734 !!---------------------------------------------------------------------- 742 735 INTEGER :: ioptio … … 769 762 IF( ioptio /= 1 ) CALL ctl_stop( 'Choose ONE vertical coordinate in namelist nam_vvl' ) 770 763 771 IF( ln_vvl_zstar ) nvvl = 1772 IF( ln_vvl_ztilde ) nvvl = 2773 IF( ln_vvl_layer ) nvvl = 3774 775 764 IF(lwp) THEN ! Print the choice 776 765 WRITE(numout,*) 777 IF( nvvl == 1) WRITE(numout,*) ' zstar vertical coordinate is used'778 IF( nvvl == 2) WRITE(numout,*) ' ztilde vertical coordinate is used'779 IF( nvvl == 3) WRITE(numout,*) ' layer vertical coordinate is used'766 IF( ln_vvl_zstar ) WRITE(numout,*) ' zstar vertical coordinate is used' 767 IF( ln_vvl_ztilde ) WRITE(numout,*) ' ztilde vertical coordinate is used' 768 IF( ln_vvl_layer ) WRITE(numout,*) ' layer vertical coordinate is used' 780 769 ! - ML - Option not developed yet 781 770 ! IF( ln_vvl_kepe ) WRITE(numout,*) ' kinetic to potential energy transfer : option used' … … 785 774 END SUBROUTINE dom_vvl_ctl 786 775 787 788 #else789 790 791 !!----------------------------------------------------------------------792 !! Default option : Empty routine793 !!----------------------------------------------------------------------794 SUBROUTINE dom_vvl_init795 WRITE(*,*) 'dom_vvl_init: You should not have seen this print! error?'796 END SUBROUTINE dom_vvl_init797 SUBROUTINE dom_vvl_sf_nxt( kt )798 !! * Arguments799 INTEGER, INTENT( in ) :: kt800 WRITE(*,*) 'dom_vvl_sf_nxt: You should not have seen this print! error?', kt801 END SUBROUTINE dom_vvl_sf_nxt802 SUBROUTINE dom_vvl_sf_swp( kt )803 !! * Arguments804 INTEGER, INTENT( in ) :: kt805 WRITE(*,*) 'dom_vvl_sf_swp: You should not have seen this print! error?', kt806 END SUBROUTINE dom_vvl_sf_swp807 SUBROUTINE dom_vvl_interpol( pe3_in, pe3_out, pout )808 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( in ) :: pe3_in809 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT( inout ) :: pe3_out810 CHARACTER(len=1), INTENT( in ) :: pout811 WRITE(*,*) 'dom_vvl_interpol: You should not have seen this print! error?'812 END SUBROUTINE dom_vvl_interpol813 814 815 #endif816 817 776 !!====================================================================== 818 777 END MODULE domvvl
Note: See TracChangeset
for help on using the changeset viewer.