Changeset 2382 for branches/nemo_v3_3_beta
- Timestamp:
- 2010-11-13T14:08:12+01:00 (14 years ago)
- Location:
- branches/nemo_v3_3_beta/NEMOGCM/NEMO
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/nemo_v3_3_beta/NEMOGCM/NEMO/C1D_SRC/c1d.F90
r2287 r2382 20 20 !! NEMO/C1D 3.3 , NEMO Consortium (2010) 21 21 !! $Id$ 22 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)23 !!===================================================================== 22 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 23 !!====================================================================== 24 24 END MODULE c1d -
branches/nemo_v3_3_beta/NEMOGCM/NEMO/C1D_SRC/diawri_c1d.F90
r2364 r2382 46 46 !! NEMO/C1D 3.3 , NEMO Consortium (2010) 47 47 !! $Id$ 48 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 49 !!---------------------------------------------------------------------- 50 48 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 49 !!---------------------------------------------------------------------- 51 50 CONTAINS 52 51 -
branches/nemo_v3_3_beta/NEMOGCM/NEMO/C1D_SRC/dyncor_c1d.F90
r2287 r2382 31 31 !! NEMO/C1D 3.3 , NEMO Consortium (2010) 32 32 !! $Id$ 33 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)33 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 34 34 !!---------------------------------------------------------------------- 35 36 35 CONTAINS 37 36 … … 40 39 !! *** ROUTINE cor_c1d *** 41 40 !! 42 !! ** Purpose : Computethe Coriolis factor at T-point41 !! ** Purpose : set the Coriolis factor at T-point 43 42 !!---------------------------------------------------------------------- 44 43 REAL(wp) :: zphi0, zbeta, zf0 ! temporary scalars … … 83 82 !! *** ROUTINE dyn_cor_c1d *** 84 83 !! 85 !! ** Purpose : Compute the now total vorticity trend and add it to 86 !! the general trend of the momentum equation 87 !! 88 !! ** Method : 89 !! 90 !! History : 91 !! 9.0 ! 04-09 (C. Ethe) 1D configuration 84 !! ** Purpose : Compute the now Coriolis trend and add it to 85 !! the general trend of the momentum equation in 1D case. 92 86 !!---------------------------------------------------------------------- 93 87 INTEGER, INTENT( in ) :: kt ! ocean time-step index -
branches/nemo_v3_3_beta/NEMOGCM/NEMO/C1D_SRC/dynnxt_c1d.F90
r2287 r2382 11 11 !! 'key_c1d' 1D Configuration 12 12 !!---------------------------------------------------------------------- 13 !!----------------------------------------------------------------------14 13 !! dyn_nxt_c1d : update the horizontal velocity from the momentum trend 15 14 !!---------------------------------------------------------------------- … … 27 26 !! NEMO/C1D 3.3 , NEMO Consortium (2010) 28 27 !! $Id$ 29 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)28 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 30 29 !!---------------------------------------------------------------------- 31 32 30 CONTAINS 33 31 … … 36 34 !! *** ROUTINE dyn_nxt_c1d *** 37 35 !! 38 !! ** Purpose : Compute the after horizontal velocity from the 39 !! momentum trend. 36 !! ** Purpose : Compute the after horizontal velocity from the momentum trend. 40 37 !! 41 38 !! ** Method : Apply lateral boundary conditions on the trends (ua,va) … … 61 58 IF(lwp) WRITE(numout,*) 62 59 IF(lwp) WRITE(numout,*) 'dyn_nxt_c1d : time stepping on 1D configuation' 63 IF(lwp) WRITE(numout,*) '~~~~~~~ '60 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 64 61 ENDIF 65 62 66 ! Local constant initialization 67 z2dt = 2. * rdt 63 z2dt = 2._wp * rdt ! Local constant initialization 68 64 IF( neuler == 0 .AND. kt == nit000 ) z2dt = rdt 69 65 70 ! Lateral boundary conditions on ( ua, va ) 71 CALL lbc_lnk( ua, 'U', -1. ) 72 CALL lbc_lnk( va, 'V', -1. ) 66 CALL lbc_lnk( ua, 'U', -1. ) ; CALL lbc_lnk( va, 'V', -1. ) ! Lateral boundary conditions 73 67 74 DO jk = 1, jpkm1 ! Next Velocity68 DO jk = 1, jpkm1 ! Next Velocity 75 69 ua(:,:,jk) = ( ub(:,:,jk) + z2dt * ua(:,:,jk) ) * umask(:,:,jk) 76 70 va(:,:,jk) = ( vb(:,:,jk) + z2dt * va(:,:,jk) ) * vmask(:,:,jk) 77 71 END DO 78 72 79 DO jk = 1, jpkm1 ! Time filter and swap of dynamics arrays80 IF( neuler == 0 .AND. kt == nit000 ) THEN ! Euler (forward) time stepping73 DO jk = 1, jpkm1 ! Time filter and swap of dynamics arrays 74 IF( neuler == 0 .AND. kt == nit000 ) THEN ! Euler (forward) time stepping 81 75 ub(:,:,jk) = un(:,:,jk) 82 76 vb(:,:,jk) = vn(:,:,jk) 83 77 un(:,:,jk) = ua(:,:,jk) 84 78 vn(:,:,jk) = va(:,:,jk) 85 ELSE ! Leap-frog time stepping79 ELSE ! Leap-frog time stepping 86 80 ub(:,:,jk) = atfp * ( ub(:,:,jk) + ua(:,:,jk) ) + atfp1 * un(:,:,jk) 87 81 vb(:,:,jk) = atfp * ( vb(:,:,jk) + va(:,:,jk) ) + atfp1 * vn(:,:,jk) -
branches/nemo_v3_3_beta/NEMOGCM/NEMO/C1D_SRC/step_c1d.F90
r2287 r2382 13 13 !! stp_c1d : NEMO system time-stepping in c1d case 14 14 !!---------------------------------------------------------------------- 15 USE oce ! ocean dynamics and tracers variables 16 USE dom_oce ! ocean space and time domain variables 17 USE zdf_oce ! ocean vertical physics variables 18 USE in_out_manager ! I/O manager 19 USE iom ! 20 USE lbclnk 21 22 USE daymod ! calendar (day routine) 23 24 USE dtatem ! ocean temperature data (dta_tem routine) 25 USE dtasal ! ocean salinity data (dta_sal routine) 26 USE sbcmod ! surface boundary condition (sbc routine) 27 USE sbcrnf ! surface boundary condition: runoff variables 28 29 USE trcstp ! passive tracer time-stepping (trc_stp routine) 30 31 USE traqsr ! solar radiation penetration (tra_qsr routine) 32 USE trasbc ! surface boundary condition (tra_sbc routine) 33 ! zdfkpp ! KPP non-local tracer fluxes (tra_kpp routine) 34 USE trazdf ! vertical mixing (tra_zdf routine) 35 USE tranxt ! time-stepping (tra_nxt routine) 36 USE tranpc ! non-penetrative convection (tra_npc routine) 37 38 USE eosbn2 ! equation of state (eos_bn2 routine) 39 15 USE step_oce ! time stepping definition modules 16 #if defined key_top 17 USE trcstp ! passive tracer time-stepping (trc_stp routine) 18 #endif 40 19 USE dyncor_c1d ! Coriolis term (c1d case) (dyn_cor_1d ) 41 USE dynzdf ! vertical diffusion (dyn_zdf routine)42 20 USE dynnxt_c1d ! time-stepping (dyn_nxt routine) 43 21 USE diawri_c1d ! write outputs (dia_wri_c1d routine) 44 45 USE zdfbfr ! bottom friction (zdf_bfr routine)46 USE zdftke ! TKE vertical mixing (zdf_tke routine)47 USE zdfkpp ! KPP vertical mixing (zdf_kpp routine)48 USE zdfddm ! double diffusion mixing (zdf_ddm routine)49 USE zdfevd ! enhanced vertical diffusion (zdf_evd routine)50 USE zdfric ! Richardson vertical mixing (zdf_ric routine)51 USE zdfmxl ! Mixed-layer depth (zdf_mxl routine)52 53 54 USE diawri ! Standard run outputs (dia_wri routine)55 56 USE stpctl ! time stepping control (stp_ctl routine)57 USE restart ! ocean restart (rst_wri routine)58 USE prtctl ! Print control (prt_ctl routine)59 22 60 23 IMPLICIT NONE … … 69 32 !! NEMO/C1D 3.3 , NEMO Consortium (2010) 70 33 !! $Id$ 71 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)34 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 72 35 !!---------------------------------------------------------------------- 73 74 36 CONTAINS 75 37 … … 96 58 !! --------------------------------------------------------------------- 97 59 98 indic = 1 ! reset to no error condition 99 100 CALL day( kstp ) ! Calendar 101 102 CALL rst_opn( kstp ) ! Open the restart file 60 indic = 0 ! reset to no error condition 61 IF( kstp /= nit000 ) CALL day( kstp ) ! Calendar (day was already called at nit000 in day_init) 62 CALL iom_setkt( kstp ) ! say to iom that we are at time step kstp 103 63 104 64 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 105 65 ! Update data, open boundaries, surface boundary condition (including sea-ice) 106 66 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 107 108 67 IF( lk_dtatem ) CALL dta_tem( kstp ) ! update 3D temperature data 109 68 IF( lk_dtasal ) CALL dta_sal( kstp ) ! update 3D salinity data 110 111 69 CALL sbc ( kstp ) ! Sea Boundary Condition (including sea-ice) 112 70 113 IF( ninist == 1 ) THEN ! Output the initial state and forcings 114 CALL dia_wri_state( 'output.init', kstp ) ; ninist = 0 71 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 72 ! Ocean physics update (ua, va, ta, sa used as workspace) 73 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 74 CALL bn2( tsb, rn2b ) ! before Brunt-Vaisala frequency 75 CALL bn2( tsn, rn2 ) ! now Brunt-Vaisala frequency 76 ! VERTICAL PHYSICS 77 CALL zdf_bfr( kstp ) ! bottom friction 78 ! ! Vertical eddy viscosity and diffusivity coefficients 79 IF( lk_zdfric ) CALL zdf_ric( kstp ) ! Richardson number dependent Kz 80 IF( lk_zdftke ) CALL zdf_tke( kstp ) ! TKE closure scheme for Kz 81 IF( lk_zdfgls ) CALL zdf_gls( kstp ) ! GLS closure scheme for Kz 82 IF( lk_zdfkpp ) CALL zdf_kpp( kstp ) ! KPP closure scheme for Kz 83 IF( lk_zdfcst ) THEN ! Constant Kz (reset avt, avm[uv] to the background value) 84 avt (:,:,:) = rn_avt0 * tmask(:,:,:) 85 avmu(:,:,:) = rn_avm0 * umask(:,:,:) 86 avmv(:,:,:) = rn_avm0 * vmask(:,:,:) 115 87 ENDIF 116 88 89 IF( ln_rnf_mouth ) THEN ! increase diffusivity at rivers mouths 90 DO jk = 2, nkrnf ; avt(:,:,jk) = avt(:,:,jk) + 2.e0 * rn_avt_rnf * rnfmsk(:,:) ; END DO 91 ENDIF 92 IF( ln_zdfevd ) CALL zdf_evd( kstp ) ! enhanced vertical eddy diffusivity 93 94 IF( lk_zdftmx ) CALL zdf_tmx( kstp ) ! tidal vertical mixing 95 96 IF( lk_zdfddm .AND. .NOT. lk_zdfkpp ) & 97 & CALL zdf_ddm( kstp ) ! double diffusive mixing 98 99 CALL zdf_mxl( kstp ) ! mixed layer depth 100 101 ! write tke information in the restart file 102 IF( lrst_oce .AND. lk_zdftke ) CALL tke_rst( kstp, 'WRITE' ) 103 ! write gls information in the restart file 104 IF( lrst_oce .AND. lk_zdfgls ) CALL gls_rst( kstp, 'WRITE' ) 117 105 118 106 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 119 ! Ocean physics update107 ! diagnostics and outputs (ua, va, ta, sa used as workspace) 120 108 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 121 !----------------------------------------------------------------------- 122 ! VERTICAL PHYSICS 123 !----------------------------------------------------------------------- 124 ! N.B. ua, va, ta, sa arrays are used as workspace in this section 125 !----------------------------------------------------------------------- 126 127 CALL bn2( tb, sb, rn2 ) ! before Brunt-Vaisala frequency 128 129 ! ! Vertical eddy viscosity and diffusivity coefficients 130 IF( lk_zdfric ) CALL zdf_ric( kstp ) ! Richardson number dependent Kz 131 IF( lk_zdftke ) CALL zdf_tke( kstp ) ! TKE closure scheme for Kz 132 IF( lk_zdfkpp ) CALL zdf_kpp( kstp ) ! KPP closure scheme for Kz 133 IF( lk_zdfcst ) THEN ! Constant Kz (reset avt, avm to the background value) 134 avt (:,:,:) = avt0 * tmask(:,:,:) 135 avmu(:,:,:) = avm0 * umask(:,:,:) 136 avmv(:,:,:) = avm0 * vmask(:,:,:) 137 ENDIF 138 139 IF( ln_rnf_mouth ) THEN ! increase diffusivity at rivers mouths 140 DO jk = 2, nkrnf ; avt(:,:,jk) = avt(:,:,jk) + 2.e0 * rn_avt_rnf * rnfmsk(:,:) ; END DO 141 ENDIF 142 IF( ln_zdfevd ) CALL zdf_evd( kstp ) ! enhanced vertical eddy diffusivity 143 IF( lk_zdfddm .AND. .NOT. lk_zdfkpp ) & 144 & CALL zdf_ddm( kstp ) ! double diffusive mixing 145 CALL zdf_bfr( kstp ) ! bottom friction 146 CALL zdf_mxl( kstp ) ! mixed layer depth 109 CALL dia_wri_c1d( kstp, indic ) ! ocean model: outputs 147 110 148 111 #if defined key_top … … 150 113 ! Passive Tracer Model 151 114 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 152 ! N.B. ua, va, ta, sa arrays are used as workspace in this section 153 !----------------------------------------------------------------------- 154 CALL trc_stp( kstp, indic ) ! time-stepping 115 CALL trc_stp( kstp, indic ) ! time-stepping 155 116 #endif 156 117 157 118 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 158 ! Active tracers 119 ! Active tracers (ua, va used as workspace) 159 120 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 160 ! N.B. ua, va arrays are used as workspace in this section161 !-----------------------------------------------------------------------162 121 tsa(:,:,:,:) = 0.e0 ! set tracer trends to zero 163 122 164 123 CALL tra_sbc ( kstp ) ! surface boundary condition 165 124 IF( ln_traqsr ) CALL tra_qsr ( kstp ) ! penetrative solar radiation qsr 166 IF( lk_zdfkpp )CALL tra_kpp ( kstp ) ! KPP non-local tracer fluxes125 IF( lk_zdfkpp ) CALL tra_kpp ( kstp ) ! KPP non-local tracer fluxes 167 126 CALL tra_zdf ( kstp ) ! vertical mixing 168 127 CALL tra_nxt ( kstp ) ! tracer fields at next time step 169 128 IF( ln_zdfnpc ) CALL tra_npc ( kstp ) ! applied non penetrative convective adjustment on (t,s) 170 CALL eos( tsb, rhd, rhop ) ! now (swap=before) in situ density for dynhpg module 129 CALL eos( tsb, rhd, rhop ) ! now (swap=before) in situ density for dynhpg module 130 CALL tra_unswap ! udate T & S 3D arrays (to be suppressed) 171 131 172 132 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 173 ! Dynamics 133 ! Dynamics (ta, sa used as workspace) 174 134 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 175 ! N.B. ta, sa arrays are used as workspace in this section176 !-----------------------------------------------------------------------177 135 ua(:,:,:) = 0.e0 ! set dynamics trends to zero 178 136 va(:,:,:) = 0.e0 … … 188 146 IF( kstp == nit000 ) CALL iom_close( numror ) ! close input ocean restart file 189 147 IF( lrst_oce ) CALL rst_write ( kstp ) ! write output ocean restart file 190 191 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>192 ! diagnostics and outputs193 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<194 ! N.B. ua, va, ta, sa arrays are used as workspace in this section195 !-----------------------------------------------------------------------196 197 IF( nstop == 0 ) CALL dia_wri_c1d( kstp, indic ) ! ocean model: outputs198 148 ! 199 149 END SUBROUTINE stp_c1d -
branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90
r2364 r2382 11 11 !! NEMO 1.0 ! 2002-08 (G. Madec) F90: Free form and module 12 12 !! 2.0 ! 2005-11 (V. Garnier) Surface pressure gradient organization 13 !! 3.3 ! 2010-11 (G. Madec) initialisation in C1D configuration 13 14 !!---------------------------------------------------------------------- 14 15 … … 18 19 !! dom_ctl : control print for the ocean domain 19 20 !!---------------------------------------------------------------------- 20 USE oce ! 21 USE dom_oce ! ocean space and time domain21 USE oce ! ocean variables 22 USE dom_oce ! domain: ocean 22 23 USE sbc_oce ! surface boundary condition: ocean 23 24 USE phycst ! physical constants … … 32 33 USE domwri ! domain: write the meshmask file 33 34 USE domvvl ! variable volume 35 #if defined key_c1d 36 USE dyncor_c1d ! Coriolis term (c1d case) (cor_c1d routine) 37 #endif 34 38 35 39 IMPLICIT NONE … … 43 47 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 44 48 !! $Id$ 45 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)49 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 46 50 !!------------------------------------------------------------------------- 47 48 51 CONTAINS 49 52 … … 62 65 !! - dom_stp: defined the model time step 63 66 !! - dom_wri: create the meshmask file if nmsh=1 67 !! - "key_c1d": 1D configuration, move Coriolis, u and v at T-point 64 68 !!---------------------------------------------------------------------- 65 69 INTEGER :: jk ! dummy loop argument … … 79 83 CALL dom_msk ! Masks 80 84 IF( lk_vvl ) CALL dom_vvl ! Vertical variable mesh 85 ! 86 #if defined key_c1d 87 ! ! 1D configuration ("key_c1d") 88 CALL cor_c1d ! Coriolis set at T-point 89 umask(:,:,:) = tmask(:,:,:) ! U, V moved at T-point 90 vmask(:,:,:) = tmask(:,:,:) 91 #endif 81 92 ! 82 93 hu(:,:) = 0.e0 ! Ocean depth at U- and V-points … … 188 199 #endif 189 200 190 REWIND( numnam ) ! Namelist namdom : space & time domain (bathymetry, mesh, timestep)201 REWIND( numnam ) ! Namelist namdom : space & time domain (bathymetry, mesh, timestep) 191 202 READ ( numnam, namdom ) 192 203 … … 224 235 nclosea = nn_closea 225 236 226 REWIND( numnam ) ! Namelist cross land advection237 REWIND( numnam ) ! Namelist cross land advection 227 238 READ ( numnam, namcla ) 228 239 IF(lwp) THEN … … 238 249 239 250 #if defined key_netcdf4 240 241 REWIND( numnam ) ! Namelist namnc4 : netcdf4 chunking parameters251 ! ! NetCDF 4 case ("key_netcdf4" defined) 252 REWIND( numnam ) ! Namelist namnc4 : netcdf4 chunking parameters 242 253 READ ( numnam, namnc4 ) 243 IF(lwp) THEN 254 IF(lwp) THEN ! control print 244 255 WRITE(numout,*) 245 256 WRITE(numout,*) ' Namelist namnc4 - Netcdf4 chunking parameters' … … 256 267 snc4set%nk = nn_nchunks_k 257 268 snc4set%luse = ln_nc4zip 258 259 269 #else 260 261 snc4set%luse = .FALSE. 262 263 #endif 270 snc4set%luse = .FALSE. ! No NetCDF 4 case 271 #endif 272 ! 264 273 END SUBROUTINE dom_nam 265 274 -
branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/ZDF/zdftke.F90
r2375 r2382 37 37 !! tke_rst : read/write tke restart in ocean restart file 38 38 !!---------------------------------------------------------------------- 39 USE oce ! ocean dynamics and active tracers40 USE dom_oce ! ocean space and time domain41 USE dom vvl ! ocean space and time domain : variable volume layer42 USE zdf_oce ! ocean vertical physics39 USE oce ! ocean: dynamics and active tracers variables 40 USE phycst ! physical constants 41 USE dom_oce ! domain: ocean 42 USE domvvl ! domain: variable volume layer 43 43 USE sbc_oce ! surface boundary condition: ocean 44 USE phycst ! physical constants 45 USE zdfmxl ! mixed layer 46 USE restart ! only for lrst_oce 44 USE zdf_oce ! vertical physics: ocean variables 45 USE zdfmxl ! vertical physics: mixed layer 46 USE zdfbfr ! vertical mixing: bottom friction 47 USE restart ! ocean restart 47 48 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 48 49 USE prtctl ! Print control 49 50 USE in_out_manager ! I/O manager 50 51 USE iom ! I/O manager library 51 USE zdfbfr ! bottom friction52 52 53 53 IMPLICIT NONE … … 180 180 !! 181 181 INTEGER :: ji, jj, jk ! dummy loop arguments 182 !! $INTEGER :: ikbu, ikbv, ikbum1, ikbvm1 ! temporary scalar183 !! $INTEGER :: ikbt, ikbumm1, ikbvmm1 ! temporary scalar182 !!bfr INTEGER :: ikbu, ikbv, ikbum1, ikbvm1 ! temporary scalar 183 !!bfr INTEGER :: ikbt, ikbumm1, ikbvmm1 ! temporary scalar 184 184 REAL(wp) :: zrhoa = 1.22 ! Air density kg/m3 185 185 REAL(wp) :: zcdrag = 1.5e-3 ! drag coefficient … … 190 190 REAL(wp) :: zus , zwlc , zind ! - - 191 191 REAL(wp) :: zzd_up, zzd_lw ! - - 192 !! $REAL(wp) :: zebot ! - -192 !!bfr REAL(wp) :: zebot ! - - 193 193 INTEGER , DIMENSION(jpi,jpj) :: imlc ! 2D workspace 194 194 REAL(wp), DIMENSION(jpi,jpj) :: zhlc ! - - … … 209 209 END DO 210 210 END DO 211 ! 211 212 !!bfr - start commented area 212 213 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 213 214 ! ! Bottom boundary condition on tke … … 219 220 ! computational cost is justified 220 221 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 221 !222 222 ! en(bot) = (rn_ebb0/rau0)*0.5*sqrt(u_botfr^2+v_botfr^2) (min value rn_emin) 223 223 !CDIR NOVERRCHK … … 242 242 !! END DO 243 243 !! END DO 244 ! 244 !!bfr - end commented area 245 245 ! 246 246 ! !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< … … 275 275 END DO 276 276 END DO 277 # if defined key_c1d278 hlc(:,:) = zhlc(:,:) * tmask(:,:,1) ! c1d configuration: save finite Langmuir Circulation depth279 # endif280 277 zcof = 0.016 / SQRT( zrhoa * zcdrag ) 281 278 !CDIR NOVERRCHK -
branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/opa.F90
r2329 r2382 36 36 !!---------------------------------------------------------------------- 37 37 38 USE step_oce ! Time stepping module definition38 USE step_oce ! module used in the ocean time stepping module 39 39 USE sbc_oce ! surface boundary condition: ocean 40 40 USE domcfg ! domain configuration (dom_cfg routine) … … 103 103 INTEGER :: istp ! time step index 104 104 !!---------------------------------------------------------------------- 105 105 ! 106 106 #if defined key_agrif 107 107 CALL Agrif_Init_Grids() ! AGRIF: set the meshes … … 247 247 ELSE ; CALL mpp_init2 ! eliminate land processors 248 248 ENDIF 249 !!gm c1d case can be moved in dom_init routine 250 #if defined key_c1d 251 CALL cor_c1d ! Coriolis defined at T-point 252 umask(:,:,:) = tmask(:,:,:) ! U, V and T-points are the same 253 vmask(:,:,:) = tmask(:,:,:) ! 254 #endif 255 !!gm c1d end 256 249 ! 257 250 ! ! General initialization 258 251 CALL phy_cst ! Physical constants … … 307 300 CALL trc_init 308 301 #endif 309 ! ! diagnostics302 ! ! Diagnostics 310 303 CALL iom_init ! iom_put initialization 311 304 IF( lk_floats ) CALL flo_init ! drifting Floats … … 314 307 CALL dia_hsb_init ! heat content, salt content and volume budgets 315 308 CALL trd_mod_init ! Mixed-layer/Vorticity/Integral constraints trends 316 IF( lk_diaobs ) THEN 317 CALL dia_obs_init! Initialize observational data318 CALL dia_obs( nit000 - 1 )! Observation operator for restart309 IF( lk_diaobs ) THEN ! Observation & model comparison 310 CALL dia_obs_init ! Initialize observational data 311 CALL dia_obs( nit000 - 1 ) ! Observation operator for restart 319 312 ENDIF 320 IF( lk_asminc ) CALL asm_inc_init ! Initialize assimilation increments321 IF( lwp) WRITE(numout,*)'Euler time step switch is ', neuler322 313 ! ! Assimilation increments 314 IF( lk_asminc ) CALL asm_inc_init ! Initialize assimilation increments 315 IF(lwp) WRITE(numout,*) 'Euler time step switch is ', neuler 323 316 ! 324 317 END SUBROUTINE opa_init -
branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/step.F90
r2370 r2382 32 32 USE trcstp ! passive tracer time-stepping (trc_stp routine) 33 33 #endif 34 #if defined key_agrif 35 USE agrif_opa_sponge ! Momemtum and tracers sponges 36 #endif 34 37 USE asminc ! assimilation increments (tra_asm_inc, dyn_asm_inc routines) 35 USE stpctl ! time stepping control (stp_ctl routine)36 USE restart ! ocean restart (rst_wri routine)37 USE prtctl ! Print control (prt_ctl routine)38 39 #if defined key_agrif40 USE agrif_opa_sponge ! Momemtum and tracers sponges41 #endif42 38 43 39 IMPLICIT NONE … … 116 112 ! VERTICAL PHYSICS 117 113 CALL zdf_bfr( kstp ) ! bottom friction 114 118 115 ! ! Vertical eddy viscosity and diffusivity coefficients 119 IF( lk_zdfric ) CALL zdf_ric ( kstp )! Richardson number dependent Kz120 IF( lk_zdftke ) CALL zdf_tke ( kstp )! TKE closure scheme for Kz121 IF( lk_zdfgls ) CALL zdf_gls ( kstp )! GLS closure scheme for Kz122 IF( lk_zdfkpp ) CALL zdf_kpp ( kstp )! KPP closure scheme for Kz123 IF( lk_zdfcst ) THEN! Constant Kz (reset avt, avm[uv] to the background value)116 IF( lk_zdfric ) CALL zdf_ric( kstp ) ! Richardson number dependent Kz 117 IF( lk_zdftke ) CALL zdf_tke( kstp ) ! TKE closure scheme for Kz 118 IF( lk_zdfgls ) CALL zdf_gls( kstp ) ! GLS closure scheme for Kz 119 IF( lk_zdfkpp ) CALL zdf_kpp( kstp ) ! KPP closure scheme for Kz 120 IF( lk_zdfcst ) THEN ! Constant Kz (reset avt, avm[uv] to the background value) 124 121 avt (:,:,:) = rn_avt0 * tmask(:,:,:) 125 122 avmu(:,:,:) = rn_avm0 * umask(:,:,:) … … 135 132 IF( lk_zdfddm .AND. .NOT. lk_zdfkpp ) & 136 133 & CALL zdf_ddm( kstp ) ! double diffusive mixing 134 137 135 CALL zdf_mxl( kstp ) ! mixed layer depth 138 136 139 ! write tkeinformation in the restart file137 ! write TKE or GLS information in the restart file 140 138 IF( lrst_oce .AND. lk_zdftke ) CALL tke_rst( kstp, 'WRITE' ) 141 ! write gls information in the restart file142 139 IF( lrst_oce .AND. lk_zdfgls ) CALL gls_rst( kstp, 'WRITE' ) 143 140 ! … … 156 153 #if defined key_traldf_c2d 157 154 IF( lk_traldf_eiv ) CALL ldf_eiv( kstp ) ! eddy induced velocity coefficient 158 # 155 #endif 159 156 160 157 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 179 176 ! Active tracers (ua, va used as workspace) 180 177 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 181 tsa(:,:,:,:) = 0.e0 178 tsa(:,:,:,:) = 0.e0 ! set tracer trends to zero 182 179 183 180 IF( ln_asmiau .AND. & … … 190 187 CALL tra_adv ( kstp ) ! horizontal & vertical advection 191 188 IF( n_cla == 1 ) CALL tra_cla ( kstp ) ! Cross Land Advection (Update Hor. advection) 192 IF( lk_zdfkpp )CALL tra_kpp ( kstp ) ! KPP non-local tracer fluxes189 IF( lk_zdfkpp ) CALL tra_kpp ( kstp ) ! KPP non-local tracer fluxes 193 190 CALL tra_ldf ( kstp ) ! lateral mixing 194 191 #if defined key_agrif … … 213 210 CALL tra_nxt ( kstp ) ! tracer fields at next time step 214 211 ENDIF 215 CALL tra_unswap 212 CALL tra_unswap ! udate T & S 3D arrays (to be suppressed) 216 213 217 214 !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> … … 222 219 223 220 IF( ln_asmiau .AND. & 224 & ln_dyninc ) CALL dyn_asm_inc( kstp )! apply dynamics assimilation increment221 & ln_dyninc ) CALL dyn_asm_inc( kstp ) ! apply dynamics assimilation increment 225 222 CALL dyn_adv( kstp ) ! advection (vector or flux form) 226 223 CALL dyn_vor( kstp ) ! vorticity term including Coriolis … … 230 227 #endif 231 228 CALL dyn_hpg( kstp ) ! horizontal gradient of Hydrostatic pressure 232 CALL dyn_bfr( kstp ) 229 CALL dyn_bfr( kstp ) ! bottom friction 233 230 CALL dyn_zdf( kstp ) ! vertical diffusion 234 231 CALL dyn_spg( kstp, indic ) ! surface pressure gradient -
branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/step_oce.F90
r2348 r2382 2 2 !!====================================================================== 3 3 !! *** MODULE step_oce *** 4 !! Time-stepping : module used for the oceantime stepping4 !! Ocean time-stepping : module used in both initialisation phase and time stepping 5 5 !!====================================================================== 6 !!---------------------------------------------------------------------- 7 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 8 !! $Id$ 9 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 6 !! History : 3.3 ! 2010-08 (C. Ethe) Original code - reorganisation of the initial phase 10 7 !!---------------------------------------------------------------------- 11 8 USE oce ! ocean dynamics and tracers variables … … 103 100 USE agrif_opa_sponge ! Momemtum and tracers sponges 104 101 #endif 102 !!---------------------------------------------------------------------- 103 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 104 !! $Id$ 105 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 105 106 !!====================================================================== 106 107 END MODULE step_oce
Note: See TracChangeset
for help on using the changeset viewer.