- Timestamp:
- 2013-04-19T08:48:21+02:00 (11 years ago)
- Location:
- branches/2013/dev_r3858_CNRS3_Ediag/NEMOGCM/NEMO/OPA_SRC/DYN
- Files:
-
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2013/dev_r3858_CNRS3_Ediag/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_cen2.F90
r3294 r3876 15 15 USE oce ! ocean dynamics and tracers 16 16 USE dom_oce ! ocean space and time domain 17 USE trd mod_oce ! ocean variables trends18 USE trd mod ! ocean dynamics trends17 USE trd_oce ! trends: ocean variables 18 USE trddyn ! trend manager: dynamics 19 19 USE in_out_manager ! I/O manager 20 20 USE lib_mpp ! MPP library … … 103 103 zfu_uw(:,:,:) = ua(:,:,:) - zfu_uw(:,:,:) 104 104 zfv_vw(:,:,:) = va(:,:,:) - zfv_vw(:,:,:) 105 CALL trd_ mod( zfu_uw, zfv_vw, jpdyn_trd_had, 'DYN', kt )105 CALL trd_dyn( zfu_uw, zfv_vw, jpdyn_keg, kt ) 106 106 zfu_t(:,:,:) = ua(:,:,:) 107 107 zfv_t(:,:,:) = va(:,:,:) … … 153 153 zfu_t(:,:,:) = ua(:,:,:) - zfu_t(:,:,:) 154 154 zfv_t(:,:,:) = va(:,:,:) - zfv_t(:,:,:) 155 CALL trd_ mod( zfu_t, zfv_t, jpdyn_trd_zad, 'DYN', kt )155 CALL trd_dyn( zfu_t, zfv_t, jpdyn_zad, kt ) 156 156 ENDIF 157 157 ! ! Control print -
branches/2013/dev_r3858_CNRS3_Ediag/NEMOGCM/NEMO/OPA_SRC/DYN/dynadv_ubs.F90
r3294 r3876 16 16 USE oce ! ocean dynamics and tracers 17 17 USE dom_oce ! ocean space and time domain 18 USE trd mod ! ocean dynamics trends19 USE trd mod_oce ! ocean variables trends18 USE trd_oce ! trends: ocean variables 19 USE trddyn ! trend manager: dynamics 20 20 USE in_out_manager ! I/O manager 21 21 USE prtctl ! Print control … … 196 196 zfu_uw(:,:,:) = ua(:,:,:) - zfu_uw(:,:,:) 197 197 zfv_vw(:,:,:) = va(:,:,:) - zfv_vw(:,:,:) 198 CALL trd_ mod( zfu_uw, zfv_vw, jpdyn_trd_had, 'DYN', kt )198 CALL trd_dyn( zfu_uw, zfv_vw, jpdyn_keg, kt ) 199 199 zfu_t(:,:,:) = ua(:,:,:) 200 200 zfv_t(:,:,:) = va(:,:,:) … … 245 245 zfu_t(:,:,:) = ua(:,:,:) - zfu_t(:,:,:) 246 246 zfv_t(:,:,:) = va(:,:,:) - zfv_t(:,:,:) 247 CALL trd_ mod( zfu_t, zfv_t, jpdyn_trd_zad, 'DYN', kt )247 CALL trd_dyn( zfu_t, zfv_t, jpdyn_zad, kt ) 248 248 ENDIF 249 249 ! ! Control print -
branches/2013/dev_r3858_CNRS3_Ediag/NEMOGCM/NEMO/OPA_SRC/DYN/dynbfr.F90
r3294 r3876 10 10 11 11 !!---------------------------------------------------------------------- 12 !! dyn_bfr : Update the momentum trend with the bottom friction contribution12 !! dyn_bfr : Update the momentum trend with the bottom friction contribution 13 13 !!---------------------------------------------------------------------- 14 USE oce 15 USE dom_oce 16 USE zdf_oce 17 USE zdfbfr 18 USE trd mod ! ocean active dynamics and tracers trends19 USE trd mod_oce ! ocean variables trends20 USE in_out_manager 21 USE prtctl 22 USE timing 23 USE wrk_nemo 14 USE oce ! ocean dynamics and tracers variables 15 USE dom_oce ! ocean space and time domain variables 16 USE zdf_oce ! ocean vertical physics variables 17 USE zdfbfr ! ocean bottom friction variables 18 USE trd_oce ! trends: ocean variables 19 USE trddyn ! trend manager: dynamics 20 USE in_out_manager ! I/O manager 21 USE prtctl ! Print control 22 USE timing ! Timing 23 USE wrk_nemo ! Memory Allocation 24 24 25 25 IMPLICIT NONE 26 26 PRIVATE 27 27 28 PUBLIC dyn_bfr 28 PUBLIC dyn_bfr ! routine called by step.F90 29 29 30 30 !! * Substitutions … … 57 57 IF( nn_timing == 1 ) CALL timing_start('dyn_bfr') 58 58 ! 59 !!gm issue: better to put the logical in step to control the call of zdf_bfr 60 !! ==> change the logical from ln_bfrimp to ln_bfr_exp !! 59 61 IF( .NOT.ln_bfrimp) THEN ! only for explicit bottom friction form 60 62 ! implicit bfr is implemented in dynzdf_imp 61 63 64 !!gm bug : time step is only rdt (not 2 rdt if euler start !) 62 65 zm1_2dt = - 1._wp / ( 2._wp * rdt ) 63 66 … … 89 92 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 90 93 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 91 CALL trd_ mod( ztrdu(:,:,:), ztrdv(:,:,:), jpdyn_trd_bfr, 'DYN', kt )94 CALL trd_dyn( ztrdu(:,:,:), ztrdv(:,:,:), jpdyn_bfr, kt ) 92 95 CALL wrk_dealloc( jpi,jpj,jpk, ztrdu, ztrdv ) 93 96 ENDIF -
branches/2013/dev_r3858_CNRS3_Ediag/NEMOGCM/NEMO/OPA_SRC/DYN/dynhpg.F90
r3764 r3876 31 31 USE dom_oce ! ocean space and time domain 32 32 USE phycst ! physical constants 33 USE trd mod ! ocean dynamics trends34 USE trd mod_oce ! ocean variables trends33 USE trd_oce ! trends: ocean variables 34 USE trddyn ! trend manager: dynamics 35 35 USE in_out_manager ! I/O manager 36 36 USE prtctl ! Print control 37 USE lbclnk ! lateral boundary condition 37 USE lbclnk ! lateral boundary condition 38 38 USE lib_mpp ! MPP library 39 39 USE wrk_nemo ! Memory Allocation … … 46 46 PUBLIC dyn_hpg_init ! routine called by opa module 47 47 48 ! !!* Namelist namdyn_hpg : hydrostatic pressure gradient 48 ! !!* Namelist namdyn_hpg : hydrostatic pressure gradient 49 49 LOGICAL , PUBLIC :: ln_hpg_zco = .TRUE. !: z-coordinate - full steps 50 50 LOGICAL , PUBLIC :: ln_hpg_zps = .FALSE. !: z-coordinate - partial steps (interpolation) … … 54 54 LOGICAL , PUBLIC :: ln_dynhpg_imp = .FALSE. !: semi-implicite hpg flag 55 55 56 INTEGER , PUBLIC :: nhpg = 0 ! = 0 to 7, type of pressure gradient scheme used ! (deduced from ln_hpg_... flags) (PUBLIC for TAM)56 INTEGER :: nhpg = 0 ! = 0 to 7, type of pressure gradient scheme used ! (deduced from ln_hpg_... flags) 57 57 58 58 !! * Substitutions … … 70 70 !! *** ROUTINE dyn_hpg *** 71 71 !! 72 !! ** Method : Call the hydrostatic pressure gradient routine 72 !! ** Method : Call the hydrostatic pressure gradient routine 73 73 !! using the scheme defined in the namelist 74 !! 74 !! 75 75 !! ** Action : - Update (ua,va) with the now hydrastatic pressure trend 76 !! - Save the trend(l_trddyn=T)76 !! - send trends to trd_dyn for futher diagnostics (l_trddyn=T) 77 77 !!---------------------------------------------------------------------- 78 78 INTEGER, INTENT(in) :: kt ! ocean time-step index … … 99 99 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 100 100 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 101 CALL trd_ mod( ztrdu, ztrdv, jpdyn_trd_hpg, 'DYN', kt )101 CALL trd_dyn( ztrdu, ztrdv, jpdyn_hpg, kt ) 102 102 CALL wrk_dealloc( jpi,jpj,jpk, ztrdu, ztrdv ) 103 103 ENDIF … … 427 427 END SUBROUTINE hpg_sco 428 428 429 429 430 SUBROUTINE hpg_djc( kt ) 430 431 !!--------------------------------------------------------------------- … … 664 665 !! 665 666 !! ** Action : - Update (ua,va) with the now hydrastatic pressure trend 666 !! - Save the trend (l_trddyn=T)667 !!668 667 !!---------------------------------------------------------------------- 669 668 INTEGER, PARAMETER :: polynomial_type = 1 ! 1: cubic spline, 2: linear … … 717 716 718 717 ! Transfer the depth of "T(:,:,:)" to vertical coordinate "zdept(:,:,:)" 719 DO jj = 1, jpj; DO ji = 1, jpi 720 zdept(ji,jj,1) = 0.5_wp * fse3w(ji,jj,1) - sshn(ji,jj) * znad 721 END DO ; END DO 722 723 DO jk = 2, jpk; DO jj = 1, jpj; DO ji = 1, jpi 724 zdept(ji,jj,jk) = zdept(ji,jj,jk-1) + fse3w(ji,jj,jk) 725 END DO ; END DO ; END DO 726 727 fsp(:,:,:) = zrhh(:,:,:) 718 DO jj = 1, jpj 719 DO ji = 1, jpi 720 zdept(ji,jj,1) = 0.5_wp * fse3w(ji,jj,1) - sshn(ji,jj) * znad 721 END DO 722 END DO 723 724 DO jk = 2, jpk 725 DO jj = 1, jpj 726 DO ji = 1, jpi 727 zdept(ji,jj,jk) = zdept(ji,jj,jk-1) + fse3w(ji,jj,jk) 728 END DO 729 END DO 730 END DO 731 732 fsp(:,:,:) = zrhh (:,:,:) 728 733 xsp(:,:,:) = zdept(:,:,:) 729 734 … … 926 931 END SUBROUTINE hpg_prj 927 932 933 928 934 SUBROUTINE cspline(fsp, xsp, asp, bsp, csp, dsp, polynomial_type) 929 935 !!---------------------------------------------------------------------- … … 934 940 !! ** Method : f(x) = asp + bsp*x + csp*x^2 + dsp*x^3 935 941 !! Reference: CJC Kruger, Constrained Cubic Spline Interpoltation 936 !!937 942 !!---------------------------------------------------------------------- 938 943 IMPLICIT NONE … … 942 947 INTEGER, INTENT(in) :: polynomial_type ! 1: cubic spline 943 948 ! 2: Linear 944 945 ! Local Variables 949 ! 946 950 INTEGER :: ji, jj, jk ! dummy loop indices 947 951 INTEGER :: jpi, jpj, jpkm1 … … 1033 1037 ENDIF 1034 1038 1035 1036 1039 END SUBROUTINE cspline 1037 1040 … … 1043 1046 !! ** Purpose : 1-d linear interpolation 1044 1047 !! 1045 !! ** Method : 1046 !! interpolation is straight forward 1048 !! ** Method : interpolation is straight forward 1047 1049 !! extrapolation is also permitted (no value limit) 1048 !!1049 1050 !!---------------------------------------------------------------------- 1050 1051 IMPLICIT NONE … … 1063 1064 END FUNCTION interp1 1064 1065 1066 1065 1067 FUNCTION interp2(x, a, b, c, d) RESULT(f) 1066 1068 !!---------------------------------------------------------------------- … … 1126 1128 END FUNCTION integ_spline 1127 1129 1128 1129 1130 !!====================================================================== 1130 1131 END MODULE dynhpg -
branches/2013/dev_r3858_CNRS3_Ediag/NEMOGCM/NEMO/OPA_SRC/DYN/dynkeg.F90
r3294 r3876 14 14 USE oce ! ocean dynamics and tracers 15 15 USE dom_oce ! ocean space and time domain 16 USE trd mod ! ocean dynamics trends17 USE trd mod_oce ! ocean variables trends16 USE trd_oce ! trends: ocean variables 17 USE trddyn ! trend manager: dynamics 18 18 USE in_out_manager ! I/O manager 19 19 USE lib_mpp ! MPP library … … 52 52 !! 53 53 !! ** Action : - Update the (ua, va) with the hor. ke gradient trend 54 !! - s ave this trends(l_trddyn=T) for post-processing54 !! - send this trends to trd_dyn (l_trddyn=T) for post-processing 55 55 !!---------------------------------------------------------------------- 56 56 INTEGER, INTENT( in ) :: kt ! ocean time-step index … … 131 131 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 132 132 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 133 CALL trd_ mod( ztrdu, ztrdv, jpdyn_trd_keg, 'DYN', kt )133 CALL trd_dyn( ztrdu, ztrdv, jpdyn_keg, kt ) 134 134 CALL wrk_dealloc( jpi,jpj,jpk, ztrdu, ztrdv ) 135 135 ENDIF -
branches/2013/dev_r3858_CNRS3_Ediag/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf.F90
r3294 r3876 20 20 USE dynldf_iso ! lateral mixing (dyn_ldf_iso routine) 21 21 USE dynldf_lap ! lateral mixing (dyn_ldf_lap routine) 22 USE trd mod ! ocean dynamics and tracer trends23 USE trd mod_oce ! ocean variables trends22 USE trd_oce ! trends: ocean variables 23 USE trddyn ! trend manager: dynamics 24 24 USE prtctl ! Print control 25 25 USE in_out_manager ! I/O manager … … 54 54 !! ** Purpose : compute the lateral ocean dynamics physics. 55 55 !!---------------------------------------------------------------------- 56 !57 56 INTEGER, INTENT(in) :: kt ! ocean time-step index 58 57 ! … … 106 105 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 107 106 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 108 CALL trd_ mod( ztrdu, ztrdv, jpdyn_trd_ldf, 'DYN', kt )107 CALL trd_dyn( ztrdu, ztrdv, jpdyn_ldf, kt ) 109 108 CALL wrk_dealloc( jpi, jpj, jpk, ztrdu, ztrdv ) 110 109 ENDIF -
branches/2013/dev_r3858_CNRS3_Ediag/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilap.F90
r3634 r3876 19 19 USE dom_oce ! ocean space and time domain 20 20 USE ldfdyn_oce ! ocean dynamics: lateral physics 21 ! 21 22 USE in_out_manager ! I/O manager 22 USE trdmod ! ocean dynamics trends23 USE trdmod_oce ! ocean variables trends24 23 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 25 24 USE wrk_nemo ! Memory Allocation … … 70 69 !! Add this before trend to the general trend (ua,va): 71 70 !! (ua,va) = (ua,va) + (diffu,diffv) 72 !! 'key_trddyn' defined: the two components of the horizontal73 !! diffusion trend are saved.74 71 !! 75 72 !! ** Action : - Update (ua,va) with the before iso-level biharmonic -
branches/2013/dev_r3858_CNRS3_Ediag/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_bilapg.F90
r3634 r3876 20 20 USE ldfdyn_oce ! ocean dynamics lateral physics 21 21 USE zdf_oce ! ocean vertical physics 22 USE trdmod ! ocean dynamics trends23 USE trdmod_oce ! ocean variables trends24 22 USE ldfslp ! iso-neutral slopes available 23 ! 25 24 USE in_out_manager ! I/O manager 26 25 USE lib_mpp ! MPP library … … 81 80 !! -3- Add this trend to the general trend (ta,sa): 82 81 !! (ua,va) = (ua,va) + (zwk3,zwk4) 83 !! 'key_trddyn' defined: the trend is saved for diagnostics.84 82 !! 85 83 !! ** Action : - Update (ua,va) arrays with the before geopotential 86 84 !! biharmonic mixing trend. 87 !! - save the trend in (zwk3,zwk4) ('key_trddyn')88 85 !!---------------------------------------------------------------------- 89 86 INTEGER, INTENT( in ) :: kt ! ocean time-step index … … 176 173 !! pu and pv (all the components except 177 174 !! second order vertical derivative term) 178 !! 'key_trddyn' defined: the trend is saved for diagnostics.179 175 !!---------------------------------------------------------------------- 180 176 !! -
branches/2013/dev_r3858_CNRS3_Ediag/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_iso.F90
r3294 r3876 22 22 USE ldftra_oce ! ocean tracer lateral physics 23 23 USE zdf_oce ! ocean vertical physics 24 USE trdmod ! ocean dynamics trends25 USE trdmod_oce ! ocean variables trends26 24 USE ldfslp ! iso-neutral slopes 27 25 USE lbclnk ! ocean lateral boundary conditions (or mpp link) -
branches/2013/dev_r3858_CNRS3_Ediag/NEMOGCM/NEMO/OPA_SRC/DYN/dynldf_lap.F90
r3294 r3876 19 19 USE ldfdyn_oce ! ocean dynamics: lateral physics 20 20 USE zdf_oce ! ocean vertical physics 21 !!gm ?? USE ldfslp ! iso-neutral slopes 22 ! 21 23 USE in_out_manager ! I/O manager 22 USE trdmod ! ocean dynamics trends23 USE trdmod_oce ! ocean variables trends24 USE ldfslp ! iso-neutral slopes25 24 USE timing ! Timing 26 25 … … 57 56 !! Add this before trend to the general trend (ua,va): 58 57 !! (ua,va) = (ua,va) + (diffu,diffv) 59 !! 'key_trddyn' activated: the two components of the horizontal60 !! diffusion trend are saved.61 58 !! 62 59 !! ** Action : - Update (ua,va) with the before iso-level harmonic -
branches/2013/dev_r3858_CNRS3_Ediag/NEMOGCM/NEMO/OPA_SRC/DYN/dynnept.F90
r3723 r3876 5 5 !! recoded version of simplest case (u*, v* only) 6 6 !!====================================================================== 7 !! History : 1.0 ! 2007-06 (Michael Dunphy) Modular form: - new namelist parameters 8 !! - horizontal diffusion for Neptune 9 !! - vertical diffusion for gm in momentum eqns 10 !! - option to use Neptune in Coriolis eqn 7 !! History : 1.0 ! 2007-06 (Zeliang Wang, Michael Dunphy, BIO) Original code 8 !! Modular form: - new namelist parameters 9 !! - horizontal diffusion for Neptune 10 !! - vertical diffusion for gm in momentum eqns 11 !! - option to use Neptune in Coriolis eqn 11 12 !! 2011-08 (Jeff Blundell, NOCS) Simplified form for temporally invariant u*, v* 12 !! Horizontal and vertical diffusivity formulations removed 13 !! Dynamic allocation of storage added 14 !! Option of ramping Neptune vel. down 15 !! to zero added in shallow depths added 13 !! Horizontal and vertical diffusivity formulations removed 14 !! Dynamic allocation of storage added 15 !! Option of ramping Neptune vel. down to zero added in shallow depths added 16 !!---------------------------------------------------------------------- 17 16 18 !!---------------------------------------------------------------------- 17 19 !! dynnept_alloc : … … 30 32 USE phycst 31 33 USE lbclnk 32 USE wrk_nemo ! Memory Allocation34 USE wrk_nemo ! Memory Allocation 33 35 34 36 IMPLICIT NONE 35 37 PRIVATE 36 38 37 !! * Routine accessibility 38 PUBLIC dyn_nept_init ! routine called by nemogcm.F90 39 PUBLIC dyn_nept_cor ! routine called by step.F90 40 !! dynnept_alloc() is called only by dyn_nept_init, within this module 41 !! dyn_nept_div_cur_init is called only by dyn_nept_init, within this module 42 !! dyn_nept_vel is called only by dyn_nept_cor, within this module 43 44 !! * Shared module variables 45 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: zunep, zvnep ! Neptune u and v 46 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: zhdivnep ! hor. div for Neptune vel. 47 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: zmrotnep ! curl for Neptune vel. 48 49 50 !! * Namelist namdyn_nept variables 39 PUBLIC dyn_nept_init ! routine called by nemogcm.F90 40 PUBLIC dyn_nept_cor ! routine called by step.F90 41 42 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: zunep, zvnep ! Neptune u and v 43 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: zhdivnep ! hor. div for Neptune vel. 44 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: zmrotnep ! curl for Neptune vel. 45 46 ! !!* Namelist namdyn_nept variables 51 47 LOGICAL, PUBLIC :: ln_neptsimp = .FALSE. ! yes/no simplified neptune 52 48 … … 60 56 REAL(wp) :: rn_htrmax = 200.0 ! max. depth of transition range 61 57 62 !! * Module variables63 64 65 58 !! * Substitutions 66 59 # include "vectopt_loop_substitute.h90" 67 60 # include "domzgr_substitute.h90" 68 61 !!---------------------------------------------------------------------- 69 !! OPA 9.0 , implemented by Bedford Institute of Oceanography 70 !!---------------------------------------------------------------------- 71 62 !! NEMO/OPA 3.3 , NEMO Consortium (2011) 63 !! $Id: dynadv_cen2.F90 3316 2012-02-21 16:00:02Z gm $ 64 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 65 !!---------------------------------------------------------------------- 72 66 CONTAINS 73 67 … … 90 84 !! and compute the arrays zunep and zvnep 91 85 !! 92 !! ** Method : zunep = 93 !! zvnep = 94 !! 95 !! ** History : 1.0 ! 07-05 (Zeliang Wang) Original code for zunep, zvnep 96 !! 1.1 ! 07-06 (Michael Dunphy) namelist and initialisation 97 !! 2.0 ! 2011-07 (Jeff Blundell, NOCS) 98 !! ! Simplified form for temporally invariant u*, v* 99 !! ! Horizontal and vertical diffusivity formulations removed 100 !! ! Includes optional tapering-off in shallow depths 86 !! ** Method : Simplified form for temporally invariant u*, v* 87 !! Horizontal and vertical diffusivity formulations removed 88 !! Includes optional tapering-off in shallow depths 101 89 !!---------------------------------------------------------------------- 102 90 USE iom 103 ! !91 ! 104 92 INTEGER :: ji, jj, jk ! dummy loop indices 105 93 REAL(wp) :: unemin,unemax,vnemin,vnemax ! extrema of (u*, v*) fields … … 140 128 ENDIF 141 129 ! 142 IF( .NOT. ln_neptsimp ) RETURN130 IF( .NOT. ln_neptsimp ) RETURN 143 131 ! ! Dynamically allocate local work arrays 144 132 CALL wrk_alloc( jpi, jpj , ht, htn, tscale, tsp, hur_n, hvr_n, hu_n, hv_n ) … … 352 340 !! ** Action : - compute zhdivnep, the hor. divergence of (u*, v*) 353 341 !! - compute zmrotnep, the rel. vorticity of (u*, v*) 354 !! 355 !! History : OPA ! 1987-06 (P. Andrich, D. L Hostis) Original code 356 !! 4.0 ! 1991-11 (G. Madec) 357 !! 6.0 ! 1993-03 (M. Guyon) symetrical conditions 358 !! 7.0 ! 1996-01 (G. Madec) s-coordinates 359 !! 8.0 ! 1997-06 (G. Madec) lateral boundary cond., lbc 360 !! 8.1 ! 1997-08 (J.M. Molines) Open boundaries 361 !! 8.2 ! 2000-03 (G. Madec) no slip accurate 362 !! NEMO 1.0 ! 2002-09 (G. Madec, E. Durand) Free form, F90 363 !! - ! 2005-01 (J. Chanut) Unstructured open boundaries 364 !! - ! 2003-08 (G. Madec) merged of cur and div, free form, F90 365 !! - ! 2005-01 (J. Chanut, A. Sellar) unstructured open boundaries 366 !! 3.3 ! 2010-09 (D.Storkey and E.O'Dea) bug fixes for BDY module 367 !! ! 2011-06 (Jeff Blundell, NOCS) Adapt code from divcur.F90 368 !! ! to compute Neptune effect fields only 369 !!---------------------------------------------------------------------- 370 ! 342 !!---------------------------------------------------------------------- 371 343 INTEGER :: ji, jj, jk ! dummy loop indices 372 344 !!---------------------------------------------------------------------- … … 508 480 509 481 SUBROUTINE dyn_nept_smooth_vel( htold, htnew, ld_option ) 510 511 482 !!---------------------------------------------------------------------- 512 483 !! *** ROUTINE dyn_nept_smooth_vel *** … … 598 569 END SUBROUTINE dyn_nept_smooth_vel 599 570 571 !!============================================================================== 600 572 END MODULE dynnept -
branches/2013/dev_r3858_CNRS3_Ediag/NEMOGCM/NEMO/OPA_SRC/DYN/dynnxt.F90
r3764 r3876 17 17 !! 3.3 ! 2010-09 (D. Storkey, E.O'Dea) Bug fix for BDY module 18 18 !! 3.3 ! 2011-03 (P. Oddo) Bug fix for time-splitting+(BDY-OBC) and not VVL 19 !! 3.4 ! 2012-02 (G. Madec) add the diagnostic of the time filter trends 19 20 !!------------------------------------------------------------------------- 20 21 … … 29 30 USE dynadv ! dynamics: vector invariant versus flux form 30 31 USE domvvl ! variable volume 32 USE trd_oce ! trends: ocean variables 33 USE trddyn ! trend manager: dynamics 34 USE trdken ! trend manager: kinetic energy 31 35 USE obc_oce ! ocean open boundary conditions 32 36 USE obcdyn ! open boundary condition for momentum (obc_dyn routine) … … 37 41 USE bdydyn ! ocean open boundary conditions 38 42 USE bdyvol ! ocean open boundary condition (bdy_vol routines) 43 ! 39 44 USE in_out_manager ! I/O manager 45 USE iom ! I/O manager library 40 46 USE lbclnk ! lateral boundary condition (or mpp link) 41 47 USE lib_mpp ! MPP library 42 48 USE wrk_nemo ! Memory Allocation 43 49 USE prtctl ! Print control 50 USE timing ! Timing 44 51 #if defined key_agrif 45 52 USE agrif_opa_interp 46 53 #endif 47 USE timing ! Timing48 54 49 55 IMPLICIT NONE … … 81 87 !! at the local domain boundaries through lbc_lnk call, 82 88 !! at the one-way open boundaries (lk_obc=T), 83 !! at the AGRIF zoom 89 !! at the AGRIF zoom boundaries (lk_agrif=T) 84 90 !! 85 91 !! * Apply the time filter applied and swap of the dynamics … … 101 107 REAL(wp) :: z2dt ! temporary scalar 102 108 #endif 103 REAL(wp) :: zue3a, zue3n, zue3b, zuf, zec ! local scalars104 REAL(wp) :: zve3a, zve3n, zve3b, zvf 105 REAL(wp), POINTER, DIMENSION(:,:,:) :: ze3u_f, ze3v_f 109 REAL(wp) :: zue3a, zue3n, zue3b, zuf, zec ! local scalars 110 REAL(wp) :: zve3a, zve3n, zve3b, zvf, z1_2dt ! - - 111 REAL(wp), POINTER, DIMENSION(:,:,:) :: ze3u_f, ze3v_f, zua, zva 106 112 !!---------------------------------------------------------------------- 107 113 ! 108 IF( nn_timing == 1 ) CALL timing_start('dyn_nxt')109 ! 110 CALL wrk_alloc( jpi,jpj,jpk, ze3u_f, ze3v_f )114 IF( nn_timing == 1 ) CALL timing_start('dyn_nxt') 115 ! 116 CALL wrk_alloc( jpi,jpj,jpk, ze3u_f, ze3v_f, zua, zva ) 111 117 ! 112 118 IF( kt == nit000 ) THEN … … 156 162 # if defined key_obc 157 163 ! !* OBC open boundaries 158 IF( lk_obc ) CALL obc_dyn( kt )164 IF( lk_obc ) CALL obc_dyn( kt ) 159 165 ! 160 166 IF( .NOT. lk_dynspg_flt ) THEN … … 163 169 ! sshn_b (= after ssha_b) for time-splitting case (lk_dynspg_ts=T) 164 170 ! - Correct the barotropic velocities 165 IF( lk_obc ) CALL obc_dyn_bt( kt )171 IF( lk_obc ) CALL obc_dyn_bt( kt ) 166 172 ! 167 173 !!gm ERROR - potential BUG: sshn should not be modified at this stage !! ssh_nxt not alrady called … … 186 192 # endif 187 193 #endif 194 195 IF( l_trddyn ) THEN ! prepare the atf trend computation + some diagnostics 196 z1_2dt = 1._wp / (2. * rdt) ! Euler or leap-frog time step 197 IF( neuler == 0 .AND. kt == nit000 ) z1_2dt = 1._wp / rdt 198 ! 199 ! ! Kinetic energy and Conversion 200 IF( ln_KE_trd ) CALL trd_dyn( ua, va, jpdyn_ken, kt ) 201 ! 202 IF( ln_dyn_trd ) THEN ! 3D output: total momentum trends 203 zua(:,:,:) = ( ua(:,:,:) - ub(:,:,:) ) * z1_2dt 204 zva(:,:,:) = ( va(:,:,:) - vb(:,:,:) ) * z1_2dt 205 CALL iom_put( "utrd_tot", zua ) ! total momentum trends, except the asselin time filter 206 CALL iom_put( "vtrd_tot", zva ) 207 ENDIF 208 ! 209 zua(:,:,:) = un(:,:,:) ! save the now velocity before the asselin filter 210 zva(:,:,:) = vn(:,:,:) ! (caution: there will be a shift by 1 timestep in the 211 ! ! computation of the asselin filter trends) 212 ENDIF 188 213 189 214 ! Time filter and swap of dynamics arrays … … 274 299 ENDIF 275 300 301 IF( l_trddyn ) THEN ! 3D output: asselin filter trends on momentum 302 zua(:,:,:) = ( ub(:,:,:) - zua(:,:,:) ) * z1_2dt 303 zva(:,:,:) = ( vb(:,:,:) - zva(:,:,:) ) * z1_2dt 304 CALL trd_dyn( zua, zva, jpdyn_atf, kt ) 305 ENDIF 306 276 307 IF(ln_ctl) CALL prt_ctl( tab3d_1=un, clinfo1=' nxt - Un: ', mask1=umask, & 277 308 & tab3d_2=vn, clinfo2=' Vn: ' , mask2=vmask ) 278 309 ! 279 CALL wrk_dealloc( jpi,jpj,jpk, ze3u_f, ze3v_f )310 CALL wrk_dealloc( jpi,jpj,jpk, ze3u_f, ze3v_f, zua, zva ) 280 311 ! 281 312 IF( nn_timing == 1 ) CALL timing_stop('dyn_nxt') -
branches/2013/dev_r3858_CNRS3_Ediag/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90
r3625 r3876 22 22 USE dynspg_flt ! surface pressure gradient (dyn_spg_flt routine) 23 23 USE dynadv ! dynamics: vector invariant versus flux form 24 USE trd mod ! ocean dynamics trends25 USE trd mod_oce ! ocean variables trends24 USE trd_oce ! trends: ocean variables 25 USE trddyn ! trend manager: dynamics 26 26 USE prtctl ! Print control (prt_ctl routine) 27 27 USE in_out_manager ! I/O manager 28 28 USE lib_mpp ! MPP library 29 USE solver 30 USE wrk_nemo 31 USE timing 29 USE solver ! solver initialization 30 USE wrk_nemo ! Memory Allocation 31 USE timing ! Timing 32 32 33 33 … … 118 118 END DO 119 119 END DO 120 121 !!gm add here a call to dyn_trd for apr, the surf pressure trends ???? 122 120 123 ENDIF 121 124 … … 142 145 ! 143 146 CALL wrk_dealloc( jpi, jpj, zpice ) 147 148 !!gm add here a call to dyn_trd for ice pressure gradient, the surf pressure trends ???? 149 144 150 ENDIF 145 151 … … 170 176 CASE( 2 ) 171 177 z2dt = 2. * rdt 172 IF( neuler == 0 .AND. kt == nit000 ) z2dt = rdt178 IF( neuler == 0 .AND. kt == nit000 ) z2dt = rdt 173 179 ztrdu(:,:,:) = ( ua(:,:,:) - ub(:,:,:) ) / z2dt - ztrdu(:,:,:) 174 180 ztrdv(:,:,:) = ( va(:,:,:) - vb(:,:,:) ) / z2dt - ztrdv(:,:,:) 175 181 END SELECT 176 CALL trd_ mod( ztrdu, ztrdv, jpdyn_trd_spg, 'DYN', kt )182 CALL trd_dyn( ztrdu, ztrdv, jpdyn_spg, kt ) 177 183 ! 178 184 CALL wrk_dealloc( jpi, jpj, jpk, ztrdu, ztrdv ) -
branches/2013/dev_r3858_CNRS3_Ediag/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_exp.F90
r3680 r3876 22 22 USE obc_par ! open boundary condition parameters 23 23 USE obcdta ! open boundary condition data (bdy_dta_bt routine) 24 ! 24 25 USE in_out_manager ! I/O manager 25 26 USE lib_mpp ! distributed memory computing library -
branches/2013/dev_r3858_CNRS3_Ediag/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_flt.F90
r3765 r3876 13 13 !! - ! 2006-08 (J.Chanut, A.Sellar) Calls to BDY routines. 14 14 !! 3.2 ! 2009-03 (G. Madec, M. Leclair, R. Benshila) introduce sshwzv module 15 !! 3.5 ! 2012-05 (F. Roquet, G. Madec) add some trends diag 15 16 !!---------------------------------------------------------------------- 16 17 #if defined key_dynspg_flt || defined key_esopa … … 39 40 USE bdyvol ! ocean open boundary condition (bdy_vol routine) 40 41 USE cla ! cross land advection 42 USE trd_oce ! trends: ocean variables 43 USE trddyn ! trend manager: dynamics 44 ! 41 45 USE in_out_manager ! I/O manager 42 46 USE lib_mpp ! distributed memory computing library … … 46 50 USE iom 47 51 USE lib_fortran 52 USE timing ! Timing 48 53 #if defined key_agrif 49 54 USE agrif_opa_interp 50 55 #endif 51 USE timing ! Timing52 56 53 57 IMPLICIT NONE … … 102 106 !! ** Action : - Update (ua,va) with the surf. pressure gradient trend 103 107 !! 104 !! References : Roullet and Madec 1999, JGR.108 !! References : Roullet and Madec, JGR, 2000. 105 109 !!--------------------------------------------------------------------- 106 110 INTEGER, INTENT(in ) :: kt ! ocean time-step index 107 111 INTEGER, INTENT( out) :: kindic ! solver convergence flag (<0 if not converge) 108 ! !112 ! 109 113 INTEGER :: ji, jj, jk ! dummy loop indices 110 114 REAL(wp) :: z2dt, z2dtg, zgcb, zbtd, ztdgu, ztdgv ! local scalars 111 REAL(wp), POINTER, DIMENSION(:,:,:) :: zub, zvb 115 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdu, ztrdv 116 REAL(wp), POINTER, DIMENSION(:,:) :: zpw 112 117 !!---------------------------------------------------------------------- 113 118 ! 114 119 IF( nn_timing == 1 ) CALL timing_start('dyn_spg_flt') 115 !116 CALL wrk_alloc( jpi,jpj,jpk, zub, zvb )117 120 ! 118 121 IF( kt == nit000 ) THEN … … 183 186 END DO 184 187 END DO 188 ! save the explicit SPG trends for further diagnostics 189 ! --------------------------------------------- 190 IF( l_trddyn ) THEN ! temporary save of ta and sa trends 191 CALL wrk_alloc( jpi, jpj, jpk, ztrdu, ztrdv ) 192 DO jk = 1, jpkm1 ! unweighted time stepping 193 DO jj = 2, jpjm1 194 DO ji = fs_2, fs_jpim1 ! vector opt. 195 ztrdu(ji,jj,jk) = spgu(ji,jj) * umask(ji,jj,jk) 196 ztrdv(ji,jj,jk) = spgv(ji,jj) * vmask(ji,jj,jk) 197 END DO 198 END DO 199 END DO 200 CALL trd_dyn( ztrdu, ztrdv, jpdyn_spgexp, kt ) 201 ENDIF 185 202 ! 186 203 ENDIF … … 208 225 END DO 209 226 210 ! vertical sum227 ! ! vertical sum 211 228 !CDIR NOLOOPCHG 212 229 IF( lk_vopt_loop ) THEN ! vector opt., forced unroll … … 217 234 END DO 218 235 END DO 219 ELSE ! No vector opt.236 ELSE ! No vector opt. 220 237 DO jk = 1, jpkm1 221 238 DO jj = 2, jpjm1 … … 228 245 ENDIF 229 246 230 ! transport: multiplied by the horizontal scale factor 231 DO jj = 2, jpjm1 247 DO jj = 2, jpjm1 ! transport: multiplied by the horizontal scale factor 232 248 DO ji = fs_2, fs_jpim1 ! vector opt. 233 249 spgu(ji,jj) = spgu(ji,jj) * e2u(ji,jj) … … 342 358 ENDIF 343 359 #endif 360 361 IF( l_trddyn ) THEN 362 ztrdu(:,:,:) = ua(:,:,:) ! save the after velocity before the filtered SPG 363 ztrdv(:,:,:) = va(:,:,:) 364 ! 365 CALL wrk_alloc( jpi, jpj, zpw ) 366 ! 367 zpw(:,:) = - z2dt * gcx(:,:) 368 CALL iom_put( "ssh_flt" , zpw ) ! output equivalent ssh modification due to implicit filter 369 ! 370 ! ! save surface pressure flux: -pw at z=0 371 zpw(:,:) = - rau0 * grav * sshn(:,:) * wn(:,:,1) * tmask(:,:,1) 372 CALL iom_put( "pw0_exp" , zpw ) 373 zpw(:,:) = wn(:,:,1) 374 CALL iom_put( "w0" , zpw ) 375 zpw(:,:) = rau0 * z2dtg * gcx(:,:) * wn(:,:,1) * tmask(:,:,1) 376 CALL iom_put( "pw0_flt" , zpw ) 377 ! 378 CALL wrk_dealloc( jpi, jpj, zpw ) 379 ! 380 ENDIF 381 344 382 ! Add the trends multiplied by z2dt to the after velocity 345 383 ! ------------------------------------------------------- … … 356 394 END DO 357 395 358 ! write filtered free surface arrays in restart file 359 ! -------------------------------------------------- 360 IF( lrst_oce ) CALL flt_rst( kt, 'WRITE' ) 361 ! 362 CALL wrk_dealloc( jpi,jpj,jpk, zub, zvb ) 396 IF( l_trddyn ) THEN ! save the explicit SPG trends for further diagnostics 397 ztrdu(:,:,:) = ( ua(:,:,:) - ztrdu(:,:,:) ) / z2dt 398 ztrdv(:,:,:) = ( va(:,:,:) - ztrdv(:,:,:) ) / z2dt 399 CALL trd_dyn( ztrdu, ztrdv, jpdyn_spgflt, kt ) 400 ! 401 CALL wrk_dealloc( jpi, jpj, jpk, ztrdu, ztrdv ) 402 ENDIF 403 404 IF( lrst_oce ) CALL flt_rst( kt, 'WRITE' ) ! write filtered free surface arrays in restart file 363 405 ! 364 406 IF( nn_timing == 1 ) CALL timing_stop('dyn_spg_flt') … … 373 415 !! ** Purpose : Read or write filtered free surface arrays in restart file 374 416 !!---------------------------------------------------------------------- 375 INTEGER , INTENT(in) :: kt 376 CHARACTER(len=*), INTENT(in) :: cdrw 417 INTEGER , INTENT(in) :: kt ! ocean time-step 418 CHARACTER(len=*), INTENT(in) :: cdrw ! "READ"/"WRITE" flag 377 419 !!---------------------------------------------------------------------- 378 420 ! -
branches/2013/dev_r3858_CNRS3_Ediag/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
r3680 r3876 400 400 ! !* Update the forcing (BDY and tides) 401 401 ! ! ------------------ 402 IF( lk_obc ) CALL obc_dta_bt ( kt, jn )403 IF( lk_bdy ) CALL bdy_dta ( kt, jit=jn, time_offset=+1 )404 IF ( ln_tide_pot .AND. lk_tide)CALL upd_tide( kt, jn )402 IF( lk_obc ) CALL obc_dta_bt ( kt, jn ) 403 IF( lk_bdy ) CALL bdy_dta ( kt, jit=jn, time_offset=+1 ) 404 IF( ln_tide_pot .AND. lk_tide ) CALL upd_tide( kt, jn ) 405 405 406 406 ! !* after ssh_e -
branches/2013/dev_r3858_CNRS3_Ediag/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90
r3802 r3876 15 15 !! 3.2 ! 2009-04 (R. Benshila) vvl: correction of een scheme 16 16 !! 3.3 ! 2010-10 (C. Ethe, G. Madec) reorganisation of initialisation phase 17 !! 3.5 ! 2012-02 (G. Madec) trend simplification: suppress jpdyn_trd_dat vorticity 17 18 !!---------------------------------------------------------------------- 18 19 … … 29 30 USE dommsk ! ocean mask 30 31 USE dynadv ! momentum advection (use ln_dynadv_vec value) 31 USE trd mod ! ocean dynamics trends32 USE trd mod_oce ! ocean variables trends32 USE trd_oce ! trends: ocean variables 33 USE trddyn ! trend manager: dynamics 33 34 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 34 35 USE prtctl ! Print control … … 73 74 !! ** Action : - Update (ua,va) with the now vorticity term trend 74 75 !! - save the trends in (ztrdu,ztrdv) in 2 parts (relative 75 !! and planetary vorticity trends) ( 'key_trddyn')76 !! and planetary vorticity trends) (l_trddyn=T) 76 77 !!---------------------------------------------------------------------- 77 78 INTEGER, INTENT( in ) :: kt ! ocean time-step index … … 108 109 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 109 110 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 110 CALL trd_ mod( ztrdu, ztrdv, jpdyn_trd_rvo, 'DYN', kt )111 CALL trd_dyn( ztrdu, ztrdv, jpdyn_rvo, kt ) 111 112 ztrdu(:,:,:) = ua(:,:,:) 112 113 ztrdv(:,:,:) = va(:,:,:) … … 114 115 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 115 116 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 116 CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_pvo, 'DYN', kt ) 117 CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_dat, 'DYN', kt ) 117 CALL trd_dyn( ztrdu, ztrdv, jpdyn_pvo, kt ) 118 118 ELSE 119 119 CALL vor_ene( kt, ntot, ua, va ) ! total vorticity … … 127 127 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 128 128 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 129 CALL trd_ mod( ztrdu, ztrdv, jpdyn_trd_rvo, 'DYN', kt )129 CALL trd_dyn( ztrdu, ztrdv, jpdyn_rvo, kt ) 130 130 ztrdu(:,:,:) = ua(:,:,:) 131 131 ztrdv(:,:,:) = va(:,:,:) … … 133 133 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 134 134 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 135 CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_pvo, 'DYN', kt ) 136 CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_dat, 'DYN', kt ) 135 CALL trd_dyn( ztrdu, ztrdv, jpdyn_pvo, kt ) 137 136 ELSE 138 137 CALL vor_ens( kt, ntot, ua, va ) ! total vorticity … … 146 145 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 147 146 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 148 CALL trd_ mod( ztrdu, ztrdv, jpdyn_trd_rvo, 'DYN', kt )147 CALL trd_dyn( ztrdu, ztrdv, jpdyn_rvo, kt ) 149 148 ztrdu(:,:,:) = ua(:,:,:) 150 149 ztrdv(:,:,:) = va(:,:,:) … … 152 151 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 153 152 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 154 CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_pvo, 'DYN', kt ) 155 CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_dat, 'DYN', kt ) 153 CALL trd_dyn( ztrdu, ztrdv, jpdyn_pvo, kt ) 156 154 ELSE 157 155 CALL vor_mix( kt ) ! total vorticity (mix=ens-ene) … … 165 163 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 166 164 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 167 CALL trd_ mod( ztrdu, ztrdv, jpdyn_trd_rvo, 'DYN', kt )165 CALL trd_dyn( ztrdu, ztrdv, jpdyn_rvo, kt ) 168 166 ztrdu(:,:,:) = ua(:,:,:) 169 167 ztrdv(:,:,:) = va(:,:,:) … … 171 169 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 172 170 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 173 CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_pvo, 'DYN', kt ) 174 CALL trd_mod( ztrdu, ztrdv, jpdyn_trd_dat, 'DYN', kt ) 171 CALL trd_dyn( ztrdu, ztrdv, jpdyn_pvo, kt ) 175 172 ELSE 176 173 CALL vor_een( kt, ntot, ua, va ) ! total vorticity … … 211 208 !! 212 209 !! ** Action : - Update (ua,va) with the now vorticity term trend 213 !! - save the trends in (ztrdu,ztrdv) in 2 parts (relative214 !! and planetary vorticity trends) ('key_trddyn')215 210 !! 216 211 !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. … … 328 323 !! 329 324 !! ** Action : - Update (ua,va) arrays with the now vorticity term trend 330 !! - Save the trends in (ztrdu,ztrdv) in 2 parts (relative331 !! and planetary vorticity trends) ('key_trddyn')332 325 !! 333 326 !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. … … 444 437 !! 445 438 !! ** Action : - Update (ua,va) arrays with the now vorticity term trend 446 !! - Save the trends in (ztrdu,ztrdv) in 2 parts (relative447 !! and planetary vorticity trends) ('key_trddyn')448 439 !! 449 440 !! References : Sadourny, r., 1975, j. atmos. sciences, 32, 680-689. … … 557 548 !! 558 549 !! ** Action : - Update (ua,va) with the now vorticity term trend 559 !! - save the trends in (ztrdu,ztrdv) in 2 parts (relative560 !! and planetary vorticity trends) ('key_trddyn')561 550 !! 562 551 !! References : Arakawa and Lamb 1980, Mon. Wea. Rev., 109, 18-36 -
branches/2013/dev_r3858_CNRS3_Ediag/NEMOGCM/NEMO/OPA_SRC/DYN/dynzad.F90
r3294 r3876 16 16 USE dom_oce ! ocean space and time domain 17 17 USE sbc_oce ! surface boundary condition: ocean 18 USE trdmod_oce ! ocean variables trends 19 USE trdmod ! ocean dynamics trends 18 USE trd_oce ! trends: ocean variables 19 USE trddyn ! trend manager: dynamics 20 ! 20 21 USE in_out_manager ! I/O manager 21 USE lib_mpp 22 USE lib_mpp ! MPP library 22 23 USE prtctl ! Print control 23 USE wrk_nemo 24 USE timing 24 USE wrk_nemo ! Memory Allocation 25 USE timing ! Timing 25 26 26 27 IMPLICIT NONE … … 53 54 !! 54 55 !! ** Action : - Update (ua,va) with the vert. momentum adv. trends 55 !! - S ave the trends in (ztrdu,ztrdv) ('key_trddyn')56 !! - Send the trends to trddyn for diagnostics (l_trddyn=T) 56 57 !!---------------------------------------------------------------------- 57 58 INTEGER, INTENT(in) :: kt ! ocean time-step inedx … … 118 119 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 119 120 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 120 CALL trd_ mod(ztrdu, ztrdv, jpdyn_trd_zad, 'DYN', kt)121 CALL trd_dyn( ztrdu, ztrdv, jpdyn_zad, kt ) 121 122 CALL wrk_dealloc( jpi, jpj, jpk, ztrdu, ztrdv ) 122 123 ENDIF -
branches/2013/dev_r3858_CNRS3_Ediag/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf.F90
r3294 r3876 20 20 21 21 USE ldfdyn_oce ! ocean dynamics: lateral physics 22 USE trd mod ! ocean active dynamics and tracers trends23 USE trd mod_oce ! ocean variables trends22 USE trd_oce ! trends: ocean variables 23 USE trddyn ! trend manager: dynamics 24 24 USE in_out_manager ! I/O manager 25 25 USE lib_mpp ! MPP library … … 91 91 ztrdu(:,:,:) = ua(:,:,:) - ztrdu(:,:,:) 92 92 ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 93 CALL trd_ mod( ztrdu, ztrdv, jpdyn_trd_zdf, 'DYN', kt )93 CALL trd_dyn( ztrdu, ztrdv, jpdyn_zdf, kt ) 94 94 ! 95 95 CALL wrk_dealloc( jpi, jpj, jpk, ztrdu, ztrdv ) -
branches/2013/dev_r3858_CNRS3_Ediag/NEMOGCM/NEMO/OPA_SRC/DYN/dynzdf_imp.F90
r3625 r3876 94 94 IF( ln_bfrimp ) THEN 95 95 # if defined key_vectopt_loop 96 DO jj = 1, 197 DO ji = jpi+2, jpij-jpi-1 ! vector opt. (forced unrolling)96 DO jj = 1, 1 97 DO ji = jpi+2, jpij-jpi-1 ! vector opt. (forced unrolling) 98 98 # else 99 DO jj = 2, jpjm1100 DO ji = 2, jpim199 DO jj = 2, jpjm1 100 DO ji = 2, jpim1 101 101 # endif 102 ikbu = mbku(ji,jj) ! ocean bottom level at u- and v-points103 ikbv = mbkv(ji,jj) ! (deepest ocean u- and v-points)104 zavmu(ji,jj) = avmu(ji,jj,ikbu+1)105 zavmv(ji,jj) = avmv(ji,jj,ikbv+1)106 avmu(ji,jj,ikbu+1) = -bfrua(ji,jj) * fse3uw(ji,jj,ikbu+1)107 avmv(ji,jj,ikbv+1) = -bfrva(ji,jj) * fse3vw(ji,jj,ikbv+1)108 END DO109 END DO102 ikbu = mbku(ji,jj) ! ocean bottom level at u- and v-points 103 ikbv = mbkv(ji,jj) ! (deepest ocean u- and v-points) 104 zavmu(ji,jj) = avmu(ji,jj,ikbu+1) 105 zavmv(ji,jj) = avmv(ji,jj,ikbv+1) 106 avmu(ji,jj,ikbu+1) = -bfrua(ji,jj) * fse3uw(ji,jj,ikbu+1) 107 avmv(ji,jj,ikbv+1) = -bfrva(ji,jj) * fse3vw(ji,jj,ikbv+1) 108 END DO 109 END DO 110 110 ENDIF 111 111 … … 284 284 IF( ln_bfrimp ) THEN 285 285 # if defined key_vectopt_loop 286 DO jj = 1, 1287 DO ji = jpi+2, jpij-jpi-1 ! vector opt. (forced unrolling)286 DO jj = 1, 1 287 DO ji = jpi+2, jpij-jpi-1 ! vector opt. (forced unrolling) 288 288 # else 289 DO jj = 2, jpjm1290 DO ji = 2, jpim1289 DO jj = 2, jpjm1 290 DO ji = 2, jpim1 291 291 # endif 292 ikbu = mbku(ji,jj) ! ocean bottom level at u- and v-points293 ikbv = mbkv(ji,jj) ! (deepest ocean u- and v-points)294 avmu(ji,jj,ikbu+1) = zavmu(ji,jj)295 avmv(ji,jj,ikbv+1) = zavmv(ji,jj)296 END DO297 END DO292 ikbu = mbku(ji,jj) ! ocean bottom level at u- and v-points 293 ikbv = mbkv(ji,jj) ! (deepest ocean u- and v-points) 294 avmu(ji,jj,ikbu+1) = zavmu(ji,jj) 295 avmv(ji,jj,ikbv+1) = zavmv(ji,jj) 296 END DO 297 END DO 298 298 ENDIF 299 299 !
Note: See TracChangeset
for help on using the changeset viewer.