Changeset 13727 for NEMO/branches/2020/dev_12905_xios_restart/tests/VORTEX
- Timestamp:
- 2020-11-05T15:18:53+01:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_12905_xios_restart
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_12905_xios_restart
- Property svn:externals
-
old new 3 3 ^/utils/build/mk@HEAD mk 4 4 ^/utils/tools@HEAD tools 5 ^/vendors/AGRIF/dev @HEADext/AGRIF5 ^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS ext/AGRIF 6 6 ^/vendors/FCM@HEAD ext/FCM 7 7 ^/vendors/IOIPSL@HEAD ext/IOIPSL 8 8 9 9 # SETTE 10 ^/utils/CI/sette@ HEADsette10 ^/utils/CI/sette@13559 sette
-
- Property svn:externals
-
NEMO/branches/2020/dev_12905_xios_restart/tests/VORTEX/EXPREF/1_context_nemo.xml
r12276 r13727 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/dev_12905_xios_restart/tests/VORTEX/EXPREF/1_namelist_cfg
r12489 r13727 98 98 &namagrif ! AGRIF zoom ("key_agrif") 99 99 !----------------------------------------------------------------------- 100 ln_spc_dyn = .true. ! use 0 as special value for dynamics 101 rn_sponge_tra = 800. ! coefficient for tracer sponge layer [m2/s] 102 rn_sponge_dyn = 800. ! coefficient for dynamics sponge layer [m2/s] 103 ln_chk_bathy = .FALSE. ! 100 rn_sponge_tra = 0.00768 ! coefficient for tracer sponge layer [] 101 rn_sponge_dyn = 0.00768 ! coefficient for dynamics sponge layer [] 104 102 / 105 103 !!====================================================================== … … 107 105 !! !! 108 106 !! namdrg top/bottom drag coefficient (default: NO selection) 109 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)110 !! namdrg_bot bottom friction (ln_ OFF=F)107 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 108 !! namdrg_bot bottom friction (ln_drg_OFF=F) 111 109 !! nambbc bottom temperature boundary condition (default: OFF) 112 110 !! nambbl bottom boundary layer scheme (default: OFF) … … 116 114 &namdrg ! top/bottom drag coefficient (default: NO selection) 117 115 !----------------------------------------------------------------------- 118 ln_ OFF = .true. ! free-slip : Cd = 0116 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 119 117 / 120 118 !!====================================================================== … … 133 131 !----------------------------------------------------------------------- 134 132 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 135 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS133 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 136 134 rn_a0 = 0.28 ! thermal expension coefficient (for simplified equation of state) 137 135 rn_b0 = 0. ! saline expension coefficient (for simplified equation of state) … … 268 266 !! !! 269 267 !! namtrd dynamics and/or tracer trends (default: OFF) 270 !! namptr Poleward Transport Diagnostics (default: OFF)271 268 !! namhsb Heat and salt budgets (default: OFF) 272 269 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/dev_12905_xios_restart/tests/VORTEX/EXPREF/context_nemo.xml
r12276 r13727 11 11 <variable id="ref_month" type="int"> 01 </variable> 12 12 <variable id="ref_day" type="int"> 01 </variable> 13 <variable id="r au0" type="float" > 1026.0 </variable>13 <variable id="rho0" type="float" > 1026.0 </variable> 14 14 <variable id="cpocean" type="float" > 3991.86795711963 </variable> 15 15 <variable id="convSpsu" type="float" > 0.99530670233846 </variable> -
NEMO/branches/2020/dev_12905_xios_restart/tests/VORTEX/EXPREF/namelist_cfg
r12489 r13727 99 99 !! !! 100 100 !! namdrg top/bottom drag coefficient (default: NO selection) 101 !! namdrg_top top friction (ln_ OFF=F & ln_isfcav=T)102 !! namdrg_bot bottom friction (ln_ OFF=F)101 !! namdrg_top top friction (ln_drg_OFF=F & ln_isfcav=T) 102 !! namdrg_bot bottom friction (ln_drg_OFF=F) 103 103 !! nambbc bottom temperature boundary condition (default: OFF) 104 104 !! nambbl bottom boundary layer scheme (default: OFF) … … 108 108 &namdrg ! top/bottom drag coefficient (default: NO selection) 109 109 !----------------------------------------------------------------------- 110 ln_ OFF = .true. ! free-slip : Cd = 0110 ln_drg_OFF = .true. ! free-slip : Cd = 0 (F => fill namdrg_bot 111 111 / 112 112 !!====================================================================== … … 125 125 !----------------------------------------------------------------------- 126 126 ln_seos = .true. ! = Use simplified equation of state (S-EOS) 127 ! ! rd(T,S,Z)*r au0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS127 ! ! rd(T,S,Z)*rho0 = -a0*(1+.5*lambda*dT+mu*Z+nu*dS)*dT+b0*dS 128 128 rn_a0 = 0.28 ! thermal expension coefficient (for simplified equation of state) 129 129 rn_b0 = 0. ! saline expension coefficient (for simplified equation of state) … … 259 259 !! !! 260 260 !! namtrd dynamics and/or tracer trends (default: OFF) 261 !! namptr Poleward Transport Diagnostics (default: OFF)262 261 !! namhsb Heat and salt budgets (default: OFF) 263 262 !! namdiu Cool skin and warm layer models (default: OFF) -
NEMO/branches/2020/dev_12905_xios_restart/tests/VORTEX/MY_SRC/domvvl.F90
r12950 r13727 9 9 !! 3.6 ! 2014-11 (P. Mathiot) add ice shelf capability 10 10 !! 4.1 ! 2019-08 (A. Coward, D. Storkey) rename dom_vvl_sf_swp -> dom_vvl_sf_update for new timestepping 11 !! 4.x ! 2020-02 (G. Madec, S. Techene) introduce ssh to h0 ratio 11 12 !!---------------------------------------------------------------------- 12 13 13 !!----------------------------------------------------------------------14 !! dom_vvl_init : define initial vertical scale factors, depths and column thickness15 !! dom_vvl_sf_nxt : Compute next vertical scale factors16 !! dom_vvl_sf_update : Swap vertical scale factors and update the vertical grid17 !! dom_vvl_interpol : Interpolate vertical scale factors from one grid point to another18 !! dom_vvl_rst : read/write restart file19 !! dom_vvl_ctl : Check the vvl options20 !!----------------------------------------------------------------------21 14 USE oce ! ocean dynamics and tracers 22 15 USE phycst ! physical constant … … 36 29 PRIVATE 37 30 38 PUBLIC dom_vvl_init ! called by domain.F9039 PUBLIC dom_vvl_zgr ! called by isfcpl.F9040 PUBLIC dom_vvl_sf_nxt ! called by step.F9041 PUBLIC dom_vvl_sf_update ! called by step.F9042 PUBLIC dom_vvl_interpol ! called by dynnxt.F9043 44 31 ! !!* Namelist nam_vvl 45 32 LOGICAL , PUBLIC :: ln_vvl_zstar = .FALSE. ! zstar vertical coordinate … … 63 50 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:) :: frq_rst_hdv ! retoring period for low freq. divergence 64 51 52 #if defined key_qco 53 !!---------------------------------------------------------------------- 54 !! 'key_qco' EMPTY MODULE Quasi-Eulerian vertical coordonate 55 !!---------------------------------------------------------------------- 56 #else 57 !!---------------------------------------------------------------------- 58 !! Default key Old management of time varying vertical coordinate 59 !!---------------------------------------------------------------------- 60 61 !!---------------------------------------------------------------------- 62 !! dom_vvl_init : define initial vertical scale factors, depths and column thickness 63 !! dom_vvl_sf_nxt : Compute next vertical scale factors 64 !! dom_vvl_sf_update : Swap vertical scale factors and update the vertical grid 65 !! dom_vvl_interpol : Interpolate vertical scale factors from one grid point to another 66 !! dom_vvl_rst : read/write restart file 67 !! dom_vvl_ctl : Check the vvl options 68 !!---------------------------------------------------------------------- 69 70 PUBLIC dom_vvl_init ! called by domain.F90 71 PUBLIC dom_vvl_zgr ! called by isfcpl.F90 72 PUBLIC dom_vvl_sf_nxt ! called by step.F90 73 PUBLIC dom_vvl_sf_update ! called by step.F90 74 PUBLIC dom_vvl_interpol ! called by dynnxt.F90 75 65 76 !! * Substitutions 66 77 # include "do_loop_substitute.h90" … … 135 146 ! 136 147 END SUBROUTINE dom_vvl_init 137 ! 148 149 138 150 SUBROUTINE dom_vvl_zgr(Kbb, Kmm, Kaa) 139 151 !!---------------------------------------------------------------------- … … 190 202 gdept(:,:,1,Kbb) = 0.5_wp * e3w(:,:,1,Kbb) 191 203 gdepw(:,:,1,Kbb) = 0.0_wp 192 DO_3D _11_11(2, jpk )204 DO_3D( 1, 1, 1, 1, 2, jpk ) 193 205 ! zcoef = tmask - wmask ! 0 everywhere tmask = wmask, ie everywhere expect at jk = mikt 194 206 ! ! 1 everywhere from mbkt to mikt + 1 or 1 (if no isf) … … 238 250 ENDIF 239 251 IF ( ln_vvl_zstar_at_eqtor ) THEN ! use z-star in vicinity of the Equator 240 DO_2D _11_11252 DO_2D( 1, 1, 1, 1 ) 241 253 !!gm case |gphi| >= 6 degrees is useless initialized just above by default 242 254 IF( ABS(gphit(ji,jj)) >= 6.) THEN … … 261 273 IF( cn_cfg == "orca" .OR. cn_cfg == "ORCA" ) THEN 262 274 IF( nn_cfg == 3 ) THEN ! ORCA2: Suppress ztilde in the Foxe Basin for ORCA2 263 ii0 = 103 ; ii1 = 111264 ij0 = 128 ; ij1 = 135 ;275 ii0 = 103 + nn_hls - 1 ; ii1 = 111 + nn_hls - 1 276 ij0 = 128 + nn_hls ; ij1 = 135 + nn_hls 265 277 frq_rst_e3t( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 0.0_wp 266 278 frq_rst_hdv( mi0(ii0):mi1(ii1) , mj0(ij0):mj1(ij1) ) = 1.e0_wp / rn_Dt … … 304 316 LOGICAL :: ll_do_bclinic ! local logical 305 317 REAL(wp), DIMENSION(jpi,jpj) :: zht, z_scale, zwu, zwv, zhdiv 306 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t 318 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: ze3t 319 LOGICAL , DIMENSION(:,:,:), ALLOCATABLE :: llmsk 307 320 !!---------------------------------------------------------------------- 308 321 ! … … 389 402 zwu(:,:) = 0._wp 390 403 zwv(:,:) = 0._wp 391 DO_3D _10_10(1, jpkm1 )404 DO_3D( 1, 0, 1, 0, 1, jpkm1 ) 392 405 un_td(ji,jj,jk) = rn_ahe3 * umask(ji,jj,jk) * e2_e1u(ji,jj) & 393 406 & * ( tilde_e3t_b(ji,jj,jk) - tilde_e3t_b(ji+1,jj ,jk) ) … … 397 410 zwv(ji,jj) = zwv(ji,jj) + vn_td(ji,jj,jk) 398 411 END_3D 399 DO_2D _11_11412 DO_2D( 1, 1, 1, 1 ) 400 413 un_td(ji,jj,mbku(ji,jj)) = un_td(ji,jj,mbku(ji,jj)) - zwu(ji,jj) 401 414 vn_td(ji,jj,mbkv(ji,jj)) = vn_td(ji,jj,mbkv(ji,jj)) - zwv(ji,jj) 402 415 END_2D 403 DO_3D _00_00(1, jpkm1 )416 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 404 417 tilde_e3t_a(ji,jj,jk) = tilde_e3t_a(ji,jj,jk) + ( un_td(ji-1,jj ,jk) - un_td(ji,jj,jk) & 405 418 & + vn_td(ji ,jj-1,jk) - vn_td(ji,jj,jk) & … … 417 430 ! Maximum deformation control 418 431 ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~ 419 ze3t(:,:,jpk) = 0._wp 420 DO jk = 1, jpkm1 421 ze3t(:,:,jk) = tilde_e3t_a(:,:,jk) / e3t_0(:,:,jk) * tmask(:,:,jk) * tmask_i(:,:) 422 END DO 423 z_tmax = MAXVAL( ze3t(:,:,:) ) 424 CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 425 z_tmin = MINVAL( ze3t(:,:,:) ) 426 CALL mpp_min( 'domvvl', z_tmin ) ! min over the global domain 432 ALLOCATE( ze3t(jpi,jpj,jpk), llmsk(jpi,jpj,jpk) ) 433 DO_3D( 0, 0, 0, 0, 1, jpkm1 ) 434 ze3t(ji,jj,jk) = tilde_e3t_a(ji,jj,jk) / e3t_0(ji,jj,jk) * tmask(ji,jj,jk) * tmask_i(ji,jj) 435 END_3D 436 ! 437 llmsk( 1:Nis1,:,:) = .FALSE. ! exclude halos from the checked region 438 llmsk(Nie1: jpi,:,:) = .FALSE. 439 llmsk(:, 1:Njs1,:) = .FALSE. 440 llmsk(:,Nje1: jpj,:) = .FALSE. 441 ! 442 llmsk(Nis0:Nie0,Njs0:Nje0,:) = tmask(Nis0:Nie0,Njs0:Nje0,:) == 1._wp ! define only the inner domain 443 z_tmax = MAXVAL( ze3t(:,:,:), mask = llmsk ) ; CALL mpp_max( 'domvvl', z_tmax ) ! max over the global domain 444 z_tmin = MINVAL( ze3t(:,:,:), mask = llmsk ) ; CALL mpp_min( 'domvvl', z_tmin ) ! min over the global domain 427 445 ! - ML - test: for the moment, stop simulation for too large e3_t variations 428 446 IF( ( z_tmax > rn_zdef_max ) .OR. ( z_tmin < - rn_zdef_max ) ) THEN 429 IF( lk_mpp ) THEN 430 CALL mpp_maxloc( 'domvvl', ze3t, tmask, z_tmax, ijk_max ) 431 CALL mpp_minloc( 'domvvl', ze3t, tmask, z_tmin, ijk_min ) 432 ELSE 433 ijk_max = MAXLOC( ze3t(:,:,:) ) 434 ijk_max(1) = ijk_max(1) + nimpp - 1 435 ijk_max(2) = ijk_max(2) + njmpp - 1 436 ijk_min = MINLOC( ze3t(:,:,:) ) 437 ijk_min(1) = ijk_min(1) + nimpp - 1 438 ijk_min(2) = ijk_min(2) + njmpp - 1 439 ENDIF 447 CALL mpp_maxloc( 'domvvl', ze3t, llmsk, z_tmax, ijk_max ) 448 CALL mpp_minloc( 'domvvl', ze3t, llmsk, z_tmin, ijk_min ) 440 449 IF (lwp) THEN 441 450 WRITE(numout, *) 'MAX( tilde_e3t_a(:,:,:) / e3t_0(:,:,:) ) =', z_tmax … … 446 455 ENDIF 447 456 ENDIF 457 DEALLOCATE( ze3t, llmsk ) 448 458 ! - ML - end test 449 459 ! - ML - Imposing these limits will cause a baroclinicity error which is corrected for below … … 629 639 gdepw(:,:,1,Kmm) = 0.0_wp 630 640 gde3w(:,:,1) = gdept(:,:,1,Kmm) - ssh(:,:,Kmm) 631 DO_3D _11_11(2, jpk )641 DO_3D( 1, 1, 1, 1, 2, jpk ) 632 642 ! zcoef = (tmask(ji,jj,jk) - wmask(ji,jj,jk)) ! 0 everywhere tmask = wmask, ie everywhere expect at jk = mikt 633 643 ! 1 for jk = mikt … … 684 694 ! 685 695 CASE( 'U' ) !* from T- to U-point : hor. surface weighted mean 686 DO_3D _10_10(1, jpk )696 DO_3D( 1, 0, 1, 0, 1, jpk ) 687 697 pe3_out(ji,jj,jk) = 0.5_wp * ( umask(ji,jj,jk) * (1.0_wp - zlnwd) + zlnwd ) * r1_e1e2u(ji,jj) & 688 698 & * ( e1e2t(ji ,jj) * ( pe3_in(ji ,jj,jk) - e3t_0(ji ,jj,jk) ) & … … 693 703 ! 694 704 CASE( 'V' ) !* from T- to V-point : hor. surface weighted mean 695 DO_3D _10_10(1, jpk )705 DO_3D( 1, 0, 1, 0, 1, jpk ) 696 706 pe3_out(ji,jj,jk) = 0.5_wp * ( vmask(ji,jj,jk) * (1.0_wp - zlnwd) + zlnwd ) * r1_e1e2v(ji,jj) & 697 707 & * ( e1e2t(ji,jj ) * ( pe3_in(ji,jj ,jk) - e3t_0(ji,jj ,jk) ) & … … 702 712 ! 703 713 CASE( 'F' ) !* from U-point to F-point : hor. surface weighted mean 704 DO_3D _10_10(1, jpk )714 DO_3D( 1, 0, 1, 0, 1, jpk ) 705 715 pe3_out(ji,jj,jk) = 0.5_wp * ( umask(ji,jj,jk) * umask(ji,jj+1,jk) * (1.0_wp - zlnwd) + zlnwd ) & 706 716 & * r1_e1e2f(ji,jj) & … … 775 785 IF( ln_rstart ) THEN !* Read the restart file 776 786 CALL rst_read_open ! open the restart file if necessary 777 IF( lr xios ) CALL iom_swap( TRIM(crxios_context) )778 CALL iom_get( numror, jpdom_autoglo, 'sshn' , ssh(:,:,Kmm), ldxios = lr xios )787 IF( lroxios ) CALL iom_swap( TRIM(crxios_context) ) 788 CALL iom_get( numror, jpdom_autoglo, 'sshn' , ssh(:,:,Kmm), ldxios = lroxios ) 779 789 ! 780 790 id1 = iom_varid( numror, 'e3t_b', ldstop = .FALSE. ) … … 789 799 ! 790 800 IF( MIN( id1, id2 ) > 0 ) THEN ! all required arrays exist 791 CALL iom_get( numror, jpdom_auto glo, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios )792 CALL iom_get( numror, jpdom_auto glo, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios )801 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lroxios ) 802 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lroxios ) 793 803 ! needed to restart if land processor not computed 794 804 IF(lwp) write(numout,*) 'dom_vvl_rst : e3t(:,:,:,Kbb) and e3t(:,:,:,Kmm) found in restart files' … … 804 814 IF(lwp) write(numout,*) 'e3t_n set equal to e3t_b.' 805 815 IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 806 CALL iom_get( numror, jpdom_auto glo, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lrxios )816 CALL iom_get( numror, jpdom_auto, 'e3t_b', e3t(:,:,:,Kbb), ldxios = lroxios ) 807 817 e3t(:,:,:,Kmm) = e3t(:,:,:,Kbb) 808 818 l_1st_euler = .true. … … 811 821 IF(lwp) write(numout,*) 'e3t_b set equal to e3t_n.' 812 822 IF(lwp) write(numout,*) 'l_1st_euler is forced to true' 813 CALL iom_get( numror, jpdom_auto glo, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lrxios )823 CALL iom_get( numror, jpdom_auto, 'e3t_n', e3t(:,:,:,Kmm), ldxios = lroxios ) 814 824 e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 815 825 l_1st_euler = .true. … … 836 846 ! ! ----------------------- ! 837 847 IF( MIN( id3, id4 ) > 0 ) THEN ! all required arrays exist 838 CALL iom_get( numror, jpdom_auto glo, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lrxios )839 CALL iom_get( numror, jpdom_auto glo, 'tilde_e3t_n', tilde_e3t_n(:,:,:), ldxios = lrxios )848 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_b', tilde_e3t_b(:,:,:), ldxios = lroxios ) 849 CALL iom_get( numror, jpdom_auto, 'tilde_e3t_n', tilde_e3t_n(:,:,:), ldxios = lroxios ) 840 850 ELSE ! one at least array is missing 841 851 tilde_e3t_b(:,:,:) = 0.0_wp … … 846 856 ! ! ------------ ! 847 857 IF( id5 > 0 ) THEN ! required array exists 848 CALL iom_get( numror, jpdom_auto glo, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lrxios )858 CALL iom_get( numror, jpdom_auto, 'hdiv_lf', hdiv_lf(:,:,:), ldxios = lroxios ) 849 859 ELSE ! array is missing 850 860 hdiv_lf(:,:,:) = 0.0_wp … … 852 862 ENDIF 853 863 ENDIF 854 IF( lr xios ) CALL iom_swap( TRIM(cxios_context) )864 IF( lroxios ) CALL iom_swap( TRIM(cxios_context) ) 855 865 ! 856 866 ELSE !* Initialize at "rest" … … 871 881 ssh(:,:,Kbb) = -ssh_ref 872 882 873 DO_2D _11_11883 DO_2D( 1, 1, 1, 1 ) 874 884 IF( ht_0(ji,jj)-ssh_ref < rn_wdmin1 ) THEN ! if total depth is less than min depth 875 885 ssh(ji,jj,Kbb) = rn_wdmin1 - (ht_0(ji,jj) ) … … 887 897 e3t(:,:,:,Kbb) = e3t(:,:,:,Kmm) 888 898 889 DO_2D _11_11899 DO_2D( 1, 1, 1, 1 ) 890 900 IF ( ht_0(ji,jj) .LE. 0.0 .AND. NINT( ssmask(ji,jj) ) .EQ. 1) THEN 891 901 CALL ctl_stop( 'dom_vvl_rst: ht_0 must be positive at potentially wet points' ) … … 1014 1024 END SUBROUTINE dom_vvl_ctl 1015 1025 1026 #endif 1027 1016 1028 !!====================================================================== 1017 1029 END MODULE domvvl -
NEMO/branches/2020/dev_12905_xios_restart/tests/VORTEX/MY_SRC/usrdef_hgr.F90
r12740 r13727 63 63 REAL(wp), DIMENSION(:,:), INTENT(out) :: pe1e2u, pe1e2v ! u- & v-surfaces (if reduction in strait) [m2] 64 64 ! 65 INTEGER :: ji, jj ! dummy loop indices65 INTEGER :: ji, jj ! dummy loop indices 66 66 REAL(wp) :: zphi0, zlam0, zbeta, zf0 67 REAL(wp) :: zti, z ui, ztj, zvj ! local scalars67 REAL(wp) :: zti, ztj ! local scalars 68 68 !!------------------------------------------------------------------------------- 69 69 ! … … 77 77 ! Position coordinates (in kilometers) 78 78 ! ========== 79 zlam0 = -(jpiglo-1)/2 * 1.e-3 * rn_dx 80 zphi0 = -(jpjglo-1)/2 * 1.e-3 * rn_dy 81 79 #if defined key_agrif 80 IF( Agrif_Root() ) THEN 81 #endif 82 ! Compatibility WITH old version: 83 ! jperio = 0 => Ni0glo = jpigo_old_version 84 ! => jpiglo-1 replaced by Ni0glo-1 85 zlam0 = -REAL( (Ni0glo-1)/2, wp) * 1.e-3 * rn_dx 86 zphi0 = -REAL( (Nj0glo-1)/2, wp) * 1.e-3 * rn_dy 82 87 #if defined key_agrif 83 ! ! let lower left longitude and latitude from parent 84 IF (.NOT.Agrif_root()) THEN 85 zlam0 = (0.5_wp-(Agrif_parent(jpiglo)-1)/2)*1.e-3*Agrif_irhox()*rn_dx & 86 &+(Agrif_Ix()+nbghostcells-1)*Agrif_irhox()*rn_dx*1.e-3-(0.5_wp+nbghostcells)*rn_dx*1.e-3 87 zphi0 = (0.5_wp-(Agrif_parent(jpjglo)-1)/2)*1.e-3*Agrif_irhoy()*rn_dy & 88 &+(Agrif_Iy()+nbghostcells-1)*Agrif_irhoy()*rn_dy*1.e-3-(0.5_wp+nbghostcells)*rn_dy*1.e-3 88 ELSE 89 ! ! let lower left longitude and latitude from parent 90 ! Compatibility WITH old version: 91 ! jperio = 0 => Ni0glo = jpigo_old_version 92 ! => Agrif_parent(jpiglo)-1 replaced by Agrif_parent(Ni0glo)-1 93 zlam0 = ( 0.5_wp - REAL( ( Agrif_parent(Ni0glo)-1 ) / 2, wp) ) * 1.e-3 * Agrif_irhox() * rn_dx & 94 & + ( Agrif_Ix() + nbghostcells - 1 ) * Agrif_irhox() * rn_dx * 1.e-3 - ( 0.5_wp + nbghostcells ) * rn_dx * 1.e-3 95 zphi0 = ( 0.5_wp - REAL( ( Agrif_parent(Nj0glo)-1 ) / 2, wp) ) * 1.e-3 * Agrif_irhoy() * rn_dy & 96 & + ( Agrif_Iy() + nbghostcells - 1 ) * Agrif_irhoy() * rn_dy * 1.e-3 - ( 0.5_wp + nbghostcells ) * rn_dy * 1.e-3 89 97 ENDIF 90 98 #endif 91 99 92 DO_2D _11_1193 zti = FLOAT( ji - 1 + nimpp - 1 ) ; ztj = FLOAT( jj - 1 + njmpp - 1 )94 z ui = FLOAT( ji - 1 + nimpp - 1 ) + 0.5_wp ; zvj = FLOAT( jj - 1 + njmpp - 1 ) + 0.5_wp100 DO_2D( 1, 1, 1, 1 ) 101 zti = REAL( mig0_oldcmp(ji) - 1, wp ) ! start at i=0 in the global grid without halos 102 ztj = REAL( mjg0_oldcmp(jj) - 1, wp ) ! start at j=0 in the global grid without halos 95 103 96 plamt(ji,jj) = zlam0 + rn_dx * 1.e-3 * zti97 plamu(ji,jj) = zlam0 + rn_dx * 1.e-3 * zui104 plamt(ji,jj) = zlam0 + rn_dx * 1.e-3 * zti 105 plamu(ji,jj) = zlam0 + rn_dx * 1.e-3 * ( zti + 0.5_wp ) 98 106 plamv(ji,jj) = plamt(ji,jj) 99 107 plamf(ji,jj) = plamu(ji,jj) 100 108 101 pphit(ji,jj) = zphi0 + rn_dy * 1.e-3 * ztj102 pphiv(ji,jj) = zphi0 + rn_dy * 1.e-3 * zvj109 pphit(ji,jj) = zphi0 + rn_dy * 1.e-3 * ztj 110 pphiv(ji,jj) = zphi0 + rn_dy * 1.e-3 * ( ztj + 0.5_wp ) 103 111 pphiu(ji,jj) = pphit(ji,jj) 104 112 pphif(ji,jj) = pphiv(ji,jj) -
NEMO/branches/2020/dev_12905_xios_restart/tests/VORTEX/MY_SRC/usrdef_istate.F90
r12740 r13727 75 75 ! Sea level: 76 76 za = -zP0 * (1._wp-EXP(-zH)) / (grav*(zH-1._wp + EXP(-zH))) 77 DO_2D _11_1177 DO_2D( 1, 1, 1, 1 ) 78 78 zx = glamt(ji,jj) * 1.e3 79 79 zy = gphit(ji,jj) * 1.e3 … … 83 83 ! 84 84 ! temperature: 85 DO_2D _11_1185 DO_2D( 1, 1, 1, 1 ) 86 86 zx = glamt(ji,jj) * 1.e3 87 87 zy = gphit(ji,jj) * 1.e3 … … 102 102 ! velocities: 103 103 za = 2._wp * zP0 / (zf0 * rho0 * zlambda**2) 104 DO_2D _00_00104 DO_2D( 0, 0, 0, 0 ) 105 105 zx = glamu(ji,jj) * 1.e3 106 106 zy = gphiu(ji,jj) * 1.e3 … … 116 116 END_2D 117 117 ! 118 DO_2D _00_00118 DO_2D( 0, 0, 0, 0 ) 119 119 zx = glamv(ji,jj) * 1.e3 120 120 zy = gphiv(ji,jj) * 1.e3 -
NEMO/branches/2020/dev_12905_xios_restart/tests/VORTEX/MY_SRC/usrdef_nam.F90
r12377 r13727 14 14 !! usr_def_hgr : initialize the horizontal mesh 15 15 !!---------------------------------------------------------------------- 16 USE dom_oce , ONLY: nimpp , njmpp ! i- & j-indices of the local domain16 USE dom_oce 17 17 USE par_oce ! ocean space and time domain 18 18 USE phycst ! physical constants … … 84 84 kpi = NINT( 1800.e3 / rn_dx ) + 3 85 85 kpj = NINT( 1800.e3 / rn_dy ) + 3 86 ELSE 87 kpi = nbcellsx + 2 + 2*nbghostcells 88 kpj = nbcellsy + 2 + 2*nbghostcells 86 ELSE ! Global Domain size: add nbghostcells + 1 "land" point on each side 87 kpi = nbcellsx + 2 * ( nbghostcells + 1 ) 88 kpj = nbcellsy + 2 * ( nbghostcells + 1 ) 89 !!$ kpi = nbcellsx + nbghostcells_x + nbghostcells_x + 2 90 !!$ kpj = nbcellsy + nbghostcells_y_s + nbghostcells_y_n + 2 89 91 ENDIF 90 92 kpk = NINT( 5000._wp / rn_dz ) + 1 … … 104 106 WRITE(numout,*) ' horizontal resolution rn_dy = ', rn_dy, ' m' 105 107 WRITE(numout,*) ' vertical resolution rn_dz = ', rn_dz, ' m' 108 WRITE(numout,*) ' resulting global domain size : Ni0glo = ', kpi 109 WRITE(numout,*) ' Nj0glo = ', kpj 110 WRITE(numout,*) ' jpkglo = ', kpk 106 111 WRITE(numout,*) ' VORTEX domain: ' 107 112 WRITE(numout,*) ' LX [km]: ', zlx
Note: See TracChangeset
for help on using the changeset viewer.