New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 9019 for branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90 – NEMO

Ignore:
Timestamp:
2017-12-13T15:58:53+01:00 (6 years ago)
Author:
timgraham
Message:

Merge of dev_CNRS_2017 into branch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2017/dev_merge_2017/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90

    r7753 r9019  
    1717   USE phycst         ! physical constants 
    1818   USE sbc_oce        ! surface boundary condition: ocean 
     19   USE sbc_ice , ONLY : snwice_mass, snwice_mass_b 
    1920   USE sbcapr         ! surface boundary condition: atmospheric pressure 
    2021   USE dynspg_exp     ! surface pressure gradient     (dyn_spg_exp routine) 
     
    2829   USE in_out_manager ! I/O manager 
    2930   USE lib_mpp        ! MPP library 
    30    USE wrk_nemo       ! Memory Allocation 
    3131   USE timing         ! Timing 
    3232 
     
    4747#  include "vectopt_loop_substitute.h90" 
    4848   !!---------------------------------------------------------------------- 
    49    !! NEMO/OPA 3.2 , LODYC-IPSL  (2009) 
     49   !! NEMO/OPA 4.0 , LODYC-IPSL  (2017) 
    5050   !! $Id$  
    5151   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt) 
     
    7171      !!             period is used to prevent the divergence of odd and even time step. 
    7272      !!---------------------------------------------------------------------- 
    73       INTEGER, INTENT(in   ) ::   kt       ! ocean time-step index 
    74       ! 
    75       INTEGER  ::   ji, jj, jk                             ! dummy loop indices 
    76       REAL(wp) ::   z2dt, zg_2, zintp, zgrau0r             ! temporary scalar 
    77       REAL(wp), POINTER, DIMENSION(:,:,:) ::  ztrdu, ztrdv 
    78       REAL(wp), POINTER, DIMENSION(:,:)   ::  zpice 
    79       !!---------------------------------------------------------------------- 
    80       ! 
    81       IF( nn_timing == 1 )  CALL timing_start('dyn_spg') 
     73      INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     74      ! 
     75      INTEGER  ::   ji, jj, jk                   ! dummy loop indices 
     76      REAL(wp) ::   z2dt, zg_2, zintp, zgrau0r   ! local scalars 
     77      REAL(wp), ALLOCATABLE, DIMENSION(:,:)   ::   zpice 
     78      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) ::   ztrdu, ztrdv 
     79      !!---------------------------------------------------------------------- 
     80      ! 
     81      IF( ln_timing )   CALL timing_start('dyn_spg') 
    8282      ! 
    8383      IF( l_trddyn )   THEN                      ! temporary save of ta and sa trends 
    84          CALL wrk_alloc( jpi,jpj,jpk,   ztrdu, ztrdv )  
     84         ALLOCATE( ztrdu(jpi,jpj,jpk) , ztrdv(jpi,jpj,jpk) )  
    8585         ztrdu(:,:,:) = ua(:,:,:) 
    8686         ztrdv(:,:,:) = va(:,:,:) 
     
    8989      IF(      ln_apr_dyn                                                &   ! atmos. pressure 
    9090         .OR.  ( .NOT.ln_dynspg_ts .AND. (ln_tide_pot .AND. ln_tide) )   &   ! tide potential (no time slitting) 
    91          .OR.  nn_ice_embd == 2  ) THEN                                      ! embedded sea-ice 
     91         .OR.  ln_ice_embd ) THEN                                            ! embedded sea-ice 
    9292         ! 
    9393         DO jj = 2, jpjm1 
     
    103103               DO ji = fs_2, fs_jpim1   ! vector opt. 
    104104                  spgu(ji,jj) = spgu(ji,jj) + zg_2 * (  ssh_ib (ji+1,jj) - ssh_ib (ji,jj)    & 
    105                      &                      + ssh_ibb(ji+1,jj) - ssh_ibb(ji,jj)  ) * r1_e1u(ji,jj) 
     105                     &                                + ssh_ibb(ji+1,jj) - ssh_ibb(ji,jj)  ) * r1_e1u(ji,jj) 
    106106                  spgv(ji,jj) = spgv(ji,jj) + zg_2 * (  ssh_ib (ji,jj+1) - ssh_ib (ji,jj)    & 
    107                      &                      + ssh_ibb(ji,jj+1) - ssh_ibb(ji,jj)  ) * r1_e2v(ji,jj) 
     107                     &                                + ssh_ibb(ji,jj+1) - ssh_ibb(ji,jj)  ) * r1_e2v(ji,jj) 
    108108               END DO 
    109109            END DO 
     
    123123         ENDIF 
    124124         ! 
    125          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         IF( ln_ice_embd ) THEN              !== embedded sea ice: Pressure gradient due to snow-ice mass ==! 
     126            ALLOCATE( zpice(jpi,jpj) ) 
    128127            zintp = REAL( MOD( kt-1, nn_fsbc ) ) / REAL( nn_fsbc ) 
    129128            zgrau0r     = - grav * r1_rau0 
     
    135134               END DO 
    136135            END DO 
    137             ! 
    138             CALL wrk_dealloc( jpi,jpj,   zpice )          
     136            DEALLOCATE( zpice )          
    139137         ENDIF 
    140138         ! 
     
    161159         ztrdv(:,:,:) = va(:,:,:) - ztrdv(:,:,:) 
    162160         CALL trd_dyn( ztrdu, ztrdv, jpdyn_spg, kt ) 
    163          CALL wrk_dealloc( jpi,jpj,jpk,   ztrdu, ztrdv )  
     161         DEALLOCATE( ztrdu , ztrdv )  
    164162      ENDIF 
    165163      !                                      ! print mean trends (used for debugging) 
     
    167165         &                       tab3d_2=va, clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    168166      ! 
    169       IF( nn_timing == 1 )  CALL timing_stop('dyn_spg') 
     167      IF( ln_timing )   CALL timing_stop('dyn_spg') 
    170168      ! 
    171169   END SUBROUTINE dyn_spg 
     
    186184      !!---------------------------------------------------------------------- 
    187185      ! 
    188       IF( nn_timing == 1 )  CALL timing_start('dyn_spg_init') 
     186      IF( ln_timing )   CALL timing_start('dyn_spg_init') 
    189187      ! 
    190188      REWIND( numnam_ref )              ! Namelist namdyn_spg in reference namelist : Free surface 
     
    227225      ENDIF 
    228226      ! 
    229       IF( nn_timing == 1 )  CALL timing_stop('dyn_spg_init') 
     227      IF( ln_timing )   CALL timing_stop('dyn_spg_init') 
    230228      ! 
    231229   END SUBROUTINE dyn_spg_init 
Note: See TracChangeset for help on using the changeset viewer.