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 4579 – NEMO

Changeset 4579


Ignore:
Timestamp:
2014-03-26T10:17:58+01:00 (10 years ago)
Author:
pabouttier
Message:

Modify treatment for lk_vvl case, see Ticket #1274. Correct also one bug in a IF condition, in dyn_vor_een_adj

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2012/dev_v3_4_STABLE_2012/NEMOGCM/NEMO/OPATAM_SRC/DYN/dynvor_tam.F90

    r3627 r4579  
    4040   USE dom_oce 
    4141   USE dynadv 
     42   USE dynvor 
    4243   USE lbclnk 
    4344   USE lbclnk_tam 
     
    5859   PUBLIC   dyn_vor_adj     ! routine called by step_tam.F90 
    5960   PUBLIC   dyn_vor_adj_tst ! routine called by the tst.F90 
    60  
    61  
    62    !!* Namelist nam_dynvor: vorticity term 
    63    LOGICAL, PUBLIC ::   ln_dynvor_ene = .FALSE.   !: energy conserving scheme 
    64    LOGICAL, PUBLIC ::   ln_dynvor_ens = .TRUE.    !: enstrophy conserving scheme 
    65    LOGICAL, PUBLIC ::   ln_dynvor_mix = .FALSE.   !: mixed scheme 
    66    LOGICAL, PUBLIC ::   ln_dynvor_een = .FALSE.   !: energy and enstrophy conserving scheme 
    6761 
    6862   INTEGER ::   nvor = 0   ! type of vorticity trend used 
     
    615609      CALL wrk_alloc( jpi, jpj,      zwxtl , zwytl , zwztl        ) 
    616610      CALL wrk_alloc( jpi, jpj,      ztnwtl, ztnetl, ztswtl, ztsetl ) 
     611 
    617612      zuatl = 0.0_wp ; zvatl = 0.0_wp 
    618613      zwx (:,:) = 0.0_wp ; zwy (:,:) = 0.0_wp ; zwz (:,:) = 0.0_wp 
     
    621616      ztnwtl(:,:) = 0.0_wp ; ztnetl(:,:) = 0.0_wp ; ztswtl(:,:) = 0.0_wp ; ztsetl(:,:) = 0.0_wp 
    622617#if defined key_vvl 
    623       CALL wrk_alloc( jpi, jpj, jpk, ze3f_tl                  ) 
     618      CALL ctl_stop( 'STOP', 'key_vvl not available for tam' ) 
    624619#endif 
    625620      IF( kt == nit000 ) THEN 
     
    760755      END DO                                           !   End of slab 
    761756      !                                                ! =============== 
    762       CALL wrk_dealloc( jpi, jpj,      zwx , zwy , zwz        ) 
    763       CALL wrk_dealloc( jpi, jpj,      ztnw, ztne, ztsw, ztse ) 
    764       CALL wrk_dealloc( jpi, jpj,      zwxtl , zwytl , zwztl        ) 
     757      CALL wrk_dealloc( jpi, jpj,      zwx , zwy , zwz                ) 
     758      CALL wrk_dealloc( jpi, jpj,      ztnw, ztne, ztsw, ztse         ) 
     759      CALL wrk_dealloc( jpi, jpj,      zwxtl , zwytl , zwztl          ) 
    765760      CALL wrk_dealloc( jpi, jpj,      ztnwtl, ztnetl, ztswtl, ztsetl ) 
    766761#if defined key_vvl 
    767       CALL wrk_dealloc( jpi, jpj, jpk, ze3f_tl                   ) 
     762      CALL wrk_dealloc( jpi, jpj, jpk, ze3f_tl                        ) 
    768763#endif 
     764      IF ( kt == nitend .AND. .NOT. lk_vvl ) DEALLOCATE( ze3f_tl ) 
    769765      ! 
    770766      IF( nn_timing == 1 )  CALL timing_stop('vor_een_tan') 
     
    10481044      !! 
    10491045      INTEGER ::   ji, jj, jk          ! dummy loop indices 
     1046      INTEGER :: ierr 
    10501047      REAL(wp) ::   zfac12             ! temporary scalars 
    10511048      REAL(wp) ::   zuaad, zvaad       ! temporary scalars 
     
    10541051      REAL(wp), POINTER, DIMENSION(:,:) ::   zwxad, zwyad, zwzad              ! temporary 2D workspace 
    10551052      REAL(wp), POINTER, DIMENSION(:,:) ::   ztnwad, ztnead, ztswad, ztsead   ! temporary 3D workspace 
     1053#if defined key_vvl 
     1054      REAL(wp), POINTER, DIMENSION(:,:,:)       ::   ze3f_ad 
     1055#else 
    10561056      REAL(wp), POINTER, DIMENSION(:,:,:), SAVE ::   ze3f_ad 
     1057#endif 
    10571058      !!---------------------------------------------------------------------- 
    10581059      ! 
     
    10631064      CALL wrk_alloc( jpi, jpj,      zwxad , zwyad , zwzad        ) 
    10641065      CALL wrk_alloc( jpi, jpj,      ztnwad, ztnead, ztswad, ztsead ) 
    1065       CALL wrk_alloc( jpi, jpj, jpk,  ze3f_ad ) 
     1066 
    10661067      ! local adjoint initailization 
    10671068      zuaad = 0.0_wp ; zvaad = 0.0_wp 
     
    10721073      ze3f_ad = 0._wp 
    10731074 
     1075#if defined key_vvl 
     1076      CALL wrk_alloc( jpi, jpj, jpk, ze3f_ad ) 
     1077#endif 
     1078 
    10741079      IF( kt == nitend ) THEN 
    10751080         IF(lwp) WRITE(numout,*) 
    10761081         IF(lwp) WRITE(numout,*) 'dyn:vor_een_adj : vorticity term: energy and enstrophy conserving scheme' 
    10771082         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 
     1083         IF( .NOT.lk_vvl ) THEN 
     1084            ALLOCATE( ze3f_ad(jpi,jpj,jpk) , STAT=ierr ) 
     1085            IF( lk_mpp    )   CALL mpp_sum ( ierr ) 
     1086            IF( ierr /= 0 )   CALL ctl_stop( 'STOP', 'dyn:vor_een : unable to allocate arrays' ) 
     1087            ze3f_ad = 0._wp 
     1088         ENDIF 
    10781089      ENDIF 
    10791090 
    1080       IF( kt == nit000 ) THEN      ! reciprocal of e3 at F-point (masked averaging of e3t) 
     1091      IF( kt == nitend .OR. lk_vvl ) THEN      ! reciprocal of e3 at F-point (masked averaging of e3t) 
    10811092         DO jk = 1, jpk 
    10821093            DO jj = 1, jpjm1 
     
    12721283      CALL wrk_dealloc( jpi, jpj,      zwxad , zwyad , zwzad        ) 
    12731284      CALL wrk_dealloc( jpi, jpj,      ztnwad, ztnead, ztswad, ztsead ) 
    1274       CALL wrk_dealloc( jpi, jpj, jpk, ze3f_ad) 
    1275       ! 
     1285 
     1286#if defined key_vvl 
     1287      CALL wrk_dealloc( jpi, jpj, jpk, ze3f ) 
     1288#endif 
     1289      IF ( kt == nit000 .AND. .NOT. lk_vvl ) DEALLOCATE( ze3f )       
     1290       
    12761291      IF( nn_timing == 1 )  CALL timing_stop('vor_een_adj') 
    12771292      ! 
Note: See TracChangeset for help on using the changeset viewer.