- Timestamp:
- 2011-02-26T13:31:38+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynvor.F90
r2590 r2618 39 39 PUBLIC dyn_vor ! routine called by step.F90 40 40 PUBLIC dyn_vor_init ! routine called by opa.F90 41 PUBLIC dyn_vor_alloc ! routine called by nemogcm.F9042 41 43 42 ! !!* Namelist namdyn_vor: vorticity term … … 51 50 INTEGER :: nrvm = 2 ! =2 relative vorticity ; =3 metric term 52 51 INTEGER :: ntot = 4 ! =4 total vorticity (relative + planetary) ; =5 coriolis + metric term 53 54 !!$#if defined key_vvl55 !!$ REAL(wp), DIMENSION(jpi,jpj,jpk) :: ze3f56 !!$#else57 !!$ REAL(wp), ALLOCATABLE, DIMENSION(jpi,jpj,jpk), SAVE :: ze3f58 !!$#endif59 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ze3f60 52 61 53 !! * Substitutions … … 67 59 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 68 60 !!---------------------------------------------------------------------- 69 70 61 CONTAINS 71 72 FUNCTION dyn_vor_alloc()73 !!----------------------------------------------------------------------74 !! *** Routine dyn_vor_alloc ***75 !!----------------------------------------------------------------------76 IMPLICIT none77 INTEGER :: dyn_vor_alloc78 !!----------------------------------------------------------------------79 80 ALLOCATE(ze3f(jpi,jpj,jpk), Stat=dyn_vor_alloc)81 82 IF(dyn_vor_alloc /= 0 )THEN83 CALL ctl_warn('dyn_vor_alloc: failed to allocate array ze3f.')84 END IF85 86 END FUNCTION dyn_vor_alloc87 88 62 89 63 SUBROUTINE dyn_vor( kt ) … … 584 558 !! References : Arakawa and Lamb 1980, Mon. Wea. Rev., 109, 18-36 585 559 !!---------------------------------------------------------------------- 586 USE wrk_nemo, ONLY: wrk_use, wrk_release 587 USE wrk_nemo, ONLY: zwx => wrk_2d_1, zwy => wrk_2d_2, zwz => wrk_2d_3 588 USE wrk_nemo, ONLY: ztnw => wrk_2d_4, ztne => wrk_2d_5, & 589 ztsw => wrk_2d_6, ztse => wrk_2d_7 590 !! 560 USE wrk_nemo, ONLY: wrk_use, wrk_release 561 USE wrk_nemo, ONLY: zwx => wrk_2d_1 , zwy => wrk_2d_2 , zwz => wrk_2d_3 562 USE wrk_nemo, ONLY: ztnw => wrk_2d_4 , ztne => wrk_2d_5 563 USE wrk_nemo, ONLY: ztsw => wrk_2d_6 , ztse => wrk_2d_7 564 #if defined key_vvl 565 USE wrk_nemo, ONLY: ze3f => wrk_3d_1 566 #endif 567 ! 591 568 INTEGER , INTENT(in ) :: kt ! ocean time-step index 592 569 INTEGER , INTENT(in ) :: kvor ! =ncor (planetary) ; =ntot (total) ; … … 596 573 !! 597 574 INTEGER :: ji, jj, jk ! dummy loop indices 598 REAL(wp) :: zfac12, zua, zva ! temporary scalars 599 !!---------------------------------------------------------------------- 600 601 IF(.NOT. wrk_use(2, 1,2,3,4,5,6,7))THEN 602 CALL ctl_stop('dyn:vor_een : requested workspace arrays unavailable.') 603 RETURN 575 INTEGER :: ierr ! local integer 576 REAL(wp) :: zfac12, zua, zva ! local scalars 577 #if ! defined key_vvl 578 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:), SAVE :: ze3f 579 #endif 580 !!---------------------------------------------------------------------- 581 582 IF(.NOT. wrk_use(2, 1,2,3,4,5,6,7) .AND. .NOT. wrk_use(3, 1) ) THEN 583 CALL ctl_stop('dyn:vor_een : requested workspace arrays unavailable.') ; RETURN 604 584 END IF 605 585 … … 608 588 IF(lwp) WRITE(numout,*) 'dyn:vor_een : vorticity term: energy and enstrophy conserving scheme' 609 589 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~' 590 IF( .NOT.lk_vvl ) THEN 591 ALLOCATE( ze3f(jpi,jpj,jpk) , STAT=ierr ) 592 IF( lk_mpp ) CALL mpp_sum ( ierr ) 593 IF( ierr /= 0 ) CALL ctl_stop( 'STOP', 'dyn:vor_een : unable to allocate arrays' ) 594 ENDIF 610 595 ENDIF 611 596 … … 696 681 END DO ! End of slab 697 682 ! ! =============== 698 IF(.NOT. wrk_release(2, 1,2,3,4,5,6,7))THEN 699 CALL ctl_stop('dyn:vor_een : failed to release workspace arrays.') 700 END IF 683 IF(.NOT. wrk_release(2, 1,2,3,4,5,6,7) .AND. & 684 .NOT. wrk_release(3, 1) ) CALL ctl_stop('dyn:vor_een : failed to release workspace arrays') 701 685 ! 702 686 END SUBROUTINE vor_een
Note: See TracChangeset
for help on using the changeset viewer.