Changeset 8568
- Timestamp:
- 2017-09-27T16:29:24+02:00 (7 years ago)
- Location:
- branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM
- Files:
-
- 191 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/AMM12/EXP00/namelist_cfg
r8215 r8568 210 210 / 211 211 !----------------------------------------------------------------------- 212 &namtra_adv ! advection scheme for tracer 212 &namtra_adv ! advection scheme for tracer (default: NO advection) 213 213 !----------------------------------------------------------------------- 214 214 ln_traadv_fct = .true. ! FCT scheme 215 215 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order 216 216 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 217 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping218 ! ! (number of sub-timestep = nn_fct_zts)219 217 / 220 218 !----------------------------------------------------------------------- … … 226 224 !---------------------------------------------------------------------------------- 227 225 ! ! Operator type: 226 ln_traldf_NONE = .false. ! No operator (no explicit diffusion) 228 227 ln_traldf_lap = .true. ! laplacian operator 229 228 ln_traldf_blp = .false. ! bilaplacian operator … … 264 263 / 265 264 !----------------------------------------------------------------------- 266 &namdyn_adv ! formulation of the momentum advection 267 !----------------------------------------------------------------------- 265 &namdyn_adv ! formulation of the momentum advection (default: None) 266 !----------------------------------------------------------------------- 267 ln_dynadv_vec = .true. ! vector form - 2nd centered scheme 268 nn_dynkeg = 0 ! grad(KE) scheme: =0 C2 ; =1 Hollingsworth correction 268 269 / 269 270 !----------------------------------------------------------------------- … … 293 294 !----------------------------------------------------------------------- 294 295 ! ! Type of the operator : 295 ! ! no diffusion: set ln_dynldf_lap=..._blp=F296 ln_dynldf_NONE= .false. ! No operator (no explicit diffusion) 296 297 ln_dynldf_lap = .false. ! laplacian operator 297 298 ln_dynldf_blp = .true. ! bilaplacian operator -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/C1D_PAPA/EXP00/namelist_cfg
r8215 r8568 60 60 / 61 61 !----------------------------------------------------------------------- 62 &namcrs ! Grid coarsening for dynamics output and/or63 ! passive tracer coarsened online simulations64 !-----------------------------------------------------------------------65 /66 !-----------------------------------------------------------------------67 62 &namc1d ! 1D configuration options ("key_c1d") 68 63 !----------------------------------------------------------------------- … … 110 105 sn_slp = 'slp.15JUNE2009_fill' , 6 , 'SLP', .false. , .true. , 'yearly' , 'weights_core_orca2_bilinear_noc.nc' , '' , '' 111 106 112 nn_bulk_algo = 1 ! Bulk algorithm to use to compute bulk transfer coefficients Cd, Ce and Ch113 ! 1 => "NCAR" algorithm (Large and Yeager,2008)114 ! 2 => "COARE 3.0" algorithm (Fairall et al2003)115 ! 3 => "ECMWF" algorithm (IFS cycle 31)116 ! 4 => "COARE 3.5" algorithm (Edson et al 2013)107 ! ! bulk algorithm : 108 ln_NCAR = .true. ! "NCAR" algorithm (Large and Yeager 2008) 109 ln_COARE_3p0= .false. ! "COARE 3.0" algorithm (Fairall et al. 2003) 110 ln_COARE_3p5= .false. ! "COARE 3.5" algorithm (Edson et al. 2013) 111 ln_ECMWF = .false. ! "ECMWF" algorithm (IFS cycle 31) 117 112 118 113 rn_zqt = 2. ! Air temperature and humidity reference height (m) … … 123 118 / 124 119 !----------------------------------------------------------------------- 125 &namsbc_sas ! analytical surface boundary condition 126 !----------------------------------------------------------------------- 127 / 128 !----------------------------------------------------------------------- 129 &namtra_qsr ! penetrative solar radiation 120 &namtra_qsr ! penetrative solar radiation (ln_traqsr =T) 130 121 !----------------------------------------------------------------------- 131 122 ! ! file name ! frequency (hours) ! variable ! time interp. ! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! … … 134 125 / 135 126 !----------------------------------------------------------------------- 136 &namsbc_rnf ! runoffs namelist surface boundary condition137 !-----------------------------------------------------------------------138 ln_rnf_mouth = .false. ! specific treatment at rivers mouths139 /140 !-----------------------------------------------------------------------141 127 &namsbc_apr ! Atmospheric pressure used as ocean forcing or in bulk 142 128 !----------------------------------------------------------------------- … … 154 140 / 155 141 !----------------------------------------------------------------------- 156 &namberg ! iceberg parameters157 !-----------------------------------------------------------------------158 /159 !-----------------------------------------------------------------------160 &namlbc ! lateral momentum boundary condition161 !-----------------------------------------------------------------------162 rn_shlat = 0. ! shlat = 0 ! 0 < shlat < 2 ! shlat = 2 ! 2 < shlat163 /164 !-----------------------------------------------------------------------165 &namagrif ! AGRIF zoom ("key_agrif")166 !-----------------------------------------------------------------------167 /168 !-----------------------------------------------------------------------169 &nam_tide ! tide parameters170 !-----------------------------------------------------------------------171 /172 !-----------------------------------------------------------------------173 &nambdy ! unstructured open boundaries174 !-----------------------------------------------------------------------175 /176 !-----------------------------------------------------------------------177 &nambdy_dta ! open boundaries - external data178 !-----------------------------------------------------------------------179 /180 !-----------------------------------------------------------------------181 &nambdy_tide ! tidal forcing at open boundaries182 !-----------------------------------------------------------------------183 /184 !-----------------------------------------------------------------------185 142 &namdrg ! top/bottom drag coefficient (default: NO selection) 186 143 !----------------------------------------------------------------------- … … 192 149 / 193 150 !----------------------------------------------------------------------- 194 &nambbl ! bottom boundary layer scheme195 !-----------------------------------------------------------------------196 /197 !-----------------------------------------------------------------------198 151 &nameos ! ocean physical parameters 199 152 !----------------------------------------------------------------------- … … 203 156 &namtra_adv ! advection scheme for tracer 204 157 !----------------------------------------------------------------------- 205 ! C1D : no advection scheme 206 / 207 !----------------------------------------------------------------------- 208 &namtra_adv_mle ! mixed layer eddy parametrisation (Fox-Kemper param) 158 ln_traadv_NONE= .true. ! No tracer advection 159 / 160 !----------------------------------------------------------------------- 161 &namtra_adv_mle ! mixed layer eddy parametrisation (Fox-Kemper param) (default: NO) 209 162 !----------------------------------------------------------------------- 210 163 / … … 212 165 &namtra_ldf ! lateral diffusion scheme for tracers 213 166 !----------------------------------------------------------------------- 214 ! C1D : no lateral diffusion 215 / 216 !----------------------------------------------------------------------- 217 &namtra_ldfeiv ! eddy induced velocity param. 218 !----------------------------------------------------------------------- 219 ! C1D : no eiv 167 ln_traldf_NONE= .true. ! No operator (no explicit diffusion) 168 / 169 !----------------------------------------------------------------------- 170 &namtra_ldfeiv ! eddy induced velocity param. (default: NO) 171 !----------------------------------------------------------------------- 220 172 / 221 173 !----------------------------------------------------------------------- … … 225 177 / 226 178 !----------------------------------------------------------------------- 227 &namdyn_adv ! formulation of the momentum advection 228 !----------------------------------------------------------------------- 229 ! C1D : no advection scheme 179 &namdyn_adv ! formulation of the momentum advection (default: None) 180 !----------------------------------------------------------------------- 181 ln_dynadv_NONE= .true. ! linear dynamics (no momentum advection) 230 182 / 231 183 !----------------------------------------------------------------------- … … 252 204 &namdyn_ldf ! lateral diffusion on momentum 253 205 !----------------------------------------------------------------------- 254 ln_dynldf_ lap = .false. ! laplacian operator206 ln_dynldf_NONE= .true. ! No operator (no explicit diffusion) 255 207 / 256 208 !----------------------------------------------------------------------- … … 302 254 / 303 255 !----------------------------------------------------------------------- 304 &nammpp ! Massively Parallel Processing ("key_mpp_mpi)305 !-----------------------------------------------------------------------306 /307 !-----------------------------------------------------------------------308 256 &namctl ! Control prints & Benchmark 309 !-----------------------------------------------------------------------310 /311 !-----------------------------------------------------------------------312 &namnc4 ! netcdf4 chunking and compression settings ("key_netcdf4")313 257 !----------------------------------------------------------------------- 314 258 / … … 319 263 / 320 264 !----------------------------------------------------------------------- 321 &namflo ! float parameters ("key_float")322 !-----------------------------------------------------------------------323 /324 !-----------------------------------------------------------------------325 &namptr ! Poleward Transport Diagnostic326 !-----------------------------------------------------------------------327 /328 !-----------------------------------------------------------------------329 265 &namhsb ! Heat and salt budgets 330 266 !----------------------------------------------------------------------- 331 267 / 332 268 !----------------------------------------------------------------------- 333 &namdct ! transports through sections334 !-----------------------------------------------------------------------335 nn_dct = 60 ! time step frequency for transports computing336 nn_dctwri = 60 ! time step frequency for transports writing337 nn_secdebug = 0 ! 0 : no section to debug338 /339 !-----------------------------------------------------------------------340 269 &namobs ! observation usage switch ('key_diaobs') 341 270 !----------------------------------------------------------------------- 342 271 / 343 272 !----------------------------------------------------------------------- 344 &nam_asminc ! assimilation increments ('key_asminc')345 !-----------------------------------------------------------------------346 /347 !-----------------------------------------------------------------------348 273 &namsbc_wave ! External fields from wave model 349 274 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/GYRE_BFM/EXP00/namelist_cfg
r8215 r8568 142 142 / 143 143 !----------------------------------------------------------------------- 144 &namtra_adv ! advection scheme for tracer 144 &namtra_adv ! advection scheme for tracer (default: No selection) 145 145 !----------------------------------------------------------------------- 146 146 ln_traadv_fct = .true. ! FCT scheme 147 147 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order 148 148 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 149 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping 150 ! ! (number of sub-timestep = nn_fct_zts) 151 / 152 !----------------------------------------------------------------------- 153 &namtra_adv_mle ! mixed layer eddy parametrisation (Fox-Kemper param) 154 !----------------------------------------------------------------------- 155 / 156 !---------------------------------------------------------------------------------- 157 &namtra_ldf ! lateral diffusion scheme for tracers 158 !---------------------------------------------------------------------------------- 149 / 150 !----------------------------------------------------------------------- 151 &namtra_adv_mle ! mixed layer eddy parametrisation (Fox-Kemper param) (default: NO) 152 !----------------------------------------------------------------------- 153 / 154 !----------------------------------------------------------------------- 155 &namtra_ldf ! lateral diffusion scheme for tracers (default: No selection) 156 !----------------------------------------------------------------------- 159 157 ! ! Operator type: 158 ln_traldf_NONE = .false. ! No operator (no explicit advection) 160 159 ln_traldf_lap = .true. ! laplacian operator 161 160 ln_traldf_blp = .false. ! bilaplacian operator … … 185 184 rn_bht_0 = 1.e+12 ! lateral eddy diffusivity (bilap. operator) [m4/s] 186 185 / 187 !----------------------------------------------------------------------- -----------188 &namtra_ldfeiv ! eddy induced velocity param. 189 !----------------------------------------------------------------------- -----------186 !----------------------------------------------------------------------- 187 &namtra_ldfeiv ! eddy induced velocity param. (default: NO) 188 !----------------------------------------------------------------------- 190 189 ln_ldfeiv =.false. ! use eddy induced velocity parameterization 191 190 / … … 196 195 / 197 196 !----------------------------------------------------------------------- 198 &namdyn_adv ! formulation of the momentum advection 199 !----------------------------------------------------------------------- 197 &namdyn_adv ! formulation of the momentum advection (default: No selection) 198 !----------------------------------------------------------------------- 199 ln_dynadv_vec = .true. ! vector form - 2nd centered scheme 200 nn_dynkeg = 0 ! grad(KE) scheme: =0 C2 ; =1 Hollingsworth correction 200 201 / 201 202 !----------------------------------------------------------------------- … … 219 220 !----------------------------------------------------------------------- 220 221 ! ! Type of the operator : 221 ! ! no diffusion: set ln_dynldf_lap=..._blp=F222 ln_dynldf_NONE= .false. ! No operator (no explicit diffusion) 222 223 ln_dynldf_lap = .true. ! laplacian operator 223 224 ln_dynldf_blp = .false. ! bilaplacian operator -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/GYRE_BFM/EXP00/namelist_top_cfg
r5836 r8568 22 22 / 23 23 !----------------------------------------------------------------------- 24 &namtrc_adv ! advection scheme for passive tracer 24 &namtrc_adv ! advection scheme for passive tracer (default: NO selection) 25 25 !----------------------------------------------------------------------- 26 26 ln_trcadv_fct = .true. ! FCT scheme 27 27 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order 28 28 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 29 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping30 ! ! (number of sub-timestep = nn_fct_zts)31 29 / 32 30 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/GYRE_PISCES/EXP00/namelist_cfg
r8215 r8568 92 92 / 93 93 !----------------------------------------------------------------------- 94 &namtra_adv ! advection scheme for tracer 94 &namtra_adv ! advection scheme for tracer (default: No selection) 95 95 !----------------------------------------------------------------------- 96 96 ln_traadv_fct = .true. ! FCT scheme 97 97 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order 98 98 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 99 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping 100 ! ! (number of sub-timestep = nn_fct_zts) 101 / 102 !----------------------------------------------------------------------- 103 &namtra_adv_mle ! mixed layer eddy parametrisation (Fox-Kemper param) 104 !----------------------------------------------------------------------- 105 / 106 !---------------------------------------------------------------------------------- 107 &namtra_ldf ! lateral diffusion scheme for tracers 108 !---------------------------------------------------------------------------------- 99 / 100 !----------------------------------------------------------------------- 101 &namtra_adv_mle ! mixed layer eddy parametrisation (Fox-Kemper param) (default: NO) 102 !----------------------------------------------------------------------- 103 / 104 !----------------------------------------------------------------------- 105 &namtra_ldf ! lateral diffusion scheme for tracers (default: No selection) 106 !----------------------------------------------------------------------- 109 107 ! ! Operator type: 108 ln_traldf_NONE = .false. ! No operator (no explicit advection) 110 109 ln_traldf_lap = .true. ! laplacian operator 111 110 ln_traldf_blp = .false. ! bilaplacian operator … … 146 145 / 147 146 !----------------------------------------------------------------------- 148 &namdyn_adv ! formulation of the momentum advection 149 !----------------------------------------------------------------------- 150 / 151 !----------------------------------------------------------------------- 152 &namdyn_vor ! option of physics/algorithm (not control by CPP keys) 147 &namdyn_adv ! formulation of the momentum advection (default: No selection) 148 !----------------------------------------------------------------------- 149 ln_dynadv_vec = .true. ! vector form - 2nd centered scheme 150 nn_dynkeg = 0 ! grad(KE) scheme: =0 C2 ; =1 Hollingsworth correction 151 / 152 !----------------------------------------------------------------------- 153 &namdyn_vor ! option of physics/algorithm (default: No selection) 153 154 !----------------------------------------------------------------------- 154 155 ln_dynvor_ene = .true. ! enstrophy conserving scheme … … 170 171 / 171 172 !----------------------------------------------------------------------- 172 &namdyn_ldf ! lateral diffusion on momentum 173 &namdyn_ldf ! lateral diffusion on momentum (default: No selection) 173 174 !----------------------------------------------------------------------- 174 175 ! ! Type of the operator : 175 ! ! no diffusion: set ln_dynldf_lap=..._blp=F176 ln_dynldf_NONE= .false. ! No operator (no explicit diffusion) 176 177 ln_dynldf_lap = .true. ! laplacian operator 177 178 ln_dynldf_blp = .false. ! bilaplacian operator … … 197 198 rn_ahm_0_lap = 100000. ! horizontal laplacian eddy viscosity [m2/s] 198 199 / 200 199 201 !!====================================================================== 200 202 !! vertical physics namelists !! -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/GYRE_PISCES/EXP00/namelist_top_cfg
r8215 r8568 29 29 / 30 30 !----------------------------------------------------------------------- 31 &namtrc_adv ! advection scheme for passive tracer 31 &namtrc_adv ! advection scheme for passive tracer (default: NO selection) 32 32 !----------------------------------------------------------------------- 33 33 ln_trcadv_fct = .true. ! FCT scheme 34 34 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order 35 35 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 36 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping37 ! ! (number of sub-timestep = nn_fct_zts)38 36 / 39 37 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/ORCA2_LIM3_PISCES/EXP00/1_namelist_cfg
r8215 r8568 116 116 / 117 117 !----------------------------------------------------------------------- 118 &namtra_adv ! advection scheme for tracer 118 &namtra_adv ! advection scheme for tracer (default: NO selection) 119 119 !----------------------------------------------------------------------- 120 120 ln_traadv_fct = .true. ! FCT scheme 121 121 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order 122 122 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 123 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping124 ! ! (number of sub-timestep = nn_fct_zts)125 123 / 126 124 !----------------------------------------------------------------------- 127 125 &namtra_ldf ! lateral diffusion scheme for tracers 128 !----------------------------------------------------------------------- -----------126 !----------------------------------------------------------------------- 129 127 ! ! Operator type: 130 128 ln_traldf_lap = .true. ! laplacian operator … … 161 159 / 162 160 !----------------------------------------------------------------------- 163 &namdyn_adv ! formulation of the momentum advection 164 !----------------------------------------------------------------------- 161 &namdyn_adv ! formulation of the momentum advection (default: No selection) 162 !----------------------------------------------------------------------- 163 ln_dynadv_NONE= .false. ! linear dynamics (no momentum advection) 164 ln_dynadv_vec = .true. ! vector form - 2nd centered scheme 165 nn_dynkeg = 0 ! grad(KE) scheme: =0 C2 ; =1 Hollingsworth correction 166 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 167 ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme 165 168 / 166 169 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/ORCA2_LIM3_PISCES/EXP00/namelist_cfg
r8215 r8568 123 123 / 124 124 !----------------------------------------------------------------------- 125 &namtra_adv ! advection scheme for tracer 126 !----------------------------------------------------------------------- 127 ln_traadv_fct = .true.! FCT scheme125 &namtra_adv ! advection scheme for tracer (default: NO advection) 126 !----------------------------------------------------------------------- 127 ln_traadv_fct = .true. ! FCT scheme 128 128 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order 129 129 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 130 nn_fct_zts = 0 ! > 1 , 2nd order FCT scheme with vertical sub-timestepping 131 ! ! (number of sub-timestep = nn_fct_zts) 132 / 133 !----------------------------------------------------------------------- 134 &namtra_adv_mle ! mixed layer eddy parametrisation (Fox-Kemper param) 130 / 131 !----------------------------------------------------------------------- 132 &namtra_adv_mle ! mixed layer eddy parametrisation (Fox-Kemper param) 135 133 !----------------------------------------------------------------------- 136 134 ln_mle = .true. ! (T) use the Mixed Layer Eddy (MLE) parameterisation … … 140 138 !---------------------------------------------------------------------------------- 141 139 ! ! Operator type: 140 ln_traldf_NONE = .false. ! No operator (no explicit advection) 142 141 ln_traldf_lap = .true. ! laplacian operator 143 142 ln_traldf_blp = .false. ! bilaplacian operator … … 186 185 / 187 186 !----------------------------------------------------------------------- 188 &namdyn_adv ! formulation of the momentum advection 189 !----------------------------------------------------------------------- 187 &namdyn_adv ! formulation of the momentum advection (default: No selection) 188 !----------------------------------------------------------------------- 189 ln_dynadv_NONE= .false. ! linear dynamics (no momentum advection) 190 ln_dynadv_vec = .true. ! vector form - 2nd centered scheme 191 nn_dynkeg = 0 ! grad(KE) scheme: =0 C2 ; =1 Hollingsworth correction 192 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 193 ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme 190 194 / 191 195 !----------------------------------------------------------------------- … … 212 216 !----------------------------------------------------------------------- 213 217 ! ! Type of the operator : 214 ! ! no diffusion: set ln_dynldf_lap=..._blp=F218 ln_dynldf_NONE= .false. ! No operator (no explicit diffusion) 215 219 ln_dynldf_lap = .true. ! laplacian operator 216 220 ln_dynldf_blp = .false. ! bilaplacian operator -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/ORCA2_LIM3_PISCES/EXP00/namelist_top_cfg
r8215 r8568 71 71 / 72 72 !----------------------------------------------------------------------- 73 &namtrc_adv ! advection scheme for passive tracer 73 &namtrc_adv ! advection scheme for passive tracer (default: NO selection) 74 74 !----------------------------------------------------------------------- 75 75 ln_trcadv_mus = .true. ! MUSCL scheme -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist_cfg
r8215 r8568 71 71 !---------------------------------------------------------------------------------- 72 72 ! ! Operator type: 73 ln_traldf_NONE = .false. ! No operator (no explicit advection) 73 74 ln_traldf_lap = .true. ! laplacian operator 74 75 ln_traldf_blp = .false. ! bilaplacian operator -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/ORCA2_OFF_PISCES/EXP00/namelist_top_cfg
r7646 r8568 71 71 / 72 72 !----------------------------------------------------------------------- 73 &namtrc_adv ! advection scheme for passive tracer 73 &namtrc_adv ! advection scheme for passive tracer (default: No selection) 74 74 !----------------------------------------------------------------------- 75 75 ln_trcadv_mus = .true. ! MUSCL scheme -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/ORCA2_OFF_TRC/EXP00/namelist_cfg
r8215 r8568 72 72 !---------------------------------------------------------------------------------- 73 73 ! ! Operator type: 74 ln_traldf_NONE = .false. ! No explicit diffusion 74 75 ln_traldf_lap = .true. ! laplacian operator 75 76 ln_traldf_blp = .false. ! bilaplacian operator -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/ORCA2_SAS_LIM3/EXP00/namelist_cfg
r8215 r8568 74 74 / 75 75 !----------------------------------------------------------------------- 76 &namtra_adv ! advection scheme for tracer 76 &namtra_adv ! advection scheme for tracer (default: NO selection) 77 77 !----------------------------------------------------------------------- 78 ln_traadv_fct = .true. ! FCT scheme79 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order80 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order81 nn_fct_zts = 0 ! > 1 , 2nd order FCT scheme with vertical sub-timestepping82 ! ! (number of sub-timestep = nn_fct_zts)83 78 / 84 79 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/SHARED/namelist_ref
r8215 r8568 306 306 / 307 307 !----------------------------------------------------------------------- 308 &namsbc_sas ! Stand 308 &namsbc_sas ! Stand-Alone Surface boundary condition 309 309 !----------------------------------------------------------------------- 310 310 ! ! file name ! frequency (hours) ! variable ! time interp.! clim ! 'yearly'/ ! weights ! rotation ! land/sea mask ! … … 602 602 !! *** top/Bottom boundary condition *** !! 603 603 !!====================================================================== 604 !! namdrg top/bottom drag coefficient (default: NO NE)604 !! namdrg top/bottom drag coefficient (default: NO selection) 605 605 !! namdrg_top top friction (ln_isfcav=T) 606 606 !! namdrg_bot bottom friction … … 666 666 667 667 !!====================================================================== 668 !! Tracer (T & S 668 !! Tracer (T & S) namelists 669 669 !!====================================================================== 670 670 !! nameos equation of state … … 679 679 &nameos ! ocean Equation Of Seawater (default: NO) 680 680 !----------------------------------------------------------------------- 681 ln_teos10 = .false. ! = Use TEOS-10 equation of state682 ln_eos80 = .false. ! = Use EOS80 equation of state683 ln_seos = .false. ! = Use simplified equation of state (S-EOS)681 ln_teos10 = .false. ! = Use TEOS-10 682 ln_eos80 = .false. ! = Use EOS80 683 ln_seos = .false. ! = Use S-EOS (simplified Eq.) 684 684 ! 685 685 ! ! S-EOS coefficients (ln_seos=T): … … 694 694 / 695 695 !----------------------------------------------------------------------- 696 &namtra_adv ! advection scheme for tracer (default: NO advection) 697 !----------------------------------------------------------------------- 696 &namtra_adv ! advection scheme for tracer (default: NO selection) 697 !----------------------------------------------------------------------- 698 ln_traadv_NONE= .false. ! No tracer advection 698 699 ln_traadv_cen = .false. ! 2nd order centered scheme 699 700 nn_cen_h = 4 ! =2/4, horizontal 2nd order CEN / 4th order CEN … … 702 703 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order 703 704 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 704 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping705 ! ! (number of sub-timestep = nn_fct_zts)706 705 ln_traadv_mus = .false. ! MUSCL scheme 707 706 ln_mus_ups = .false. ! use upstream scheme near river mouths … … 724 723 / 725 724 !----------------------------------------------------------------------- 726 &namtra_ldf ! lateral diffusion scheme for tracers (default: NO diffusion)725 &namtra_ldf ! lateral diffusion scheme for tracers (default: NO selection) 727 726 !----------------------------------------------------------------------- 728 727 ! ! Operator type: 729 ! ! no diffusion: set ln_traldf_lap=..._blp=F728 ln_traldf_NONE = .false. ! No explicit diffusion 730 729 ln_traldf_lap = .false. ! laplacian operator 731 730 ln_traldf_blp = .false. ! bilaplacian operator … … 759 758 &namtra_ldfeiv ! eddy induced velocity param. (default: NO) 760 759 !----------------------------------------------------------------------- 761 ln_ldfeiv = .false.! use eddy induced velocity parameterization760 ln_ldfeiv = .false. ! use eddy induced velocity parameterization 762 761 rn_aeiv_0 = 2000. ! eddy induced velocity coefficient [m2/s] 763 762 nn_aei_ijk_t = 21 ! space/time variation of the eiv coeficient … … 790 789 !!====================================================================== 791 790 ! 792 !-----------------------------------------------------------------------793 &namdyn_adv ! formulation of the momentum advection (default: vector form)794 !-----------------------------------------------------------------------795 ln_dynadv_vec = .true. ! vector form (T) or flux form (F)796 nn_dynkeg = 0 ! scheme for grad(KE): =0 C2 ; =1 Hollingsworth correction797 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme798 ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme799 ln_dynzad_zts = .false. ! sub-time-stepping for vertical momentum advection800 /801 791 !----------------------------------------------------------------------- 802 792 &nam_vvl ! vertical coordinate options (default: zstar) … … 814 804 / 815 805 !----------------------------------------------------------------------- 806 &namdyn_adv ! formulation of the momentum advection (default: NO selection) 807 !----------------------------------------------------------------------- 808 ln_dynadv_NONE= .false. ! linear dynamics (no momentum advection) 809 ln_dynadv_vec = .false. ! vector form - 2nd centered scheme 810 nn_dynkeg = 0 ! grad(KE) scheme: =0 C2 ; =1 Hollingsworth correction 811 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 812 ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme 813 / 814 !----------------------------------------------------------------------- 816 815 &namdyn_vor ! Vorticity / Coriolis scheme (default: NO) 817 816 !----------------------------------------------------------------------- … … 848 847 / 849 848 !----------------------------------------------------------------------- 850 &namdyn_ldf ! lateral diffusion on momentum (default: NO )849 &namdyn_ldf ! lateral diffusion on momentum (default: NO selection) 851 850 !----------------------------------------------------------------------- 852 851 ! ! Type of the operator : 853 ! ! no diffusion: set ln_dynldf_lap=..._blp=F852 ln_dynldf_NONE= .false. ! No operator (i.e. no explicit diffusion) 854 853 ln_dynldf_lap = .false. ! laplacian operator 855 854 ln_dynldf_blp = .false. ! bilaplacian operator … … 891 890 &namzdf ! vertical physics (default: NO selection) 892 891 !----------------------------------------------------------------------- 893 ! ! type of vertical closure 892 ! ! type of vertical closure (required) 894 893 ln_zdfcst = .false. ! constant mixing 895 894 ln_zdfric = .false. ! local Richardson dependent formulation (T => fill namzdf_ric) … … 971 970 rn_charn = 70000. ! Charnock constant for wb induced roughness length 972 971 rn_hsro = 0.02 ! Minimum surface roughness 973 rn_frac_hs = 1.3 ! Fraction of wave height as roughness (if nn_z0_met =2)972 rn_frac_hs = 1.3 ! Fraction of wave height as roughness (if nn_z0_met>1) 974 973 nn_z0_met = 2 ! Method for surface roughness computation (0/1/2/3) 975 974 ! ! =3 requires ln_wave=T … … 1016 1015 nn_isplt = 1 ! number of processors in i-direction 1017 1016 nn_jsplt = 1 ! number of processors in j-direction 1018 nn_timing = 0 ! timing by routine activated (=1) creates timing.output file, or not (=0)1019 nn_diacfl = 0 ! Write out CFL diagnostics (=1) in cfl_diagnostics.ascii, or not (=0)1017 ln_timing = .false. ! timing by routine write out in timing.output file 1018 ln_diacfl = .false. ! CFL diagnostics write out in cfl_diagnostics.ascii 1020 1019 / 1021 1020 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/SHARED/namelist_top_ref
r8215 r8568 61 61 / 62 62 !----------------------------------------------------------------------- 63 &namtrc_adv ! advection scheme for passive tracer 63 &namtrc_adv ! advection scheme for passive tracer (default: NO selection) 64 64 !----------------------------------------------------------------------- 65 ln_trcadv_NONE= .false. ! No passive tracer advection 65 66 ln_trcadv_cen = .false. ! 2nd order centered scheme 66 67 nn_cen_h = 4 ! =2/4, horizontal 2nd order CEN / 4th order CEN … … 69 70 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order 70 71 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 71 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping72 ! ! (number of sub-timestep = nn_fct_zts)73 72 ln_trcadv_mus = .false. ! MUSCL scheme 74 73 ln_mus_ups = .false. ! use upstream scheme near river mouths -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/ISOMIP/EXP00/namelist_cfg
r8215 r8568 230 230 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order 231 231 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 232 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping233 ! ! (number of sub-timestep = nn_fct_zts)234 232 / 235 233 !----------------------------------------------------------------------- … … 280 278 !----------------------------------------------------------------------- 281 279 &namdyn_adv ! formulation of the momentum advection 280 !----------------------------------------------------------------------- 281 ln_dynadv_vec = .true. ! vector form (T) or flux form (F) 282 nn_dynkeg = 0 ! scheme for grad(KE): =0 C2 ; =1 Hollingsworth correction 283 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 284 ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme 285 / 282 286 !----------------------------------------------------------------------- 283 287 / -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT2_flux_cen2_cfg
r8215 r8568 95 95 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order 96 96 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 97 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping98 ! ! (number of sub-timestep = nn_fct_zts)99 97 ln_traadv_mus = .false. ! MUSCL scheme 100 98 ln_mus_ups = .false. ! use upstream scheme near river mouths … … 130 128 ln_dynadv_cen2= .true. ! flux form - 2nd order centered scheme 131 129 ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme 132 ln_dynzad_zts = .false. ! Use (T) sub timestepping for vertical momentum advection133 130 / 134 131 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT2_flux_ubs_cfg
r8215 r8568 95 95 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order 96 96 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 97 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping98 ! ! (number of sub-timestep = nn_fct_zts)99 97 ln_traadv_mus = .false. ! MUSCL scheme 100 98 ln_mus_ups = .false. ! use upstream scheme near river mouths … … 130 128 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 131 129 ln_dynadv_ubs = .true. ! flux form - 3rd order UBS scheme 132 ln_dynzad_zts = .false. ! Use (T) sub timestepping for vertical momentum advection133 130 / 134 131 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT2_vect_eenH_cfg
r8215 r8568 95 95 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order 96 96 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 97 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping98 ! ! (number of sub-timestep = nn_fct_zts)99 97 ln_traadv_mus = .false. ! MUSCL scheme 100 98 ln_mus_ups = .false. ! use upstream scheme near river mouths … … 130 128 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 131 129 ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme 132 ln_dynzad_zts = .false. ! Use (T) sub timestepping for vertical momentum advection133 130 / 134 131 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT2_vect_een_cfg
r8215 r8568 95 95 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order 96 96 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 97 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping98 ! ! (number of sub-timestep = nn_fct_zts)99 97 ln_traadv_mus = .false. ! MUSCL scheme 100 98 ln_mus_ups = .false. ! use upstream scheme near river mouths … … 130 128 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 131 129 ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme 132 ln_dynzad_zts = .false. ! Use (T) sub timestepping for vertical momentum advection133 130 / 134 131 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT2_vect_ene_cfg
r8215 r8568 95 95 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order 96 96 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 97 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping98 ! ! (number of sub-timestep = nn_fct_zts)99 97 ln_traadv_mus = .false. ! MUSCL scheme 100 98 ln_mus_ups = .false. ! use upstream scheme near river mouths … … 130 128 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 131 129 ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme 132 ln_dynzad_zts = .false. ! Use (T) sub timestepping for vertical momentum advection133 130 / 134 131 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT2_vect_ens_cfg
r8215 r8568 95 95 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order 96 96 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 97 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping98 ! ! (number of sub-timestep = nn_fct_zts)99 97 ln_traadv_mus = .false. ! MUSCL scheme 100 98 ln_mus_ups = .false. ! use upstream scheme near river mouths … … 130 128 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 131 129 ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme 132 ln_dynzad_zts = .false. ! Use (T) sub timestepping for vertical momentum advection133 130 / 134 131 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT4_flux_cen2_cfg
r8215 r8568 95 95 nn_fct_h = 4 ! =2/4, horizontal 2nd / 4th order 96 96 nn_fct_v = 4 ! =2/4, vertical 2nd / COMPACT 4th order 97 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping98 ! ! (number of sub-timestep = nn_fct_zts)99 97 ln_traadv_mus = .false. ! MUSCL scheme 100 98 ln_mus_ups = .false. ! use upstream scheme near river mouths … … 130 128 ln_dynadv_cen2= .true. ! flux form - 2nd order centered scheme 131 129 ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme 132 ln_dynzad_zts = .false. ! Use (T) sub timestepping for vertical momentum advection133 130 / 134 131 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT4_flux_ubs_cfg
r8215 r8568 95 95 nn_fct_h = 4 ! =2/4, horizontal 2nd / 4th order 96 96 nn_fct_v = 4 ! =2/4, vertical 2nd / COMPACT 4th order 97 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping98 ! ! (number of sub-timestep = nn_fct_zts)99 97 ln_traadv_mus = .false. ! MUSCL scheme 100 98 ln_mus_ups = .false. ! use upstream scheme near river mouths … … 130 128 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 131 129 ln_dynadv_ubs = .true. ! flux form - 3rd order UBS scheme 132 ln_dynzad_zts = .false. ! Use (T) sub timestepping for vertical momentum advection133 130 / 134 131 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT4_vect_eenH_cfg
r8215 r8568 95 95 nn_fct_h = 4 ! =2/4, horizontal 2nd / 4th order 96 96 nn_fct_v = 4 ! =2/4, vertical 2nd / COMPACT 4th order 97 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping98 ! ! (number of sub-timestep = nn_fct_zts)99 97 ln_traadv_mus = .false. ! MUSCL scheme 100 98 ln_mus_ups = .false. ! use upstream scheme near river mouths … … 130 128 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 131 129 ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme 132 ln_dynzad_zts = .false. ! Use (T) sub timestepping for vertical momentum advection133 130 / 134 131 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT4_vect_een_cfg
r8215 r8568 95 95 nn_fct_h = 4 ! =2/4, horizontal 2nd / 4th order 96 96 nn_fct_v = 4 ! =2/4, vertical 2nd / COMPACT 4th order 97 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping98 ! ! (number of sub-timestep = nn_fct_zts)99 97 ln_traadv_mus = .false. ! MUSCL scheme 100 98 ln_mus_ups = .false. ! use upstream scheme near river mouths … … 130 128 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 131 129 ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme 132 ln_dynzad_zts = .false. ! Use (T) sub timestepping for vertical momentum advection133 130 / 134 131 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT4_vect_ene_cfg
r8215 r8568 95 95 nn_fct_h = 4 ! =2/4, horizontal 2nd / 4th order 96 96 nn_fct_v = 4 ! =2/4, vertical 2nd / COMPACT 4th order 97 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping98 ! ! (number of sub-timestep = nn_fct_zts)99 97 ln_traadv_mus = .false. ! MUSCL scheme 100 98 ln_mus_ups = .false. ! use upstream scheme near river mouths … … 130 128 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 131 129 ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme 132 ln_dynzad_zts = .false. ! Use (T) sub timestepping for vertical momentum advection133 130 / 134 131 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_FCT4_vect_ens_cfg
r8215 r8568 95 95 nn_fct_h = 4 ! =2/4, horizontal 2nd / 4th order 96 96 nn_fct_v = 4 ! =2/4, vertical 2nd / COMPACT 4th order 97 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping98 ! ! (number of sub-timestep = nn_fct_zts)99 97 ln_traadv_mus = .false. ! MUSCL scheme 100 98 ln_mus_ups = .false. ! use upstream scheme near river mouths … … 130 128 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 131 129 ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme 132 ln_dynzad_zts = .false. ! Use (T) sub timestepping for vertical momentum advection133 130 / 134 131 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/LOCK_EXCHANGE/EXP00/namelist_cfg
r8215 r8568 95 95 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order 96 96 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 97 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping98 ! ! (number of sub-timestep = nn_fct_zts)99 97 ln_traadv_mus = .false. ! MUSCL scheme 100 98 ln_mus_ups = .false. ! use upstream scheme near river mouths … … 130 128 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 131 129 ln_dynadv_ubs = .true. ! flux form - 3rd order UBS scheme 132 ln_dynzad_zts = .false. ! Use (T) sub timestepping for vertical momentum advection133 130 / 134 131 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/OVERFLOW/EXP00/namelist_cfg
r8215 r8568 80 80 / 81 81 !----------------------------------------------------------------------- 82 &namtra_adv ! advection scheme for tracer 82 &namtra_adv ! advection scheme for tracer (default: NO selection) 83 83 !----------------------------------------------------------------------- 84 84 ln_traadv_cen = .false. ! 2nd order centered scheme … … 88 88 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order 89 89 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 90 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping91 ! ! (number of sub-timestep = nn_fct_zts)92 90 ln_traadv_mus = .false. ! MUSCL scheme 93 91 ln_mus_ups = .false. ! use upstream scheme near river mouths … … 117 115 / 118 116 !----------------------------------------------------------------------- 119 &namdyn_adv ! formulation of the momentum advection 120 !----------------------------------------------------------------------- 117 &namdyn_adv ! formulation of the momentum advection (default: NO selection) 118 !----------------------------------------------------------------------- 119 ln_dynadv_NONE= .false. ! linear dynamics (no momentum advection) 121 120 ln_dynadv_vec = .false. ! vector form (T) or flux form (F) 122 121 nn_dynkeg = 0 ! scheme for grad(KE): =0 C2 ; =1 Hollingsworth correction 123 122 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 124 123 ln_dynadv_ubs = .true. ! flux form - 3rd order UBS scheme 125 ln_dynzad_zts = .false. ! Use (T) sub timestepping for vertical momentum advection126 124 / 127 125 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/OVERFLOW/EXP00/namelist_sco_FCT2_flux_ubs_cfg
r8215 r8568 89 89 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order 90 90 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 91 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping92 ! ! (number of sub-timestep = nn_fct_zts)93 91 ln_traadv_mus = .false. ! MUSCL scheme 94 92 ln_mus_ups = .false. ! use upstream scheme near river mouths … … 118 116 / 119 117 !----------------------------------------------------------------------- 120 &namdyn_adv ! formulation of the momentum advection 121 !----------------------------------------------------------------------- 118 &namdyn_adv ! formulation of the momentum advection (default: NO selection) 119 !----------------------------------------------------------------------- 120 ln_dynadv_NONE= .false. ! linear dynamics (no momentum advection) 122 121 ln_dynadv_vec = .false. ! vector form (T) or flux form (F) 123 122 nn_dynkeg = 0 ! scheme for grad(KE): =0 C2 ; =1 Hollingsworth correction 124 123 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 125 124 ln_dynadv_ubs = .true. ! flux form - 3rd order UBS scheme 126 ln_dynzad_zts = .false. ! Use (T) sub timestepping for vertical momentum advection127 125 / 128 126 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/OVERFLOW/EXP00/namelist_zps_FCT2_flux_ubs_cfg
r8215 r8568 89 89 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order 90 90 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 91 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping92 ! ! (number of sub-timestep = nn_fct_zts)93 91 ln_traadv_mus = .false. ! MUSCL scheme 94 92 ln_mus_ups = .false. ! use upstream scheme near river mouths … … 118 116 / 119 117 !----------------------------------------------------------------------- 120 &namdyn_adv ! formulation of the momentum advection 121 !----------------------------------------------------------------------- 118 &namdyn_adv ! formulation of the momentum advection (default: NO selection) 119 !----------------------------------------------------------------------- 120 ln_dynadv_NONE= .false. ! linear dynamics (no momentum advection) 122 121 ln_dynadv_vec = .false. ! vector form (T) or flux form (F) 123 122 nn_dynkeg = 0 ! scheme for grad(KE): =0 C2 ; =1 Hollingsworth correction 124 123 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 125 124 ln_dynadv_ubs = .true. ! flux form - 3rd order UBS scheme 126 ln_dynzad_zts = .false. ! Use (T) sub timestepping for vertical momentum advection127 125 / 128 126 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/OVERFLOW/EXP00/namelist_zps_FCT4_flux_ubs_cfg
r8215 r8568 89 89 nn_fct_h = 4 ! =2/4, horizontal 2nd / 4th order 90 90 nn_fct_v = 4 ! =2/4, vertical 2nd / COMPACT 4th order 91 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping92 ! ! (number of sub-timestep = nn_fct_zts)93 91 ln_traadv_mus = .false. ! MUSCL scheme 94 92 ln_mus_ups = .false. ! use upstream scheme near river mouths … … 118 116 / 119 117 !----------------------------------------------------------------------- 120 &namdyn_adv ! formulation of the momentum advection 121 !----------------------------------------------------------------------- 118 &namdyn_adv ! formulation of the momentum advection (default: NO selection) 119 !----------------------------------------------------------------------- 120 ln_dynadv_NONE= .false. ! linear dynamics (no momentum advection) 122 121 ln_dynadv_vec = .false. ! vector form (T) or flux form (F) 123 122 nn_dynkeg = 0 ! scheme for grad(KE): =0 C2 ; =1 Hollingsworth correction 124 123 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 125 124 ln_dynadv_ubs = .true. ! flux form - 3rd order UBS scheme 126 ln_dynzad_zts = .false. ! Use (T) sub timestepping for vertical momentum advection127 125 / 128 126 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/OVERFLOW/EXP00/namelist_zps_FCT4_vect_een_cfg
r8215 r8568 89 89 nn_fct_h = 4 ! =2/4, horizontal 2nd / 4th order 90 90 nn_fct_v = 4 ! =2/4, vertical 2nd / COMPACT 4th order 91 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping92 ! ! (number of sub-timestep = nn_fct_zts)93 91 ln_traadv_mus = .false. ! MUSCL scheme 94 92 ln_mus_ups = .false. ! use upstream scheme near river mouths … … 118 116 / 119 117 !----------------------------------------------------------------------- 120 &namdyn_adv ! formulation of the momentum advection 121 !----------------------------------------------------------------------- 118 &namdyn_adv ! formulation of the momentum advection (default: NO selection) 119 !----------------------------------------------------------------------- 120 ln_dynadv_NONE= .false. ! linear dynamics (no momentum advection) 122 121 ln_dynadv_vec = .true. ! vector form (T) or flux form (F) 123 122 nn_dynkeg = 0 ! scheme for grad(KE): =0 C2 ; =1 Hollingsworth correction 124 123 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 125 124 ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme 126 ln_dynzad_zts = .false. ! Use (T) sub timestepping for vertical momentum advection127 125 / 128 126 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/SAS_BIPER/EXP00/1_namelist_cfg
r8215 r8568 99 99 nn_fct_h = 4 ! =2/4, horizontal 2nd / 4th order 100 100 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 101 nn_fct_zts = 0 ! > 1 , 2nd order FCT scheme with vertical sub-timestepping102 ! ! (number of sub-timestep = nn_fct_zts)103 101 / 104 102 !----------------------------------------------------------------------- … … 144 142 &namtra_dmp ! tracer: T & S newtonian damping (default: NO) 145 143 !----------------------------------------------------------------------- 146 !----------------------------------------------------------------------- 147 &namdyn_adv ! formulation of the momentum advection 144 / 145 !----------------------------------------------------------------------- 146 &namdyn_adv ! formulation of the momentum advection (default: NO selection) 147 !----------------------------------------------------------------------- 148 ln_dynadv_NONE= .false. ! linear dynamics (no momentum advection) 149 ln_dynadv_vec = .true. ! vector form (T) or flux form (F) 150 nn_dynkeg = 0 ! scheme for grad(KE): =0 C2 ; =1 Hollingsworth correction 151 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 152 ln_dynadv_ubs = .true. ! flux form - 3rd order UBS scheme 148 153 !----------------------------------------------------------------------- 149 154 / -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/SAS_BIPER/EXP00/namelist_cfg
r8215 r8568 100 100 / 101 101 !----------------------------------------------------------------------- 102 &namtra_adv ! advection scheme for tracer 102 &namtra_adv ! advection scheme for tracer (default: NO selection) 103 103 !----------------------------------------------------------------------- 104 104 ln_traadv_fct = .true. ! FCT scheme 105 105 nn_fct_h = 4 ! =2/4, horizontal 2nd / 4th order 106 106 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 107 nn_fct_zts = 0 ! > 1 , 2nd order FCT scheme with vertical sub-timestepping108 ! ! (number of sub-timestep = nn_fct_zts)109 107 / 110 108 !----------------------------------------------------------------------- … … 160 158 &namtra_dmp ! tracer: T & S newtonian damping (default: NO) 161 159 !----------------------------------------------------------------------- 162 !----------------------------------------------------------------------- 163 &namdyn_adv ! formulation of the momentum advection 164 !----------------------------------------------------------------------- 160 / 161 !----------------------------------------------------------------------- 162 &namdyn_adv ! formulation of the momentum advection (default: NO selection) 163 !----------------------------------------------------------------------- 164 ln_dynadv_NONE= .false. ! linear dynamics (no momentum advection) 165 ln_dynadv_vec = .true. ! vector form - 2nd centered scheme 166 nn_dynkeg = 0 ! grad(KE) scheme: =0 C2 ; =1 Hollingsworth correction 167 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 168 ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme 165 169 / 166 170 !----------------------------------------------------------------------- -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/TEST_CASES/WAD/EXP00/namelist_cfg
r8215 r8568 219 219 / 220 220 !----------------------------------------------------------------------- 221 &namtra_adv ! advection scheme for tracer 222 !----------------------------------------------------------------------- 221 &namtra_adv ! advection scheme for tracer (default: No selection) 222 !----------------------------------------------------------------------- 223 ln_traadv_NONE= .false. ! No tracer advection 223 224 ln_traadv_cen = .false. ! 2nd order centered scheme 224 225 ln_traadv_mus = .false. ! MUSCL scheme … … 226 227 nn_fct_h = 2 ! =2/4, horizontal 2nd / 4th order 227 228 nn_fct_v = 2 ! =2/4, vertical 2nd / COMPACT 4th order 228 nn_fct_zts = 0 ! >=1, 2nd order FCT scheme with vertical sub-timestepping229 ! ! (number of sub-timestep = nn_fct_zts)230 229 / 231 230 !----------------------------------------------------------------------- … … 275 274 / 276 275 !----------------------------------------------------------------------- 277 &namdyn_adv ! formulation of the momentum advection 276 &namdyn_adv ! formulation of the momentum advection (default: NO selection) 277 !----------------------------------------------------------------------- 278 ln_dynadv_NONE= .false. ! linear dynamics (no momentum advection) 279 ln_dynadv_vec = .true. ! vector form - 2nd centered scheme 280 nn_dynkeg = 0 ! grad(KE) scheme: =0 C2 ; =1 Hollingsworth correction 281 ln_dynadv_cen2= .false. ! flux form - 2nd order centered scheme 282 ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme 278 283 !----------------------------------------------------------------------- 279 284 / -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/CONFIG/cfg.txt
r8215 r8568 6 6 ORCA2_OFF_PISCES OPA_SRC OFF_SRC TOP_SRC 7 7 ORCA2_OFF_TRC OPA_SRC OFF_SRC TOP_SRC 8 GYRE_PISCES_XIOS OPA_SRC TOP_SRC 8 9 ORCA2_LIM3_PISCES OPA_SRC LIM_SRC_3 TOP_SRC NST_SRC 9 GYRE_PISCES_ XIOS OPA_SRC TOP_SRC10 GYRE_PISCES_RK3 RK3_SRC TOP_SRC -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/LIM_SRC_3/limrhg.F90
r7753 r8568 674 674 ! print charge ellipse 675 675 ! This can be desactivated once the user is sure that the stress state 676 ! lie on the charge ellipse. See Bouillon et al. 08for more details676 ! lie on the charge ellipse. See Bouillon et al. (2008) for more details 677 677 IF(ln_ctl) THEN 678 678 CALL prt_ctl_info('lim_rhg : numit :',ivar1=numit) -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OFF_SRC/nemogcm.F90
r8215 r8568 157 157 NAMELIST/namctl/ ln_ctl , nn_print, nn_ictls, nn_ictle, & 158 158 & nn_isplt, nn_jsplt, nn_jctls, nn_jctle, & 159 & nn_timing, nn_diacfl159 & ln_timing, ln_diacfl 160 160 161 161 NAMELIST/namcfg/ ln_read_cfg, cn_domcfg, ln_write_cfg, cn_domcfg_out, ln_use_jattr … … 289 289 ENDIF 290 290 ! 291 IF( nn_timing == 1 )CALL timing_init291 IF( ln_timing ) CALL timing_init 292 292 ! 293 293 294 294 ! ! General initialization 295 IF( nn_timing == 1 )CALL timing_start( 'nemo_init')296 ! 297 298 299 IF( lk_c1d 300 301 302 303 304 305 IF( ln_nnogather ) 306 307 IF( ln_ctl 308 309 310 311 312 313 314 IF( l_ldfslp )CALL ldf_slp_init ! slope of lateral mixing315 316 317 IF( ln_trabbl 318 319 320 321 322 323 324 295 IF( ln_timing ) CALL timing_start( 'nemo_init') 296 ! 297 CALL phy_cst ! Physical constants 298 CALL eos_init ! Equation of state 299 IF( lk_c1d ) CALL c1d_init ! 1D column configuration 300 301 CALL dom_init ! Domain 302 303 CALL istate_init ! ocean initial state (Dynamics and tracers) 304 305 IF( ln_nnogather ) CALL nemo_northcomms ! Initialise the northfold neighbour lists (must be done after the masks are defined) 306 307 IF( ln_ctl ) CALL prt_ctl_init ! Print control 308 309 CALL sbc_init ! Forcings : surface module 310 311 CALL ldf_tra_init ! Lateral ocean tracer physics 312 CALL ldf_eiv_init ! Eddy induced velocity param 313 CALL tra_ldf_init ! lateral mixing 314 IF( l_ldfslp ) CALL ldf_slp_init ! slope of lateral mixing 315 316 CALL tra_qsr_init ! penetrative solar radiation qsr 317 IF( ln_trabbl ) CALL tra_bbl_init ! advective (and/or diffusive) bottom boundary layer scheme 318 319 CALL trc_nam_run ! Needed to get restart parameters for passive tracers 320 CALL trc_rst_cal( nit000, 'READ' ) ! calendar 321 CALL dta_dyn_init ! Initialization for the dynamics 322 323 CALL trc_init ! Passive tracers initialization 324 CALL dia_ptr_init ! Initialise diaptr as some variables are used 325 325 ! ! in various advection and diffusion routines 326 326 IF(lwp) WRITE(numout,cform_aaa) ! Flag AAAAAAA 327 327 ! 328 IF( nn_timing == 1 )CALL timing_stop( 'nemo_init')328 IF( ln_timing ) CALL timing_stop( 'nemo_init') 329 329 ! 330 330 END SUBROUTINE nemo_init … … 353 353 WRITE(numout,*) ' number of proc. following i nn_isplt = ', nn_isplt 354 354 WRITE(numout,*) ' number of proc. following j nn_jsplt = ', nn_jsplt 355 WRITE(numout,*) ' timing activated (0/1) nn_timing = ', nn_timing 355 WRITE(numout,*) ' timing by routine ln_timing = ', ln_timing 356 WRITE(numout,*) ' CFL diagnostics ln_diacfl = ', ln_diacfl 356 357 ENDIF 357 358 ! … … 363 364 isplt = nn_isplt 364 365 jsplt = nn_jsplt 366 !!gm to be remove at the end of the 2017 merge party 367 if( ln_timing ) then ; nn_timing = 1 368 else ; nn_timing = 0 369 endif 370 !!gm end 365 371 366 372 -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DIA/diacfl.F90
r7753 r8568 1 1 MODULE diacfl 2 !!====================================================================== ========2 !!====================================================================== 3 3 !! *** MODULE diacfl *** 4 4 !! Output CFL diagnostics to ascii file 5 !!====================================================================== ========6 !! History : 1.0! 2010-03 (E. Blockley) Original code7 !! ! 2014-06 (T Graham)Removed CPP key & Updated to vn3.68 !! 5 !!====================================================================== 6 !! History : 3.4 ! 2010-03 (E. Blockley) Original code 7 !! 3.6 ! 2014-06 (T. Graham) Removed CPP key & Updated to vn3.6 8 !! 4.0 ! 2017-09 (G. Madec) style + comments 9 9 !!---------------------------------------------------------------------- 10 10 !! dia_cfl : Compute and output Courant numbers at each timestep … … 12 12 USE oce ! ocean dynamics and active tracers 13 13 USE dom_oce ! ocean space and time domain 14 USE domvvl ! 15 ! 14 16 USE lib_mpp ! distribued memory computing 15 17 USE lbclnk ! ocean lateral boundary condition (or mpp link) 16 18 USE in_out_manager ! I/O manager 17 USE domvvl18 19 USE timing ! Performance output 19 20 … … 21 22 PRIVATE 22 23 23 REAL(wp) :: cu_max, cv_max, cw_max ! Run max U Courant number24 INTEGER , DIMENSION(3) :: cu_loc, cv_loc, cw_loc ! Run max locations25 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: zcu_cfl ! Courant number arrays26 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: zcv_cfl ! Courant number arrays27 REAL(wp) , ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: zcw_cfl ! Courant number arrays24 CHARACTER(LEN=50) :: clname="cfl_diagnostics.ascii" ! ascii filename 25 INTEGER :: numcfl ! outfile unit 26 ! 27 INTEGER, DIMENSION(3) :: nCu_loc, nCv_loc, nCw_loc ! U, V, and W run max locations in the global domain 28 REAL(wp) :: rCu_max, rCv_max, rCw_max ! associated run max Courant number 28 29 29 INTEGER :: numcfl ! outfile unit 30 CHARACTER(LEN=50) :: clname="cfl_diagnostics.ascii" ! ascii filename 30 !!gm CAUTION: need to declare these arrays here, otherwise the calculation fails in multi-proc ! 31 !!gm 8 don't understand why. 32 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zCu_cfl, zCv_cfl, zCw_cfl ! workspace 33 !!gm end 31 34 32 35 PUBLIC dia_cfl ! routine called by step.F90 … … 40 43 !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt) 41 44 !!---------------------------------------------------------------------- 42 43 44 45 CONTAINS 45 46 46 47 47 SUBROUTINE dia_cfl ( kt ) … … 52 52 !! and output to ascii file 'cfl_diagnostics.ascii' 53 53 !!---------------------------------------------------------------------- 54 INTEGER, INTENT(in) :: kt ! ocean time-step index 55 ! 56 INTEGER :: ji, jj, jk ! dummy loop indices 57 REAL(wp):: z2dt, zCu_max, zCv_max, zCw_max ! local scalars 58 INTEGER , DIMENSION(3) :: iloc_u , iloc_v , iloc_w , iloc ! workspace 59 !!gm this does not work REAL(wp), DIMENSION(jpi,jpj,jpk) :: zCu_cfl, zCv_cfl, zCw_cfl ! workspace 60 !!---------------------------------------------------------------------- 61 ! 62 IF( nn_timing == 1 ) CALL timing_start('dia_cfl') 63 ! 64 ! ! setup timestep multiplier to account for initial Eulerian timestep 65 IF( neuler == 0 .AND. kt == nit000 ) THEN ; z2dt = rdt 66 ELSE ; z2dt = rdt * 2._wp 67 ENDIF 68 ! 69 ! 70 DO jk = 1, jpk ! calculate Courant numbers 71 DO jj = 1, jpj 72 DO ji = 1, fs_jpim1 ! vector opt. 73 zCu_cfl(ji,jj,jk) = ABS( un(ji,jj,jk) ) * z2dt / e1u (ji,jj) ! for i-direction 74 zCv_cfl(ji,jj,jk) = ABS( vn(ji,jj,jk) ) * z2dt / e2v (ji,jj) ! for j-direction 75 zCw_cfl(ji,jj,jk) = ABS( wn(ji,jj,jk) ) * z2dt / e3w_n(ji,jj,jk) ! for k-direction 76 END DO 77 END DO 78 END DO 79 ! 80 ! ! calculate maximum values and locations 81 IF( lk_mpp ) THEN 82 CALL mpp_maxloc( zCu_cfl, umask, zCu_max, iloc_u(1), iloc_u(2), iloc_u(3) ) 83 CALL mpp_maxloc( zCv_cfl, vmask, zCv_max, iloc_v(1), iloc_v(2), iloc_v(3) ) 84 CALL mpp_maxloc( zCw_cfl, wmask, zCw_max, iloc_w(1), iloc_w(2), iloc_w(3) ) 85 ELSE 86 iloc = MAXLOC( ABS( zcu_cfl(:,:,:) ) ) 87 iloc_u(1) = iloc(1) + nimpp - 1 88 iloc_u(2) = iloc(2) + njmpp - 1 89 iloc_u(3) = iloc(3) 90 zCu_max = zCu_cfl(iloc(1),iloc(2),iloc(3)) 91 ! 92 iloc = MAXLOC( ABS( zcv_cfl(:,:,:) ) ) 93 iloc_v(1) = iloc(1) + nimpp - 1 94 iloc_v(2) = iloc(2) + njmpp - 1 95 iloc_v(3) = iloc(3) 96 zCv_max = zCv_cfl(iloc(1),iloc(2),iloc(3)) 97 ! 98 iloc = MAXLOC( ABS( zcw_cfl(:,:,:) ) ) 99 iloc_w(1) = iloc(1) + nimpp - 1 100 iloc_w(2) = iloc(2) + njmpp - 1 101 iloc_w(3) = iloc(3) 102 zCw_max = zCw_cfl(iloc(1),iloc(2),iloc(3)) 103 ENDIF 104 ! 105 ! ! write out to file 106 IF( lwp ) THEN 107 WRITE(numcfl,FMT='(2x,i4,5x,a6,5x,f6.4,1x,i4,1x,i4,1x,i4)') kt, 'Max Cu', zCu_max, iloc_u(1), iloc_u(2), iloc_u(3) 108 WRITE(numcfl,FMT='(11x, a6,5x,f6.4,1x,i4,1x,i4,1x,i4)') 'Max Cv', zCv_max, iloc_v(1), iloc_v(2), iloc_v(3) 109 WRITE(numcfl,FMT='(11x, a6,5x,f6.4,1x,i4,1x,i4,1x,i4)') 'Max Cw', zCw_max, iloc_w(1), iloc_w(2), iloc_w(3) 110 ENDIF 111 ! 112 ! ! update maximum Courant numbers from whole run if applicable 113 IF( zCu_max > rCu_max ) THEN ; rCu_max = zCu_max ; nCu_loc(:) = iloc_u(:) ; ENDIF 114 IF( zCv_max > rCv_max ) THEN ; rCv_max = zCv_max ; nCv_loc(:) = iloc_v(:) ; ENDIF 115 IF( zCw_max > rCw_max ) THEN ; rCw_max = zCw_max ; nCw_loc(:) = iloc_w(:) ; ENDIF 54 116 55 INTEGER, INTENT(in) :: kt ! ocean time-step index 117 ! ! at end of run output max Cu and Cv and close ascii file 118 IF( kt == nitend .AND. lwp ) THEN 119 ! to ascii file 120 WRITE(numcfl,*) '******************************************' 121 WRITE(numcfl,FMT='(3x,a12,7x,f6.4,1x,i4,1x,i4,1x,i4)') 'Run Max Cu', rCu_max, nCu_loc(1), nCu_loc(2), nCu_loc(3) 122 WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', z2dt/rCu_max 123 WRITE(numcfl,*) '******************************************' 124 WRITE(numcfl,FMT='(3x,a12,7x,f6.4,1x,i4,1x,i4,1x,i4)') 'Run Max Cv', rCv_max, nCv_loc(1), nCv_loc(2), nCv_loc(3) 125 WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', z2dt/rCv_max 126 WRITE(numcfl,*) '******************************************' 127 WRITE(numcfl,FMT='(3x,a12,7x,f6.4,1x,i4,1x,i4,1x,i4)') 'Run Max Cw', rCw_max, nCw_loc(1), nCw_loc(2), nCw_loc(3) 128 WRITE(numcfl,FMT='(3x,a8,11x,f15.1)') ' => dt/C', z2dt/rCw_max 129 CLOSE( numcfl ) 130 ! 131 ! to ocean output 132 WRITE(numout,*) 133 WRITE(numout,*) 'dia_cfl : Maximum Courant number information for the run ' 134 WRITE(numout,*) '~~~~~~~' 135 WRITE(numout,*) ' Max Cu = ', rCu_max, ' at (i,j,k) = (',nCu_loc(1),nCu_loc(2),nCu_loc(3),') => dt/C = ', z2dt/rCu_max 136 WRITE(numout,*) ' Max Cv = ', rCv_max, ' at (i,j,k) = (',nCv_loc(1),nCv_loc(2),nCv_loc(3),') => dt/C = ', z2dt/rCv_max 137 WRITE(numout,*) ' Max Cw = ', rCw_max, ' at (i,j,k) = (',nCw_loc(1),nCw_loc(2),nCw_loc(3),') => dt/C = ', z2dt/rCw_max 138 ENDIF 139 ! 140 IF( nn_timing == 1 ) CALL timing_stop('dia_cfl') 141 ! 142 END SUBROUTINE dia_cfl 56 143 57 REAL(wp) :: zcu_max, zcv_max, zcw_max ! max Courant numbers per timestep58 INTEGER, DIMENSION(3) :: zcu_loc, zcv_loc, zcw_loc ! max Courant number locations59 60 REAL(wp) :: dt ! temporary scalars61 INTEGER, DIMENSION(3) :: zlocu, zlocv, zlocw ! temporary arrays62 INTEGER :: ji, jj, jk ! dummy loop indices63 64 65 IF( nn_diacfl == 1) THEN66 IF( nn_timing == 1 ) CALL timing_start('dia_cfl')67 ! setup timestep multiplier to account for initial Eulerian timestep68 IF( neuler == 0 .AND. kt == nit000 ) THEN ; dt = rdt69 ELSE ; dt = rdt * 2.070 ENDIF71 72 ! calculate Courant numbers73 DO jk = 1, jpk74 DO jj = 1, jpj75 DO ji = 1, fs_jpim1 ! vector opt.76 77 ! Courant number for x-direction (zonal current)78 zcu_cfl(ji,jj,jk) = ABS(un(ji,jj,jk))*dt/e1u(ji,jj)79 80 ! Courant number for y-direction (meridional current)81 zcv_cfl(ji,jj,jk) = ABS(vn(ji,jj,jk))*dt/e2v(ji,jj)82 83 ! Courant number for z-direction (vertical current)84 zcw_cfl(ji,jj,jk) = ABS(wn(ji,jj,jk))*dt/e3w_n(ji,jj,jk)85 END DO86 END DO87 END DO88 89 ! calculate maximum values and locations90 IF( lk_mpp ) THEN91 CALL mpp_maxloc(zcu_cfl,umask,zcu_max, zcu_loc(1), zcu_loc(2), zcu_loc(3))92 CALL mpp_maxloc(zcv_cfl,vmask,zcv_max, zcv_loc(1), zcv_loc(2), zcv_loc(3))93 CALL mpp_maxloc(zcw_cfl,tmask,zcw_max, zcw_loc(1), zcw_loc(2), zcw_loc(3))94 ELSE95 zlocu = MAXLOC( ABS( zcu_cfl(:,:,:) ) )96 zcu_loc(1) = zlocu(1) + nimpp - 197 zcu_loc(2) = zlocu(2) + njmpp - 198 zcu_loc(3) = zlocu(3)99 zcu_max = zcu_cfl(zcu_loc(1),zcu_loc(2),zcu_loc(3))100 101 zlocv = MAXLOC( ABS( zcv_cfl(:,:,:) ) )102 zcv_loc(1) = zlocv(1) + nimpp - 1103 zcv_loc(2) = zlocv(2) + njmpp - 1104 zcv_loc(3) = zlocv(3)105 zcv_max = zcv_cfl(zcv_loc(1),zcv_loc(2),zcv_loc(3))106 107 zlocw = MAXLOC( ABS( zcw_cfl(:,:,:) ) )108 zcw_loc(1) = zlocw(1) + nimpp - 1109 zcw_loc(2) = zlocw(2) + njmpp - 1110 zcw_loc(3) = zlocw(3)111 zcw_max = zcw_cfl(zcw_loc(1),zcw_loc(2),zcw_loc(3))112 ENDIF113 114 ! write out to file115 IF( lwp ) THEN116 WRITE(numcfl,FMT='(2x,i4,5x,a6,5x,f6.4,1x,i4,1x,i4,1x,i4)') kt, 'Max Cu', zcu_max, zcu_loc(1), zcu_loc(2), zcu_loc(3)117 WRITE(numcfl,FMT='(11x,a6,5x,f6.4,1x,i4,1x,i4,1x,i4)') 'Max Cv', zcv_max, zcv_loc(1), zcv_loc(2), zcv_loc(3)118 WRITE(numcfl,FMT='(11x,a6,5x,f6.4,1x,i4,1x,i4,1x,i4)') 'Max Cw', zcw_max, zcw_loc(1), zcw_loc(2), zcw_loc(3)119 ENDIF120 121 ! update maximum Courant numbers from whole run if applicable122 IF( zcu_max > cu_max ) THEN123 cu_max = zcu_max124 cu_loc = zcu_loc125 ENDIF126 IF( zcv_max > cv_max ) THEN127 cv_max = zcv_max128 cv_loc = zcv_loc129 ENDIF130 IF( zcw_max > cw_max ) THEN131 cw_max = zcw_max132 cw_loc = zcw_loc133 ENDIF134 135 ! at end of run output max Cu and Cv and close ascii file136 IF( kt == nitend .AND. lwp ) THEN137 ! to ascii file138 WRITE(numcfl,*) '******************************************'139 WRITE(numcfl,FMT='(3x,a12,7x,f6.4,1x,i4,1x,i4,1x,i4)') 'Run Max Cu', cu_max, cu_loc(1), cu_loc(2), cu_loc(3)140 WRITE(numcfl,FMT='(3x,a8,11x,f7.1)') ' => dt/C', dt*(1.0/cu_max)141 WRITE(numcfl,*) '******************************************'142 WRITE(numcfl,FMT='(3x,a12,7x,f6.4,1x,i4,1x,i4,1x,i4)') 'Run Max Cv', cv_max, cv_loc(1), cv_loc(2), cv_loc(3)143 WRITE(numcfl,FMT='(3x,a8,11x,f7.1)') ' => dt/C', dt*(1.0/cv_max)144 WRITE(numcfl,*) '******************************************'145 WRITE(numcfl,FMT='(3x,a12,7x,f6.4,1x,i4,1x,i4,1x,i4)') 'Run Max Cw', cw_max, cw_loc(1), cw_loc(2), cw_loc(3)146 WRITE(numcfl,FMT='(3x,a8,11x,f7.1)') ' => dt/C', dt*(1.0/cw_max)147 CLOSE( numcfl )148 149 ! to ocean output150 WRITE(numout,*)151 WRITE(numout,*) 'dia_cfl : Maximum Courant number information for the run:'152 WRITE(numout,*) '~~~~~~~~~~~~'153 WRITE(numout,FMT='(12x,a12,7x,f6.4,5x,a16,i4,1x,i4,1x,i4,a1)') 'Run Max Cu', cu_max, 'at (i, j, k) = (', cu_loc(1), cu_loc(2), cu_loc(3), ')'154 WRITE(numout,FMT='(12x,a8,11x,f7.1)') ' => dt/C', dt*(1.0/cu_max)155 WRITE(numout,FMT='(12x,a12,7x,f6.4,5x,a16,i4,1x,i4,1x,i4,a1)') 'Run Max Cv', cv_max, 'at (i, j, k) = (', cv_loc(1), cv_loc(2), cv_loc(3), ')'156 WRITE(numout,FMT='(12x,a8,11x,f7.1)') ' => dt/C', dt*(1.0/cv_max)157 WRITE(numout,FMT='(12x,a12,7x,f6.4,5x,a16,i4,1x,i4,1x,i4,a1)') 'Run Max Cw', cw_max, 'at (i, j, k) = (', cw_loc(1), cw_loc(2), cw_loc(3), ')'158 WRITE(numout,FMT='(12x,a8,11x,f7.1)') ' => dt/C', dt*(1.0/cw_max)159 160 ENDIF161 162 IF( nn_timing == 1 ) CALL timing_stop('dia_cfl')163 ENDIF164 165 END SUBROUTINE dia_cfl166 144 167 145 SUBROUTINE dia_cfl_init … … 171 149 !! ** Purpose : create output file, initialise arrays 172 150 !!---------------------------------------------------------------------- 173 174 175 IF( nn_diacfl == 1 ) THEN 176 IF( nn_timing == 1 ) CALL timing_start('dia_cfl_init') 177 178 cu_max=0.0 179 cv_max=0.0 180 cw_max=0.0 181 182 ALLOCATE( zcu_cfl(jpi, jpj, jpk), zcv_cfl(jpi, jpj, jpk), zcw_cfl(jpi, jpj, jpk) ) 183 184 zcu_cfl(:,:,:)=0.0 185 zcv_cfl(:,:,:)=0.0 186 zcw_cfl(:,:,:)=0.0 187 188 IF( lwp ) THEN 189 WRITE(numout,*) 190 WRITE(numout,*) 'dia_cfl : Outputting CFL diagnostics to '//TRIM(clname) 191 WRITE(numout,*) '~~~~~~~~~~~~' 192 WRITE(numout,*) 193 194 ! create output ascii file 195 CALL ctl_opn( numcfl, clname, 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', 1, numout, lwp, 1 ) 196 WRITE(numcfl,*) 'Timestep Direction Max C i j k' 197 WRITE(numcfl,*) '******************************************' 198 ENDIF 199 200 IF( nn_timing == 1 ) CALL timing_stop('dia_cfl_init') 201 151 ! 152 IF(lwp) THEN 153 WRITE(numout,*) 154 WRITE(numout,*) 'dia_cfl : Outputting CFL diagnostics to ',TRIM(clname), ' file' 155 WRITE(numout,*) '~~~~~~~' 156 WRITE(numout,*) 157 ! 158 ! create output ascii file 159 CALL ctl_opn( numcfl, clname, 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', 1, numout, lwp, 1 ) 160 WRITE(numcfl,*) 'Timestep Direction Max C i j k' 161 WRITE(numcfl,*) '******************************************' 202 162 ENDIF 203 163 ! 164 rCu_max = 0._wp 165 rCv_max = 0._wp 166 rCw_max = 0._wp 167 ! 168 !!gm required to work 169 ALLOCATE ( zCu_cfl(jpi,jpj,jpk), zCv_cfl(jpi,jpj,jpk), zCw_cfl(jpi,jpj,jpk) ) 170 !!gm end 171 ! 204 172 END SUBROUTINE dia_cfl_init 205 173 174 !!====================================================================== 206 175 END MODULE diacfl -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/daymod.F90
r7646 r8568 222 222 !!---------------------------------------------------------------------- 223 223 ! 224 IF( nn_timing == 1 )CALL timing_start('day')224 IF( ln_timing ) CALL timing_start('day') 225 225 ! 226 226 zprec = 0.1 / rday … … 276 276 IF( lrst_oce ) CALL day_rst( kt, 'WRITE' ) ! write day restart information 277 277 ! 278 IF( nn_timing == 1 )CALL timing_stop('day')278 IF( ln_timing ) CALL timing_stop('day') 279 279 ! 280 280 END SUBROUTINE day … … 402 402 CALL iom_rstput( kt, nitrst, numrow, 'adatrj' , adatrj ) ! number of elapsed days since 403 403 ! ! the begining of the run [s] 404 CALL iom_rstput( kt, nitrst, numrow, 'ntime' , REAL( nn_time0, wp) ) ! time404 CALL iom_rstput( kt, nitrst, numrow, 'ntime' , REAL( nn_time0, wp) ) ! time 405 405 ENDIF 406 406 ! -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/depth_e3.F90
r7753 r8568 20 20 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 21 21 USE lib_mpp ! distributed memory computing library 22 USE wrk_nemo ! Memory allocation23 22 USE timing ! Timing 24 23 -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90
r7822 r8568 45 45 USE lbclnk ! ocean lateral boundary condition (or mpp link) 46 46 USE lib_mpp ! distributed memory computing library 47 USE wrk_nemo ! Memory Allocation48 47 USE timing ! Timing 49 48 … … 83 82 !!---------------------------------------------------------------------- 84 83 ! 85 IF( nn_timing == 1) CALL timing_start('dom_init')84 IF( ln_timing ) CALL timing_start('dom_init') 86 85 ! 87 86 IF(lwp) THEN ! Ocean domain Parameters (control print) … … 199 198 IF( ln_write_cfg ) CALL cfg_write ! create the configuration file 200 199 ! 201 IF( nn_timing == 1) CALL timing_stop('dom_init')200 IF( ln_timing ) CALL timing_stop('dom_init') 202 201 ! 203 202 END SUBROUTINE dom_init -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/domhgr.F90
r7753 r8568 79 79 !!---------------------------------------------------------------------- 80 80 ! 81 IF( nn_timing == 1 )CALL timing_start('dom_hgr')81 IF( ln_timing ) CALL timing_start('dom_hgr') 82 82 ! 83 83 IF(lwp) THEN … … 152 152 ! 153 153 ! 154 IF( nn_timing == 1 )CALL timing_stop('dom_hgr')154 IF( ln_timing ) CALL timing_stop('dom_hgr') 155 155 ! 156 156 END SUBROUTINE dom_hgr -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90
r7753 r8568 30 30 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 31 31 USE lib_mpp ! Massively Parallel Processing library 32 USE wrk_nemo ! Memory allocation33 32 USE timing ! Timing 34 33 … … 92 91 INTEGER :: iktop, ikbot ! - - 93 92 INTEGER :: ios, inum 94 REAL(wp), POINTER, DIMENSION(:,:) :: zwf ! 2D workspace93 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zwf ! 2D workspace 95 94 !! 96 95 NAMELIST/namlbc/ rn_shlat, ln_vorlat … … 104 103 !!--------------------------------------------------------------------- 105 104 ! 106 IF( nn_timing == 1 )CALL timing_start('dom_msk')105 IF( ln_timing ) CALL timing_start('dom_msk') 107 106 ! 108 107 REWIND( numnam_ref ) ! Namelist namlbc in reference namelist : Lateral momentum boundary condition … … 248 247 IF( rn_shlat /= 0 ) THEN ! Not free-slip lateral boundary condition 249 248 ! 250 CALL wrk_alloc( jpi,jpj, zwf)249 ALLOCATE( zwf(jpi,jpj) ) 251 250 ! 252 251 DO jk = 1, jpk … … 278 277 END DO 279 278 ! 280 CALL wrk_dealloc( jpi,jpj,zwf )279 DEALLOCATE( zwf ) 281 280 ! 282 281 CALL lbc_lnk( fmask, 'F', 1._wp ) ! Lateral boundary conditions on fmask … … 292 291 ! 293 292 ! 294 IF( nn_timing == 1 )CALL timing_stop('dom_msk')293 IF( ln_timing ) CALL timing_stop('dom_msk') 295 294 ! 296 295 END SUBROUTINE dom_msk -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/domngb.F90
r7646 r8568 11 11 !!---------------------------------------------------------------------- 12 12 USE dom_oce ! ocean space and time domain 13 ! 13 14 USE in_out_manager ! I/O manager 14 15 USE lib_mpp ! for mppsum 15 USE wrk_nemo ! Memory allocation16 16 USE timing ! Timing 17 17 … … 45 45 INTEGER , DIMENSION(2) :: iloc 46 46 REAL(wp) :: zlon, zmini 47 REAL(wp), POINTER, DIMENSION(:,:) ::zglam, zgphi, zmask, zdist47 REAL(wp), DIMENSION(jpi,jpj) :: zglam, zgphi, zmask, zdist 48 48 !!-------------------------------------------------------------------- 49 49 ! 50 IF( nn_timing == 1 ) CALL timing_start('dom_ngb') 51 ! 52 CALL wrk_alloc( jpi,jpj, zglam, zgphi, zmask, zdist ) 50 IF( ln_timing ) CALL timing_start('dom_ngb') 53 51 ! 54 52 zmask(:,:) = 0._wp … … 79 77 ENDIF 80 78 ! 81 CALL wrk_dealloc( jpi,jpj, zglam, zgphi, zmask, zdist ) 82 ! 83 IF( nn_timing == 1 ) CALL timing_stop('dom_ngb') 79 IF( ln_timing ) CALL timing_stop('dom_ngb') 84 80 ! 85 81 END SUBROUTINE dom_ngb -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/domvvl.F90
r7753 r8568 6 6 !! History : 2.0 ! 2006-06 (B. Levier, L. Marie) original code 7 7 !! 3.1 ! 2009-02 (G. Madec, M. Leclair, R. Benshila) pure z* coordinate 8 !! 3.3 ! 2011-10 (M. Leclair) totally rewrote domvvl: 9 !! vvl option includes z_star and z_tilde coordinates 8 !! 3.3 ! 2011-10 (M. Leclair) totally rewrote domvvl: vvl option includes z_star and z_tilde coordinates 10 9 !! 3.6 ! 2014-11 (P. Mathiot) add ice shelf capability 11 10 !!---------------------------------------------------------------------- … … 31 30 USE lib_mpp ! distributed memory computing library 32 31 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 33 USE wrk_nemo ! Memory allocation34 32 USE timing ! Timing 35 33 … … 122 120 !!---------------------------------------------------------------------- 123 121 ! 124 IF( nn_timing == 1) CALL timing_start('dom_vvl_init')122 IF( ln_timing ) CALL timing_start('dom_vvl_init') 125 123 ! 126 124 IF(lwp) WRITE(numout,*) … … 242 240 ENDIF 243 241 ! 244 IF( nn_timing == 1 )CALL timing_stop('dom_vvl_init')242 IF( ln_timing ) CALL timing_stop('dom_vvl_init') 245 243 ! 246 244 END SUBROUTINE dom_vvl_init … … 276 274 REAL(wp) :: z2dt, z_tmin, z_tmax ! local scalars 277 275 LOGICAL :: ll_do_bclinic ! local logical 278 REAL(wp), POINTER, DIMENSION(:,:,:) :: ze3t279 REAL(wp), POINTER, DIMENSION(:,: ) :: zht, z_scale, zwu, zwv, zhdiv276 REAL(wp), DIMENSION(jpi,jpj) :: zht, z_scale, zwu, zwv, zhdiv 277 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t 280 278 !!---------------------------------------------------------------------- 281 279 ! 282 280 IF( ln_linssh ) RETURN ! No calculation in linear free surface 283 281 ! 284 IF( nn_timing == 1 ) CALL timing_start('dom_vvl_sf_nxt') 285 ! 286 CALL wrk_alloc( jpi,jpj,zht, z_scale, zwu, zwv, zhdiv ) 287 CALL wrk_alloc( jpi,jpj,jpk, ze3t ) 288 282 IF( ln_timing ) CALL timing_start('dom_vvl_sf_nxt') 283 ! 289 284 IF( kt == nit000 ) THEN 290 285 IF(lwp) WRITE(numout,*) … … 543 538 r1_hv_a(:,:) = ssvmask(:,:) / ( hv_a(:,:) + 1._wp - ssvmask(:,:) ) 544 539 ! 545 CALL wrk_dealloc( jpi,jpj, zht, z_scale, zwu, zwv, zhdiv ) 546 CALL wrk_dealloc( jpi,jpj,jpk, ze3t ) 547 ! 548 IF( nn_timing == 1 ) CALL timing_stop('dom_vvl_sf_nxt') 540 IF( ln_timing ) CALL timing_stop('dom_vvl_sf_nxt') 549 541 ! 550 542 END SUBROUTINE dom_vvl_sf_nxt … … 583 575 IF( ln_linssh ) RETURN ! No calculation in linear free surface 584 576 ! 585 IF( nn_timing == 1 )CALL timing_start('dom_vvl_sf_swp')577 IF( ln_timing ) CALL timing_start('dom_vvl_sf_swp') 586 578 ! 587 579 IF( kt == nit000 ) THEN … … 657 649 ! write restart file 658 650 ! ================== 659 IF( lrst_oce ) CALL dom_vvl_rst( kt, 'WRITE' )660 ! 661 IF( nn_timing == 1) CALL timing_stop('dom_vvl_sf_swp')651 IF( lrst_oce ) CALL dom_vvl_rst( kt, 'WRITE' ) 652 ! 653 IF( ln_timing ) CALL timing_stop('dom_vvl_sf_swp') 662 654 ! 663 655 END SUBROUTINE dom_vvl_sf_swp … … 683 675 !!---------------------------------------------------------------------- 684 676 ! 685 IF( nn_timing == 1) CALL timing_start('dom_vvl_interpol')677 IF( ln_timing ) CALL timing_start('dom_vvl_interpol') 686 678 ! 687 679 IF(ln_wd) THEN … … 770 762 END SELECT 771 763 ! 772 IF( nn_timing == 1) CALL timing_stop('dom_vvl_interpol')764 IF( ln_timing ) CALL timing_stop('dom_vvl_interpol') 773 765 ! 774 766 END SUBROUTINE dom_vvl_interpol … … 794 786 !!---------------------------------------------------------------------- 795 787 ! 796 IF( nn_timing == 1 ) CALL timing_start('dom_vvl_rst') 788 IF( ln_timing ) CALL timing_start('dom_vvl_rst') 789 ! 797 790 IF( TRIM(cdrw) == 'READ' ) THEN ! Read/initialise 798 791 ! ! =============== … … 947 940 ENDIF 948 941 ! 949 IF( nn_timing == 1 )CALL timing_stop('dom_vvl_rst')942 IF( ln_timing ) CALL timing_stop('dom_vvl_rst') 950 943 ! 951 944 END SUBROUTINE dom_vvl_rst -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/domwri.F90
r7646 r8568 24 24 USE lbclnk ! lateral boundary conditions - mpp exchanges 25 25 USE lib_mpp ! MPP library 26 USE wrk_nemo ! Memory allocation27 26 USE timing ! Timing 28 27 … … 75 74 INTEGER :: izco, izps, isco, icav 76 75 ! 77 REAL(wp), POINTER, DIMENSION(:,:) :: zprt, zprw ! 2D workspace 78 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepu, zdepv ! 3D workspace 79 !!---------------------------------------------------------------------- 80 ! 81 IF( nn_timing == 1 ) CALL timing_start('dom_wri') 82 ! 83 CALL wrk_alloc( jpi,jpj, zprt , zprw ) 84 CALL wrk_alloc( jpi,jpj,jpk, zdepu, zdepv ) 76 REAL(wp), DIMENSION(jpi,jpj) :: zprt, zprw ! 2D workspace 77 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zdepu, zdepv ! 3D workspace 78 !!---------------------------------------------------------------------- 79 ! 80 IF( ln_timing ) CALL timing_start('dom_wri') 85 81 ! 86 82 IF(lwp) WRITE(numout,*) … … 206 202 ! ! ============================ 207 203 ! 208 CALL wrk_dealloc( jpi, jpj, zprt, zprw ) 209 CALL wrk_dealloc( jpi, jpj, jpk, zdepu, zdepv ) 210 ! 211 IF( nn_timing == 1 ) CALL timing_stop('dom_wri') 204 IF( ln_timing ) CALL timing_stop('dom_wri') 212 205 ! 213 206 END SUBROUTINE dom_wri … … 229 222 INTEGER :: ji ! dummy loop indices 230 223 LOGICAL, DIMENSION(SIZE(puniq,1),SIZE(puniq,2),1) :: lldbl ! store whether each point is unique or not 231 REAL(wp), POINTER, DIMENSION(:,:) :: ztstref 232 !!---------------------------------------------------------------------- 233 ! 234 IF( nn_timing == 1 ) CALL timing_start('dom_uniq') 235 ! 236 CALL wrk_alloc( jpi, jpj, ztstref ) 224 REAL(wp), DIMENSION(jpi,jpj) :: ztstref 225 !!---------------------------------------------------------------------- 226 ! 227 IF( ln_timing ) CALL timing_start('dom_uniq') 237 228 ! 238 229 ! build an array with different values for each element … … 250 241 puniq(nldi:nlei,nldj:nlej) = REAL( COUNT( lldbl(nldi:nlei,nldj:nlej,:), dim = 3 ) , wp ) 251 242 ! 252 CALL wrk_dealloc( jpi, jpj, ztstref ) 253 ! 254 IF( nn_timing == 1 ) CALL timing_stop('dom_uniq') 243 IF( ln_timing ) CALL timing_stop('dom_uniq') 255 244 ! 256 245 END SUBROUTINE dom_uniq -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/domzgr.F90
r7753 r8568 36 36 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 37 37 USE lib_mpp ! distributed memory computing library 38 USE wrk_nemo ! Memory allocation39 38 USE timing ! Timing 40 39 … … 77 76 !!---------------------------------------------------------------------- 78 77 ! 79 IF( nn_timing == 1) CALL timing_start('dom_zgr')78 IF( ln_timing ) CALL timing_start('dom_zgr') 80 79 ! 81 80 IF(lwp) THEN ! Control print … … 164 163 ENDIF 165 164 ! 166 IF( nn_timing == 1 )CALL timing_stop('dom_zgr')165 IF( ln_timing ) CALL timing_stop('dom_zgr') 167 166 ! 168 167 END SUBROUTINE dom_zgr … … 284 283 ! 285 284 INTEGER :: ji, jj ! dummy loop indices 286 REAL(wp), POINTER, DIMENSION(:,:) :: zk 287 !!---------------------------------------------------------------------- 288 ! 289 IF( nn_timing == 1 ) CALL timing_start('zgr_top_bot') 290 ! 291 CALL wrk_alloc( jpi,jpj, zk ) 285 REAL(wp), DIMENSION(jpi,jpj) :: zk ! workspace 286 !!---------------------------------------------------------------------- 287 ! 288 IF( ln_timing ) CALL timing_start('zgr_top_bot') 292 289 ! 293 290 IF(lwp) WRITE(numout,*) … … 319 316 zk(:,:) = REAL( mbkv(:,:), wp ) ; CALL lbc_lnk( zk, 'V', 1. ) ; mbkv(:,:) = MAX( INT( zk(:,:) ), 1 ) 320 317 ! 321 CALL wrk_dealloc( jpi,jpj, zk ) 322 ! 323 IF( nn_timing == 1 ) CALL timing_stop('zgr_top_bot') 318 IF( ln_timing ) CALL timing_stop('zgr_top_bot') 324 319 ! 325 320 END SUBROUTINE zgr_top_bot -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/dtatsd.F90
r7753 r8568 16 16 !!---------------------------------------------------------------------- 17 17 USE oce ! ocean dynamics and tracers 18 USE phycst ! physical constants 18 19 USE dom_oce ! ocean space and time domain 19 20 USE fldread ! read input fields 21 ! 20 22 USE in_out_manager ! I/O manager 21 USE phycst ! physical constants22 23 USE lib_mpp ! MPP library 23 USE wrk_nemo ! Memory allocation24 24 USE timing ! Timing 25 25 … … 62 62 !!---------------------------------------------------------------------- 63 63 ! 64 IF( nn_timing == 1 )CALL timing_start('dta_tsd_init')64 IF( ln_timing ) CALL timing_start('dta_tsd_init') 65 65 ! 66 66 ! Initialisation … … 120 120 ENDIF 121 121 ! 122 IF( nn_timing == 1 )CALL timing_stop('dta_tsd_init')122 IF( ln_timing ) CALL timing_stop('dta_tsd_init') 123 123 ! 124 124 END SUBROUTINE dta_tsd_init … … 145 145 INTEGER :: ji, jj, jk, jl, jkk ! dummy loop indicies 146 146 INTEGER :: ik, il0, il1, ii0, ii1, ij0, ij1 ! local integers 147 REAL(wp):: zl, zi 148 REAL(wp), POINTER, DIMENSION(:) :: ztp, zsp ! 1D workspace149 !!---------------------------------------------------------------------- 150 ! 151 IF( nn_timing == 1 )CALL timing_start('dta_tsd')147 REAL(wp):: zl, zi ! local scalars 148 REAL(wp), DIMENSION(jpk) :: ztp, zsp ! 1D workspace 149 !!---------------------------------------------------------------------- 150 ! 151 IF( ln_timing ) CALL timing_start('dta_tsd') 152 152 ! 153 153 CALL fld_read( kt, 1, sf_tsd ) !== read T & S data at kt time step ==! … … 185 185 ! 186 186 IF( ln_sco ) THEN !== s- or mixed s-zps-coordinate ==! 187 !188 CALL wrk_alloc( jpk, ztp, zsp )189 187 ! 190 188 IF( kt == nit000 .AND. lwp )THEN … … 222 220 END DO 223 221 ! 224 CALL wrk_dealloc( jpk, ztp, zsp )225 !226 222 ELSE !== z- or zps- coordinate ==! 227 223 ! … … 260 256 ENDIF 261 257 ! 262 IF( nn_timing == 1 )CALL timing_stop('dta_tsd')258 IF( ln_timing ) CALL timing_stop('dta_tsd') 263 259 ! 264 260 END SUBROUTINE dta_tsd -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/iscplhsb.F90
r7646 r8568 13 13 !! iscpl_div : correction of divergence to keep volume conservation 14 14 !!---------------------------------------------------------------------- 15 USE oce ! global tra/dyn variable 15 16 USE dom_oce ! ocean space and time domain 16 17 USE domwri ! ocean space and time domain 18 USE domngb ! 17 19 USE phycst ! physical constants 18 20 USE sbc_oce ! surface boundary condition variables 19 USE oce ! global tra/dyn variable 21 USE iscplini ! 22 ! 20 23 USE in_out_manager ! I/O manager 21 24 USE lib_mpp ! MPP library 22 25 USE lib_fortran ! MPP library 23 USE wrk_nemo ! Memory allocation24 26 USE lbclnk ! 25 USE domngb !26 USE iscplini27 27 28 28 IMPLICIT NONE … … 56 56 REAL(wp), DIMENSION(:,:,: ), INTENT(out) :: pvol_flx !! corrective flux to have volume conservation 57 57 REAL(wp), INTENT(in ) :: prdt_iscpl !! coupling period 58 !! 59 INTEGER :: ji, jj, jk !! loop index 60 INTEGER :: jip1, jim1, jjp1, jjm1 61 !! 62 REAL(wp):: summsk, zsum, zsum1, zarea, zsumn, zsumb 63 REAL(wp):: r1_rdtiscpl 64 REAL(wp):: zjip1_ratio , zjim1_ratio , zjjp1_ratio , zjjm1_ratio 65 !! 66 REAL(wp):: zde3t, zdtem, zdsal 67 REAL(wp), DIMENSION(:,:), POINTER :: zdssh 68 !! 69 REAL(wp), DIMENSION(:), ALLOCATABLE :: zlon, zlat 70 REAL(wp), DIMENSION(:), ALLOCATABLE :: zcorr_vol, zcorr_tem, zcorr_sal 71 INTEGER , DIMENSION(:), ALLOCATABLE :: ixpts, iypts, izpts, inpts 58 ! 59 INTEGER :: ji , jj , jk ! loop index 60 INTEGER :: jip1, jim1, jjp1, jjm1 61 REAL(wp) :: summsk, zsum , zsumn, zjip1_ratio , zjim1_ratio, zdtem, zde3t, z1_rdtiscpl 62 REAL(wp) :: zarea , zsum1, zsumb, zjjp1_ratio , zjjm1_ratio, zdsal 63 REAL(wp), DIMENSION(jpi,jpj) :: zdssh ! workspace 64 REAL(wp), DIMENSION(:), ALLOCATABLE :: zlon, zlat 65 REAL(wp), DIMENSION(:), ALLOCATABLE :: zcorr_vol, zcorr_tem, zcorr_sal 66 INTEGER , DIMENSION(:), ALLOCATABLE :: ixpts, iypts, izpts, inpts 72 67 INTEGER :: jpts, npts 73 74 CALL wrk_alloc(jpi,jpj, zdssh ) 68 !!---------------------------------------------------------------------- 75 69 76 70 ! get imbalance (volume heat and salt) 77 71 ! initialisation difference 78 zde3t = 0. 0_wp; zdsal = 0.0_wp ; zdtem = 0.0_wp72 zde3t = 0._wp ; zdsal = 0._wp ; zdtem = 0._wp 79 73 80 74 ! initialisation correction term 81 pvol_flx(:,:,: ) = 0. 0_wp82 pts_flx (:,:,:,:) = 0. 0_wp75 pvol_flx(:,:,: ) = 0._wp 76 pts_flx (:,:,:,:) = 0._wp 83 77 84 r1_rdtiscpl = 1._wp / prdt_iscpl78 z1_rdtiscpl = 1._wp / prdt_iscpl 85 79 86 80 ! mask tsn and tsb 87 tsb(:,:,:,jp_tem)=tsb(:,:,:,jp_tem)*ptmask_b(:,:,:); tsn(:,:,:,jp_tem)=tsn(:,:,:,jp_tem)*tmask(:,:,:); 88 tsb(:,:,:,jp_sal)=tsb(:,:,:,jp_sal)*ptmask_b(:,:,:); tsn(:,:,:,jp_sal)=tsn(:,:,:,jp_sal)*tmask(:,:,:); 81 tsb(:,:,:,jp_tem) = tsb(:,:,:,jp_tem) * ptmask_b(:,:,:) 82 tsn(:,:,:,jp_tem) = tsn(:,:,:,jp_tem) * tmask (:,:,:) 83 tsb(:,:,:,jp_sal) = tsb(:,:,:,jp_sal) * ptmask_b(:,:,:) 84 tsn(:,:,:,jp_sal) = tsn(:,:,:,jp_sal) * tmask (:,:,:) 89 85 90 86 !============================================================================== … … 118 114 119 115 ! volume, heat and salt differences in each cell 120 pvol_flx(ji,jj,jk) = pvol_flx(ji,jj,jk) + zde3t * r1_rdtiscpl121 pts_flx (ji,jj,jk,jp_sal)= pts_flx (ji,jj,jk,jp_sal) + zdsal * r1_rdtiscpl122 pts_flx (ji,jj,jk,jp_tem)= pts_flx (ji,jj,jk,jp_tem) + zdtem * r1_rdtiscpl116 pvol_flx(ji,jj,jk) = pvol_flx(ji,jj,jk) + zde3t * z1_rdtiscpl 117 pts_flx (ji,jj,jk,jp_sal)= pts_flx (ji,jj,jk,jp_sal) + zdsal * z1_rdtiscpl 118 pts_flx (ji,jj,jk,jp_tem)= pts_flx (ji,jj,jk,jp_tem) + zdtem * z1_rdtiscpl 123 119 124 120 ! case where we close a cell: check if the neighbour cells are wet … … 190 186 ! if no neighbour wet cell in case of 2close a cell", need to find the nearest wet point 191 187 ! allocation and initialisation of the list of problematic point 192 ALLOCATE( inpts(jpnij))193 inpts(:) =0188 ALLOCATE( inpts(jpnij) ) 189 inpts(:) = 0 194 190 195 191 ! fill narea location with the number of problematic point … … 287 283 CALL lbc_sum(pts_flx (:,:,:,jp_sal),'T',1._wp) 288 284 CALL lbc_sum(pts_flx (:,:,:,jp_tem),'T',1._wp) 289 290 ! deallocate variables 291 CALL wrk_dealloc(jpi,jpj, zdssh ) 292 285 ! 293 286 END SUBROUTINE iscpl_cons 287 294 288 295 289 SUBROUTINE iscpl_div( phdivn ) -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/iscplini.F90
r7646 r8568 11 11 !! iscpl_alloc : allocation of correction variables 12 12 !!---------------------------------------------------------------------- 13 USE oce ! global tra/dyn variable 13 14 USE dom_oce ! ocean space and time domain 14 USE oce ! global tra/dyn variable15 ! 15 16 USE lib_mpp ! MPP library 16 17 USE lib_fortran ! MPP library … … 47 48 END FUNCTION iscpl_alloc 48 49 50 49 51 SUBROUTINE iscpl_init() 52 !!---------------------------------------------------------------------- 50 53 INTEGER :: ios ! Local integer output status for namelist read 51 NAMELIST/namsbc_iscpl/ nn_fiscpl,ln_hsb,nn_drown54 NAMELIST/namsbc_iscpl/ nn_fiscpl, ln_hsb, nn_drown 52 55 !!---------------------------------------------------------------------- 53 ! ! ============54 ! ! Namelist55 ! ! ============56 56 ! 57 57 nn_fiscpl = 0 … … 79 79 WRITE(numout,*) ' coupling time step = ', rdt_iscpl 80 80 WRITE(numout,*) ' number of call of the extrapolation loop = ', nn_drown 81 END 82 81 ENDIF 82 ! 83 83 END SUBROUTINE iscpl_init 84 84 85 !!====================================================================== 85 86 END MODULE iscplini -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/iscplrst.F90
r7646 r8568 11 11 !! iscpl_rst_interpol : restart interpolation in case of coupling with ice sheet 12 12 !!---------------------------------------------------------------------- 13 USE oce ! global tra/dyn variable 13 14 USE dom_oce ! ocean space and time domain 14 15 USE domwri ! ocean space and time domain 15 USE domvvl , ONLY : dom_vvl_interpol16 USE domvvl , ONLY : dom_vvl_interpol 16 17 USE phycst ! physical constants 17 18 USE sbc_oce ! surface boundary condition variables 18 USE oce ! global tra/dyn variable 19 USE iscplini ! ice sheet coupling: initialisation 20 USE iscplhsb ! ice sheet coupling: conservation 21 ! 19 22 USE in_out_manager ! I/O manager 20 23 USE iom ! I/O module 21 24 USE lib_mpp ! MPP library 22 25 USE lib_fortran ! MPP library 23 USE wrk_nemo ! Memory allocation24 26 USE lbclnk ! communication 25 USE iscplini ! ice sheet coupling: initialisation26 USE iscplhsb ! ice sheet coupling: conservation27 27 28 28 IMPLICIT NONE … … 50 50 !!---------------------------------------------------------------------- 51 51 INTEGER :: inum0 52 REAL(wp), DIMENSION( :,: ), POINTER:: zsmask_b53 REAL(wp), DIMENSION( :,:,:), POINTER:: ztmask_b, zumask_b, zvmask_b54 REAL(wp), DIMENSION( :,:,:), POINTER:: ze3t_b , ze3u_b , ze3v_b55 REAL(wp), DIMENSION( :,:,:), POINTER:: zdepw_b52 REAL(wp), DIMENSION(jpi,jpj) :: zsmask_b 53 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztmask_b, zumask_b, zvmask_b 54 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3t_b , ze3u_b , ze3v_b 55 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zdepw_b 56 56 CHARACTER(20) :: cfile 57 57 !!---------------------------------------------------------------------- 58 59 CALL wrk_alloc(jpi,jpj,jpk, ztmask_b, zumask_b, zvmask_b) ! mask before 60 CALL wrk_alloc(jpi,jpj,jpk, ze3t_b , ze3u_b , ze3v_b ) ! e3 before 61 CALL wrk_alloc(jpi,jpj,jpk, zdepw_b ) 62 CALL wrk_alloc(jpi,jpj, zsmask_b ) 63 64 65 !! get restart variable 58 ! 59 ! ! get restart variable 66 60 CALL iom_get( numror, jpdom_autoglo, 'tmask' , ztmask_b ) ! need to extrapolate T/S 67 61 CALL iom_get( numror, jpdom_autoglo, 'umask' , zumask_b ) ! need to correct barotropic velocity … … 72 66 CALL iom_get( numror, jpdom_autoglo, 'e3v_n' , ze3v_b(:,:,:) ) ! need to correct barotropic velocity 73 67 CALL iom_get( numror, jpdom_autoglo, 'gdepw_n', zdepw_b(:,:,:) ) ! need to interpol vertical profile (vvl) 74 75 !! read namelist 76 CALL iscpl_init() 77 78 !! ! Extrapolation/interpolation of modify cell and new cells ... (maybe do it later after domvvl) 68 ! 69 CALL iscpl_init() ! read namelist 70 ! ! Extrapolation/interpolation of modify cell and new cells ... (maybe do it later after domvvl) 79 71 CALL iscpl_rst_interpol( ztmask_b, zumask_b, zvmask_b, zsmask_b, ze3t_b, ze3u_b, ze3v_b, zdepw_b ) 80 81 !! compute correction if conservation needed 82 IF ( ln_hsb ) THEN 72 ! 73 IF ( ln_hsb ) THEN ! compute correction if conservation needed 83 74 IF( iscpl_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'rst_iscpl : unable to allocate rst_iscpl arrays' ) 84 75 CALL iscpl_cons(ztmask_b, zsmask_b, ze3t_b, htsc_iscpl, hdiv_iscpl, rdt_iscpl) 85 76 END IF 86 77 87 ! ! print mesh/mask88 IF( nn_msh /= 0 .AND. ln_iscpl ) CALL dom_wri ! Create a domain file89 78 ! ! create a domain file 79 IF( nn_msh /= 0 .AND. ln_iscpl ) CALL dom_wri 80 ! 90 81 IF ( ln_hsb ) THEN 91 82 cfile='correction' … … 97 88 CALL iom_close ( inum0 ) 98 89 END IF 99 100 CALL wrk_dealloc(jpi,jpj,jpk, ztmask_b,zumask_b,zvmask_b ) 101 CALL wrk_dealloc(jpi,jpj,jpk, ze3t_b ,ze3u_b ,ze3v_b ) 102 CALL wrk_dealloc(jpi,jpj,jpk, zdepw_b ) 103 CALL wrk_dealloc(jpi,jpj, zsmask_b ) 104 105 !! next step is an euler time step 106 neuler = 0 107 108 !! set _b and _n variables equal 90 ! 91 neuler = 0 ! next step is an euler time step 92 ! 93 ! ! set _b and _n variables equal 109 94 tsb (:,:,:,:) = tsn (:,:,:,:) 110 95 ub (:,:,:) = un (:,:,:) 111 96 vb (:,:,:) = vn (:,:,:) 112 97 sshb(:,:) = sshn(:,:) 113 114 ! ! set _b and _n vertical scale factor equal98 ! 99 ! ! set _b and _n vertical scale factor equal 115 100 e3t_b (:,:,:) = e3t_n (:,:,:) 116 101 e3u_b (:,:,:) = e3u_n (:,:,:) 117 102 e3v_b (:,:,:) = e3v_n (:,:,:) 118 103 ! 119 104 e3uw_b (:,:,:) = e3uw_n (:,:,:) 120 105 e3vw_b (:,:,:) = e3vw_n (:,:,:) … … 150 135 REAL(wp):: zdz, zdzm1, zdzp1 151 136 !! 152 REAL(wp), DIMENSION(:,: ), POINTER :: zdmask , zdsmask, zvcorr, zucorr, zde3t 153 REAL(wp), DIMENSION(:,: ), POINTER :: zbub , zbvb , zbun , zbvn 154 REAL(wp), DIMENSION(:,: ), POINTER :: zssh0 , zssh1, zhu1, zhv1 155 REAL(wp), DIMENSION(:,: ), POINTER :: zsmask0, zsmask1 156 REAL(wp), DIMENSION(:,:,: ), POINTER :: ztmask0, ztmask1, ztrp 157 REAL(wp), DIMENSION(:,:,: ), POINTER :: zwmaskn, zwmaskb, ztmp3d 158 REAL(wp), DIMENSION(:,:,:,:), POINTER :: zts0 137 REAL(wp), DIMENSION(jpi,jpj) :: zdmask , zsmask0, zucorr, zbub, zbun, zssh0, zhu1, zde3t 138 REAL(wp), DIMENSION(jpi,jpj) :: zdsmask, zsmask1, zvcorr, zbvb, zbvn, zssh1, zhv1 139 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztmask0, zwmaskn, ztrp 140 REAL(wp), DIMENSION(jpi,jpj,jpk) :: ztmask1, zwmaskb, ztmp3d 141 REAL(wp), DIMENSION(jpi,jpj,jpk,jpts) :: zts0 159 142 !!---------------------------------------------------------------------- 160 161 !! allocate variables 162 CALL wrk_alloc(jpi,jpj,jpk,2, zts0 ) 163 CALL wrk_alloc(jpi,jpj,jpk, ztmask0, ztmask1 , ztrp, ztmp3d ) 164 CALL wrk_alloc(jpi,jpj,jpk, zwmaskn, zwmaskb ) 165 CALL wrk_alloc(jpi,jpj, zsmask0, zsmask1 ) 166 CALL wrk_alloc(jpi,jpj, zdmask , zdsmask, zvcorr, zucorr, zde3t) 167 CALL wrk_alloc(jpi,jpj, zbub , zbvb , zbun , zbvn ) 168 CALL wrk_alloc(jpi,jpj, zssh0 , zssh1, zhu1, zhv1 ) 169 170 !! mask value to be sure 143 ! 144 ! ! mask value to be sure 171 145 tsn(:,:,:,jp_tem) = tsn(:,:,:,jp_tem) * ptmask_b(:,:,:) 172 146 tsn(:,:,:,jp_sal) = tsn(:,:,:,jp_sal) * ptmask_b(:,:,:) 173 174 ! compute wmask147 ! 148 ! ! compute wmask 175 149 zwmaskn(:,:,1) = tmask (:,:,1) 176 150 zwmaskb(:,:,1) = ptmask_b(:,:,1) … … 179 153 zwmaskb(:,:,jk) = ptmask_b(:,:,jk) * ptmask_b(:,:,jk-1) 180 154 END DO 181 182 ! compute new ssh if we open a full water column (average of the closest neigbourgs)155 ! 156 ! ! compute new ssh if we open a full water column (average of the closest neigbourgs) 183 157 sshb (:,:)=sshn(:,:) 184 158 zssh0(:,:)=sshn(:,:) 185 159 zsmask0(:,:) = psmask_b(:,:) 186 160 zsmask1(:,:) = psmask_b(:,:) 187 DO iz = 1, 10! need to be tuned (configuration dependent) (OK for ISOMIP+)161 DO iz = 1, 10 ! need to be tuned (configuration dependent) (OK for ISOMIP+) 188 162 zdsmask(:,:) = ssmask(:,:)-zsmask0(:,:) 189 163 DO jj = 2,jpj-1 … … 198 172 & + zssh0(ji,jjm1)*zsmask0(ji,jjm1))/summsk 199 173 zsmask1(ji,jj)=1._wp 200 END 174 ENDIF 201 175 END DO 202 176 END DO 203 CALL lbc_lnk( sshn,'T',1._wp)204 CALL lbc_lnk( zsmask1,'T',1._wp)177 CALL lbc_lnk( sshn , 'T', 1._wp ) 178 CALL lbc_lnk( zsmask1, 'T', 1._wp ) 205 179 zssh0 = sshn 206 180 zsmask0 = zsmask1 … … 210 184 !============================================================================= 211 185 !PM: Is this needed since introduction of VVL by default? 212 IF ( .NOT.ln_linssh) THEN186 IF ( .NOT.ln_linssh ) THEN 213 187 ! Reconstruction of all vertical scale factors at now time steps 214 188 ! ============================================================================= … … 224 198 END DO 225 199 END DO 226 200 ! 227 201 CALL dom_vvl_interpol( e3t_n(:,:,:), e3u_n(:,:,:), 'U' ) 228 202 CALL dom_vvl_interpol( e3t_n(:,:,:), e3v_n(:,:,:), 'V' ) 229 203 CALL dom_vvl_interpol( e3u_n(:,:,:), e3f_n(:,:,:), 'F' ) 230 204 231 ! Vertical scale factor interpolations232 ! ------------------------------------205 ! Vertical scale factor interpolations 206 ! ------------------------------------ 233 207 CALL dom_vvl_interpol( e3t_n(:,:,:), e3w_n (:,:,:), 'W' ) 234 208 CALL dom_vvl_interpol( e3u_n(:,:,:), e3uw_n(:,:,:), 'UW' ) 235 209 CALL dom_vvl_interpol( e3v_n(:,:,:), e3vw_n(:,:,:), 'VW' ) 236 237 ! t- and w- points depth238 ! ----------------------210 211 ! t- and w- points depth 212 ! ---------------------- 239 213 gdept_n(:,:,1) = 0.5_wp * e3w_n(:,:,1) 240 214 gdepw_n(:,:,1) = 0.0_wp … … 429 403 ! nothing to do 430 404 ! 431 ! deallocation tmp arrays432 CALL wrk_dealloc(jpi,jpj,jpk,2, zts0 )433 CALL wrk_dealloc(jpi,jpj,jpk, ztmask0, ztmask1 , ztrp )434 CALL wrk_dealloc(jpi,jpj,jpk, zwmaskn, zwmaskb , ztmp3d )435 CALL wrk_dealloc(jpi,jpj, zsmask0, zsmask1 )436 CALL wrk_dealloc(jpi,jpj, zdmask , zdsmask, zvcorr, zucorr, zde3t)437 CALL wrk_dealloc(jpi,jpj, zbub , zbvb , zbun , zbvn )438 CALL wrk_dealloc(jpi,jpj, zssh0 , zssh1 , zhu1 , zhv1 )439 !440 405 END SUBROUTINE iscpl_rst_interpol 441 406 -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DOM/istate.F90
r7753 r8568 36 36 USE lib_mpp ! MPP library 37 37 USE restart ! restart 38 USE wrk_nemo ! Memory allocation39 38 USE timing ! Timing 40 39 … … 60 59 !!---------------------------------------------------------------------- 61 60 INTEGER :: ji, jj, jk ! dummy loop indices 62 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: zuvd ! U & V data workspace 61 !!gm see comment further down 62 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: zuvd ! U & V data workspace 63 !!gm end 63 64 !!---------------------------------------------------------------------- 64 65 ! 65 IF( nn_timing == 1) CALL timing_start('istate_init')66 IF( ln_timing ) CALL timing_start('istate_init') 66 67 ! 67 68 IF(lwp) WRITE(numout,*) … … 121 122 !!gm to be moved in usrdef of C1D case 122 123 ! IF ( ln_uvd_init .AND. lk_c1d ) THEN ! read 3D U and V data at nit000 123 ! CALL wrk_alloc( jpi,jpj,jpk,2, zuvd)124 ! ALLOCATE( zuvd(jpi,jpj,jpk,2) ) 124 125 ! CALL dta_uvd( nit000, zuvd ) 125 126 ! ub(:,:,:) = zuvd(:,:,:,1) ; un(:,:,:) = ub(:,:,:) 126 127 ! vb(:,:,:) = zuvd(:,:,:,2) ; vn(:,:,:) = vb(:,:,:) 127 ! CALL wrk_dealloc( jpi,jpj,jpk,2,zuvd )128 ! DEALLOCATE( zuvd ) 128 129 ! ENDIF 129 130 ! … … 164 165 vb_b(:,:) = vb_b(:,:) * r1_hv_b(:,:) 165 166 ! 166 IF( nn_timing == 1) CALL timing_stop('istate_init')167 IF( ln_timing ) CALL timing_stop('istate_init') 167 168 ! 168 169 END SUBROUTINE istate_init -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/divhor.F90
r7753 r8568 29 29 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 30 30 USE lib_mpp ! MPP library 31 USE wrk_nemo ! Memory Allocation32 31 USE timing ! Timing 33 32 … … 40 39 # include "vectopt_loop_substitute.h90" 41 40 !!---------------------------------------------------------------------- 42 !! NEMO/OPA 3.7 , NEMO Consortium (2014)41 !! NEMO/OPA 4.0 , NEMO Consortium (2017) 43 42 !! $Id$ 44 43 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 64 63 !!---------------------------------------------------------------------- 65 64 ! 66 IF( nn_timing == 1) CALL timing_start('div_hor')65 IF( ln_timing ) CALL timing_start('div_hor') 67 66 ! 68 67 IF( kt == nit000 ) THEN … … 75 74 DO jj = 2, jpjm1 76 75 DO ji = fs_2, fs_jpim1 ! vector opt. 77 hdivn(ji,jj,jk) = ( e2u(ji ,jj) * e3u_n(ji ,jj,jk) * un(ji ,jj,jk) 78 & - e2u(ji-1,jj) * e3u_n(ji-1,jj,jk) * un(ji-1,jj,jk) 79 & + e1v(ji,jj ) * e3v_n(ji,jj ,jk) * vn(ji,jj ,jk) 80 & - e1v(ji,jj-1) * e3v_n(ji,jj-1,jk) * vn(ji,jj-1,jk) )&81 & / ( e1e2t(ji,jj) * e3t_n(ji,jj,jk))76 hdivn(ji,jj,jk) = ( e2u(ji ,jj) * e3u_n(ji ,jj,jk) * un(ji ,jj,jk) & 77 & - e2u(ji-1,jj) * e3u_n(ji-1,jj,jk) * un(ji-1,jj,jk) & 78 & + e1v(ji,jj ) * e3v_n(ji,jj ,jk) * vn(ji,jj ,jk) & 79 & - e1v(ji,jj-1) * e3v_n(ji,jj-1,jk) * vn(ji,jj-1,jk) ) & 80 & * r1_e1e2t(ji,jj) / e3t_n(ji,jj,jk) 82 81 END DO 83 82 END DO … … 90 89 END DO 91 90 ! 92 IF( ln_rnf ) CALL sbc_rnf_div( hdivn ) !== runoffs ==! (update hdivn field)91 IF( ln_rnf ) CALL sbc_rnf_div( hdivn ) !== runoffs ==! (update hdivn field) 93 92 ! 94 IF( ln_isf ) CALL sbc_isf_div( hdivn ) !== ice shelf ==! (update hdivn field)93 IF( ln_isf ) CALL sbc_isf_div( hdivn ) !== ice shelf ==! (update hdivn field) 95 94 ! 96 IF( ln_iscpl .AND. ln_hsb ) CALL iscpl_div( hdivn )!== ice sheet ==! (update hdivn field)95 IF( ln_iscpl .AND. ln_hsb ) CALL iscpl_div( hdivn ) !== ice sheet ==! (update hdivn field) 97 96 ! 98 CALL lbc_lnk( hdivn, 'T', 1. ) !== lateral boundary cond. ==! (no sign change)97 CALL lbc_lnk( hdivn, 'T', 1. ) ! (no sign change) 99 98 ! 100 IF( nn_timing == 1 )CALL timing_stop('div_hor')99 IF( ln_timing ) CALL timing_stop('div_hor') 101 100 ! 102 101 END SUBROUTINE div_hor -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv.F90
r7646 r8568 7 7 !! 3.3 ! 2010-10 (C. Ethe, G. Madec) reorganisation of initialisation phase 8 8 !! 3.6 ! 2015-05 (N. Ducousso, G. Madec) add Hollingsworth scheme as an option 9 !! 4.0 ! 2017-07 (G. Madec) add a linear dynamics option 9 10 !!---------------------------------------------------------------------- 10 11 … … 30 31 31 32 ! !* namdyn_adv namelist * 32 LOGICAL, PUBLIC :: ln_dynadv_vec !: vector form flag 33 INTEGER, PUBLIC :: nn_dynkeg !: scheme of kinetic energy gradient: =0 C2 ; =1 Hollingsworth 33 LOGICAL, PUBLIC :: ln_dynadv_NONE !: linear dynamics (no momentum advection) 34 LOGICAL, PUBLIC :: ln_dynadv_vec !: vector form 35 INTEGER, PUBLIC :: nn_dynkeg !: scheme of grad(KE): =0 C2 ; =1 Hollingsworth 34 36 LOGICAL, PUBLIC :: ln_dynadv_cen2 !: flux form - 2nd order centered scheme flag 35 37 LOGICAL, PUBLIC :: ln_dynadv_ubs !: flux form - 3rd order UBS scheme flag 36 LOGICAL, PUBLIC :: ln_dynzad_zts !: vertical advection with sub-timestepping (requires vector form)37 38 38 INTEGER :: nadv ! choice of the formulation and scheme for the advection 39 INTEGER, PUBLIC :: n_dynadv !: choice of the formulation and scheme for momentum advection 40 ! ! associated indices: 41 INTEGER, PUBLIC, PARAMETER :: np_LIN_dyn = 0 ! no advection: linear dynamics 42 INTEGER, PUBLIC, PARAMETER :: np_VEC_c2 = 1 ! vector form : 2nd order centered scheme 43 INTEGER, PUBLIC, PARAMETER :: np_FLX_c2 = 2 ! flux form : 2nd order centered scheme 44 INTEGER, PUBLIC, PARAMETER :: np_FLX_ubs = 3 ! flux form : 3rd order Upstream Biased Scheme 39 45 40 46 !! * Substitutions 41 47 # include "vectopt_loop_substitute.h90" 42 48 !!---------------------------------------------------------------------- 43 !! NEMO/OPA 3.6 , NEMO Consortium (2015)49 !! NEMO/OPA 4.0 , NEMO Consortium (2017) 44 50 !! $Id$ 45 51 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 53 59 !! ** Purpose : compute the ocean momentum advection trend. 54 60 !! 55 !! ** Method : - Update (ua,va) with the advection term following nadv 61 !! ** Method : - Update (ua,va) with the advection term following n_dynadv 62 !! 56 63 !! NB: in flux form advection (ln_dynadv_cen2 or ln_dynadv_ubs=T) 57 64 !! a metric term is add to the coriolis term while in vector form … … 62 69 !!---------------------------------------------------------------------- 63 70 ! 64 IF( nn_timing == 1 ) CALL timing_start('dyn_adv')71 IF( ln_timing ) CALL timing_start( 'dyn_adv' ) 65 72 ! 66 SELECT CASE ( nadv ) ! compute advection trend and add it to general trend 67 CASE ( 0 ) 68 CALL dyn_keg ( kt, nn_dynkeg ) ! vector form : horizontal gradient of kinetic energy 69 CALL dyn_zad ( kt ) ! vector form : vertical advection 70 CASE ( 1 ) 71 CALL dyn_keg ( kt, nn_dynkeg ) ! vector form : horizontal gradient of kinetic energy 72 CALL dyn_zad_zts ( kt ) ! vector form : vertical advection with sub-timestepping 73 CASE ( 2 ) 74 CALL dyn_adv_cen2( kt ) ! 2nd order centered scheme 75 CASE ( 3 ) 76 CALL dyn_adv_ubs ( kt ) ! 3rd order UBS scheme 73 SELECT CASE( n_dynadv ) !== compute advection trend and add it to general trend ==! 74 CASE( np_VEC_c2 ) 75 CALL dyn_keg ( kt, nn_dynkeg ) ! vector form : horizontal gradient of kinetic energy 76 CALL dyn_zad ( kt ) ! vector form : vertical advection 77 CASE( np_FLX_c2 ) 78 CALL dyn_adv_cen2( kt ) ! 2nd order centered scheme 79 CASE( np_FLX_ubs ) 80 CALL dyn_adv_ubs ( kt ) ! 3rd order UBS scheme (UP3) 77 81 END SELECT 78 82 ! 79 IF( nn_timing == 1 ) CALL timing_stop('dyn_adv')83 IF( ln_timing ) CALL timing_stop( 'dyn_adv' ) 80 84 ! 81 85 END SUBROUTINE dyn_adv … … 87 91 !! 88 92 !! ** Purpose : Control the consistency between namelist options for 89 !! momentum advection formulation & scheme and set n adv93 !! momentum advection formulation & scheme and set n_dynadv 90 94 !!---------------------------------------------------------------------- 91 95 INTEGER :: ioptio, ios ! Local integer 92 96 ! 93 NAMELIST/namdyn_adv/ ln_dynadv_ vec, nn_dynkeg, ln_dynadv_cen2 , ln_dynadv_ubs, ln_dynzad_zts97 NAMELIST/namdyn_adv/ ln_dynadv_NONE, ln_dynadv_vec, nn_dynkeg, ln_dynadv_cen2, ln_dynadv_ubs 94 98 !!---------------------------------------------------------------------- 95 99 ! … … 108 112 WRITE(numout,*) '~~~~~~~~~~~~' 109 113 WRITE(numout,*) ' Namelist namdyn_adv : chose a advection formulation & scheme for momentum' 110 WRITE(numout,*) ' Vector/flux form (T/F) ln_dynadv_vec = ', ln_dynadv_vec111 WRITE(numout,*) ' = 0 standard scheme ; =1 Hollingsworth scheme nn_dynkeg = ', nn_dynkeg112 WRITE(numout,*) ' 2nd order centred advection scheme ln_dynadv_cen2 = ', ln_dynadv_cen2113 WRITE(numout,*) ' 3rd order UBS advection scheme ln_dynadv_ubs = ', ln_dynadv_ubs114 WRITE(numout,*) ' Sub timestepping of vertical advection ln_dynzad_zts = ', ln_dynzad_zts114 WRITE(numout,*) ' linear dynamics : no momentum advection ln_dynadv_NONE = ', ln_dynadv_NONE 115 WRITE(numout,*) ' Vector form: 2nd order centered scheme ln_dynadv_vec = ', ln_dynadv_vec 116 WRITE(numout,*) ' with Hollingsworth scheme (=1) or not (=0) nn_dynkeg = ', nn_dynkeg 117 WRITE(numout,*) ' flux form: 2nd order centred scheme ln_dynadv_cen2 = ', ln_dynadv_cen2 118 WRITE(numout,*) ' 3rd order UBS scheme ln_dynadv_ubs = ', ln_dynadv_ubs 115 119 ENDIF 116 120 117 ioptio = 0 ! Parameter control 118 IF( ln_dynadv_vec ) ioptio = ioptio + 1 119 IF( ln_dynadv_cen2 ) ioptio = ioptio + 1 120 IF( ln_dynadv_ubs ) ioptio = ioptio + 1 121 ioptio = 0 ! parameter control and set n_dynadv 122 IF( ln_dynadv_NONE ) THEN ; ioptio = ioptio + 1 ; n_dynadv = np_LIN_dyn ; ENDIF 123 IF( ln_dynadv_vec ) THEN ; ioptio = ioptio + 1 ; n_dynadv = np_VEC_c2 ; ENDIF 124 IF( ln_dynadv_cen2 ) THEN ; ioptio = ioptio + 1 ; n_dynadv = np_FLX_c2 ; ENDIF 125 IF( ln_dynadv_ubs ) THEN ; ioptio = ioptio + 1 ; n_dynadv = np_FLX_ubs ; ENDIF 121 126 122 IF( ioptio /= 1 ) CALL ctl_stop( 'Choose ONE advection scheme in namelist namdyn_adv' ) 123 IF( ln_dynzad_zts .AND. .NOT. ln_dynadv_vec ) & 124 CALL ctl_stop( 'Sub timestepping of vertical advection requires vector form; set ln_dynadv_vec = .TRUE.' ) 125 IF( nn_dynkeg /= nkeg_C2 .AND. nn_dynkeg /= nkeg_HW ) & 126 CALL ctl_stop( 'KEG scheme wrong value of nn_dynkeg' ) 127 IF( ioptio /= 1 ) CALL ctl_stop( 'choose ONE and only ONE advection scheme' ) 128 IF( nn_dynkeg /= nkeg_C2 .AND. nn_dynkeg /= nkeg_HW ) CALL ctl_stop( 'KEG scheme wrong value of nn_dynkeg' ) 127 129 128 ! ! Set nadv129 IF( ln_dynadv_vec ) nadv = 0130 IF( ln_dynzad_zts ) nadv = 1131 IF( ln_dynadv_cen2 ) nadv = 2132 IF( ln_dynadv_ubs ) nadv = 3133 130 134 131 IF(lwp) THEN ! Print the choice 135 132 WRITE(numout,*) 136 IF( nadv == 0 ) WRITE(numout,*) ' ===>> vector form : keg + zad + vor is used'137 IF( nadv == 1 ) WRITE(numout,*) ' ===>> vector form : keg + zad_zts + vor isused'138 IF( nadv == 0 .OR. nadv == 1 ) THEN133 SELECT CASE( n_dynadv ) 134 CASE( np_LIN_dyn ) ; WRITE(numout,*) ' ===>> linear dynamics : no momentum advection used' 135 CASE( np_VEC_c2 ) ; WRITE(numout,*) ' ===>> vector form : keg + zad + vor is used' 139 136 IF( nn_dynkeg == nkeg_C2 ) WRITE(numout,*) ' with Centered standard keg scheme' 140 137 IF( nn_dynkeg == nkeg_HW ) WRITE(numout,*) ' with Hollingsworth keg scheme' 141 ENDIF142 IF( nadv == 2 ) WRITE(numout,*) ' ===>> flux form : 2nd orderscheme is used'143 IF( nadv == 3 ) WRITE(numout,*) ' ===>> flux form : UBS scheme is used'138 CASE( np_FLX_c2 ) ; WRITE(numout,*) ' ===>> flux form : 2nd order scheme is used' 139 CASE( np_FLX_ubs ) ; WRITE(numout,*) ' ===>> flux form : UBS scheme is used' 140 END SELECT 144 141 ENDIF 145 142 ! -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_cen2.F90
r6750 r8568 20 20 USE lib_mpp ! MPP library 21 21 USE prtctl ! Print control 22 USE wrk_nemo ! Memory Allocation23 22 USE timing ! Timing 24 23 … … 31 30 # include "vectopt_loop_substitute.h90" 32 31 !!---------------------------------------------------------------------- 33 !! NEMO/OPA 4.0 , NEMO Consortium (201 1)32 !! NEMO/OPA 4.0 , NEMO Consortium (2017) 34 33 !! $Id$ 35 34 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 51 50 ! 52 51 INTEGER :: ji, jj, jk ! dummy loop indices 53 REAL(wp), POINTER, DIMENSION(:,:,:) :: zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfw54 REAL(wp), POINTER, DIMENSION(:,:,:) :: zfu, zfv52 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zfu_t, zfu_f, zfu_uw, zfu 53 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zfv_t, zfv_f, zfv_vw, zfv, zfw 55 54 !!---------------------------------------------------------------------- 56 55 ! 57 IF( nn_timing == 1 ) CALL timing_start('dyn_adv_cen2') 58 ! 59 CALL wrk_alloc( jpi,jpj,jpk, zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfu, zfv, zfw ) 56 IF( ln_timing ) CALL timing_start('dyn_adv_cen2') 60 57 ! 61 58 IF( kt == nit000 .AND. lwp ) THEN … … 148 145 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 149 146 ! 150 CALL wrk_dealloc( jpi, jpj, jpk, zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfu, zfv, zfw ) 151 ! 152 IF( nn_timing == 1 ) CALL timing_stop('dyn_adv_cen2') 147 IF( ln_timing ) CALL timing_stop('dyn_adv_cen2') 153 148 ! 154 149 END SUBROUTINE dyn_adv_cen2 -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_ubs.F90
r6750 r8568 23 23 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 24 24 USE lib_mpp ! MPP library 25 USE wrk_nemo ! Memory Allocation26 25 USE timing ! Timing 27 26 … … 37 36 # include "vectopt_loop_substitute.h90" 38 37 !!---------------------------------------------------------------------- 39 !! NEMO/OPA 4.0 , NEMO Consortium (201 1)38 !! NEMO/OPA 4.0 , NEMO Consortium (2017) 40 39 !! $Id$ 41 40 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 74 73 INTEGER :: ji, jj, jk ! dummy loop indices 75 74 REAL(wp) :: zui, zvj, zfuj, zfvi, zl_u, zl_v ! local scalars 76 REAL(wp), POINTER, DIMENSION(:,:,: ) :: zfu, zfv 77 REAL(wp), POINTER, DIMENSION(:,:,: ) :: zfu_t, zfv_t, zfu_f, zfv_f, zfu_uw, zfv_vw, zfw 78 REAL(wp), POINTER, DIMENSION(:,:,:,:) :: zlu_uu, zlv_vv, zlu_uv, zlv_vu 75 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zfu_t, zfu_f, zfu_uw, zfu 76 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zfv_t, zfv_f, zfv_vw, zfv, zfw 77 REAL(wp), DIMENSION(jpi,jpj,jpk,2) :: zlu_uu, zlu_uv 78 REAL(wp), DIMENSION(jpi,jpj,jpk,2) :: zlv_vv, zlv_vu 79 79 !!---------------------------------------------------------------------- 80 80 ! 81 IF( nn_timing == 1 ) CALL timing_start('dyn_adv_ubs') 82 ! 83 CALL wrk_alloc( jpi,jpj,jpk, zfu_t , zfv_t , zfu_f , zfv_f, zfu_uw, zfv_vw, zfu, zfv, zfw ) 84 CALL wrk_alloc( jpi,jpj,jpk,jpts, zlu_uu, zlv_vv, zlu_uv, zlv_vu ) 81 IF( ln_timing ) CALL timing_start('dyn_adv_ubs') 85 82 ! 86 83 IF( kt == nit000 ) THEN … … 241 238 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 242 239 ! 243 CALL wrk_dealloc( jpi,jpj,jpk, zfu_t , zfv_t , zfu_f , zfv_f, zfu_uw, zfv_vw, zfu, zfv, zfw ) 244 CALL wrk_dealloc( jpi,jpj,jpk,jpts, zlu_uu, zlv_vv, zlu_uv, zlv_vu ) 245 ! 246 IF( nn_timing == 1 ) CALL timing_stop('dyn_adv_ubs') 240 IF( ln_timing ) CALL timing_stop('dyn_adv_ubs') 247 241 ! 248 242 END SUBROUTINE dyn_adv_ubs -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynbfr.F90
r8215 r8568 57 57 !!--------------------------------------------------------------------- 58 58 ! 59 IF( nn_timing == 1 )CALL timing_start('dyn_bfr')59 IF( ln_timing ) CALL timing_start('dyn_bfr') 60 60 ! 61 61 !!gm bug : time step is only rdt (not 2 rdt if euler start !) … … 109 109 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 110 110 ! 111 IF( nn_timing == 1 )CALL timing_stop('dyn_bfr')111 IF( ln_timing ) CALL timing_stop('dyn_bfr') 112 112 ! 113 113 END SUBROUTINE dyn_bfr -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90
r8215 r8568 44 44 USE lib_mpp ! MPP library 45 45 USE eosbn2 ! compute density 46 USE wrk_nemo ! Memory Allocation47 46 USE timing ! Timing 48 47 USE iom … … 84 83 !!---------------------------------------------------------------------- 85 84 INTEGER, INTENT(in) :: kt ! ocean time-step index 86 REAL(wp), POINTER, DIMENSION(:,:,:) ::ztrdu, ztrdv87 !!---------------------------------------------------------------------- 88 ! 89 IF( nn_timing == 1 )CALL timing_start('dyn_hpg')85 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrdu, ztrdv 86 !!---------------------------------------------------------------------- 87 ! 88 IF( ln_timing ) CALL timing_start('dyn_hpg') 90 89 ! 91 90 IF( l_trddyn ) THEN ! Temporary saving of ua and va trends (l_trddyn) 92 CALL wrk_alloc( jpi,jpj,jpk, ztrdu, ztrdv)91 ALLOCATE( ztrdu(jpi,jpj,jpk) , ztrdv(jpi,jpj,jpk) ) 93 92 ztrdu(:,:,:) = ua(:,:,:) 94 93 ztrdv(:,:,:) = va(:,:,:) … … 108 107 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 109 108 CALL trd_dyn( ztrdu, ztrdv, jpdyn_hpg, kt ) 110 CALL wrk_dealloc( jpi,jpj,jpk, ztrdu, ztrdv )109 DEALLOCATE( ztrdu , ztrdv ) 111 110 ENDIF 112 111 ! … … 114 113 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 115 114 ! 116 IF( nn_timing == 1 )CALL timing_stop('dyn_hpg')115 IF( ln_timing ) CALL timing_stop('dyn_hpg') 117 116 ! 118 117 END SUBROUTINE dyn_hpg … … 134 133 INTEGER :: ji, jj, jk, ikt ! dummy loop indices ISF 135 134 REAL(wp) :: znad 136 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztstop, zrhd! hypothesys on isf density137 REAL(wp), POINTER, DIMENSION(:,:) :: zrhdtop_isf! density at bottom of ISF138 REAL(wp), POINTER, DIMENSION(:,:) :: ziceload! density at bottom of ISF135 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: zts_top, zrhd ! hypothesys on isf density 136 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zrhdtop_isf ! density at bottom of ISF 137 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ziceload ! density at bottom of ISF 139 138 !! 140 139 NAMELIST/namdyn_hpg/ ln_hpg_zco, ln_hpg_zps, ln_hpg_sco, & … … 165 164 ! 166 165 IF( ln_hpg_djc ) & 167 & CALL ctl_stop('dyn_hpg_init : Density Jacobian: Cubic polynominal method & 168 & currently disabled (bugs under investigation). Please select & 169 & either ln_hpg_sco or ln_hpg_prj instead') 170 ! 171 IF( .NOT.ln_linssh .AND. .NOT.(ln_hpg_sco.OR.ln_hpg_prj.OR.ln_hpg_isf) ) & 172 & CALL ctl_stop('dyn_hpg_init : non-linear free surface requires either ', & 173 & ' the standard jacobian formulation hpg_sco or ' , & 174 & ' the pressure jacobian formulation hpg_prj' ) 175 176 IF( ln_hpg_isf .AND. .NOT. ln_isfcav ) & 177 & CALL ctl_stop( ' hpg_isf not available if ln_isfcav = false ' ) 178 IF( .NOT. ln_hpg_isf .AND. ln_isfcav ) & 179 & CALL ctl_stop( 'Only hpg_isf has been corrected to work with ice shelf cavity.' ) 166 & CALL ctl_stop('dyn_hpg_init : Density Jacobian: Cubic polynominal method', & 167 & ' currently disabled (bugs under investigation).' , & 168 & ' Please select either ln_hpg_sco or ln_hpg_prj instead' ) 169 ! 170 IF( .NOT.ln_linssh .AND. .NOT.(ln_hpg_sco.OR.ln_hpg_prj.OR.ln_hpg_isf) ) & 171 & CALL ctl_stop('dyn_hpg_init : non-linear free surface requires either ', & 172 & ' the standard jacobian formulation hpg_sco or ' , & 173 & ' the pressure jacobian formulation hpg_prj' ) 174 ! 175 IF( ln_hpg_isf ) THEN 176 IF( .NOT. ln_isfcav ) CALL ctl_stop( ' hpg_isf not available if ln_isfcav = false ' ) 177 ELSE 178 IF( ln_isfcav ) CALL ctl_stop( 'Only hpg_isf has been corrected to work with ice shelf cavity.' ) 179 ENDIF 180 180 ! 181 181 ! ! Set nhpg from ln_hpg_... flags … … 197 197 IF( ioptio /= 1 ) CALL ctl_stop( 'NO or several hydrostatic pressure gradient options used' ) 198 198 ! 199 ! initialisation of ice shelf load 200 IF ( .NOT. ln_isfcav ) riceload(:,:)=0.0 201 IF ( ln_isfcav ) THEN 202 CALL wrk_alloc( jpi,jpj, 2, ztstop) 203 CALL wrk_alloc( jpi,jpj,jpk, zrhd ) 204 CALL wrk_alloc( jpi,jpj, zrhdtop_isf, ziceload) 199 ! 200 IF ( .NOT. ln_isfcav ) THEN !--- no ice shelf load 201 riceload(:,:) = 0._wp 202 ! 203 ELSE !--- set an ice shelf load 205 204 ! 206 205 IF(lwp) WRITE(numout,*) 207 IF(lwp) WRITE(numout,*) 'dyn:hpg_isf : hydrostatic pressure gradient trend for ice shelf' 208 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 209 210 ! To use density and not density anomaly 211 znad=1._wp 212 213 ! assume water displaced by the ice shelf is at T=-1.9 and S=34.4 (rude) 214 ztstop(:,:,1)=-1.9_wp ; ztstop(:,:,2)=34.4_wp 215 216 ! compute density of the water displaced by the ice shelf 217 DO jk = 1, jpk 218 CALL eos(ztstop(:,:,:),gdept_n(:,:,jk),zrhd(:,:,jk)) 219 END DO 220 221 ! compute rhd at the ice/oce interface (ice shelf side) 222 CALL eos(ztstop,risfdep,zrhdtop_isf) 223 224 ! Surface value + ice shelf gradient 225 ! compute pressure due to ice shelf load (used to compute hpgi/j for all the level from 1 to miku/v) 226 ! divided by 2 later 227 ziceload = 0._wp 228 DO jj = 1, jpj 229 DO ji = 1, jpi 230 ikt=mikt(ji,jj) 206 IF(lwp) WRITE(numout,*) ' ice shelf case: set the ice-shelf load' 207 ALLOCATE( zts_top(jpi,jpj,jpts) , zrhd(jpi,jpj,jpk) , zrhdtop_isf(jpi,jpj) , ziceload(jpi,jpj) ) 208 ! 209 znad = 1._wp !- To use density and not density anomaly 210 ! 211 ! !- assume water displaced by the ice shelf is at T=-1.9 and S=34.4 (rude) 212 zts_top(:,:,jp_tem) = -1.9_wp ; zts_top(:,:,jp_sal) = 34.4_wp 213 ! 214 DO jk = 1, jpk !- compute density of the water displaced by the ice shelf 215 CALL eos( zts_top(:,:,:), gdept_n(:,:,jk), zrhd(:,:,jk) ) 216 END DO 217 ! 218 ! !- compute rhd at the ice/oce interface (ice shelf side) 219 CALL eos( zts_top , risfdep, zrhdtop_isf ) 220 ! 221 ! !- Surface value + ice shelf gradient 222 ziceload = 0._wp ! compute pressure due to ice shelf load 223 DO jj = 1, jpj ! (used to compute hpgi/j for all the level from 1 to miku/v) 224 DO ji = 1, jpi ! divided by 2 later 225 ikt = mikt(ji,jj) 231 226 ziceload(ji,jj) = ziceload(ji,jj) + (znad + zrhd(ji,jj,1) ) * e3w_n(ji,jj,1) * (1._wp - tmask(ji,jj,1)) 232 DO jk =2,ikt-1227 DO jk = 2, ikt-1 233 228 ziceload(ji,jj) = ziceload(ji,jj) + (2._wp * znad + zrhd(ji,jj,jk-1) + zrhd(ji,jj,jk)) * e3w_n(ji,jj,jk) & 234 229 & * (1._wp - tmask(ji,jj,jk)) 235 230 END DO 236 231 IF (ikt >= 2) ziceload(ji,jj) = ziceload(ji,jj) + (2._wp * znad + zrhdtop_isf(ji,jj) + zrhd(ji,jj,ikt-1)) & 237 & * ( risfdep(ji,jj) - gdept_1d(ikt-1) ) 238 END DO 239 END DO 240 riceload(:,:)=ziceload(:,:) ! need to be saved for diaar5 241 242 CALL wrk_dealloc( jpi,jpj, 2, ztstop) 243 CALL wrk_dealloc( jpi,jpj,jpk, zrhd ) 244 CALL wrk_dealloc( jpi,jpj, zrhdtop_isf, ziceload) 245 END IF 232 & * ( risfdep(ji,jj) - gdept_1d(ikt-1) ) 233 END DO 234 END DO 235 riceload(:,:) = ziceload(:,:) ! need to be saved for diaar5 236 ! 237 DEALLOCATE( zts_top , zrhd , zrhdtop_isf , ziceload ) 238 ENDIF 246 239 ! 247 240 END SUBROUTINE dyn_hpg_init … … 268 261 INTEGER :: ji, jj, jk ! dummy loop indices 269 262 REAL(wp) :: zcoef0, zcoef1 ! temporary scalars 270 REAL(wp), POINTER, DIMENSION(:,:,:) :: zhpi, zhpj 271 !!---------------------------------------------------------------------- 272 ! 273 CALL wrk_alloc( jpi,jpj,jpk, zhpi, zhpj ) 263 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zhpi, zhpj 264 !!---------------------------------------------------------------------- 274 265 ! 275 266 IF( kt == nit000 ) THEN … … 315 306 END DO 316 307 ! 317 CALL wrk_dealloc( jpi,jpj,jpk, zhpi, zhpj )318 !319 308 END SUBROUTINE hpg_zco 320 309 … … 333 322 INTEGER :: iku, ikv ! temporary integers 334 323 REAL(wp) :: zcoef0, zcoef1, zcoef2, zcoef3 ! temporary scalars 335 REAL(wp), POINTER, DIMENSION(:,:,:) :: zhpi, zhpj 336 !!---------------------------------------------------------------------- 337 ! 338 CALL wrk_alloc( jpi,jpj,jpk, zhpi, zhpj ) 324 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zhpi, zhpj 325 !!---------------------------------------------------------------------- 339 326 ! 340 327 IF( kt == nit000 ) THEN … … 405 392 END DO 406 393 ! 407 CALL wrk_dealloc( jpi,jpj,jpk, zhpi, zhpj )408 !409 394 END SUBROUTINE hpg_zps 410 395 … … 433 418 REAL(wp) :: zcoef0, zuap, zvap, znad, ztmp ! temporary scalars 434 419 LOGICAL :: ll_tmp1, ll_tmp2 ! local logical variables 435 REAL(wp), POINTER, DIMENSION(:,:,:) :: zhpi, zhpj 436 REAL(wp), POINTER, DIMENSION(:,:) :: zcpx, zcpy !W/D pressure filter 437 !!---------------------------------------------------------------------- 438 ! 439 CALL wrk_alloc( jpi,jpj,jpk, zhpi, zhpj ) 440 IF( ln_wd ) CALL wrk_alloc( jpi,jpj, zcpx, zcpy ) 420 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zhpi, zhpj 421 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zcpx, zcpy !W/D pressure filter 422 !!---------------------------------------------------------------------- 441 423 ! 442 424 IF( kt == nit000 ) THEN … … 452 434 ! 453 435 IF( ln_wd ) THEN 454 DO jj = 2, jpjm1 455 DO ji = 2, jpim1 456 ll_tmp1 = MIN( sshn(ji,jj) , sshn(ji+1,jj) ) > & 436 ALLOCATE( zcpx(jpi,jpj) , zcpy(jpi,jpj) ) 437 DO jj = 2, jpjm1 438 DO ji = 2, jpim1 439 ll_tmp1 = MIN( sshn(ji,jj) , sshn(ji+1,jj) ) > & 457 440 & MAX( -ht_wd(ji,jj) , -ht_wd(ji+1,jj) ) .AND. & 458 441 & MAX( sshn(ji,jj) + ht_wd(ji,jj), sshn(ji+1,jj) + ht_wd(ji+1,jj) ) & 459 442 & > rn_wdmin1 + rn_wdmin2 460 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji+1,jj) ) > 1.E-12 ) .AND. ( &443 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji+1,jj) ) > 1.E-12 ) .AND. ( & 461 444 & MAX( sshn(ji,jj) , sshn(ji+1,jj) ) > & 462 445 & MAX( -ht_wd(ji,jj) , -ht_wd(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 ) 463 446 464 IF(ll_tmp1) THEN465 zcpx(ji,jj) = 1.0_wp466 ELSE IF(ll_tmp2) THEN467 ! no worries about sshn(ji+1,jj) - sshn(ji ,jj) = 0, it won't happen ! here468 zcpx(ji,jj) = ABS( (sshn(ji+1,jj) + ht_wd(ji+1,jj) - sshn(ji,jj) - ht_wd(ji,jj))&469 & / (sshn(ji+1,jj) - sshn(ji ,jj)))470 ELSE471 zcpx(ji,jj) = 0._wp472 ENDIF473 474 ll_tmp1 = MIN( sshn(ji,jj) , sshn(ji,jj+1) ) > &447 IF(ll_tmp1) THEN 448 zcpx(ji,jj) = 1.0_wp 449 ELSE IF(ll_tmp2) THEN 450 ! no worries about sshn(ji+1,jj) - sshn(ji ,jj) = 0, it won't happen ! here 451 zcpx(ji,jj) = ABS( ( sshn(ji+1,jj)+ht_wd(ji+1,jj) - sshn(ji,jj)-ht_wd(ji,jj) ) & 452 & / ( sshn(ji+1,jj) - sshn(ji,jj) ) ) 453 ELSE 454 zcpx(ji,jj) = 0._wp 455 ENDIF 456 ! 457 ll_tmp1 = MIN( sshn(ji,jj) , sshn(ji,jj+1) ) > & 475 458 & MAX( -ht_wd(ji,jj) , -ht_wd(ji,jj+1) ) .AND. & 476 459 & MAX( sshn(ji,jj) + ht_wd(ji,jj), sshn(ji,jj+1) + ht_wd(ji,jj+1) ) & 477 460 & > rn_wdmin1 + rn_wdmin2 478 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji,jj+1) ) > 1.E-12 ) .AND. ( &461 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji,jj+1) ) > 1.E-12 ) .AND. ( & 479 462 & MAX( sshn(ji,jj) , sshn(ji,jj+1) ) > & 480 463 & MAX( -ht_wd(ji,jj) , -ht_wd(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 ) 481 482 IF(ll_tmp1) THEN483 zcpy(ji,jj) = 1.0_wp484 ELSE IF(ll_tmp2) THEN485 ! no worries about sshn(ji,jj+1) - sshn(ji,jj ) = 0, it won't happen ! here486 zcpy(ji,jj) = ABS( (sshn(ji,jj+1) + ht_wd(ji,jj+1) - sshn(ji,jj) - ht_wd(ji,jj))&487 & / (sshn(ji,jj+1) - sshn(ji,jj )))488 ELSE489 zcpy(ji,jj) = 0._wp490 ENDIF491 END DO492 END DO493 CALL lbc_lnk( zcpx, 'U', 1._wp ) ; CALL lbc_lnk( zcpy, 'V', 1._wp )494 END 464 ! 465 IF(ll_tmp1) THEN 466 zcpy(ji,jj) = 1.0_wp 467 ELSE IF(ll_tmp2) THEN 468 ! no worries about sshn(ji,jj+1) - sshn(ji,jj ) = 0, it won't happen ! here 469 zcpy(ji,jj) = ABS( ( sshn(ji,jj+1)+ht_wd(ji,jj+1) - sshn(ji,jj) - ht_wd(ji,jj) ) & 470 & / ( sshn(ji,jj+1) - sshn(ji,jj) ) ) 471 ELSE 472 zcpy(ji,jj) = 0._wp 473 ENDIF 474 END DO 475 END DO 476 CALL lbc_lnk( zcpx, 'U', 1._wp ) ; CALL lbc_lnk( zcpy, 'V', 1._wp ) 477 ENDIF 495 478 496 479 ! Surface value … … 507 490 zvap = -zcoef0 * ( rhd (ji,jj+1,1) + rhd (ji,jj,1) + 2._wp * znad ) & 508 491 & * ( gde3w_n(ji,jj+1,1) - gde3w_n(ji,jj,1) ) * r1_e2v(ji,jj) 509 510 492 ! 511 493 IF( ln_wd ) THEN 512 513 zhpi(ji,jj,1) = zhpi(ji,jj,1) * zcpx(ji,jj) 514 zhpj(ji,jj,1) = zhpj(ji,jj,1) * zcpy(ji,jj) 515 zuap = zuap * zcpx(ji,jj) 516 zvap = zvap * zcpy(ji,jj) 494 zhpi(ji,jj,1) = zhpi(ji,jj,1) * zcpx(ji,jj) 495 zhpj(ji,jj,1) = zhpj(ji,jj,1) * zcpy(ji,jj) 496 zuap = zuap * zcpx(ji,jj) 497 zvap = zvap * zcpy(ji,jj) 517 498 ENDIF 518 499 ! 519 500 ! add to the general momentum trend 520 501 ua(ji,jj,1) = ua(ji,jj,1) + zhpi(ji,jj,1) + zuap … … 539 520 zvap = -zcoef0 * ( rhd (ji ,jj+1,jk) + rhd (ji,jj,jk) + 2._wp * znad ) & 540 521 & * ( gde3w_n(ji ,jj+1,jk) - gde3w_n(ji,jj,jk) ) * r1_e2v(ji,jj) 541 522 ! 542 523 IF( ln_wd ) THEN 543 zhpi(ji,jj,jk) = zhpi(ji,jj,jk) * zcpx(ji,jj)544 zhpj(ji,jj,jk) = zhpj(ji,jj,jk) * zcpy(ji,jj)545 zuap = zuap * zcpx(ji,jj)546 zvap = zvap * zcpy(ji,jj)547 ENDIF 548 524 zhpi(ji,jj,jk) = zhpi(ji,jj,jk) * zcpx(ji,jj) 525 zhpj(ji,jj,jk) = zhpj(ji,jj,jk) * zcpy(ji,jj) 526 zuap = zuap * zcpx(ji,jj) 527 zvap = zvap * zcpy(ji,jj) 528 ENDIF 529 ! 549 530 ! add to the general momentum trend 550 531 ua(ji,jj,jk) = ua(ji,jj,jk) + zhpi(ji,jj,jk) + zuap … … 554 535 END DO 555 536 ! 556 CALL wrk_dealloc( jpi,jpj,jpk, zhpi, zhpj ) 557 IF( ln_wd ) CALL wrk_dealloc( jpi,jpj, zcpx, zcpy ) 537 IF( ln_wd ) DEALLOCATE( zcpx , zcpy ) 558 538 ! 559 539 END SUBROUTINE hpg_sco … … 583 563 INTEGER :: ji, jj, jk, ikt, iktp1i, iktp1j ! dummy loop indices 584 564 REAL(wp) :: zcoef0, zuap, zvap, znad ! temporary scalars 585 REAL(wp), POINTER, DIMENSION(:,:,:) :: zhpi, zhpj 586 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztstop 587 REAL(wp), POINTER, DIMENSION(:,:) :: zrhdtop_oce 588 !!---------------------------------------------------------------------- 589 ! 590 CALL wrk_alloc( jpi,jpj, 2, ztstop) 591 CALL wrk_alloc( jpi,jpj,jpk, zhpi, zhpj) 592 CALL wrk_alloc( jpi,jpj, zrhdtop_oce ) 593 ! 594 ! Local constant initialization 595 zcoef0 = - grav * 0.5_wp 596 597 ! To use density and not density anomaly 598 znad=1._wp 599 600 ! iniitialised to 0. zhpi zhpi 601 zhpi(:,:,:)=0._wp ; zhpj(:,:,:)=0._wp 565 REAL(wp), DIMENSION(jpi,jpj,jpk ) :: zhpi, zhpj 566 REAL(wp), DIMENSION(jpi,jpj,jpts) :: zts_top 567 REAL(wp), DIMENSION(jpi,jpj) :: zrhdtop_oce 568 !!---------------------------------------------------------------------- 569 ! 570 zcoef0 = - grav * 0.5_wp ! Local constant initialization 571 ! 572 znad=1._wp ! To use density and not density anomaly 573 ! 574 ! ! iniitialised to 0. zhpi zhpi 575 zhpi(:,:,:) = 0._wp ; zhpj(:,:,:) = 0._wp 602 576 603 577 ! compute rhd at the ice/oce interface (ocean side) 604 578 ! usefull to reduce residual current in the test case ISOMIP with no melting 605 DO ji =1,jpi606 DO jj =1,jpj607 ikt =mikt(ji,jj)608 zts top(ji,jj,1)=tsn(ji,jj,ikt,1)609 zts top(ji,jj,2)=tsn(ji,jj,ikt,2)579 DO ji = 1, jpi 580 DO jj = 1, jpj 581 ikt = mikt(ji,jj) 582 zts_top(ji,jj,1) = tsn(ji,jj,ikt,1) 583 zts_top(ji,jj,2) = tsn(ji,jj,ikt,2) 610 584 END DO 611 585 END DO 612 CALL eos( zts top, risfdep, zrhdtop_oce )586 CALL eos( zts_top, risfdep, zrhdtop_oce ) 613 587 614 588 !================================================================================== … … 667 641 END DO 668 642 END DO 669 !670 CALL wrk_dealloc( jpi,jpj,2 , ztstop)671 CALL wrk_dealloc( jpi,jpj,jpk, zhpi, zhpj)672 CALL wrk_dealloc( jpi,jpj , zrhdtop_oce )673 643 ! 674 644 END SUBROUTINE hpg_isf … … 690 660 REAL(wp) :: z1_12, cffv, cffy ! " " 691 661 LOGICAL :: ll_tmp1, ll_tmp2 ! local logical variables 692 REAL(wp), POINTER, DIMENSION(:,:,:) :: zhpi, zhpj 693 REAL(wp), POINTER, DIMENSION(:,:,:) :: dzx, dzy, dzz, dzu, dzv, dzw 694 REAL(wp), POINTER, DIMENSION(:,:,:) :: drhox, drhoy, drhoz, drhou, drhov, drhow 695 REAL(wp), POINTER, DIMENSION(:,:,:) :: rho_i, rho_j, rho_k 696 REAL(wp), POINTER, DIMENSION(:,:) :: zcpx, zcpy !W/D pressure filter 697 !!---------------------------------------------------------------------- 698 ! 699 CALL wrk_alloc( jpi, jpj, jpk, dzx , dzy , dzz , dzu , dzv , dzw ) 700 CALL wrk_alloc( jpi, jpj, jpk, drhox, drhoy, drhoz, drhou, drhov, drhow ) 701 CALL wrk_alloc( jpi, jpj, jpk, rho_i, rho_j, rho_k, zhpi, zhpj ) 702 IF( ln_wd ) CALL wrk_alloc( jpi,jpj, zcpx, zcpy ) 703 ! 662 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zhpi, zhpj 663 REAL(wp), DIMENSION(jpi,jpj,jpk) :: dzx, dzy, dzz, dzu, dzv, dzw 664 REAL(wp), DIMENSION(jpi,jpj,jpk) :: drhox, drhoy, drhoz, drhou, drhov, drhow 665 REAL(wp), DIMENSION(jpi,jpj,jpk) :: rho_i, rho_j, rho_k 666 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zcpx, zcpy !W/D pressure filter 667 !!---------------------------------------------------------------------- 704 668 ! 705 669 IF( ln_wd ) THEN 706 DO jj = 2, jpjm1 707 DO ji = 2, jpim1 708 ll_tmp1 = MIN( sshn(ji,jj) , sshn(ji+1,jj) ) > & 670 ALLOCATE( zcpx(jpi,jpj) , zcpy(jpi,jpj) ) 671 DO jj = 2, jpjm1 672 DO ji = 2, jpim1 673 ll_tmp1 = MIN( sshn(ji,jj) , sshn(ji+1,jj) ) > & 709 674 & MAX( -ht_wd(ji,jj) , -ht_wd(ji+1,jj) ) .AND. & 710 675 & MAX( sshn(ji,jj) + ht_wd(ji,jj), sshn(ji+1,jj) + ht_wd(ji+1,jj) ) & 711 676 & > rn_wdmin1 + rn_wdmin2 712 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji+1,jj) ) > 1.E-12 ) .AND. ( &677 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji+1,jj) ) > 1.E-12 ) .AND. ( & 713 678 & MAX( sshn(ji,jj) , sshn(ji+1,jj) ) > & 714 679 & MAX( -ht_wd(ji,jj) , -ht_wd(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 ) 715 680 716 IF(ll_tmp1) THEN717 zcpx(ji,jj) = 1.0_wp718 ELSE IF(ll_tmp2) THEN719 ! no worries about sshn(ji+1,jj) - sshn(ji ,jj) = 0, it won't happen ! here720 zcpx(ji,jj) = ABS( (sshn(ji+1,jj) + ht_wd(ji+1,jj) - sshn(ji,jj) - ht_wd(ji,jj)) &721 & / (sshn(ji+1,jj) - sshn(ji ,jj)) )722 ELSE723 zcpx(ji,jj) = 0._wp724 ENDIF681 IF(ll_tmp1) THEN 682 zcpx(ji,jj) = 1.0_wp 683 ELSE IF(ll_tmp2) THEN 684 ! no worries about sshn(ji+1,jj) - sshn(ji ,jj) = 0, it won't happen ! here 685 zcpx(ji,jj) = ABS( (sshn(ji+1,jj) + ht_wd(ji+1,jj) - sshn(ji,jj) - ht_wd(ji,jj)) & 686 & / (sshn(ji+1,jj) - sshn(ji ,jj)) ) 687 ELSE 688 zcpx(ji,jj) = 0._wp 689 ENDIF 725 690 726 ll_tmp1 = MIN( sshn(ji,jj) , sshn(ji,jj+1) ) > &691 ll_tmp1 = MIN( sshn(ji,jj) , sshn(ji,jj+1) ) > & 727 692 & MAX( -ht_wd(ji,jj) , -ht_wd(ji,jj+1) ) .AND. & 728 693 & MAX( sshn(ji,jj) + ht_wd(ji,jj), sshn(ji,jj+1) + ht_wd(ji,jj+1) ) & 729 694 & > rn_wdmin1 + rn_wdmin2 730 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji,jj+1) ) > 1.E-12 ) .AND. ( &695 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji,jj+1) ) > 1.E-12 ) .AND. ( & 731 696 & MAX( sshn(ji,jj) , sshn(ji,jj+1) ) > & 732 697 & MAX( -ht_wd(ji,jj) , -ht_wd(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 ) 733 698 734 IF(ll_tmp1) THEN735 zcpy(ji,jj) = 1.0_wp736 ELSE IF(ll_tmp2) THEN737 ! no worries about sshn(ji,jj+1) - sshn(ji,jj ) = 0, it won't happen ! here738 zcpy(ji,jj) = ABS( (sshn(ji,jj+1) + ht_wd(ji,jj+1) - sshn(ji,jj) - ht_wd(ji,jj)) &739 & / (sshn(ji,jj+1) - sshn(ji,jj )) )740 ELSE741 zcpy(ji,jj) = 0._wp742 ENDIF743 END DO744 END DO745 CALL lbc_lnk( zcpx, 'U', 1._wp ) ; CALL lbc_lnk( zcpy, 'V', 1._wp )746 END 699 IF(ll_tmp1) THEN 700 zcpy(ji,jj) = 1.0_wp 701 ELSE IF(ll_tmp2) THEN 702 ! no worries about sshn(ji,jj+1) - sshn(ji,jj ) = 0, it won't happen ! here 703 zcpy(ji,jj) = ABS( (sshn(ji,jj+1) + ht_wd(ji,jj+1) - sshn(ji,jj) - ht_wd(ji,jj)) & 704 & / (sshn(ji,jj+1) - sshn(ji,jj )) ) 705 ELSE 706 zcpy(ji,jj) = 0._wp 707 ENDIF 708 END DO 709 END DO 710 CALL lbc_lnk( zcpx, 'U', 1._wp ) ; CALL lbc_lnk( zcpy, 'V', 1._wp ) 711 ENDIF 747 712 748 713 IF( kt == nit000 ) THEN … … 903 868 END DO 904 869 END DO 905 CALL lbc_lnk( rho_k,'W',1.)906 CALL lbc_lnk( rho_i,'U',1.)907 CALL lbc_lnk( rho_j,'V',1.)870 CALL lbc_lnk( rho_k, 'W', 1. ) 871 CALL lbc_lnk( rho_i, 'U', 1. ) 872 CALL lbc_lnk( rho_j, 'V', 1. ) 908 873 909 874 … … 949 914 END DO 950 915 ! 951 CALL wrk_dealloc( jpi, jpj, jpk, dzx , dzy , dzz , dzu , dzv , dzw ) 952 CALL wrk_dealloc( jpi, jpj, jpk, drhox, drhoy, drhoz, drhou, drhov, drhow ) 953 CALL wrk_dealloc( jpi, jpj, jpk, rho_i, rho_j, rho_k, zhpi, zhpj ) 954 IF( ln_wd ) CALL wrk_dealloc( jpi,jpj, zcpx, zcpy ) 916 IF( ln_wd ) DEALLOCATE( zcpx, zcpy ) 955 917 ! 956 918 END SUBROUTINE hpg_djc … … 980 942 REAL(wp) :: zrhdt1 981 943 REAL(wp) :: zdpdx1, zdpdx2, zdpdy1, zdpdy2 982 REAL(wp), POINTER, DIMENSION(:,:,:) :: zdept, zrhh 983 REAL(wp), POINTER, DIMENSION(:,:,:) :: zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp 984 REAL(wp), POINTER, DIMENSION(:,:) :: zsshu_n, zsshv_n 985 REAL(wp), POINTER, DIMENSION(:,:) :: zcpx, zcpy !W/D pressure filter 986 !!---------------------------------------------------------------------- 987 ! 988 CALL wrk_alloc( jpi,jpj,jpk, zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp ) 989 CALL wrk_alloc( jpi,jpj,jpk, zdept, zrhh ) 990 CALL wrk_alloc( jpi,jpj, zsshu_n, zsshv_n ) 991 IF( ln_wd ) CALL wrk_alloc( jpi,jpj, zcpx, zcpy ) 944 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zdept, zrhh 945 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp 946 REAL(wp), DIMENSION(jpi,jpj) :: zsshu_n, zsshv_n 947 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: zcpx, zcpy !W/D pressure filter 948 !!---------------------------------------------------------------------- 992 949 ! 993 950 IF( kt == nit000 ) THEN … … 1003 960 1004 961 IF( ln_wd ) THEN 1005 DO jj = 2, jpjm1 1006 DO ji = 2, jpim1 1007 ll_tmp1 = MIN( sshn(ji,jj) , sshn(ji+1,jj) ) > & 962 ALLOCATE( zcpx(jpi,jpj) , zcpy(jpi,jpj) ) 963 DO jj = 2, jpjm1 964 DO ji = 2, jpim1 965 ll_tmp1 = MIN( sshn(ji,jj) , sshn(ji+1,jj) ) > & 1008 966 & MAX( -ht_wd(ji,jj) , -ht_wd(ji+1,jj) ) .AND. & 1009 967 & MAX( sshn(ji,jj) + ht_wd(ji,jj), sshn(ji+1,jj) + ht_wd(ji+1,jj) ) & 1010 968 & > rn_wdmin1 + rn_wdmin2 1011 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji+1,jj) ) > 1.E-12 ) .AND. ( &969 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji+1,jj) ) > 1.E-12 ) .AND. ( & 1012 970 & MAX( sshn(ji,jj) , sshn(ji+1,jj) ) > & 1013 971 & MAX( -ht_wd(ji,jj) , -ht_wd(ji+1,jj) ) + rn_wdmin1 + rn_wdmin2 ) 1014 972 1015 IF(ll_tmp1) THEN1016 zcpx(ji,jj) = 1.0_wp1017 ELSE IF(ll_tmp2) THEN1018 ! no worries about sshn(ji+1,jj) - sshn(ji ,jj) = 0, it won't happen ! here1019 zcpx(ji,jj) = ABS( (sshn(ji+1,jj) + ht_wd(ji+1,jj) - sshn(ji,jj) - ht_wd(ji,jj)) &1020 & / (sshn(ji+1,jj) - sshn(ji ,jj)) )1021 ELSE1022 zcpx(ji,jj) = 0._wp1023 ENDIF973 IF(ll_tmp1) THEN 974 zcpx(ji,jj) = 1.0_wp 975 ELSE IF(ll_tmp2) THEN 976 ! no worries about sshn(ji+1,jj) - sshn(ji ,jj) = 0, it won't happen ! here 977 zcpx(ji,jj) = ABS( (sshn(ji+1,jj) + ht_wd(ji+1,jj) - sshn(ji,jj) - ht_wd(ji,jj)) & 978 & / (sshn(ji+1,jj) - sshn(ji ,jj)) ) 979 ELSE 980 zcpx(ji,jj) = 0._wp 981 ENDIF 1024 982 1025 ll_tmp1 = MIN( sshn(ji,jj), sshn(ji,jj+1) ) > &983 ll_tmp1 = MIN( sshn(ji,jj) , sshn(ji,jj+1) ) > & 1026 984 & MAX( -ht_wd(ji,jj) , -ht_wd(ji,jj+1) ) .AND. & 1027 985 & MAX( sshn(ji,jj) + ht_wd(ji,jj), sshn(ji,jj+1) + ht_wd(ji,jj+1) ) & 1028 986 & > rn_wdmin1 + rn_wdmin2 1029 ll_tmp2 = ( ABS( sshn(ji,jj)- sshn(ji,jj+1) ) > 1.E-12 ) .AND. ( &987 ll_tmp2 = ( ABS( sshn(ji,jj) - sshn(ji,jj+1) ) > 1.E-12 ) .AND. ( & 1030 988 & MAX( sshn(ji,jj) , sshn(ji,jj+1) ) > & 1031 989 & MAX( -ht_wd(ji,jj) , -ht_wd(ji,jj+1) ) + rn_wdmin1 + rn_wdmin2 ) 1032 990 1033 IF(ll_tmp1) THEN1034 zcpy(ji,jj) = 1.0_wp1035 ELSE IF(ll_tmp2) THEN1036 ! no worries about sshn(ji,jj+1) - sshn(ji,jj ) = 0, it won't happen ! here1037 zcpy(ji,jj) = ABS( (sshn(ji,jj+1) + ht_wd(ji,jj+1) - sshn(ji,jj) - ht_wd(ji,jj)) &991 IF(ll_tmp1) THEN 992 zcpy(ji,jj) = 1.0_wp 993 ELSE IF(ll_tmp2) THEN 994 ! no worries about sshn(ji,jj+1) - sshn(ji,jj ) = 0, it won't happen ! here 995 zcpy(ji,jj) = ABS( (sshn(ji,jj+1) + ht_wd(ji,jj+1) - sshn(ji,jj) - ht_wd(ji,jj)) & 1038 996 & / (sshn(ji,jj+1) - sshn(ji,jj )) ) 1039 ELSE1040 zcpy(ji,jj) = 0._wp1041 ENDIF1042 END DO1043 END DO1044 CALL lbc_lnk( zcpx, 'U', 1._wp ) ; CALL lbc_lnk( zcpy, 'V', 1._wp )1045 END 997 ELSE 998 zcpy(ji,jj) = 0._wp 999 ENDIF 1000 END DO 1001 END DO 1002 CALL lbc_lnk( zcpx, 'U', 1._wp ) ; CALL lbc_lnk( zcpy, 'V', 1._wp ) 1003 ENDIF 1046 1004 1047 1005 ! Clean 3-D work arrays … … 1298 1256 END DO 1299 1257 ! 1300 CALL wrk_dealloc( jpi,jpj,jpk, zhpi, zu, zv, fsp, xsp, asp, bsp, csp, dsp ) 1301 CALL wrk_dealloc( jpi,jpj,jpk, zdept, zrhh ) 1302 CALL wrk_dealloc( jpi,jpj, zsshu_n, zsshv_n ) 1303 IF( ln_wd ) CALL wrk_dealloc( jpi,jpj, zcpx, zcpy ) 1258 IF( ln_wd ) DEALLOCATE( zcpx, zcpy ) 1304 1259 ! 1305 1260 END SUBROUTINE hpg_prj … … 1353 1308 !!Simply geometric average 1354 1309 DO jk = 2, jpkm1-1 1355 zdf1 = (fsp(ji,jj,jk ) - fsp(ji,jj,jk-1)) / (xsp(ji,jj,jk) - xsp(ji,jj,jk-1))1356 zdf2 = (fsp(ji,jj,jk+1) - fsp(ji,jj,jk )) / (xsp(ji,jj,jk+1) - xsp(ji,jj,jk))1310 zdf1 = (fsp(ji,jj,jk ) - fsp(ji,jj,jk-1)) / (xsp(ji,jj,jk ) - xsp(ji,jj,jk-1)) 1311 zdf2 = (fsp(ji,jj,jk+1) - fsp(ji,jj,jk )) / (xsp(ji,jj,jk+1) - xsp(ji,jj,jk )) 1357 1312 1358 1313 IF(zdf1 * zdf2 <= 0._wp) THEN … … 1403 1358 END DO 1404 1359 END DO 1405 1360 ! 1406 1361 ELSE 1407 1408 ENDIF 1409 1362 CALL ctl_stop( 'invalid polynomial type in cspline' ) 1363 ENDIF 1364 ! 1410 1365 END SUBROUTINE cspline 1411 1366 -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynkeg.F90
r7753 r8568 22 22 USE lib_mpp ! MPP library 23 23 USE prtctl ! Print control 24 USE wrk_nemo ! Memory Allocation25 24 USE timing ! Timing 26 25 USE bdy_oce ! ocean open boundary conditions … … 39 38 # include "vectopt_loop_substitute.h90" 40 39 !!---------------------------------------------------------------------- 41 !! NEMO/OPA 3.6 , NEMO Consortium (2015)40 !! NEMO/OPA 4.0 , NEMO Consortium (2017) 42 41 !! $Id$ 43 42 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 75 74 INTEGER, INTENT( in ) :: kscheme ! =0/1 type of KEG scheme 76 75 ! 77 INTEGER :: ji, jj, jk ! dummy loop indices 78 REAL(wp) :: zu, zv ! temporary scalars 79 REAL(wp), POINTER, DIMENSION(:,:,:) :: zhke 80 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdu, ztrdv 81 INTEGER :: jb ! dummy loop indices 82 INTEGER :: ii, ij, igrd, ib_bdy ! local integers 83 INTEGER :: fu, fv 76 INTEGER :: ji, jj, jk, jb ! dummy loop indices 77 INTEGER :: ii, ifu, ib_bdy ! local integers 78 INTEGER :: ij, ifv, igrd ! - - 79 REAL(wp) :: zu, zv ! local scalars 80 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zhke 81 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrdu, ztrdv 84 82 !!---------------------------------------------------------------------- 85 83 ! 86 IF( nn_timing == 1 ) CALL timing_start('dyn_keg') 87 ! 88 CALL wrk_alloc( jpi,jpj,jpk, zhke ) 84 IF( ln_timing ) CALL timing_start('dyn_keg') 89 85 ! 90 86 IF( kt == nit000 ) THEN … … 94 90 ENDIF 95 91 96 IF( l_trddyn ) THEN ! Save ua and vatrends97 CALL wrk_alloc( jpi,jpj,jpk, ztrdu, ztrdv)92 IF( l_trddyn ) THEN ! Save the input trends 93 ALLOCATE( ztrdu(jpi,jpj,jpk) , ztrdv(jpi,jpj,jpk) ) 98 94 ztrdu(:,:,:) = ua(:,:,:) 99 95 ztrdv(:,:,:) = va(:,:,:) … … 112 108 ii = idx_bdy(ib_bdy)%nbi(jb,igrd) 113 109 ij = idx_bdy(ib_bdy)%nbj(jb,igrd) 114 fu = NINT( idx_bdy(ib_bdy)%flagu(jb,igrd) )115 un(ii- fu,ij,jk) = un(ii,ij,jk) * umask(ii,ij,jk)110 ifu = NINT( idx_bdy(ib_bdy)%flagu(jb,igrd) ) 111 un(ii-ifu,ij,jk) = un(ii,ij,jk) * umask(ii,ij,jk) 116 112 END DO 117 113 END DO … … 122 118 ii = idx_bdy(ib_bdy)%nbi(jb,igrd) 123 119 ij = idx_bdy(ib_bdy)%nbj(jb,igrd) 124 fv = NINT( idx_bdy(ib_bdy)%flagv(jb,igrd) )125 vn(ii,ij- fv,jk) = vn(ii,ij,jk) * vmask(ii,ij,jk)120 ifv = NINT( idx_bdy(ib_bdy)%flagv(jb,igrd) ) 121 vn(ii,ij-ifv,jk) = vn(ii,ij,jk) * vmask(ii,ij,jk) 126 122 END DO 127 123 END DO … … 172 168 ENDIF 173 169 174 175 170 ! 176 171 DO jk = 1, jpkm1 !== grad( KE ) added to the general momentum trends ==! … … 187 182 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 188 183 CALL trd_dyn( ztrdu, ztrdv, jpdyn_keg, kt ) 189 CALL wrk_dealloc( jpi,jpj,jpk, ztrdu, ztrdv )184 DEALLOCATE( ztrdu , ztrdv ) 190 185 ENDIF 191 186 ! … … 193 188 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 194 189 ! 195 CALL wrk_dealloc( jpi,jpj,jpk, zhke ) 196 ! 197 IF( nn_timing == 1 ) CALL timing_stop('dyn_keg') 190 IF( ln_timing ) CALL timing_stop('dyn_keg') 198 191 ! 199 192 END SUBROUTINE dyn_keg -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf.F90
r8215 r8568 27 27 USE lib_mpp ! distribued memory computing library 28 28 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 29 USE wrk_nemo ! Memory Allocation30 29 USE timing ! Timing 31 30 … … 48 47 # include "vectopt_loop_substitute.h90" 49 48 !!---------------------------------------------------------------------- 50 !! NEMO/OPA 3.7 , NEMO Consortium (2015)49 !! NEMO/OPA 4.0 , NEMO Consortium (2017) 51 50 !! $Id$ 52 51 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 62 61 INTEGER, INTENT(in) :: kt ! ocean time-step index 63 62 ! 64 REAL(wp), POINTER, DIMENSION(:,:,:) ::ztrdu, ztrdv63 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrdu, ztrdv 65 64 !!---------------------------------------------------------------------- 66 65 ! 67 IF( nn_timing == 1 )CALL timing_start('dyn_ldf')66 IF( ln_timing ) CALL timing_start('dyn_ldf') 68 67 ! 69 68 IF( l_trddyn ) THEN ! temporary save of momentum trends 70 CALL wrk_alloc( jpi,jpj,jpk, ztrdu, ztrdv)69 ALLOCATE( ztrdu(jpi,jpj,jpk) , ztrdv(jpi,jpj,jpk) ) 71 70 ztrdu(:,:,:) = ua(:,:,:) 72 71 ztrdv(:,:,:) = va(:,:,:) … … 85 84 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 86 85 CALL trd_dyn( ztrdu, ztrdv, jpdyn_ldf, kt ) 87 CALL wrk_dealloc( jpi,jpj,jpk, ztrdu, ztrdv )86 DEALLOCATE ( ztrdu , ztrdv ) 88 87 ENDIF 89 88 ! ! print sum trends (used for debugging) … … 91 90 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 92 91 ! 93 IF( nn_timing == 1 )CALL timing_stop('dyn_ldf')92 IF( ln_timing ) CALL timing_stop('dyn_ldf') 94 93 ! 95 94 END SUBROUTINE dyn_ldf … … 102 101 !! ** Purpose : initializations of the horizontal ocean dynamics physics 103 102 !!---------------------------------------------------------------------- 104 INTEGER :: ioptio, ierr 103 INTEGER :: ioptio, ierr ! temporary integers 105 104 !!---------------------------------------------------------------------- 106 105 ! 107 ! ! Namelist nam_dynldf:already read in ldfdyn module106 ! !== Namelist nam_dynldf ==! already read in ldfdyn module 108 107 ! 109 IF(lwp) THEN ! Namelist print108 IF(lwp) THEN !== Namelist print ==! 110 109 WRITE(numout,*) 111 110 WRITE(numout,*) 'dyn_ldf_init : Choice of the lateral diffusive operator on dynamics' 112 111 WRITE(numout,*) '~~~~~~~~~~~~' 113 112 WRITE(numout,*) ' Namelist nam_dynldf : set lateral mixing parameters (type, direction, coefficients)' 114 WRITE(numout,*) ' laplacian operator ln_dynldf_lap = ', ln_dynldf_lap 115 WRITE(numout,*) ' bilaplacian operator ln_dynldf_blp = ', ln_dynldf_blp 116 WRITE(numout,*) ' iso-level ln_dynldf_lev = ', ln_dynldf_lev 117 WRITE(numout,*) ' horizontal (geopotential) ln_dynldf_hor = ', ln_dynldf_hor 118 WRITE(numout,*) ' iso-neutral ln_dynldf_iso = ', ln_dynldf_iso 113 WRITE(numout,*) ' Type of operator' 114 WRITE(numout,*) ' no explicit diffusion ln_dynldf_NONE = ', ln_dynldf_NONE 115 WRITE(numout,*) ' laplacian operator ln_dynldf_lap = ', ln_dynldf_lap 116 WRITE(numout,*) ' bilaplacian operator ln_dynldf_blp = ', ln_dynldf_blp 117 WRITE(numout,*) ' Direction of action' 118 WRITE(numout,*) ' iso-level ln_dynldf_lev = ', ln_dynldf_lev 119 WRITE(numout,*) ' horizontal (geopotential) ln_dynldf_hor = ', ln_dynldf_hor 120 WRITE(numout,*) ' iso-neutral ln_dynldf_iso = ', ln_dynldf_iso 119 121 ENDIF 120 ! ! use of lateral operator or not122 ! !== use of lateral operator or not ==! 121 123 nldf = np_ERROR 122 124 ioptio = 0 123 IF( ln_dynldf_ lap ) ioptio = ioptio + 1124 IF( ln_dynldf_ blp ) ioptio = ioptio + 1125 IF( ioptio > 1 ) CALL ctl_stop( 'dyn_ldf_init: use ONE or NONE of the 2 lap/bilap operator type on momentum' )126 IF( ioptio == 0 ) nldf = np_no_ldf ! No lateral mixing operator125 IF( ln_dynldf_NONE ) THEN ; nldf = np_no_ldf ; ioptio = ioptio + 1 ; ENDIF 126 IF( ln_dynldf_lap ) THEN ; ioptio = ioptio + 1 ; ENDIF 127 IF( ln_dynldf_blp ) THEN ; ioptio = ioptio + 1 ; ENDIF 128 IF( ioptio /= 1 ) CALL ctl_stop( 'dyn_ldf_init: use ONE of the 3 operator options (NONE/lap/blp)' ) 127 129 ! 128 IF( nldf /= np_no_ldf ) THEN ! direction ==>> type of operator130 IF(.NOT.ln_dynldf_NONE ) THEN !== direction ==>> type of operator ==! 129 131 ioptio = 0 130 132 IF( ln_dynldf_lev ) ioptio = ioptio + 1 131 133 IF( ln_dynldf_hor ) ioptio = ioptio + 1 132 134 IF( ln_dynldf_iso ) ioptio = ioptio + 1 133 IF( ioptio > 1 ) CALL ctl_stop( ' use only ONE direction (level/hor/iso)' ) 134 IF( ioptio == 0 ) CALL ctl_stop( ' use at least ONE direction (level/hor/iso)' ) 135 IF( ioptio /= 1 ) CALL ctl_stop( 'dyn_ldf_init: use ONE of the 3 direction options (level/hor/iso)' ) 135 136 ! 136 ! 137 ! ! Set nldf, the type of lateral diffusion, from ln_dynldf_... logicals 137 138 ierr = 0 138 IF ( ln_dynldf_lap ) THEN! laplacian operator139 IF 139 IF( ln_dynldf_lap ) THEN ! laplacian operator 140 IF( ln_zco ) THEN ! z-coordinate 140 141 IF ( ln_dynldf_lev ) nldf = np_lap ! iso-level = horizontal (no rotation) 141 142 IF ( ln_dynldf_hor ) nldf = np_lap ! iso-level = horizontal (no rotation) 142 143 IF ( ln_dynldf_iso ) nldf = np_lap_i ! iso-neutral ( rotation) 143 144 ENDIF 144 IF ( ln_zps ) THEN! z-coordinate with partial step145 IF( ln_zps ) THEN ! z-coordinate with partial step 145 146 IF ( ln_dynldf_lev ) nldf = np_lap ! iso-level (no rotation) 146 147 IF ( ln_dynldf_hor ) nldf = np_lap ! iso-level (no rotation) 147 148 IF ( ln_dynldf_iso ) nldf = np_lap_i ! iso-neutral ( rotation) 148 149 ENDIF 149 IF ( ln_sco ) THEN! s-coordinate150 IF( ln_sco ) THEN ! s-coordinate 150 151 IF ( ln_dynldf_lev ) nldf = np_lap ! iso-level = horizontal (no rotation) 151 152 IF ( ln_dynldf_hor ) nldf = np_lap_i ! horizontal ( rotation) … … 154 155 ENDIF 155 156 ! 156 IF( ln_dynldf_blp ) THEN 157 IF 158 IF 159 IF 160 IF 157 IF( ln_dynldf_blp ) THEN ! bilaplacian operator 158 IF( ln_zco ) THEN ! z-coordinate 159 IF( ln_dynldf_lev ) nldf = np_blp ! iso-level = horizontal (no rotation) 160 IF( ln_dynldf_hor ) nldf = np_blp ! iso-level = horizontal (no rotation) 161 IF( ln_dynldf_iso ) ierr = 2 ! iso-neutral ( rotation) 161 162 ENDIF 162 IF ( ln_zps ) THEN! z-coordinate with partial step163 IF 164 IF 165 IF 163 IF( ln_zps ) THEN ! z-coordinate with partial step 164 IF( ln_dynldf_lev ) nldf = np_blp ! iso-level (no rotation) 165 IF( ln_dynldf_hor ) nldf = np_blp ! iso-level (no rotation) 166 IF( ln_dynldf_iso ) ierr = 2 ! iso-neutral ( rotation) 166 167 ENDIF 167 IF ( ln_sco ) THEN! s-coordinate168 IF 169 IF 170 IF 168 IF( ln_sco ) THEN ! s-coordinate 169 IF( ln_dynldf_lev ) nldf = np_blp ! iso-level (no rotation) 170 IF( ln_dynldf_hor ) ierr = 2 ! horizontal ( rotation) 171 IF( ln_dynldf_iso ) ierr = 2 ! iso-neutral ( rotation) 171 172 ENDIF 172 173 ENDIF -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_iso.F90
r8215 r8568 28 28 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 29 29 USE prtctl ! Print control 30 USE wrk_nemo ! Memory Allocation31 30 USE timing ! Timing 32 31 … … 45 44 # include "vectopt_loop_substitute.h90" 46 45 !!---------------------------------------------------------------------- 47 !! NEMO/OPA 3.3 , NEMO Consortium (2011)46 !! NEMO/OPA 4.0 , NEMO Consortium (2017) 48 47 !! $Id$ 49 48 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 108 107 ! 109 108 INTEGER :: ji, jj, jk ! dummy loop indices 110 REAL(wp) :: zabe1, zabe2, zcof1, zcof2 ! local scalars 111 REAL(wp) :: zmskt, zmskf ! - - 112 REAL(wp) :: zcoef0, zcoef3, zcoef4, zmkt, zmkf ! - - 113 REAL(wp) :: zuav, zvav, zuwslpi, zuwslpj, zvwslpi, zvwslpj ! - - 114 ! 115 REAL(wp), POINTER, DIMENSION(:,:) :: ziut, zjuf, zjvt, zivf, zdku, zdk1u, zdkv, zdk1v 109 REAL(wp) :: zabe1, zmskt, zmkt, zuav, zuwslpi, zuwslpj ! local scalars 110 REAL(wp) :: zabe2, zmskf, zmkf, zvav, zvwslpi, zvwslpj ! - - 111 REAL(wp) :: zcof0, zcof1, zcof2, zcof3, zcof4 ! - - 112 REAL(wp), DIMENSION(jpi,jpj) :: ziut, zivf, zdku, zdk1u ! 2D workspace 113 REAL(wp), DIMENSION(jpi,jpj) :: zjuf, zjvt, zdkv, zdk1v ! - - 116 114 !!---------------------------------------------------------------------- 117 115 ! 118 IF( nn_timing == 1 ) CALL timing_start('dyn_ldf_iso') 119 ! 120 CALL wrk_alloc( jpi, jpj, ziut, zjuf, zjvt, zivf, zdku, zdk1u, zdkv, zdk1v ) 116 IF( ln_timing ) CALL timing_start('dyn_ldf_iso') 121 117 ! 122 118 IF( kt == nit000 ) THEN … … 343 339 DO jk = 2, jpkm1 344 340 DO ji = 2, jpim1 345 zco ef0= 0.5* rn_aht_0 * umask(ji,jj,jk)341 zcof0 = 0.5_wp * rn_aht_0 * umask(ji,jj,jk) 346 342 ! 347 zuwslpi = zco ef0 * ( wslpi(ji+1,jj,jk) + wslpi(ji,jj,jk) )348 zuwslpj = zco ef0 * ( wslpj(ji+1,jj,jk) + wslpj(ji,jj,jk) )343 zuwslpi = zcof0 * ( wslpi(ji+1,jj,jk) + wslpi(ji,jj,jk) ) 344 zuwslpj = zcof0 * ( wslpj(ji+1,jj,jk) + wslpj(ji,jj,jk) ) 349 345 ! 350 zmkt = 1./MAX( tmask(ji,jj,jk-1)+tmask(ji+1,jj,jk-1) &351 + tmask(ji,jj,jk )+tmask(ji+1,jj,jk ) , 1. )352 zmkf = 1./MAX( fmask(ji,jj-1,jk-1) + fmask(ji,jj,jk-1) &353 + fmask(ji,jj-1,jk ) + fmask(ji,jj,jk ) , 1. )354 355 zco ef3 = - e2u(ji,jj) * zmkt * zuwslpi356 zco ef4 = - e1u(ji,jj) * zmkf * zuwslpj346 zmkt = 1./MAX( tmask(ji,jj,jk-1)+tmask(ji+1,jj,jk-1) & 347 + tmask(ji,jj,jk )+tmask(ji+1,jj,jk ) , 1. ) 348 zmkf = 1./MAX( fmask(ji,jj-1,jk-1) + fmask(ji,jj,jk-1) & 349 + fmask(ji,jj-1,jk ) + fmask(ji,jj,jk ) , 1. ) 350 351 zcof3 = - e2u(ji,jj) * zmkt * zuwslpi 352 zcof4 = - e1u(ji,jj) * zmkf * zuwslpj 357 353 ! vertical flux on u field 358 zfuw(ji,jk) = zco ef3 * ( zdiu (ji,jk-1) + zdiu (ji+1,jk-1)&359 +zdiu (ji,jk ) + zdiu (ji+1,jk )) &360 + zcoef4 * ( zdj1u(ji,jk-1) + zdju (ji ,jk-1)&361 +zdj1u(ji,jk ) + zdju (ji ,jk ))354 zfuw(ji,jk) = zcof3 * ( zdiu (ji,jk-1) + zdiu (ji+1,jk-1) & 355 & + zdiu (ji,jk ) + zdiu (ji+1,jk ) ) & 356 & + zcof4 * ( zdj1u(ji,jk-1) + zdju (ji ,jk-1) & 357 & + zdj1u(ji,jk ) + zdju (ji ,jk ) ) 362 358 ! vertical mixing coefficient (akzu) 363 ! Note: zco ef0 include rn_aht_0, so divided by rn_aht_0 to obtain slp^2 * rn_aht_0359 ! Note: zcof0 include rn_aht_0, so divided by rn_aht_0 to obtain slp^2 * rn_aht_0 364 360 akzu(ji,jj,jk) = ( zuwslpi * zuwslpi + zuwslpj * zuwslpj ) / rn_aht_0 365 361 END DO … … 369 365 DO jk = 2, jpkm1 370 366 DO ji = 2, jpim1 371 zco ef0 = 0.5* rn_aht_0 * vmask(ji,jj,jk)372 373 zvwslpi = zco ef0 * ( wslpi(ji,jj+1,jk) + wslpi(ji,jj,jk) )374 zvwslpj = zco ef0 * ( wslpj(ji,jj+1,jk) + wslpj(ji,jj,jk) )375 376 zmkf = 1./MAX( fmask(ji-1,jj,jk-1)+fmask(ji,jj,jk-1) &377 + fmask(ji-1,jj,jk )+fmask(ji,jj,jk ), 1. )378 zmkt = 1./MAX( tmask(ji,jj,jk-1)+tmask(ji,jj+1,jk-1) &379 + tmask(ji,jj,jk )+tmask(ji,jj+1,jk ), 1. )380 381 zco ef3 = - e2v(ji,jj) * zmkf * zvwslpi382 zco ef4 = - e1v(ji,jj) * zmkt * zvwslpj367 zcof0 = 0.5_wp * rn_aht_0 * vmask(ji,jj,jk) 368 ! 369 zvwslpi = zcof0 * ( wslpi(ji,jj+1,jk) + wslpi(ji,jj,jk) ) 370 zvwslpj = zcof0 * ( wslpj(ji,jj+1,jk) + wslpj(ji,jj,jk) ) 371 ! 372 zmkf = 1./MAX( fmask(ji-1,jj,jk-1)+fmask(ji,jj,jk-1) & 373 & + fmask(ji-1,jj,jk )+fmask(ji,jj,jk ) , 1. ) 374 zmkt = 1./MAX( tmask(ji,jj,jk-1)+tmask(ji,jj+1,jk-1) & 375 & + tmask(ji,jj,jk )+tmask(ji,jj+1,jk ) , 1. ) 376 377 zcof3 = - e2v(ji,jj) * zmkf * zvwslpi 378 zcof4 = - e1v(ji,jj) * zmkt * zvwslpj 383 379 ! vertical flux on v field 384 zfvw(ji,jk) = zco ef3 * ( zdiv (ji,jk-1) + zdiv (ji-1,jk-1)&385 & +zdiv (ji,jk ) + zdiv (ji-1,jk )) &386 & + zco ef4 * ( zdjv (ji,jk-1) + zdj1v(ji ,jk-1)&387 & +zdjv (ji,jk ) + zdj1v(ji ,jk ))380 zfvw(ji,jk) = zcof3 * ( zdiv (ji,jk-1) + zdiv (ji-1,jk-1) & 381 & + zdiv (ji,jk ) + zdiv (ji-1,jk ) ) & 382 & + zcof4 * ( zdjv (ji,jk-1) + zdj1v(ji ,jk-1) & 383 & + zdjv (ji,jk ) + zdj1v(ji ,jk ) ) 388 384 ! vertical mixing coefficient (akzv) 389 ! Note: zco ef0 include rn_aht_0, so divided by rn_aht_0 to obtain slp^2 * rn_aht_0385 ! Note: zcof0 include rn_aht_0, so divided by rn_aht_0 to obtain slp^2 * rn_aht_0 390 386 akzv(ji,jj,jk) = ( zvwslpi * zvwslpi + zvwslpj * zvwslpj ) / rn_aht_0 391 387 END DO … … 404 400 END DO ! End of slab 405 401 ! ! =============== 406 CALL wrk_dealloc( jpi, jpj, ziut, zjuf, zjvt, zivf, zdku, zdk1u, zdkv, zdk1v )407 402 ! 408 IF( nn_timing == 1 )CALL timing_stop('dyn_ldf_iso')403 IF( ln_timing ) CALL timing_stop('dyn_ldf_iso') 409 404 ! 410 405 END SUBROUTINE dyn_ldf_iso -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_lap_blp.F90
r7753 r8568 19 19 USE in_out_manager ! I/O manager 20 20 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 21 USE wrk_nemo ! Memory Allocation22 21 USE timing ! Timing 23 22 … … 31 30 # include "vectopt_loop_substitute.h90" 32 31 !!---------------------------------------------------------------------- 33 !! NEMO/OPA 3.7 , NEMO Consortium (2014)32 !! NEMO/OPA 4.0 , NEMO Consortium (2017) 34 33 !! $Id$ 35 34 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 57 56 REAL(wp) :: zsign ! local scalars 58 57 REAL(wp) :: zua, zva ! local scalars 59 REAL(wp), POINTER, DIMENSION(:,:) ::zcur, zdiv58 REAL(wp), DIMENSION(jpi,jpj) :: zcur, zdiv 60 59 !!---------------------------------------------------------------------- 61 60 ! … … 66 65 ENDIF 67 66 ! 68 IF( nn_timing == 1 ) CALL timing_start('dyn_ldf_lap') 69 ! 70 CALL wrk_alloc( jpi, jpj, zcur, zdiv ) 67 IF( ln_timing ) CALL timing_start('dyn_ldf_lap') 71 68 ! 72 69 IF( kpass == 1 ) THEN ; zsign = 1._wp ! bilaplacian operator require a minus sign … … 107 104 END DO ! End of slab 108 105 ! ! =============== 109 CALL wrk_dealloc( jpi, jpj, zcur, zdiv )110 106 ! 111 IF( nn_timing == 1 )CALL timing_stop('dyn_ldf_lap')107 IF( ln_timing ) CALL timing_stop('dyn_ldf_lap') 112 108 ! 113 109 END SUBROUTINE dyn_ldf_lap … … 131 127 REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: pua, pva ! momentum trend 132 128 ! 133 REAL(wp), POINTER, DIMENSION(:,:,:) :: zulap, zvlap ! laplacian at u- and v-point129 REAL(wp), DIMENSION(jpi,jpj,jpk) :: zulap, zvlap ! laplacian at u- and v-point 134 130 !!---------------------------------------------------------------------- 135 131 ! 136 IF( nn_timing == 1 ) CALL timing_start('dyn_ldf_blp') 137 ! 138 CALL wrk_alloc( jpi, jpj, jpk, zulap, zvlap ) 132 IF( ln_timing ) CALL timing_start('dyn_ldf_blp') 139 133 ! 140 134 IF( kt == nit000 ) THEN … … 154 148 CALL dyn_ldf_lap( kt, zulap, zvlap, pua, pva, 2 ) ! rotated laplacian applied to zlap (output in pta) 155 149 ! 156 CALL wrk_dealloc( jpi, jpj, jpk, zulap, zvlap ) 157 ! 158 IF( nn_timing == 1 ) CALL timing_stop('dyn_ldf_blp') 150 IF( ln_timing ) CALL timing_stop('dyn_ldf_blp') 159 151 ! 160 152 END SUBROUTINE dyn_ldf_blp -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90
r7753 r8568 44 44 USE lbclnk ! lateral boundary condition (or mpp link) 45 45 USE lib_mpp ! MPP library 46 USE wrk_nemo ! Memory Allocation47 46 USE prtctl ! Print control 48 47 USE timing ! Timing … … 57 56 58 57 !!---------------------------------------------------------------------- 59 !! NEMO/OPA 3.3 , NEMO Consortium (2010)58 !! NEMO/OPA 4.0 , NEMO Consortium (2017) 60 59 !! $Id$ 61 60 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 97 96 REAL(wp) :: zue3a, zue3n, zue3b, zuf, zcoef ! local scalars 98 97 REAL(wp) :: zve3a, zve3n, zve3b, zvf, z1_2dt ! - - 99 REAL(wp), POINTER, DIMENSION(:,:) ::zue, zve100 REAL(wp), POINTER, DIMENSION(:,:,:) ::ze3u_f, ze3v_f, zua, zva98 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zue, zve 99 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ze3u_f, ze3v_f, zua, zva 101 100 !!---------------------------------------------------------------------- 102 101 ! 103 IF( nn_timing == 1 ) CALL timing_start('dyn_nxt') 104 ! 105 IF( ln_dynspg_ts ) CALL wrk_alloc( jpi,jpj, zue, zve) 106 IF( l_trddyn ) CALL wrk_alloc( jpi,jpj,jpk, zua, zva) 102 IF( ln_timing ) CALL timing_start('dyn_nxt') 103 IF( ln_dynspg_ts ) ALLOCATE( zue(jpi,jpj) , zve(jpi,jpj) ) 104 IF( l_trddyn ) ALLOCATE( zua(jpi,jpj,jpk) , zva(jpi,jpj,jpk) ) 107 105 ! 108 106 IF( kt == nit000 ) THEN … … 253 251 ELSE ! Asselin filter applied on thickness weighted velocity 254 252 ! 255 CALL wrk_alloc( jpi,jpj,jpk, ze3u_f, ze3v_f)253 ALLOCATE( ze3u_f(jpi,jpj,jpk) , ze3v_f(jpi,jpj,jpk) ) 256 254 ! Before filtered scale factor at (u/v)-points stored in ze3u_f, ze3v_f 257 255 CALL dom_vvl_interpol( e3t_b(:,:,:), ze3u_f, 'U' ) … … 280 278 e3v_b(:,:,1:jpkm1) = ze3v_f(:,:,1:jpkm1) 281 279 ! 282 CALL wrk_dealloc( jpi,jpj,jpk, ze3u_f, ze3v_f )280 DEALLOCATE( ze3u_f , ze3v_f ) 283 281 ENDIF 284 282 ! … … 346 344 & tab3d_2=vn, clinfo2=' Vn: ' , mask2=vmask ) 347 345 ! 348 IF( ln_dynspg_ts ) CALL wrk_dealloc( jpi,jpj, zue, zve ) 349 IF( l_trddyn ) CALL wrk_dealloc( jpi,jpj,jpk, zua, zva ) 350 ! 351 IF( nn_timing == 1 ) CALL timing_stop('dyn_nxt') 346 IF( ln_dynspg_ts ) DEALLOCATE( zue, zve ) 347 IF( l_trddyn ) DEALLOCATE( zua, zva ) 348 IF( ln_timing ) CALL timing_stop('dyn_nxt') 352 349 ! 353 350 END SUBROUTINE dyn_nxt -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90
r7753 r8568 28 28 USE in_out_manager ! I/O manager 29 29 USE lib_mpp ! MPP library 30 USE wrk_nemo ! Memory Allocation31 30 USE timing ! Timing 32 31 … … 47 46 # include "vectopt_loop_substitute.h90" 48 47 !!---------------------------------------------------------------------- 49 !! NEMO/OPA 3.2 , LODYC-IPSL (2009)48 !! NEMO/OPA 4.0 , LODYC-IPSL (2017) 50 49 !! $Id$ 51 50 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) … … 71 70 !! period is used to prevent the divergence of odd and even time step. 72 71 !!---------------------------------------------------------------------- 73 INTEGER, INTENT(in ) :: kt 74 ! 75 INTEGER :: ji, jj, jk 76 REAL(wp) :: z2dt, zg_2, zintp, zgrau0r ! temporary scalar77 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdu, ztrdv78 REAL(wp), POINTER, DIMENSION(:,:) :: zpice79 !!---------------------------------------------------------------------- 80 ! 81 IF( nn_timing == 1 )CALL timing_start('dyn_spg')72 INTEGER, INTENT(in ) :: kt ! ocean time-step index 73 ! 74 INTEGER :: ji, jj, jk ! dummy loop indices 75 REAL(wp) :: z2dt, zg_2, zintp, zgrau0r ! local scalars 76 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: zpice 77 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: ztrdu, ztrdv 78 !!---------------------------------------------------------------------- 79 ! 80 IF( ln_timing ) CALL timing_start('dyn_spg') 82 81 ! 83 82 IF( l_trddyn ) THEN ! temporary save of ta and sa trends 84 CALL wrk_alloc( jpi,jpj,jpk, ztrdu, ztrdv)83 ALLOCATE( ztrdu(jpi,jpj,jpk) , ztrdv(jpi,jpj,jpk) ) 85 84 ztrdu(:,:,:) = ua(:,:,:) 86 85 ztrdv(:,:,:) = va(:,:,:) … … 124 123 ! 125 124 IF( nn_ice_embd == 2 ) THEN !== embedded sea ice: Pressure gradient due to snow-ice mass ==! 126 CALL wrk_alloc( jpi,jpj, zpice ) 127 ! 125 ALLOCATE( zpice(jpi,jpj) ) 128 126 zintp = REAL( MOD( kt-1, nn_fsbc ) ) / REAL( nn_fsbc ) 129 127 zgrau0r = - grav * r1_rau0 … … 135 133 END DO 136 134 END DO 137 ! 138 CALL wrk_dealloc( jpi,jpj, zpice ) 135 DEALLOCATE( zpice ) 139 136 ENDIF 140 137 ! … … 161 158 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 162 159 CALL trd_dyn( ztrdu, ztrdv, jpdyn_spg, kt ) 163 CALL wrk_dealloc( jpi,jpj,jpk, ztrdu, ztrdv )160 DEALLOCATE( ztrdu , ztrdv ) 164 161 ENDIF 165 162 ! ! print mean trends (used for debugging) … … 167 164 & tab3d_2=va, clinfo2= ' Va: ', mask2=vmask, clinfo3='dyn' ) 168 165 ! 169 IF( nn_timing == 1 )CALL timing_stop('dyn_spg')166 IF( ln_timing ) CALL timing_stop('dyn_spg') 170 167 ! 171 168 END SUBROUTINE dyn_spg … … 186 183 !!---------------------------------------------------------------------- 187 184 ! 188 IF( nn_timing == 1 )CALL timing_start('dyn_spg_init')185 IF( ln_timing ) CALL timing_start('dyn_spg_init') 189 186 ! 190 187 REWIND( numnam_ref ) ! Namelist namdyn_spg in reference namelist : Free surface … … 227 224 ENDIF 228 225 ! 229 IF( nn_timing == 1 )CALL timing_stop('dyn_spg_init')226 IF( ln_timing ) CALL timing_stop('dyn_spg_init') 230 227 ! 231 228 END SUBROUTINE dyn_spg_init -
branches/2017/dev_r7881_ENHANCE09_RK3/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_exp.F90