Changeset 13608
- Timestamp:
- 2020-10-14T18:31:28+02:00 (4 years ago)
- Location:
- NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/nemogcm.F90
r13427 r13608 42 42 !!---------------------------------------------------------------------- 43 43 USE step_oce ! module used in the ocean time stepping module (step.F90) 44 ! 44 45 USE phycst ! physical constant (par_cst routine) 45 46 USE domain ! domain initialization (dom_init & dom_cfg routines) 46 USE closea ! treatment of closed seas (for ln_closea)47 USE usrdef_nam ! user defined configuration 48 USE tide_mod, ONLY : tide_init ! tidal components initialization (tide_init routine)49 USE bdyini 47 USE wet_dry ! Wetting and drying setting (wad_init routine) 48 USE usrdef_nam ! user defined configuration namelist 49 USE tide_mod, ONLY : tide_init ! tidal components initialization (tide_init routine) 50 USE bdyini , ONLY : bdy_init ! open boundary cond. setting (bdy_init routine) 50 51 USE istate ! initial state setting (istate_init routine) 51 USE ldfdyn ! lateral viscosity setting (ldfdyn_init routine)52 USE ldftra ! lateral diffusivity setting (ldftra_init routine)53 52 USE trdini ! dyn/tra trends initialization (trd_init routine) 54 USE asminc ! assimilation increments 55 USE asmbkg ! writing out state trajectory 56 USE diaptr ! poleward transports (dia_ptr_init routine) 57 USE diadct ! sections transports (dia_dct_init routine) 58 USE diaobs ! Observation diagnostics (dia_obs_init routine) 59 USE diacfl ! CFL diagnostics (dia_cfl_init routine) 60 USE diamlr ! IOM context management for multiple-linear-regression analysis 53 USE icbini ! handle bergs, initialisation 54 USE icbstp , ONLY : icb_end ! handle bergs, close iceberg files 55 USE cpl_oasis3 ! OASIS3 coupling 56 USE dyndmp ! Momentum damping (C1D only) 57 USE step_diu ! diurnal bulk SST timestepping (called from here if run offline) 58 USE crsini ! initialise grid coarsening utility 59 USE dia25h , ONLY : dia_25h_init ! 25h mean output (initialisation) 60 USE c1d ! 1D configuration 61 USE step_c1d ! Time stepping loop for the 1D configuration 62 #if defined key_top 63 USE trcini ! passive tracer initialisation 64 #endif 65 #if defined key_nemocice_decomp 66 USE ice_domain_size, only: nx_global, ny_global 67 #endif 61 68 #if defined key_qco 62 USE st epMLF ! NEMO time-stepping (stp_MLF routine)69 USE stpMLF ! NEMO time-stepping (stp_MLF routine) 63 70 #else 64 71 USE step ! NEMO time-stepping (stp routine) 65 72 #endif 66 USE isfstp ! ice shelf (isf_stp_init routine)67 USE icbini ! handle bergs, initialisation68 USE icbstp ! handle bergs, calving, themodynamics and transport69 USE cpl_oasis3 ! OASIS3 coupling70 USE c1d ! 1D configuration71 USE step_c1d ! Time stepping loop for the 1D configuration72 USE dyndmp ! Momentum damping73 USE stopar ! Stochastic param.: ???74 USE stopts ! Stochastic param.: ???75 USE diu_layers ! diurnal bulk SST and coolskin76 USE step_diu ! diurnal bulk SST timestepping (called from here if run offline)77 USE crsini ! initialise grid coarsening utility78 USE dia25h ! 25h mean output79 USE diadetide ! Weights computation for daily detiding of model diagnostics80 USE sbc_oce , ONLY : lk_oasis81 USE wet_dry ! Wetting and drying setting (wad_init routine)82 #if defined key_top83 USE trcini ! passive tracer initialisation84 #endif85 #if defined key_nemocice_decomp86 USE ice_domain_size, only: nx_global, ny_global87 #endif88 73 ! 89 USE prtctl ! Print control90 USE in_out_manager ! I/O manager91 74 USE lib_mpp ! distributed memory computing 92 75 USE mppini ! shared/distributed memory setting (mpp_init routine) 93 76 USE lbcnfd , ONLY : isendto, nsndto ! Setup of north fold exchanges 94 77 USE lib_fortran ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 95 #if defined key_iomput 96 USE xios ! xIOserver 97 #endif 98 #if defined key_agrif 99 USE agrif_all_update ! Master Agrif update 100 #endif 101 USE halo_mng 78 USE halo_mng ! Halo manager 102 79 103 80 IMPLICIT NONE … … 196 173 ! 197 174 DO WHILE( istp <= nitend .AND. nstop == 0 ) 198 175 ! 199 176 ncom_stp = istp 200 177 IF( ln_timing ) THEN … … 203 180 IF ( istp == nitend ) elapsed_time = zstptiming - elapsed_time 204 181 ENDIF 205 182 ! 206 183 # if defined key_qco 207 184 CALL stp_MLF ( istp ) … … 210 187 # endif 211 188 istp = istp + 1 212 189 ! 213 190 IF( lwp .AND. ln_timing ) WRITE(numtime,*) 'timing step ', istp-1, ' : ', MPI_Wtime() - zstptiming 214 191 ! 215 192 END DO 216 193 ! … … 280 257 INTEGER :: ios, ilocal_comm ! local integers 281 258 !! 282 NAMELIST/namctl/ sn_cfctl, ln_timing, ln_diacfl, 283 & nn_isplt, nn_jsplt, nn_ictls, nn_ictle, nn_jctls, nn_jctle259 NAMELIST/namctl/ sn_cfctl, ln_timing, ln_diacfl, nn_isplt, nn_jsplt , nn_ictls, & 260 & nn_ictle, nn_jctls , nn_jctle 284 261 NAMELIST/namcfg/ ln_read_cfg, cn_domcfg, ln_closea, ln_write_cfg, cn_domcfg_out, ln_use_jattr 285 262 !!---------------------------------------------------------------------- -
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/oce.F90
r13237 r13608 16 16 PRIVATE 17 17 18 PUBLIC oce_alloc ! routine called by nemo_init in nemogcm.F90 18 PUBLIC oce_alloc ! routine called by nemo_init in nemogcm.F90 19 PUBLIC oce_SWE_alloc ! routine called by nemo_init in SWE/nemogcm.F90 (Shallow Water Eq. case) 19 20 20 21 !! dynamics and tracer fields … … 68 69 INTEGER, PUBLIC, DIMENSION(2) :: noce_array !: unused array but seems to be needed to prevent agrif from creating an empty module 69 70 71 !! Shallow Water Eq. case (SWE) 72 LOGICAL, PUBLIC :: lk_SWE = .FALSE. !: shallow water flag =T in SWE configurations only 73 70 74 !!---------------------------------------------------------------------- 71 75 !! NEMO/OCE 4.0 , NEMO Consortium (2018) … … 115 119 END FUNCTION oce_alloc 116 120 121 122 INTEGER FUNCTION oce_SWE_alloc() 123 !!---------------------------------------------------------------------- 124 !! *** FUNCTION oce_SWE_alloc *** 125 !!---------------------------------------------------------------------- 126 INTEGER :: ierr(2) 127 !!---------------------------------------------------------------------- 128 ! 129 lk_SWE = .TRUE. ! =T SWE case 130 ! 131 ierr(:) = 0 132 ALLOCATE( uu(jpi,jpj,jpk,jpt) , vv (jpi,jpj,jpk,jpt) , & 133 & ww(jpi,jpj,jpk) , hdiv(jpi,jpj,jpk) , ssh(jpi,jpj,jpt) , STAT=ierr(1) ) 134 ! 135 ALLOCATE( ts(jpi,jpj,jpk,jpts,jpt) , fraqsr_1lev(jpi,jpj) , & 136 & uu_b(jpi,jpj,jpt) , vv_b(jpi,jpj,jpt) , rn2(jpi,jpj,jpk) , STAT=ierr(2) ) 137 ! 138 oce_SWE_alloc = MAXVAL( ierr ) 139 IF( oce_SWE_alloc /= 0 ) CALL ctl_stop( 'STOP', 'oce_SWE_alloc: failed to allocate arrays' ) 140 ! 141 END FUNCTION oce_SWE_alloc 142 117 143 !!====================================================================== 118 144 END MODULE oce -
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/step.F90
r13237 r13608 42 42 !!---------------------------------------------------------------------- 43 43 USE step_oce ! time stepping definition modules 44 !45 USE iom ! xIOs server46 44 47 45 IMPLICIT NONE -
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/step_oce.F90
r12377 r13608 3 3 !! *** MODULE step_oce *** 4 4 !! Ocean time-stepping : module used in both initialisation phase and time stepping 5 !! (i.e. nemo_init and stp or stp_MLF routines) 5 6 !!====================================================================== 6 7 !! History : 3.3 ! 2010-08 (C. Ethe) Original code - reorganisation of the initial phase … … 9 10 USE oce ! ocean dynamics and tracers variables 10 11 USE dom_oce ! ocean space and time domain variables 11 USE zdf_oce ! ocean vertical physics variables12 USE zdfdrg , ONLY : ln_drgimp ! implicit top/bottom friction13 12 14 13 USE daymod ! calendar (day routine) … … 19 18 USE sbccpl ! surface boundary condition: coupled formulation (call send at end of step) 20 19 USE sbcapr ! surface boundary condition: atmospheric pressure 21 USE tide_mod, ONLY : ln_tide, tide_update22 20 USE sbcwave ! Wave intialisation 21 USE tide_mod ! tides 22 23 USE bdy_oce , ONLY : ln_bdy 24 USE bdydta ! open boundary condition data (bdy_dta routine) 25 USE bdytra ! bdy cond. for tracers (bdy_tra routine) 26 USE bdydyn3d ! bdy cond. for baroclinic vel. (bdy_dyn3d routine) 23 27 24 28 USE isf_oce ! ice shelf boundary condition 25 29 USE isfstp ! ice shelf boundary condition (isf_stp routine) 30 31 USE sshwzv ! vertical velocity and ssh (ssh_nxt routine) 32 ! (ssh_swp routine) 33 ! (wzv routine) 34 USE domvvl ! variable vertical scale factors (dom_vvl_sf_nxt routine) 35 ! (dom_vvl_sf_swp routine) 36 37 USE divhor ! horizontal divergence (div_hor routine) 38 USE dynadv ! advection (dyn_adv routine) 39 USE dynvor ! vorticity term (dyn_vor routine) 40 USE dynhpg ! hydrostatic pressure grad. (dyn_hpg routine) 41 USE dynldf ! lateral momentum diffusion (dyn_ldf routine) 42 USE dynzdf ! vertical diffusion (dyn_zdf routine) 43 USE dynspg ! surface pressure gradient (dyn_spg routine) 44 USE dynatf ! time-filtering (dyn_atf routine) 26 45 27 46 USE traqsr ! solar radiation penetration (tra_qsr routine) … … 39 58 USE eosbn2 ! equation of state (eos_bn2 routine) 40 59 41 USE divhor ! horizontal divergence (div_hor routine)42 USE dynadv ! advection (dyn_adv routine)43 USE dynvor ! vorticity term (dyn_vor routine)44 USE dynhpg ! hydrostatic pressure grad. (dyn_hpg routine)45 USE dynldf ! lateral momentum diffusion (dyn_ldf routine)46 USE dynzdf ! vertical diffusion (dyn_zdf routine)47 USE dynspg ! surface pressure gradient (dyn_spg routine)48 49 USE dynatf ! time-filtering (dyn_atf routine)50 51 60 USE stopar ! Stochastic parametrization (sto_par routine) 52 61 USE stopts 53 54 USE bdy_oce , ONLY : ln_bdy55 USE bdydta ! open boundary condition data (bdy_dta routine)56 USE bdytra ! bdy cond. for tracers (bdy_tra routine)57 USE bdydyn3d ! bdy cond. for baroclinic vel. (bdy_dyn3d routine)58 59 USE sshwzv ! vertical velocity and ssh (ssh_nxt routine)60 ! (ssh_swp routine)61 ! (wzv routine)62 USE domvvl ! variable vertical scale factors (dom_vvl_sf_nxt routine)63 ! (dom_vvl_sf_swp routine)64 62 65 63 USE ldfslp ! iso-neutral slopes (ldf_slp routine) … … 67 65 USE ldftra ! lateral eddy diffusive coef. (ldf_tra routine) 68 66 67 USE zdf_oce ! ocean vertical physics variables 69 68 USE zdfphy ! vertical physics manager (zdf_phy_init routine) 70 USE zdfosm , ONLY : osm_rst, dyn_osm, tra_osm ! OSMOSIS routines used in step.F90 69 USE zdfdrg , ONLY : ln_drgimp ! implicit top/bottom friction 70 USE zdfosm , ONLY : osm_rst, dyn_osm, tra_osm ! OSMOSIS routines used in step.F90 71 71 72 72 USE diu_layers ! diurnal SST bulk and coolskin routines … … 81 81 USE diahth ! thermocline depth (dia_hth routine) 82 82 USE diahsb ! heat, salt and volume budgets (dia_hsb routine) 83 USE diacfl 84 USE diaobs ! Observation operator 83 USE diacfl ! CFL diagnostics (dia_cfl routine) 84 USE diaobs ! Observation operator (dia_obs routine) 85 85 USE diadetide ! Weights computation for daily detiding of model diagnostics 86 86 USE diamlr ! IOM context management for multiple-linear-regression analysis … … 92 92 USE asminc ! assimilation increments (tra_asm_inc routine) 93 93 ! (dyn_asm_inc routine) 94 USE asmbkg 94 USE asmbkg ! writing out state trajectory 95 95 USE stpctl ! time stepping control (stp_ctl routine) 96 96 USE restart ! ocean restart (rst_wri routine) -
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/stpMLF.F90
r13427 r13608 1 MODULE st epMLF1 MODULE stpMLF 2 2 !!====================================================================== 3 !! *** MODULE st ep***3 !! *** MODULE stpMLF *** 4 4 !! Time-stepping : manager of the ocean, tracer and ice time stepping 5 !! using Modified Leap Frog for OCE 5 6 !!====================================================================== 6 7 !! History : OPA ! 1991-03 (G. Madec) Original code … … 32 33 !! 4.0 ! 2017-05 (G. Madec) introduction of the vertical physics manager (zdfphy) 33 34 !! 4.1 ! 2019-08 (A. Coward, D. Storkey) rewrite in preparation for new timestepping scheme 34 !! 4.x ! 2020-08 (S. Techene, G. Madec) quasi eulerian coordinate time stepping 35 !! 4.x ! 2020-08 (S. Techene, G. Madec) quasi eulerian coordinate time stepping 35 36 !!---------------------------------------------------------------------- 36 37 … … 45 46 USE step_oce ! time stepping definition modules 46 47 ! 47 USE iom ! xIOs server 48 USE domqco 48 USE domqco ! quasi-eulerian coordinate 49 49 USE traatfqco ! time filtering (tra_atf_qco routine) 50 50 USE dynatfqco ! time filtering (dyn_atf_qco routine) … … 57 57 PUBLIC stp_MLF ! called by nemogcm.F90 58 58 59 ! !----------------------------------------------------------------------60 !! time level indices61 !!---------------------------------------------------------------------- 62 INTEGER, PUBLIC :: Nbb, Nnn, Naa, Nrhs !! used by nemo_init59 ! !** time level indices **! 60 INTEGER, PUBLIC :: Nbb, Nnn, Naa, Nrhs !: used by nemo_init 61 62 !! * Substitutions 63 63 # include "domzgr_substitute.h90" 64 64 !!---------------------------------------------------------------------- … … 94 94 INTEGER :: ji, jj, jk ! dummy loop indice 95 95 INTEGER :: indic ! error indicator if < 0 96 !!gm kcall can be removed, I guess97 INTEGER :: kcall ! optional integer argument (dom_vvl_sf_nxt)98 !!st patch99 96 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zgdept 100 97 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zssh_f … … 119 116 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 120 117 ! 121 IF( l_1st_euler ) THEN 122 ! start or restart with Euler 1st time-step 123 rDt = rn_Dt 118 IF( l_1st_euler ) THEN ! start or restart with Euler 1st time-step 119 rDt = rn_Dt 124 120 r1_Dt = 1._wp / rDt 125 121 ENDIF 126 122 ! 127 123 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 128 129 124 ! update I/O and calendar 130 125 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< … … 374 369 ! 375 370 IF( l_1st_euler ) THEN ! recover Leap-frog timestep 376 rDt = 2._wp * rn_Dt371 rDt = 2._wp * rn_Dt 377 372 r1_Dt = 1._wp / rDt 378 373 l_1st_euler = .FALSE. … … 477 472 478 473 !!====================================================================== 479 END MODULE st epMLF474 END MODULE stpMLF -
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OCE/stpctl.F90
r13216 r13608 26 26 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 27 27 USE lib_mpp ! distributed memory computing 28 !29 28 USE netcdf ! NetCDF library 29 30 30 IMPLICIT NONE 31 31 PRIVATE … … 72 72 CHARACTER(len=20) :: clname 73 73 !!---------------------------------------------------------------------- 74 ! 74 75 IF( nstop > 0 .AND. ngrdstop > -1 ) RETURN ! stpctl was already called by a child grid 75 76 ! … … 166 167 ENDIF 167 168 IF( kt == nitend ) istatus = NF90_CLOSE(nrunid) 168 END 169 ENDIF 169 170 ! !== error handling ==! 170 171 ! !== done by all processes at every time step ==! -
NEMO/branches/2020/dev_r13327_KERNEL-06_2_techene_e3/src/OFF/nemogcm.F90
r13427 r13608 65 65 USE lbcnfd , ONLY : isendto, nsndto ! Setup of north fold exchanges 66 66 #if defined key_qco 67 USE st epMLF , ONLY : Nbb, Nnn, Naa, Nrhs ! time level indices67 USE stpMLF , ONLY : Nbb, Nnn, Naa, Nrhs ! time level indices 68 68 #else 69 69 USE step , ONLY : Nbb, Nnn, Naa, Nrhs ! time level indices
Note: See TracChangeset
for help on using the changeset viewer.